PSoCでLED正弦波電流駆動

PSoCは、ワンチップで簡単に正弦波電圧を出力できます。この正弦波電圧出力でLEDを駆動したのがPSoCでLED正弦波駆動です。今回は、PSoCをもちいてLEDを正弦波電流駆動しました。



video.1: LEDの正弦波電流駆動



PSoCで正弦波電圧出力


PSoCでLED正弦波駆動では、PSoCのI/Oから1Hzの正弦波電圧を出力することにより、LEDを駆動するサンプルプロジェクトを動作させました。その結果、LEDがぼんやりついたり消えたりを繰り返す動作をすることを確認できました。

このときの出力電圧と、LEDに流れる電流の関係は、fig.1に示すものでした。


005_20090604133317.png
fig.1: 電圧波形(赤),電流波形(緑)


緑の電流波形(実際はLEDと直列の抵抗の両端の電位差)をみると、正弦波というよりは、ON/OFF動作のON時の波形がなまったような形をしています。
LEDは電流駆動すべき素子です。そこで、本エントリでは、PSoCをもちいて、正弦波電流出力をすることを目的とします。

電流出力回路


正弦波の電流出力が必要になるアプリケーションは数多く存在します。
抵抗の測定には、直流電流源が必要となりました。(100mA定電流源,TL431で低抵抗測定用10mA定電流源)

同様に交流インピーダンスを測定する場合には、交流電流源が必要となります。

たとえば、インダクタンスの測定などです。正弦波電圧を正弦波電流に変換する電圧-電流コンバータ回路に関しては、LTspiceでモンテカルロ解析LTspiceモンテカルロ解析の定数分布 その4でモンテカルロ解析を行いました。これらのエントリから、電流出力回路の発振のしやすさが伺えます。

PSoCオペアンプ


PSoCの連続時間ブロック(CT Block/Continuous Time Block)の中心はOPアンプでできています。しかしながら、このOPアンプの入出力をすべて同時に外部に出力することはできません。

これに対して、JUNK-BOXさんが反転入力側にPGAで作ったボルテージフォロワを追加することによって、擬似的に外部にOPアンプの入出力を取り出す方法を公開しています。(PSoCオペアンプ)

電流値のフィードバック回路


LEDの電流駆動回路の場合は、片方向の電流源でよいのでfig.2-3に示すように電流検出用のシャント抵抗の両端電圧と正弦波電圧をエラーアンプで比較するだけの単純な回路で実現できるはずです。


002_20091019030143.png
fig.2: 電流値のフィードバック回路

003_20091019030138.png
fig.3: LEDの電流波形


OPアンプとしてLMC662を用いてfig.2の回路を作成したところ、シミュレーションどおり正弦波電流出力ができました。しかしながら、前述の方法で外部に取り出したPSoCのOPアンプで同様の回路を構成したところ、1Hzの正常な発振に加えて激しい寄生発振が見られました。

PSoCでLED正弦波電流駆動


寄生発振が無く、LEDを正弦波電流駆動するために行ったことは以下の3点です。

  • OPアンプのPowerを下げる(LOWPOWERにする)
  • PGA_2の接続先を反転入力から非反転入力に変更する
  • LEDと直列に抵抗を挿入



004_20091019030138.png
fig.4: PSoC Designer


fig.4に示すとおり、PGA_2,PGA_3を追加します。PGA_2はゲインを0.25に、入力を正弦波出力に接続します。PGA_3は、入力をPGA_2にし、出力を外部に出します。この時点では接続されていませんが、PGA_3のある列のアナログ入力マルチプレクサの接続先が、OPアンプの反転入力端子になります。

以下に、main.cの一部を示します。

void main()
{
        Counter16_1_Start();
        Counter8_1_Start();
        PGA_1_Start(PGA_1_HIGHPOWER);
        BPF2_1_Start(BPF2_1_HIGHPOWER);

        PGA_2_Start(PGA_2_LOWPOWER);
        PGA_3_Start(PGA_3_LOWPOWER);
        ACB02CR1 = (ACB02CR1 & 0xc7) | 0x38;
}


PGA_2およびPGA_3のPOWERをLOWPOWERに設定します。
ACB02CR1レジスタに書き込みを行うことで、ACB02(PGA_3)の反転入力をPort0[7]に接続します。

出力P0[4]からフィードバック入力であるP0[7]の間に負荷となるLEDを接続しますが、このときLEDと直列に抵抗を挿入します。
以上をまとめた接続の概念図をfig.5に示します。


005_20091019030129.png
fig.5: 接続の概念図


電流波形の測定結果


fig.6にPDS5022で測定した波形を示します。


006_20091019030129.png
fig.6: 電流波形(赤) 基準電圧(緑)


基準電圧のステップ上の信号にも(それがよいことか悪いことかは別として)きちんと追従しつつ、寄生発振も起こしていません。

インダクタンス計への応用


OPアンプのPOWERを下げると、OPアンプの利得帯域幅積が下がるので、ゲイン余裕が作れるはずです。PGA_2がエラーアンプの反転入力側に入っていると帰還部分での信号の遅延が大きくなり、位相余裕の減少につながると考えられます。

今回のような負荷がはっきりしている回路では、カットアンドトライで対策を考えることもできますが、どのような負荷がつながるか分からない計測器の場合はそれも難しいと思います。

PSoCを用いた位相検波方式のインダクタンス計としては、PSoCデジタルLメータのありえない実装があります。しかしながら、この作例でも電圧-電流変換回路部だけは外部のOPアンプを利用しています。

逆に言えば、電圧-電流変換回路さえPSoCで作れれば、ワンチップインダクタンス計が実現するわけですが、なかなか難しそうです。

関連エントリ




参考URL




付録


このエントリで使用したLTspiceのシミュレーション用ファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。


参考文献




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。


tag: LTspice PSoC 定電流 OPアンプ 

comment

Secret

PGAのGB積を小さくするには、

> OPアンプのPOWERを下げると、OPアンプの利得帯域幅積が下がる

PGA のデータシートには、GB積にかかわる二つの条件 POWER と BIAS が書いてあります。 POWER が OP アンプの POWER の事だと理解しましたが、 BIAS というのがわかりませんでした。どうやら、 Global Resources で設定する項目のようです。チップ全体の BIAS が影響を受けるので、 LOW に設定してもいいのか思案のしどころです。
BIAS の隣には、 A_Buff_Power という項目があります。おそらく、出力につながっているバッファ・アンプの事だろうと思います。これを使うと、 LED に直列に入れた 100Ω の抵抗が省略できるかもしれません。

Re: PGAのGB積を小さくするには、

のりたんさん、こんにちは。

お察しのとおり、下げたのはOPアンプのPOWERの方です。Global Resoucesを触るのは最後の手段としたかったので、今のところトラ技のプロジェクトから変更していません。

A_Buff_Powerの事は考えていませんでした、時間ができ次第BIASとあわせて試してみます。

生OPアンプ

cypress のアプリケーション・ノートをあさっていたら、こんなのを発見。

AN2223 - The Faux Op-Amp

日本語で「擬似OPアンプ」
ACB を使うのではなく、 SCBLK を使うと自然にOPアンプになってしまうというお話。ちょっと、変なところがありますが、それを検証するすべを私は持っていません。

Re: 生OPアンプ

のりたんさん、こんにちは。

> AN2223 - The Faux Op-Amp
http://www.cypress.com/?id=1573&rtID=76&rID=2630&l=2&sort=column_7&sortDir=desc&page=all
ですね。
プロジェクトファイルがあるようですが、私の環境では開けませんでした。
SCBlockのユーザーモジュールを個別に設定すれば、同じ事はできそうですが、まだやってません。先にLTspiceでシミュレーションしてみようかなとも思いますが、さて・・・と言ったところです。


PDFは斜め読みしました。SCブロックに入っているOPアンプ周りのスイッチをいじれば、積分回路に見える形にできることは確かですね。ふたつある入力のスイッチを逆位相でつかえば、差動入力になると言うのはトラ技2009年1月号にもありました。

Re: 生OPアンプ

私が気になったのは、
* SCBLK内部の作動アンプのポールはどこにあるのか。
* 出力バッファのポールはどこにあるのか。
の二点です。
これらのポールがはるかに周波数の高いところにあって、無視できたとしても、外部出力に容量性負荷をつけると、低い周波数にポールができて、発振してしまうのではないでしょうか。

と、想像しているだけで、実験にまで至っていません。だいたい、発振しているかどうかをどうやって確認すればよいのか。やっぱり、オシロスコープが欲しいな。

Re: Re: 生OPアンプ

のりたんさん、こんばんは。

やはり、スイッチト・キャパシタブロックにしろ、連続時間ブロックにしろ、OPアンプとその周辺の特性がどうなっているのかが知りたいですね。
実際には公開されているユーザー・モジュールを並べるだけでも、いろいろ楽しめるチップだとは思いますが・・・

> やっぱり、オシロスコープが欲しいな。
いま購入するなら、やはりPDS5022Sが妥当な選択肢ではないかと思います。
FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoCOPアンプPICCPA強磁性常微分方程式モンテカルロ解析odeトランジスタ状態密度インターフェーススイッチング回路ecaljPDS5022DOS定電流半導体シェルスクリプト乱数レベルシフトHP6632Aブレッドボード分散関係温度解析R6452Aトランジスタ技術I2C可変抵抗反強磁性セミナー数値積分確率論偏微分方程式バンド構造非線形方程式ソルババンドギャップ絶縁熱設計シュミットトリガLEDA/Dコンバータ三端子レギュレータLM358ISO-I2CGW近似カオスフォトカプラマフィンティン半径TL431数値微分PC817Cアナログスイッチ直流動作点解析発振回路USBサーボカレントミラー74HC4053パラメトリック解析LDAbzqltyチョッパアンプ量子力学FFT2ちゃんねるアセンブラBSch開発環境電子負荷ブラべ格子イジング模型補間基本並進ベクトル標準ロジック単振り子キュリー温度繰り返しMaxima状態方程式失敗談相対論スピン軌道相互作用FETランダムウォーク熱伝導六方最密充填構造コバルトewidthTLP621GGAQSGW不規則合金位相図抵抗SMPcygwinラプラス方程式スレーターポーリング曲線gfortranスイッチト・キャパシタ詰め回路TLP552三角波格子比熱TLP521条件分岐LM555MCUNE555QNAPマントルテスタ過渡解析FXA-7020ZRダイヤモンドデータロガーガイガー管自動計測Writer509UPSシュレディンガー方程式ブラウン運動awk差し込みグラフ熱力学平均場近似仮想結晶近似VCAfsolve井戸型ポテンシャルVESTA起電力スーパーセルOpenMP第一原理計算ubuntu固有値問題L10構造OPA2277interp12SC1815fccウィグナーザイツ胞面心立方構造フィルタジバニャン方程式ヒストグラム確率論マテリアルデザインspecx.f等高線正規分布PGAフェルミ面非線型方程式ソルバ初期値固定スピンモーメントスワップ領域ルチル構造リジッドバンド模型edeltquantumESPRESSO岩塩構造BaOSIC二相共存ZnOウルツ鉱構造フォノンデバイ模型c/aノコギリ波全エネルギーFSMTeXgnuplotmultiplotハーフメタルCapSense半金属合金結晶磁気異方性Ubuntu文字列入出力TS-110TS-112疎行列Excel直流解析ヒストグラム円周率不規則局所モーメントトラックボールPC等価回路モデルパラメータ・モデルキーボードRealforce三次元マンデルブロ集合フラクタル化学反応重積分縮退日本語最小二乗法関数フィッティングGimpMAS830LHiLAPW熱拡散方程式両対数グラフナイキスト線図負帰還安定性陰解法Crank-Nicolson法P-10クーロン散乱境界条件連立一次方程式片対数グラフEAGLEPIC16F785LMC662トランスシンボルCK1026線種凡例MBEAACircuitグラフの分割軸ラベルifort

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ