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カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj常微分方程式モンテカルロ解析状態密度トランジスタodeDOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト分散関係レベルシフト乱数HP6632AR6452A可変抵抗トランジスタ技術温度解析ブレッドボードI2C反強磁性確率論数値積分セミナーバンドギャップバンド構造偏微分方程式非線形方程式ソルバ熱設計絶縁ISO-I2Cカオス三端子レギュレータLM358GW近似マフィンティン半径A/DコンバータフォトカプラシュミットトリガLEDPC817C発振回路数値微分直流動作点解析サーボカレントミラーTL431アナログスイッチUSB74HC4053bzqltyVESTA補間電子負荷アセンブライジング模型BSch量子力学単振り子2ちゃんねるチョッパアンプLDA開発環境基本並進ベクトルFFT標準ロジックブラべ格子パラメトリック解析抵抗SMPMaxima失敗談ラプラス方程式繰り返し位相図スイッチト・キャパシタ熱伝導状態方程式キュリー温度gfortranコバルトTLP621不規則合金Quantum_ESPRESSO六方最密充填構造ランダムウォーク相対論ewidthスピン軌道相互作用FETQSGWVCAcygwinスレーターポーリング曲線GGA仮想結晶近似PWscfシュレディンガー方程式LM555ハーフメタル固有値問題NE555最小値ガイガー管QNAPUPS自動計測ダイヤモンドマントルTLP552格子比熱最適化MCU井戸型ポテンシャル最大値xcrysdenCIF条件分岐詰め回路フェルミ面差し込みグラフスーパーセルfsolveブラウン運動awk過渡解析起電力三角波第一原理計算FXA-7020ZRWriter509Ubuntuテスタ熱力学データロガーTLP521OpenMPubuntu平均場近似MAS830LトランスCK1026PIC16F785PGA2SC1815EAGLEノコギリ波負帰還安定性ナイキスト線図MBEOPA2277P-10フィルタCapSenseAACircuitLMC662文字列固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型電荷密度重積分SIC二相共存磁気モーメント不純物問題PWgui擬ポテンシャルゼーベック係数ZnOウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデルcif2cell入出力陰解法熱拡散方程式HiLAPW両対数グラフCrank-Nicolson法連立一次方程式specx.fifort境界条件片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

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