ELM Home Page


2021. 1. 24

電圧周波数測定アダプタ


Chart

無電源で動作するACラインの電圧と周波数をモニタするアダプタです。以前、電源周波数が意外に大きく変動していることに気づき、これを長期間にわたって測定するために製作しました。今回はそれ単独で完結する測定器ではなく、汎用測定モジュールとすることにより、PCでもマイコンでもどのようなシステムにも手軽に組み込むことが可能になっています。

ハードウェア

図1. 回路図
Circuit Board
図2. 基板

図1に製作した電圧周波数測定アダプタの回路図を示します。無電源とは言っていますが、単に個別の電源供給が不要なだけで、実際には測定するACラインから動作電源をもらっています。回路の動作には数V/数mAもあれば十分なので、リアクタンスドロッパ(シャントレギュレータの一種で、大きな降圧比でも低損失)で電源を得ています。このため、回路全体がACラインとの間で非絶縁となるので注意が必要です。

C1が降圧リアクタで、Vin/Xcで決まる電流が負荷電流より大きくなるように容量を選定します。余分な電流はツェナD1で消費されることになるので、あまり大きくすると効率が悪くなります。この回路では入力電圧を測る都合上半波整流としていますが、その必要がなければブリッジ整流にしてC1の容量を半分にできます。R1はC1を筒抜けするパルス性のノイズや電源ONトランジェントによる突入電流を制限して回路を保護します。入力オープン時にC1の放電パスが無いときは、数MΩの抵抗をパラに入れておかないと、後で驚くことになります。

マイコンには、Microchip(旧Atmel)のATtiny45を使用してみました。ACラインの電圧は抵抗で分圧しただけでバッファせず直接ADCに入力していますが、信号源抵抗はテブナンの定理により約2.5kΩとなるのでこれで十分でしょう。基準電圧(LDO)および分圧抵抗(Ra/Rb/Rc)には誤差1%のものを使うことにより無調整化を図っています。

測定データは非同期シリアルで一定時間ごとに送信されます。回路が非絶縁なため、シリアル信号はフォトカプラを介して出力しています。接続先がPCのCOMポートなら回路図に示すように、マイコンのUARTならフォトカプラ出力を数kΩのプルアップと共にUARTのRXD入力に接続します。

ソフトウェア

サンプリング

A-D変換は9.6kHzのタイマ出力で行われるため、9.6kspsとなります。9.6kHzを選定した理由は、ATtiny45がUARTを持たないため、ソフトウェアによるシリアル送信処理も兼ねているからです。

周波数測定

周波数は、A-D変換値のゼロクロスをトリガとして計数します。ACラインの周波数変動の範囲は ±100mHz程度なので、1mHz程度の分解能は欲しいところ。一般的な直接計数式では、ゲート時間 Tg の間のトリガ回数を数えます。したがって、分解能は 1/TgHzとなり、5秒毎に値を得ようとすると周波数分解能は200mHzと全く足りません。

低い周波数の測定では、レシプロカル方式と言ってトリガサイクル時間 T を測ることで f = 1/T により周波数を算出します。レシプロカル方式の分解能は、サイクル時間の測定分解能を t とすると、 t/T²Hzとなります。このプロジェクトでは t = 1/9.6k なので、50Hzの入力に対して 200mHzとなり、まだ及びません。でも、実際のレシプロカル方式の実装では周波数に応じて複数サイクルncycにわたって測ることで分解能が確保(t/T²/ncyc Hzとなる)されます。今回は5秒間に渡って測定しているため、50Hzの入力に対して約 1mHz、60 Hzなら 1.25mHzの分解能となり十分と言えます。

電圧測定

電圧値は実効値の定義に従い、サイクル単位で自乗→平均→平方根の計算を行うことで得ています。内臓ADCの分解能が10ビットと低く計算上は400mV程度の分解能になりますが、ノイズによるディザリング効果と平均処理により演算値は100mV単位としています。電圧についてはこの程度の分解能で十分でしょう。

測定値出力

シリアルフォーマットは、N81 4800bpsです。出力は5秒毎に次のフォーマットで送信されます。

<経過時間>,<電圧>,<周波数>[CRLF]

例:
0:00:00,100.4,50.068
0:00:05,100.7,50.073
0:00:10,100.7,50.073
0:00:15,100.6,50.068
0:00:20,100.5,50.062

つまり、CSV形式ですね。そのままファイルに保存しておけばスプレッドシートで開くことができます。

資料

Sign