ACアダプタ試験回路:瞬時電圧電流を
ソフトでRMS値と実効電力を計算できるかと、
瞬時電圧、瞬時電流測定の実験。
関わってくるのが、Arduinoの(ATmega328)の
A/D変換速度。
16MHzクロックを1/128した125kHzが使われています。
変換時間は約108uS。
ch0入力に電圧を、ch1入力は電流を測定するように
しているのですが、この変換時間でもって電圧と電流の
同時測定ができません。
ちょいと遅れるわけです。
60Hzの波形に対しどのくらいの数値差が出るのか
実測してみたのが次のデータ。
値はサンプリングした順番と二つの10bit A/D値。
2kHzサンプル A/D clock=125kHz
# ch0 ch1
25 -116 -097
26 -040 -021
27 037 056 ch0とch1の差19
28 113 131 前データとの差76
29 189 205
30 251 264
31 305 315
32 345 353
33 374 379
34 390 392
35 387 383
正弦波がマイナスからゼロを越えプラスのフルスケール
目指して登っていくところの数値です。
サンプリング周期は2kHz。
だもんで60Hzだと33データ。
その一部の数値です。
+/-のフルスケールは400ほど。
27サンプル目のch0とch1の差が19になっています。
波形周期と遅れ時間の比を角度に直し、sinして計算
した値に近い誤差が出ました。
次にしたのはA/Dのクロックアップ。
倍の速度にしました。 変換時間約54uS。
2kHzサンプル A/D clock=250kHz
# ch0 ch1
34 -137 -127
35 -061 -051
36 016 026 ch0とch1の差10
37 092 102 前データとの差76
38 168 178
39 234 241
40 292 298
41 334 339
42 368 370
43 386 388
44 390 388
45 375 372
ch0とch1の差は10に縮まりました。
データでのA/Dクロックの最大は200kHzなんですが、
精度に目をつぶったらクロックを上げるのも可。
この速度でch1とのch2の誤差は「2%」。
このあたりが限界か。
これ以上は「サンプル・ホールド」回路を使わないと
いけません。
「LF398」ですな。
そんなに高価なICじゃないんで、使ってもOKなんです
けど、どうしたもんでしょね。
そして、もう一つ根本的なのがサンプル速度。
60Hzの波、2kHzだと33サンプル。
これを倍の4kHzにしてみたのが次の値。
4kHzサンプル A/D clock=250kHz
# ch0 ch1
44 -080 -070
45 -041 -032
46 -004 006
47 035 045 ch0とch1の差10
48 072 083 前データとの差37
49 111 121
50 149 159
51 187 195
52 219 226
53 249 256
54 278 285
55 303 309
56 324 329
57 343 348
58 360 364
59 374 376
60 383 384
61 390 391
62 392 391
63 387 385
64 380 377
隣り合うデータの差が縮まりました。
100サンプルのデータをグラフにするとこんな具合。
(クリックで拡大↓)
125kHzだと、このグラフでもch1(電流)側の遅れが見え
ます。
250kHzにするとだいぶ改善。
そして、4kHzサンプルだと波形もなめらかに。
この時、実際の動きはどうなのかと、オシロの波形です。
まず125kHzクロックの時。
(クリックで拡大↓)
下に見えているパルスはタイマー割り込みとA/D変換
完了割り込みの時間。
ch0のA/D変換はタイマー割り込みで開始。
その変換完了でch0のデータを読み取り、16bit×16bitの
乗算を1回。
その後、ch1のA/D変換開始を指令。
ch1の変換完了でデータ読み取りと乗算を2回。
この時間をパルスの長さで示しています。
2回のA/D変換の間に、入力正弦波が変化している様子が
見えています。
A/Dクロックを250kHzにしたのがこれ。
(クリックで拡大↓)
1/2の時間になったのですが、根本的なところでの
瞬時値を計る誤差ですので、ソフトではどうしようも
ないかなぁ。
サンプル・ホルダICを付けてみますか。
|
2014年3月18日 15時23分
|
記事へ |
コメント(4) |
トラックバック(0) |
|
・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/3714/
※ブログ管理者が承認するまで表示されません
ちなみに、当方では50/60Hz共用にするため、160us周期のタイマー割込みで1250回サンプリングしています。
それと、VI両方同時にサンプリングする件ですが、ch0とch1を電圧と電流に高速で交互に切り替えれば等価的に同時サンプリングしたことにならないでしょうか。
ただ、センサーの位相誤差補正機能が必要になって、同時サンプリングはどうでもよくなるような気もしますが、、
ArduinoのA/D変換、デフォルトが1/128クロックで
変換時間は108uS。
電圧入力チャンネルの変換に続けて電流入力チャンネル
の変換をした場合の最小時間がこの値になります。
(これにデータ保存や変換指令時間が加算)
電源60Hzの周期が16.666mSですんで、変換時間はこの
1/154.3となります。
一周期 = 2π = 360°を乗じると「2.33°」。
これだけのズレが、電圧と電流で生じるわけです。
設計上の誤差としてこのズレを許容するかどうか。
回路上はできるだけゼロを目指したいわけで…
それと、センサーとなるトランスですが、60Hzでそ
んなに位相ずれが発生しますか?
確かめてみますわ。
それにしてもAC100Vの波形が汚いでっす。
正弦波の頭が平になってます。
50W程度だと二つの間はほぼゼロ。
100W、つまり電流1Aになると2〜3度の差が出てきます。
う〜む。
同時測定にこだわらなくていいか。
まっ、せっかくですんでサンプル・ホルダーを入れておきますわ。
電流用の「CT」に対し、「VT」あるいは「PT」という名称。
聞いたことはあったけど、現物にはお目にかかったことは無し。
位相特性や歪みを考慮した作りになっているそうな。
・計器用変圧器 - Wikipedia
・電圧検出用トランス(VT) 加美電子工業株式会社
・電圧検出用トランス資料 加美電子工業株式会社