ページ

2022/10/19

ラズパイとラズピコで分電盤センサを作成(11)

さて、前回直流電流のバイアスをかけたことで、なんとなく交流波形の全体像が見えたが、やはり測定器でも見てみたいので、Amazonで中華製格安オシロスコープを買った。早速測ってみる。

CT(KCT-6)に接続した抵抗に直接オシロをつなぐ。0点調整をしていないので、絶対値は適当。

カーボンヒーター300W(左)と600W(右)



うーんこれは。。やはり300Wの波形が歪んでいる。
つまり、ADCは正しい値を示していたのか!
驚き。なぜKCT-6のカーボンヒーター300Wの時だけこんなに歪むのか。

次に、CTをURDに変更して測った。
カーボンヒーター300W(左)と600W(右)

KCT-6と波形の歪み方が異なるが、極性が逆になっただけか?
すると、CTの種類の問題ではなく、もとのカーボンヒーターの問題だったことになる。
もう1回、バイアス付きADCでURDの出力を見てみる必要があるだろう。一見正しそうな負電圧側を見ていたのかも。
電流を求めるにあたって、最大値を採用で良いやと考えていたが、これはきちんと実効値を出すようなプログラムに変更した方がよいかもしれない。

他のCTでも試してみる。
CTKD-10、100Ω接続
カーボンヒーター300W(左)と600W(右)

KCT-10、100Ω接続
カーボンヒーター300W(左)と600W(右)

SCT-013 100A 50mA 、100Ω接続
カーボンヒーター300W(左)と600W(右)

それぞれわずかに概形が違うものの、波形の歪みは300Wカーボンヒーターの特例であることが分かった。

なぜ電化製品の入り口で測定している交流電流波形が歪むのか?
このサイトが参考になるやも

ただ、ここはこれ以上追いかけないことにしよう。


2022/09/25

ラズパイとラズピコで分電盤センサを作成⑩

では、肝心の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設定の計測結果。


いいね。マイナスの電圧はとれていないものの、正弦波がグラフとして出てくると、やっている感、できている感がある。

次に300Wの時。


なんだこりゃ???
最大値の部分が崩れているのがわかる。
つまり、大電流の域が乖離していたのではなく、小電流(というほどでもないが)の域が乖離していたことになる。
次は、なんでこんな波形になるかを考察せねば。。

カービンヒーターではなくはんだごてをつなぎ、DMM指示電圧0.011Vという小さい場合で試してみる。


あれ、また一見正しそうな波形になった。計算した実効値は0.00815V。うーん、まあさすがに値が小さすぎて誤差の範囲だろうか。

次にDMM指示電圧0.077Vの場合。(カーボンヒータ300W+はんだごて25W)

波形の乱れはちょっと解消?

他にも電熱系の家電をいろいろ測ってみたが、300W近辺だから崩れるというわけではなさそうだ。
そこで一つの考えが浮かんだ。カーボンヒーターは300Wの時はもともとそういう崩れた波形なのではないかと。
もとの電流がそのように変動しているのではないかと。
もしそうだとすると、これは、オシロスコープでないと調べられない。(そしてオシロスコープを持っていない)

次に、CTの異常を考えて、ほかのCT(KCT-6と一緒に買ったKCT-10)で試してみた。


正しい波形に見える。。?

次にADCの入力をch6とch7を入れ替えてみても波形の歪みは変わらず。
ということは、KCT-6とカーボンヒータ300Wの組み合わせでしか出ない現象ということなのか・・?

次にKCT-6の別個体を使ってch6とch7で計測したところ、別個体でも歪み発生。うーん。。
これ以上は悩んでも分からない。やはりオシロスコープで元の波形を直接観測したいかも。

ちなみに同じタイミングで購入していた日本製URD製のCT(CTL-6-S32-8F-CL)でも正常波形(のようなもの)を測定。

KCT-6に戻ってきて、CT接続抵抗を10Ωに変えても波形は変わらず歪む。(値の精度は下がる)
では接続抵抗1MΩではどうだ?


んー波形は変わったが、なんかこれはこれでおかしい波形。。600Wにしてもこの傾向は変わらず。

ちなみにURDのサイトには下記にようなありがたい特性資料がある。



抵抗が大きいと特性が悪くなるようなので、もともと1MΩは参考にしてはいけないということか。

次に試しにCTの±を逆に接続したら、あれ?治った?


しかしよく見ると電圧の最大値がおかしい。DMMの実効値の2倍以上を指している。波形は正常に見えるが、まだ直っていない。ブレッドボード上の接触状況が変わったのだろうか?
→CTの配線をまた逆にしてみたら波形の歪みが再現。これは原因究明の大きなカギになるのではないだろうか。

最終的にはオシロスコープを買おうと思っているのだが、その前に試してみたいこと。
交流信号に直流電圧のバイアスをかける方法を見つけた。
回路図をみると、なるほど~という感想。
コンデンサの容量は特に計算せず、手持ちのもの(容量不明)を入れて試してみた。
直流のバイアス電圧として、MCP3208のVrefを1/3に分圧したものを使用。


そして、結果がこれ。


なんか久々に達成した感がすごい。
これで交流電圧の全体像が見れるようになった!
極性を変えて計測しなくてもいいわけだ。

このグラフから3つのことがわかる。

  • 波形のゆがみは一方向のみ
  • 600Wの方が周期が遅れていくように見える
    →ADCが電圧を比較していく順序によるのだろうか?つまり電圧が大きいとVrefと一致するのが遅くなる?
    →振幅が大きいのだから、この説明では不足しているな
  • 交流電圧の直接測定は、バイアスかけた方が倍のサンプルがとれる

まあ、波形の歪みの謎はつかめないままなのだが、大分前進した感がある。

2022/09/24

ラズパイとラズピコで分電盤センサを作成⑨

アリエクスプレスで購入した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Ωがよさそうだ。

2022/08/29

ラズパイとラズピコで分電盤センサを作成⑧

少し毛色が変わり、ラズパイ上で電流値をためこむ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秒でも、まあまあいける。

ラズパイとラズピコで分電盤センサを作成⑦

 次は、交流電圧を直流電圧に変換する勉強だな。

交流電流センサ・応用回路1

このサイト。いろいろやり方が乗っている。
これまで考えていた、全波整流+平滑の方式だと、ダイオードで電圧降下がおこり、測定したい電流レンジでは事実上使い物にならなそうだ。

交流電圧のまま、高サンプリングレートで測定して、ソフトウェア上で実効電圧を得るのがよさげに見える。

というわけで、高サンプリングレートで電圧を測定する実験。
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サーバ)へ有線接続というやりかたもありかも。。



ラズパイとラズピコで分電盤センサを作成⑥

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.28A0.06V0.268V@抵抗なし
AC0.28A0.051V@0.33kΩ
AC0.28A0.122V@1kΩ
AC0.28A0.184V@2kΩ
AC0.28A0.214V@3kΩ
AC0.28A0.234V@4.55kΩ
AC0.28A0.251V@9.57kΩ
AC6.04A1.20V3.84V@1.749kΩ
AC6.04A5.08V@3.21kΩ
AC6.04A5.53V@4.55kΩ
AC6.04A5.93V@9.57kΩ

抵抗を増やすほど電圧があがる。。。想定外。これはもしや、自分の学生時代意味不明だった電流源というやつか・・?

(追記)CTは電流源として振舞うようだ。そして、オープンにすると高電圧がかかって危ないので、オープンにしてはいけないらしい。逆に変圧器は電圧源として振舞い、ショートにしてはいけないらしい。同じようなものに見えるのに・・よくわからん

まあ、基礎データは取れた。ぱっと見で-005の方が抵抗が内蔵されており、初心者向けのように見える。が、抵抗で自在に調整できる-100の方がスタンダードなのだろう。

(追記)やはり-100は電流源扱いのようだ。

交流電流
22Ω(18.5Ω)0.044V6.03A
100Ω0.182V0.301V
150Ω(145.8Ω)0.261V0.432V
270Ω(261.7Ω)0.464V0.770V
CTが流れた電流を1/2000するとして、V=RIに当てはめるとよく数値があう。
ということは、-100を使った場合、
  • 2.495VのTL431をVrefとして使用
  • ブレーカーの20Aまで検知→CTには0.01A流れる
  • 249.5Ωが正解
ということになる。また、有効数字を増やしたければ、抵抗は1個ずつテスタで測った方がよさそうだ。

-005の方は結果をいじるには分圧が必要だが、そうすると抵抗の実装面積が増えるので、低電流が期待されるところに使おう。

ラズパイとラズピコで分電盤センサを作成⑤

 別のサイトでこんな記事を見つけた。

ラズパイでアナログ電圧を扱う (7) MCP3208のプログラム③

Raspberry Pi 4にてMCP3208を使用して測距センサーの値を得る

アナロググラウンドとデジタルグラウンドをショートさせる策は既にやっているので、Vddの入力側に0.1μFのコンデンサを入れるのと、ADCの疑似差動入力を試してみる。

ふむふむ。

さらに、測定対象を単3乾電池にしてやってみた。これは化学反応による電圧なので、ノイズがほぼないらしい。



疑似差動のほうが精度が悪いように見えるが、これは集計上の誤差と思われる。(0点を出すときにINT関数で桁落ちさせているため)
+2とかの差では、わずかに疑似差動がまさっている。しかし、シングルエンドも十分使える性能だな。シングルエンド入力は、ADCのピンが倍使えるので、メリットは十分にあるな。

同じく単3乾電池使用で、Vrefとしてシャントレギュレータではなくラズパイから出力される3.3V電源を使ってみた場合がこれ。


ここから学んだのは次の点。
  • ラズパイから出力される3.3V電圧は結構変動する ロングテール。Vrefとして使わないほうが良い。
  • 乾電池の電圧安定性は高い。但し、長期間の電圧低下・内部抵抗変化はどうなるか分からないので要注意。
  • ADCの疑似差動入力が効果を出すようなコモンモードノイズは、今回組んだ回路ではもともと少ない(今回1分程度の計測ではあるが)
ということなので、シングルエンド入力を使うことに決めた。

それにしてもこの一連の実験はなかなか勉強になった。分電盤アプリとは関係ないが今後も実験してみたい。他にも気になることもある。
  • MCP3208のDoutから出ているデジタル出力電圧は実際何Vなのか?
  • Doutを何Vまで下げると、ラズパイSPI入力はデジタル信号を読めなくなるのか?

ラズパイとラズピコで分電盤センサを作成(14)

回路の実装図作成に取り掛かろうと思ったが、ここで一つ寄り道。 ADCへの入力前に交流電圧に対して直流バイアスをかける手段として、オペアンプを使う方法が出てきた。 アナデジ太郎の回路設計 というか、バイアスをかけたい場合、この方法の方がメジャー・・? と思ったのだが、オペアンプは以...