次は、交流電圧を直流電圧に変換する勉強だな。
このサイト。いろいろやり方が乗っている。
これまで考えていた、全波整流+平滑の方式だと、ダイオードで電圧降下がおこり、測定したい電流レンジでは事実上使い物にならなそうだ。
交流電圧のまま、高サンプリングレートで測定して、ソフトウェア上で実効電圧を得るのがよさげに見える。
というわけで、高サンプリングレートで電圧を測定する実験。
MCP3208のCH0とCH2で疑似作動入力。CH2側にカーボンヒーターの電源を入れる。
その他プログラムの条件
- コンソールへのprint文を使わず
- ラズパイ上で1シーケンスごとにファイル読み込み→書き出しを行う
- CTは-005を使用
結果がこれ。
まあ、欲しかった電圧のピーク値1.2Vはとれてそう。
この条件で、0.5msecくらいのサンプリングレートとなった。しかし、ばらつきが多い。
なんらかの処理負荷のせいか、0.8msecくらいのサンプリング周期になっているところもある。最終的に直流電圧をどう決定するかにもよるが、サンプリングレートのばらつきは少ない方がいい。ラズパイではなくラズピコなら割り込みとかもなくなってもっと高速になるのだろうか。
その他MCP3208の入力条件を変えてみたところ、
- CH0のみにすると0.3msecくらいのレート
- CH0+2でシングルエンド入力では0.5msくらいで変わらず
- CH0+2疑似差動でファイル入出力をシーケンスごとに行わないようにして、0.2~0.3ms台
となった。
これまで分かった情報をまとめると、以下のような分電盤センサになる。
- ADCのVref=2.5Vとする
- ADCの4096諧調で測定値が分解されると、1LSBあたり0.61mVで、±2LSBの変動があるとすると、±1.22mVの変動
- 1CTあたりMAX20Aをとらえるとする(分電盤のブレーカー仕様)
- CTにより、20Aは1/2000され、10mAになる
- 10mAでVref2.5Vに到達させるためには、R=250Ωを使用
- この条件の場合、1LSBは4.88mAを意味する。±2LSBの変動で、±10mAの変動があることになる
- 10mAなら、積算しても誤差としては十分許せる(気がする)
- この条件の場合、ADC(MCP3208)は差動入力なので、チップ一つで4CHしか測定できない。家の分電盤の断路器は12系統あるので、MCP3208が3個必要。
現時点で思いつく課題は以下。
- 回路実装規模もそれなりになりそうだが、ラズパイではSPI通信は2デバイスしかつなげないので、MCP3208が3戸となった場合どう接続するか。→GPIO端子を消費すれば、3個程度は分別できそう。
- 12CHで1サイクル1.5msくらいかかりそう。交流電源50Hzだと1周期20msなので、13サンプルとれるとして、電圧がマイナスの時はとれないので半分の6サンプルしか取れない。→これがかなり不安。6サンプルで最大電圧を測定できるか。実際に試してみないとわからないかも。ラズパイとラズピコでも結果が変わりそう
- 実際にどうやってデータとして上げるのか。→この課題が出てきた。最終的にはラズピコ→WiFiモジュールで送ることを考えていたが、そんなことをやっていたら(ラズピコにWiFi通信処理をさせていたら)上の課題のサンプリング周期に影響が出そう。これもやってみるしかないか。。ラズピコ→ラズパイ(DBサーバ)へ有線接続というやりかたもありかも。。

