引続き、太陽光パネル用電力制御ボード開発に取組み中。
電力制御の基本となる、電圧、電流を正確に測る仕組が必要なので、PICのAD変換を利用しようと思うが、安物PICでどこまで正確に測定できるか検証している。
PICのAD変換の直進性を調べてみると、傾斜係数が以下のような状態。
0~1V 0.3
~2V 1.5
~3V 2.5
~4V 3.5
おいおい、これではさすがに使い物にならないぞと。
インターネットを検索してみると、アナログ入力端子を大きめの抵抗でプルダウンすると直進性が改善されるらしい。適当に270kΩの抵抗を入れてみると、傾斜係数が以下のようにかなり落ち着いた。
0~1V 1.9
~2V 3.5
~3V 3.8
~4V 3.9
もう少しだ。Excelに測定数値を入れてグラフにしてみると、直進性はよさげだが、0点を通らない直線だ。そうか。中学の数学の問題で、
y = 傾斜 * x + y接辺
なんて数式を持出して、傾斜と接辺を算出すると、
傾斜 = 4.15
接片 = -185
となる。これを計算してやれば、正しい値が求まるか。
ただし、PICでは整数計算しかできないぞ。しかも、パラメータは16ビットなので、65535までしか使えない。ADの最大値が10ビット、1023なので、整数計算で4.15倍に近くするには、58を掛けて14で割ると、4.143だ。こうして、苦労して近似補正式を捻出した。
電圧値 = AD結果数値 * 58 / 14 - 185
さっそく、プログラミングして検証
したところ、Good!!
右のテスターの表示と、左のLCDディスプレイの1行目右の数値(AD変換結果)が一致した。
「よしよし。ういやつ・・・・」ということで、そこそこの精度で電圧測定ができるようになったとさ。
しかし、PICによる個体差があったら、どうなるのだろう。。。いやいや、いやなことはとりあえずは考えないでおこう。
その後の検討で、直進性が悪い理由が判明。対策を講じることで、ほぼ直進性の性能が得られることが確認された。
PIC16F1823には複数のADチャネルがあるが、AD変換機構は一つしかない。マルチプレクサでハード的にAD変換機構に接続するポートを切り替えて使う構造だ。ADチャネルを切り替えると、回路に供給される電圧が安定するまでに待ち時間が必要だ。データシートを確認すると、最大8μsとなっている模様。(当初は、この記述をきちんと読んでいなかった。データシートが英語版だけだったもので。。。言い訳。ちなみに、2014年4月には、日本語版が提供されているのでずいぶん楽になった)
ADのチャネル設定した後に、8μsのウェイトを入れて変換することで、直進性がほぼ実現することが確認できた。