さて、前回直流電流のバイアスをかけたことで、なんとなく交流波形の全体像が見えたが、やはり測定器でも見てみたいので、Amazonで中華製格安オシロスコープを買った。早速測ってみる。
CT(KCT-6)に接続した抵抗に直接オシロをつなぐ。0点調整をしていないので、絶対値は適当。
カーボンヒーター300W(左)と600W(右)
カーボンヒーター300W(左)と600W(右)
さて、前回直流電流のバイアスをかけたことで、なんとなく交流波形の全体像が見えたが、やはり測定器でも見てみたいので、Amazonで中華製格安オシロスコープを買った。早速測ってみる。
CT(KCT-6)に接続した抵抗に直接オシロをつなぐ。0点調整をしていないので、絶対値は適当。
カーボンヒーター300W(左)と600W(右)
では、肝心のADCの値との比較テスト。
ラズピコのADCによる測定プログラムを作成。測定対象を1chのみにして、まずは波の概形をとらえられるようにスリープ時間を入れない高頻度計測をする。もし十分なサンプリング間隔の短さであれば、頻度を落としても実効電圧をそれなりの精度で出せるようにしたい。
そして、やってみたところ、ADC出力3.73Aに対してDMM指示値2.68A、6.1Aに対して7.31Aと、非線形な応答を見せた。なぜだろう?
KCT-6のメーカーサイト(後記:今はないが)にある「Load resistance」のとおりCT接続50Ωも試したが、6.1Aの方で乖離が大きかった。メーカーサイトによると、少ない電流の方が誤差が大きいように見えるが。
いずれにせよ、大電流領域で誤差が大きいのは、今回分電盤センサの目的からいってよろしくない。対策は何だろうか・・もっと電流の種類を増やして、プロットの傾向をつかんでみよう。
CHを一つだけにして高頻度で測ってみる。CT接続の抵抗は50Ω。DMMの指示電圧は0.141V。ここで思い出したのだが、DMMの値は真の実効値(RMS)を示しているとのこと。
ADCで測ったのは瞬間値なので、一致しないのは当たり前であった。
真でなくとも、正弦波と仮定すれば、最大電圧を√2で割れば実効値になるはず。すると、0.139Vとなり、なかなかよいということになる。
カービンヒーター600W設定の計測結果。
んー波形は変わったが、なんかこれはこれでおかしい波形。。600Wにしてもこの傾向は変わらず。
ちなみにURDのサイトには下記にようなありがたい特性資料がある。
次に試しにCTの±を逆に接続したら、あれ?治った?
なんか久々に達成した感がすごい。
これで交流電圧の全体像が見れるようになった!
極性を変えて計測しなくてもいいわけだ。
このグラフから3つのことがわかる。
まあ、波形の歪みの謎はつかめないままなのだが、大分前進した感がある。
アリエクスプレスで購入したCTであるKCT-6が10個届いた。
リンクを貼りたいのだが、HEYI社のホームページのKCT-10のリンクが見つからなかった。
日本製の小型CTというと、結構高い。これは安く手に入ったし、サイズ的にも分電盤に収まりそうな気がしている。(後記:この判断は浅はかであった)
早速CTを試してみるべく、CTで電線を挟み、その出力をデジタルマルチメータ(DMM HIOKI 3287)でとらえる回路を作った。シャントレギュレータTL431使用。
結果がこれ。横軸がCTを通過する交流電流、縦軸がDMMでとらえた交流電圧(RMS)である。
CTに接続する抵抗をいろいろ変えて測定した。
注:どこかで書いたかもしれないが、CT(変流器)はオープン接続にすると高電圧が発生しする可能性があり危険。必ず抵抗を接続しなければならない。逆に、変圧器はショート接続禁止。
うーん、このグラフが正解なはずだが、X軸のプロットが少ないためわかりにくい。。
そこで、プロットの仕方を変えた。
これならわかりやすいグラフ。
今回使用したCTでは、Vref2.495Vのシャントレギュレータで20Aまで測りたいなら、線形だとして6.1Aのとき0.75Vであってほしい。すると、CTに接続する抵抗は200~300Ωがよさそうだ。
少し毛色が変わり、ラズパイ上で電流値をためこむDBを作ったとき、どのくらいのサイズになるかを検証した。
というわけでラズパイで分電盤センサ用DBの作成。
Mysql -u root -p
CREATE DATABASE log_current CHARACTER SET utf8;
Use log_current
CREATE TABLE current (
Date datetime NOT NULL,
Ch0 float, ch1 float, ******, ch11 float);
ラズピコ側でラズパイ側へ12ch分の測定電流を書き込むプログラムを作成し、実行。
ラズパイ側はシリアル通信で受け取り、それをMariaDBに読み込んでいくプログラムを作成し、実行。
60秒のサンプリング周期でどれくらのDBサイズになるか試してみる。
DBのサイズ確認SQL文は下記。
Select table_schema, sum(data_length) from information_schema.tables group by table_schema;
12時間後、720回のサンプリングで81920bytes=82kバイト。1日で160kB。1年で58.4MB。サンプリング周期1分で、十分実用的なサイズだな。サンプリング周期10秒でも、まあまあいける。
次は、交流電圧を直流電圧に変換する勉強だな。
このサイト。いろいろやり方が乗っている。
これまで考えていた、全波整流+平滑の方式だと、ダイオードで電圧降下がおこり、測定したい電流レンジでは事実上使い物にならなそうだ。
交流電圧のまま、高サンプリングレートで測定して、ソフトウェア上で実効電圧を得るのがよさげに見える。
というわけで、高サンプリングレートで電圧を測定する実験。
MCP3208のCH0とCH2で疑似作動入力。CH2側にカーボンヒーターの電源を入れる。
その他プログラムの条件
結果がこれ。
ADCの精度の実験は一区切りつけ、分電盤センサの次の要素に目を向けてみる。
変流器、カレントトランス、CTと呼ばれるセンサだ。分電盤を流れる電流はそのままでは扱えない大きな電流なので、小さくする役割がある。小さくしたところで抵抗に通せば電圧に代わり、電圧をADCで計測するという流れ。
調べたところ、お手軽なCTは変流比2000:1。
Ali Expressで手に入れた、YHDC社製SCT-013シリーズ。CTはたくさん使うし、その割に単価が高め(電子工作の部品の中では)のため、安い方がよいということでこれにした。
SCT-013
この変流比で60Aを測る場合、2.495Vのシャントレギュレータ出力をVrefに入れたMCP3208で最大値60Aまで測れるようにするには、83.17Ωの抵抗が必要となる。
SCT-013は、ご丁寧に?ケーブルの先がステレオミニプラグになっている。ということは、それを受けるジャックが必要だ。秋月電子にステレオミニジャックのDIP化キットが売っていたので購入。
DIP化キットの基板の穴すべてにピンをはんだ付けしたら、ブレッドボード上では干渉して逆に使いづらくなってしまった。。
さて、このCTをお試ししてみるために、2芯の電源延長コードをカッターで二つに割いて、1芯ごとに分割した。割くときに失敗して金属の芯線が見えてしまった。ここには100Vがかかるので、要注意。絶縁テープでグルグル巻きにした。メガネコードのような切りやすいタイプにすればよかった。。
さて、この特製コードにマルチテスタのクランプを挟んだり、購入したCTをかませたりして、いろいろ測定してみる。
ちなみにCTは2種類購入している。YHDC SCT013-100とSCT013-005だ。恐らく、抵抗がビルトインされているバージョンとそうでないバージョンと思われる。
-100は抵抗の種類を変え、両端の交流電圧を測定。
-005は抵抗を入れず、ステレオミニプラグの交流電圧を測定。
結果は以下。
●HIOKIの結果が交流0.28Aのとき
| HIOKI | -005 | -100 |
| AC0.28A | 0.06V | 0.268V@抵抗なし |
| AC0.28A | 0.051V@0.33kΩ | |
| AC0.28A | 0.122V@1kΩ | |
| AC0.28A | 0.184V@2kΩ | |
| AC0.28A | 0.214V@3kΩ | |
| AC0.28A | 0.234V@4.55kΩ | |
| AC0.28A | 0.251V@9.57kΩ | |
| AC6.04A | 1.20V | 3.84V@1.749kΩ |
| AC6.04A | 5.08V@3.21kΩ | |
| AC6.04A | 5.53V@4.55kΩ | |
| AC6.04A | 5.93V@9.57kΩ |
抵抗を増やすほど電圧があがる。。。想定外。これはもしや、自分の学生時代意味不明だった電流源というやつか・・?
(追記)CTは電流源として振舞うようだ。そして、オープンにすると高電圧がかかって危ないので、オープンにしてはいけないらしい。逆に変圧器は電圧源として振舞い、ショートにしてはいけないらしい。同じようなものに見えるのに・・よくわからん
まあ、基礎データは取れた。ぱっと見で-005の方が抵抗が内蔵されており、初心者向けのように見える。が、抵抗で自在に調整できる-100の方がスタンダードなのだろう。
(追記)やはり-100は電流源扱いのようだ。
| 交流電流 | ||
| 22Ω(18.5Ω) | 0.044V | 6.03A |
| 100Ω | 0.182V | 0.301V |
| 150Ω(145.8Ω) | 0.261V | 0.432V |
| 270Ω(261.7Ω) | 0.464V | 0.770V |
別のサイトでこんな記事を見つけた。
ラズパイでアナログ電圧を扱う (7) MCP3208のプログラム③
Raspberry Pi 4にてMCP3208を使用して測距センサーの値を得る
アナロググラウンドとデジタルグラウンドをショートさせる策は既にやっているので、Vddの入力側に0.1μFのコンデンサを入れるのと、ADCの疑似差動入力を試してみる。
ふむふむ。
さらに、測定対象を単3乾電池にしてやってみた。これは化学反応による電圧なので、ノイズがほぼないらしい。
疑似差動のほうが精度が悪いように見えるが、これは集計上の誤差と思われる。(0点を出すときにINT関数で桁落ちさせているため)
+2とかの差では、わずかに疑似差動がまさっている。しかし、シングルエンドも十分使える性能だな。シングルエンド入力は、ADCのピンが倍使えるので、メリットは十分にあるな。
同じく単3乾電池使用で、Vrefとしてシャントレギュレータではなくラズパイから出力される3.3V電源を使ってみた場合がこれ。
回路の実装図作成に取り掛かろうと思ったが、ここで一つ寄り道。 ADCへの入力前に交流電圧に対して直流バイアスをかける手段として、オペアンプを使う方法が出てきた。 アナデジ太郎の回路設計 というか、バイアスをかけたい場合、この方法の方がメジャー・・? と思ったのだが、オペアンプは以...