アナログ回路の実験・調整用に-16V~+16Vの
範囲をポテンショで調整して出力できる回路を
作ってあります。
最大±15Vを入力する回路の動作確認、調整用です。
DC-DCコンバータで±18Vの電源を作って、オペアンプ
を駆動。
その入力電圧を可変して±16V(+ちょっとオーバー)を
出力するような仕掛けになっています。
0Vをまたいで電圧を連続してプラマイできるわけです。
設定電圧の確認はデジタルテスターをつないでという
ふうにしていましたが、「表示器があるほうが便利」
だろうということで、Arduino-UNO R3を使った電圧計を
くっつけてみました。
10bit ADCのAtmega328がベースですので表示は±19.9V
と2・1/2桁です。
ちゃんとした電圧を見たい時はこれまでと同じように
テスターをつないでということで運用します。
±16V発生回路。
±9V出力のDC-DCコンバータを2つ使って±18V電源
を得ています。
これに電圧値表示回路をドッキング。
電源は外からの5V。
さて、プラマイ電圧の入力回路をどうするか。
Arduino UNOのADC、その入力電圧はプラスだけですが、
・2022年11月28日:単電源で反転アンプ マイナスの入力電圧は増幅できます
・2015年04月22日:A/Dコンバータの入力レンジを拡大する方法
こんな考え方で、単電源の回路でも±電圧を入力すること
ができます。
以下の図はVrefが2.5VのADCの入力レンジを拡大する方法を
示しています。
この中の、(d)±5V入力 と (e)±10V入力の考え方は、
・Vin / Vrefの比、基準電圧の何倍の電圧を入力するか
から、R1とR2の比を決定。 (Vinは正負片側の電圧値で)
・Vref2.5Vで10倍の±25Vなら、R1とR2は9:1。
・Vin=0Vの時のA/D値を半値にするため、R1とR2の
並列抵抗値をR3に。
・10倍ならR1:R2:R3は90:10:9の比率。
これが抵抗3本で、0~2.5V入力のADCに対して±電圧を
入力する一手法となります。
もう一つの方法が差動アンプです。
(+IN - -IN) × GAIN として出力が得られるので、
GAINを1/8 (減衰)にして、+INにオフセットとして10Vを
加えておくと、±10Vの範囲を0~2.5Vに変換できます。
※ただし、増加減の方向が逆に
Vref電圧(2.5V)を基準に描くと、こんな具合になります。
反転入力がVinで±電圧入力。
非反転入力がオフセット電圧の設定。
Vin=0Vの時のA/D値を、Vrefの半値にします。
非反転入力のオフセット電圧が+になるので、
アンプは単電源で動かせます。
R1とR2で入力電圧の倍率を設定。
通常の差動アンプですとR1=R3、R2=R4にしますが、
±電圧入力回路に限ればこのオフセット電圧は別の
抵抗値で固定してかまいません。
それを考えて描き直すとこのようになります。
R3とR4の比で固定的なオフセット電圧を得ます。
ATmega328の内蔵基準電圧を外に取り出して
使いますのでVref = 1.1V。
こんな回路になりました。
チップを抜いたArduino UNO R3基板とつないで
スケッチをアップロードします。
キャリブレーション(校正)操作は通信で。
-15.0V、0.0V、+15.0V
この3点のA/D値を記憶(内蔵EEPROMに保存)します。
実電圧とその時のA/D値を使いますので、抵抗の誤差や
Vref値の誤差は校正操作で吸収されてしまいます。
0.0Vを校正点に入れて3点にしたたのは、
ゼロはゼロと出て欲しいから。
最小値と最大値での2点校正では、ひょっとするとゼロにならない
かもという、リニアリティ特性の懸念があるので。
A/D値から電圧値への計算はあのmap関数を使います。
※map関数はこう使って欲しいゾの例です。
制御スケッチ
・ダウンロード - pm20volt1.txt
※.inoではなくファイルタイプを.txtにしています。
UTF8nのテキストファイルです。
7seg LEDをダイナミックスキャンして電流値を表示し
ているこれらのサンプルも参考にしてください。
・2022年11月29日:Arduino UNO(のチップ)を使ったUSB電流計
・2022年12月 2日:Arduino UNOを使ったUSB電流計 箱に入れて完成
・2022年12月14日:Arduino UNOを使ったUSB電流計 4桁表示も
キャリブレーションの方法はこれらとスケッチを参照してください。
※入力レンジに切り替えについてはこれも
・2014年02月01日:入力レンジ切り替え回路
※例のmap関数
・2020年5月16日:Arduino 10bit A/D値をmap関数でスケーリングする例
・2020年5月17日:Arduino なんとかして誤用を正したい:A/Dの1/1023とmap関数
・2022年11月6日:Arduino map関数をfloatに
※点滅表示
A&D社の「AD-8724D」という電源、「0~30V・2.5A出力」の
シリーズレギュレータです。
これの電圧表示も「xx.xV」と3桁。
今回の回路でのマイナス側の表示、3桁目が
「-」だけかあるいは「-1」になります。
このためマイナス側の最大(最小というべきか)を
「-19.9V」と制限(ソフト的に)しています。
プラス側は「19.9」ではなく「99.9」を
リミットにしてますんで、分圧抵抗を変えた場合でも
「-19.9~99.9」の範囲なら表示は可能です。
そして、マイナス、プラスともリミットを越えた時は
表示を点滅するようにしています。
そしてもう一つ点滅する条件がA/D値の範囲。
電圧値に変換する前の値として有効範囲を
チェックしています。
10bitですので0~1023が出てくる値になります。
しかし、5以下と1018以上は、リニアリティが疑問とい
うことで、表示を点滅するようにしてあります。
※Aref端子から内部Vrefを引き出す
・2013年04月25日:AVRマイコンのAREFピン
・2013年05月02日:AVRマイコンのAREFピン #2
・2022年10月05日:サーミスタ103JTで計った温度をシリアル出力
最近のコメント