エントリーTrueRMS AC電圧の測定は簡単な作業ではなく、一見しただけでは簡単ではありません。 まず第一に、ほとんどの場合、純粋な正弦波電圧ではなく、ノイズの高調波の存在により複雑な何かを測定する必要があるためです。
したがって、平均平方の観点から平均値検出器を備えた誘惑的に単純なソリューション。 波形が正弦波とはまったく異なるか、単に未知である場合、値は機能しません。
プロの電圧計cf. 平方 値は、回路とアルゴリズムの両方で非常に複雑なデバイスです[1,2]。 本質的に補助であり、機能を制御するのに役立つほとんどのメーターでは、このような困難と精度は必要ありません。
また、最もシンプルな8ビットマイクロコントローラーでメーターを組み立てることができます。
一般的な測定原理図に示されている種類の交流電圧があります。 1。
準正弦波電圧には、一定の準周期Tがあります。
rms電圧値を測定する利点は、一般的な場合、測定時間が重要な役割を果たさず、測定周波数帯域にのみ影響することです。 時間を長くすると平均化が大きくなり、短くすると短期的な変化を見る機会が少なくなります。
cfの基本的な定義。 平方 値は次のようになります。
ここで、u(t)は瞬時電圧値です。
T-測定期間
したがって、一般的に、測定時間は任意です。
被積分関数を計算するための実際の装置を使用した実際の測定では、準正弦波の周波数の少なくとも10倍を明らかに超える特定の周波数の信号を量子化する必要があります。 20 kHz以内の周波数の信号を測定する場合、これは8ビットマイクロコントローラーでも問題になりません。
もう1つは、すべての標準コントローラーにユニポーラ電源があることです。 したがって、負の半波時の瞬間交流電圧を測定することはできません。
[3]では、信号に一定の成分を導入する方法について、かなり独創的な解決策が提案されました。 ただし、その決定において、cfの計算プロセスを開始または終了する価値がある瞬間の決定。 平方 値はかなり扱いにくいようです。
この論文では、この欠点を克服する方法を提案するとともに、より正確に積分を計算し、サンプル点の数を最小限に抑えます。
メーターのアナログ部分の機能図 図2は、予備アナログ信号処理回路のコアを示している。

信号は、コンデンサC1を介して、オペアンプDA1に組み込まれたアンプドライバに供給されます。 AC電圧信号は、ADCで使用される基準電圧の半分とアンプの非反転入力で混合されます。 コンパクトなデバイスは多くの場合+3.6 V以下の電源電圧を使用するため、選択される電圧は2.048 Vです。 その他の場合、[3]のように4.048 Vを使用すると便利です。
アンプ-フォーマーの出力から積分チェーンR3-C2を介して信号がADC入力に供給され、信号の一定成分(U0)を測定します。 ドライバーアンプのC、信号U 'は、基準電圧の半分だけシフトされた測定信号です。 したがって、可変成分を取得するには、差U'-U0を計算すれば十分です。
信号U0は、コンパレータDA2の基準としても使用されます。 Uが値U0を通過すると、コンパレータは差分を生成し、これを使用して測定値を収集するための割り込み手順を形成します。
多くの最新のマイクロコントローラでは、ADCに言及せずにオペアンプとコンパレータの両方を内蔵することが重要です。
基本的なアルゴリズム図 図3は、基本周波数50 Hzの交流電圧の大きさを測定する場合の基本的なアルゴリズムを示しています。

測定は、手動でボタンを押すまでの外部イベントによって開始できます。
開始後、ADC入力信号のDC成分が最初に測定され、次にコントローラーはコンパレーターの出力で正の差を待つように切り替わります。 微分割り込みが発生するとすぐに、コントローラーは20ポイントのサンプリングを行い、準周期の1/20に対応するタイムステップを使用します。
低予算コントローラーには独自の遅延時間が設定されているため、アルゴリズムではX msと表示されます。 適切なタイミングで測定を行うには、この遅延を考慮する必要があります。 したがって、実際の遅延は1ミリ秒未満になります。
この例では、遅延は50 Hzの範囲の準正弦波の測定に対応しますが、特定のコントローラーの速度内で測定された信号の準周期に応じて任意になります。
平均を測定する場合 任意の準周期信号の電圧値、それがどのような信号であるかが先験的にわからない場合、コントローラに内蔵されたタイマーとコンパレータの同じ出力を使用してその周期を測定することをお勧めします。 そして、この測定に基づいて、サンプリングの遅延を確立します。
RMS計算ADCがサンプルを作成した後、値U '[i]の配列、値U0を含む合計21の値があります。 ここで、数値積分にシンプソン式(より正確にはCotes)を適用すると、このアプリケーションで最も正確なものとして、次の式が得られます。

ここで、hは測定ステップであり、定義により0に等しいため、式のゼロ成分はありません。
計算の結果、ADCサンプルの形式で積分値が純粋な形式で取得されます。 実際の値に変換するには、取得した値を基準電圧の大きさを考慮してスケーリングし、積分時間間隔で割る必要があります。
ここで、UopはADC基準電圧です。
すべてがmVでカウントされる場合、Kは約2にほぼ等しくなります。スケールファクターは、角括弧内の違いを指します。 Sを再カウントして計算した後、測定間隔で除算します。 因子hが与えられると、実際にはhを乗算する代わりに整数で除算し、その後に測定時間間隔で除算します。
最後に、平方根を抽出します。
そして、ここで最も面白くて難しいものがあります。 もちろん、C言語では8ビットのコントローラーでも浮動小数点を使用でき、上記の式を使用して直接計算を実行できるため、計算に浮動小数点を使用できます。 ただし、計算速度は大幅に低下します。 非常に小さなRAMマイクロコントローラーを超えることもできます。
これを回避するには、[3]で正しく述べられているように、固定小数点を使用し、最大16ビットワードで動作する必要があります。
著者は、この問題を解決し、Uop / 1024のエラーで電圧を測定しました。 与えられた例では、+ 3.3 Vの供給電圧で±500 mVの合計測定範囲で2 mVの精度で、プロセスを監視する多くのタスクに十分です。
ソフトウェアの秘Theは、可能な場合、乗算または累乗のプロセスの前にすべての除算プロセスを実行し、演算の中間結果が65535(または符号付き演算の場合は32768)を超えないようにすることです。
特定のソフトウェアソリューションは、この記事の範囲外です。
おわりにこの記事では、8ビットマイクロコントローラーを使用してrms電圧値を測定する機能について説明し、回路実装のバリエーションと、実際の準正弦波信号の量子化サンプルを取得するための主要なアルゴリズムを示します。
参照資料- RMS電圧コンバータ
- デジタル電圧計
- MKを使用して実効電圧値を測定する方法