pcDuino3 nanoのArduino風ヘッダに備わっているSPI通信機能を使って何かやってみようと考えていたのですが、色々考えてカーブトレーサ(のようなもの)を作ることにしました。
***** それで、何が出来るの? *****
カーブトレーサ...半導体の特性を測定するあれです。学校の実習でやりましたか?
今回製作したのはダイオードの順方向電圧を測定する装置です。つまり、ダイオードに一定の電流を流し、その時の両端の電圧を測定します。
回路図などの設計資料はこちらに置いておきますので良かったら見てってやってくださいな。
***** 回路の説明 *****
今回製作する回路の全体は以下の通りです。ぼやけて見づらいと思いますので、こちらのpdfも参照してください。
回路の電源電圧は3.3Vとしました。これはpcDuino3 nano のアナログ入力の絶対最大定格が3.3Vであるためです。
では左から見ていきます。
***** DAコンバータ *****
U1のMCP4922-E/Pはマイクロチップ社のDAコンバータです。pcDuino3 nanoとはSPIインターフェースで接続しています。
価格も手ごろで制御も簡単に出来るので部品箱に常備しています。
分解能は12bitです。
2chあるので、VOUTAを電流の設定に、VOUTBをオペアンプのオフセットの調整に...使おうと思ったのですが、途中で考えるのがめんどくさくなってやめました。なのでVOUTBはただつながっているだけです。
#CS端子だけ抵抗R1でプルアップしています。本来ならSDIなど他の入力端子にもプルアップ抵抗を入れるべきでしょうが、限られた基板スペースに回路を作らなくてはいけないので省略しました。
DAコンバータの基準電圧はU2で1.2Vを作っています。
この時のDAコンバータの出力電圧範囲は0~1.2Vになります。厳密には最大出力電圧は以下の式で求められます。
最大電圧 = 基準電圧 * 設定可能な最大値 / 分解能
= 1.2[V] * 4095 / 4096
= 1.1997[V]
が、今回の回路はあまり精度にこだわっていないので1.2Vということにしておきます。
***** 定電流回路 *****
次にDAコンバータの出力電圧をオペアンプU3Aで定電流に変換しています。
この定電流回路はオペアンプの解説書で必ずといっていいくらいお目にかかる基本的なものです。
回路図をじ~~っと見ているとどんな原理で動作するのか判るとおもいますが、一応説明しておきます。
下の図はオペアンプによる定電流回路の部分だけを抜き出して簡略化したものです。
非反転増幅回路のフィードバック抵抗のあるべき部分がそのまま定電流回路の負荷になっています。
ここで、例えば非反転入力(+IN端子)に1.2Vが加えられたとします。
オペアンプの動作原理として、反転入力(-IN端子)にも同じ電圧1.2Vが現れるので(そうなるようにオペアンプが動作する)、抵抗R4には1.2[V]/1k[Ω]=1.2[mA]の電流が流れなくてはなりません(その電流はオペアンプの出力端子から供給される)。
従って、負荷には1.2mAの電流が流れることになります。そして、この電流の値は(R4=一定として)非反転入力端子の電圧だけで決まるので、電圧→電流変換となります。
式で表すと
出力電流 = 入力電圧 / R4
の式が成り立ち、ゲインは
出力電流 / 入力電圧 = 1/R4 [S]
です。 単位は[S](ジーメンス)であり、電導度とか電気伝導率とも呼ばれる抵抗の逆数です。伝承によるとΩを上下ひっくり返してモー(オームのスペルohmを逆にしてmho)と呼んでいた時代もあったらしいですよ。
ただし、この定電流回路は負荷の電位がGNDから浮いているという制約があります。
そのため、後述の電圧測定回路は差動増幅回路となっています。
また、今回のようにオペアンプの電源電圧が低い時に定電流回路の出力電圧範囲が入力電圧によって狭められてしまうという制約もあります。
先ほどの例で言うと入力電圧を1.2Vとした場合、オペアンプの最大出力電圧が3.3Vだとしてもそこから1.2Vを引いた2.1Vが負荷にかけられる最大電圧となってしまいます。
最近の高輝度なLEDは順方向電圧Vfが高くなる傾向があるので、できれば出力電圧は2.5V以上欲しいところです。
オペアンプの電源電圧を5Vにすれば可能ですが、先述の通りpcDuino3 nanoのAD端子の絶対最大定格が3.3Vなので、オペアンプの電源電圧も安全のため3.3Vとしました。
***** 差動増幅回路 *****
回路図中のU3Bが差動増幅回路を構成しています。
こちらもごく基本的な回路です。少ない部品でまぁまぁの性能が期待できます。
ここではゲインを1とし、回路を構成する4つの入力抵抗は全て100kΩとしました。
これも一応動作を説明しておきます。下の図が差動増幅回路の基本回路です。
例として、(+)入力が1.8[V]、(-)入力が0.7[V]であるとします。
(+)入力は2つの抵抗R5とR7によって分圧されるので、オペアンプの+IN端子の電圧は0.9[V]になります。
オペアンプの動作原理から、-IN端子にも同じ電圧0.9[V]が現れるため、図のように2[uA]の電流が-IN端子に接続された2つの抵抗R6とR8に流れます。
その結果、オペアンプの出力端子には1.1[V]が現れ、これはまさしく(+)入力電圧と(-)入力電圧の差です。
なんだか騙されているような気になりますが、この回路の出力電圧は次の式で表されます。
出力電圧 = {(+)入力電圧 - (-)入力電圧} * R7 / R5
あるいは
出力電圧 = {(+)入力電圧 - (-)入力電圧} * R8 / R6
ただし、R7 / R5 = R8 / R6 であることが条件です。
この差動増幅回路は簡単に設計できるものの、欠点は負荷から見た(+)入力端子と(-)入力端子の電気的特性が同一ではなく、それに伴う誤差の補正も難しいことです。
たとえば(+)入力側の入力インピーダンスは200[kΩ]で一定です。それはいいです。
一方、(-)入力側の入力インピーダンスは一定ではなく、しかも上の図の例では2[uA]が負荷に向かって流れ出す方向です。
抵抗をどんどん大きくしていけば入力電流を無視できるほど小さく出来ますが、むやみに大きな抵抗を使うと色々と副作用も出てきます。
今回はなんとなく100[kΩ]としました。
また、この回路が正しく動作する条件
R7 / R5 = R8 / R6
に誤差があると、これも回路の性能を下げる要因となります。
とはいえ、これは抵抗の絶対的な精度よりもお互いのマッチングが重要なので、出来るだけ同じ値かつ同じロットの部品を使うなどすれば無用なコスト増を避けることが出来るでしょう。
差動増幅回路の出力はpcDuino3 nano のAD入力に直結しています。
pcDuino3 nano のAD入力の入力電圧レンジは0~3.0[V]、分解能は12bit です。
***** 部品を集める *****
下は部品表ですが、同じものをこちらにも置いておきます。
入手が難しい部品はないはずです。殆ど秋月電子で調達可能です。
抵抗は誤差1%の金属皮膜抵抗をお勧めします。
オペアンプの品種はDC特性を重視して選びます。今回の回路に適したスペックはこのようなものです。
- 電源電圧3.3Vで動作すること(もちろん片電源)
- 入力バイアス電流が低いこと(FET入力)
- 電源電圧3.3Vで動作させたときに入力電圧範囲が0~1.2V以上あること
- 出力電圧範囲がフルスイング(0~電源電圧いっぱいまで振れる)であること
...といった要件を満たすオペアンプとしてテキサスインスツルメンツ社(旧ナショナルセミコンダクター)のLMC6482AINを選びました。
が、テキサスインスツルメンツ社の半導体は少しづつ入手が難しくなっているような気がしないでもないので、代替品としてアナログデバイセズのAD8506ARMZも挙げておきます。ただし、AD8506はDIP形状のものがないので、買うなら秋月電子のモジュールが良いでしょう。
回路を設計した時はLMC6482AINも秋月で売ってたんですけどねぇ...
1.2Vの基準電圧源はNJRCのNJM2825Fを選びました。よくわかりませんが、値段の割に精度がよさそうです。これも表面実装パッケージしかないので、変換基板も併せて買いましょう。
その他、Shield万能基板やコネクタなどは同等なものが色々あるので好みで選べばよいでしょう。
***** 組み立て *****
特に注意することもないと思います。
下の写真は参考です。好きなようにやっちゃってください。
***** 完成したらどうするの? *****
次はプログラムの説明です。
例によってPythonを使いますが、今回はここまでです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます