データのサンプリング方法
キャリブレーション値
前報でまとめたキャリブレーション値を再度載せておきます。ADCはanalogRead()の値です。
電流、電圧の換算式
貫通電流
出力電圧の式を変換すると次の式になります。示すのはCT1の場合です。最終的には実験的に測定結果の合わせ込み(係数掛け)をするつもりなので、とりあえずはCT1もCT2も同じキャリブレーション値を使って進めます。
\(KC=1.414\times 13.823\times 2.2447\) とおけば、
電圧
ピーク値で表すため、\(KV=1.414\times \dfrac{102.2}{1.032\times 2.2447}\) とおけば、
測定可能な範囲
ESP32のAtt -6dBのとき利用可能な電圧は、前述したのように100mVから1925mVの1825mVです。これを仮想グランドを基準にして正負に振り分け、正負の利用できる電圧と電流を計算すると下記の表になります。正負を均等に振り分けるためには、仮想グランドの電圧は3.3Vの中点ではなく30%程度になります。100kΩと47kΩで分圧しました。
サンプリング能力
ESP32のADCサンプリングについてデータシートには、RTC controllerで200ksps(kiro samples per second)と出ています。RTCとはRealtime Clockで、ESP32のADCはデフォルトでRTC contorllerで動いているようです。
毎秒最大で200,000サンプルを得られるという意味だと思います。AC100V電源の周波数は拙宅では60Hzです。サンプリングは電流2ch、電圧2ch、仮想グランド電圧1ch、電源周波数(次項参照)1chの合計5chなので、1チャンネルあたり1サイクルでサンプリングできる最大値を求めると次の計算になり、十分な能力があると言えます。
200,000 / ( 60 x 5 ) = 667 samples
別の見方として、サンプリングに要する時間から検討してみます。200kspsとは1サンプリングあたり、1/200k = 5μsecで行うという計算ですが、ネットで情報を探すと11μsecあたりが実力のようです。この場合、最大90kspsになって、1サイクルあたり375samplesのサンプリング数になります。1サイクルあたり100個サンプリングするとしても、まだゆとりがあるので、ここは問題ないと思います。
AC電圧の周波数測定
引用元を参考にして、下記の回路を組んで周波数を測定してみました。電圧波形の整形には引用元に倣いシュミットトリガ74HC14を使いました。
交流の正負電圧を測るため100kΩ抵抗を2つで分圧し(下記注記参照)、仮想グランドを作っています。トランスの出力は2系統に分け、上部のGPIO34は電圧測定用で、仮想グランドを基準に測定します。下部のGPIO36は周波数周期の測定用で、真のグランドを基準に測定します。
1CH黄色がシュミットトリガで整形した電圧波形で、2CH青が生の電圧波形です。オシロのDCレンジで波形を見ています。周波数の測定は黄色の周期をmicros()で読み込み、逆数の周波数にします。
1ch:整形後の電圧(DC) 2ch:生の電圧(DC) |
測定用のスケッチは引用元の"20210303AcFreqLogToAmbient.ino"をモディファイして利用させていただきました。次の図に示すように電源周波数と電源電圧の変動をとらえることができました。
電源周波数と電圧の時系列波形 |
仮想グランドの調整
対策前
正負の特性を測定するため、電源電圧3.3Vを抵抗分圧で仮想グランドにしました。はじめは上述の「電源周波数測定の回路」に示すように引用のブログに載っていたローパス効果を考えた分圧のやり方を使ったのですが、電源電圧計測用のトランスの影響をそのまま受け、次に示す図のように非常に大きな電圧変動が発生してしまいました。
黄色の電源電圧と同じように青の仮想グランド電圧が60Hzで変動しています。赤は黄色から青を引いた仮想グランドからの偏差です。この偏差から瞬時の電圧を求めるのですが、このままではうまくいきそうにありません。
1ch:トランス2次電圧(DC) 2ch:仮想グランド電圧(DC) |
次の図は黄色がクランプセンサの電流で青が仮想グランド電圧です。貫通電流が無い条件です。電源測定用のトランス電圧は回路につなげていません。つまり、電流測定用のクランプセンサ以外何もない条件ですが、貫通電流の影響を受けて仮想グランドが変動しています。
仮想グランドの変動が大きいことに加えノイズもかなり乗っています。黄色と青の偏差である赤色線が画面範囲の80mVを飛び出す時もあります。
1ch:CT電流(AC) 2ch:仮想グランド電圧(AC) |
対策後
脈動の吸収用に470uFのコンデンサを電源側とグランド側に入れることで安定した波形になりました。実状は基板とケースは写真のようにもう作ってしまったので、コンデンサを入れる余裕しかありませんでした。
1ch:CT電流(DC) 2ch:仮想グランド電圧(DC) 赤:偏差 |
仮想グランドに出るノイズの原因は5V電源
下記に挙げる3種類の5V電源で比較してみました。iphoneのDCアダプタが最もノイズが少ないです。さすがです。
PCのUSBポート
[PC] 1ch:仮想グランド電圧(DC) 2ch:トランス2次電圧(DC) |
ダイソーのDCアダプタ
[Daiso] 1ch:仮想グランド電圧(DC) 2ch:トランス2次電圧(DC) |
iphoneのDCアダプタ
[iphone] 1ch:仮想グランド電圧(DC) 2ch:トランス2次電圧(DC) |
予備試験(電圧、電流測定)
測定回路
電流波形
CTセンサーを逆相につけて、同じ貫通電流を1CH(黄色)と2CH(青色)で測定しました。キャリブレーション値は前述したようにCT1とCT2ともに同じ値の13.823を使って測定します。
負荷はドライヤです。クランプ式のテスター読みで送風:0.46A、cool:6.37A、hot : 11.54Aの電流が流れます。波形を見るとcoolは半波整形で出力されています。hotは全波で出しています。
hot波形を見ればよく分かりますが、2CHは1CHの80%程度の出力電圧です。原因は前にも書きましたが、CTセンサを落としてコアが割れたので、磁束が下がったことが原因だと思います。2CHの低下の割合は前報で測定したCTセンサの出力特性の差とずいぶん違います。恐らく、割れたコアがずれて磁束が変わったのだと思います。
Io = 0 A |
Io = 0.46 A |
Io = 6.37A |
Io = 11.54 A |
電流特性
電流の時系列波形を示します。ここでもCTセンサの出力差が顕著にみられます。また、貫通電流が無い時でもCTセンサには0.2Aほどのわずかな出力がみられます。
スケッチは前報で紹介した引用元に載っているものを2センサ用に変更して使いました。
このデータを使いCT1、CT2にそれぞれ補正係数を掛けてみたものを示します。ほぼ同じ特性にすることができました。
ただし、CT2についてはコアが動かないように細工してから、再び測定する必要があります。下記の数値を具体的に説明すれば、CT2はコア割れによって磁束が減ったので感度を1.24倍してあげる必要があるという意味になります。