電圧と電流を測定することは、電気システムを作成またはデバッグするときに常に役立ちます。このプロジェクトでは、PIC16F877Aマイクロコントローラーと電流センサーACS712-5Aを使用して独自のデジタル電流計を作成します。このプロジェクトでは、0〜30Aの範囲で0.3Aの精度でAC電流とDC電流の両方を測定できます。コードを少し変更するだけで、この回路を使用して最大30Aを測定することもできます。それでは始めましょう!!!
必要な材料:
- PIC16F877A
- 7805電圧レギュレータ
- ACS712電流センサー
- 16 * 2LCDディスプレイ
- ジャンクションボックスと負荷(テスト用)
- 接続線
- コンデンサ
- ブレッドボード。
- 電源– 12V
ACS712電流センサーの動作:
プロジェクトの構築を開始する前に、ACS712電流センサーがプロジェクトの主要コンポーネントであるため、その動作を理解することが非常に重要です。電流、特にAC電流の測定は、ノイズと不適切なアイソレーションの問題などが原因で常に困難な作業です。しかし、Allegroのものによって設計されたこのACS712モジュールの助けを借りて、はるかに簡単になりました。
このモジュールは、エドウィン・ホール博士によって発見されたホール効果の原理に基づいて動作します。彼の原理によれば、電流が流れる導体が磁場に置かれると、電流と磁場の両方の方向に垂直なエッジの両端に電圧が生成されます。概念を深く掘り下げないでください。簡単に言えば、ホールセンサーを使用して、通電導体の周囲の磁場を測定します。この測定は、ホール電圧と呼ばれるミリボルトで行われます。この測定されたホール電圧は、導体を流れていた電流に比例します。
ACS712電流センサーを使用する主な利点は、AC電流とDC電流の両方を測定できることと、負荷(AC / DC負荷)と測定ユニット(マイクロコントローラー部分)を分離できることです。写真に示すように、モジュールにはそれぞれVcc、Vout、Groundの3つのピンがあります。
2ピン端子台は、通電ワイヤを通過させる場所です。モジュールは+ 5Vで動作するため、Vccには5Vから電力を供給し、アースをシステムのアースに接続する必要があります。Voutピンのオフセット電圧は2500mVです。つまり、ワイヤに電流が流れていない場合、出力電圧は2500mVになり、流れる電流が正の場合、電圧は2500mVより大きくなり、流れる電流が負の場合、電圧は2500mV未満になります。
PICマイクロコントローラーのADCモジュールを使用して、モジュールの出力電圧(Vout)を読み取ります。これは、ワイヤーに電流が流れていない場合は512(2500mV)になります。この値は、電流が負の方向に流れると減少し、電流が正の方向に流れると増加します。以下の表は、ワイヤを流れる電流に基づいて出力電圧とADC値がどのように変化するかを理解するのに役立ちます。
これらの値は、ACS712のデータシートに記載されている情報に基づいて計算されています。以下の式を使用してそれらを計算することもできます。
Vout電圧(mV)=(ADC値/ 1023)* 5000ワイヤを流れる電流(A)=(Vout(mv)-2500)/ 185
これで、ACS712センサーがどのように機能し、何が期待できるかがわかりました。回路図に進みましょう。
回路図:
このデジタル電流計プロジェクトの完全な回路図を 下の画像に示します。
完全なデジタル電流計回路は、7805電圧レギュレーターによって調整される+ 5Vで動作します。電流値を表示するために16X2LCDを使用しました。電流センサー(Vout)の出力ピンは、アナログ電圧を読み取るためのAN4であるPICの7番目のピンに接続されています。
さらに、PICのピン接続を下の表に示します。
S.No: |
ピン番号 |
ピン名 |
に接続されています |
1 |
21 |
RD2 |
LCDのRS |
2 |
22 |
RD3 |
LCDのE |
3 |
27 |
RD4 |
LCDのD4 |
4 |
28 |
RD5 |
LCDのD5 |
5 |
29 |
RD6 |
LCDのD6 |
6 |
30 |
RD7 |
LCDのD7 |
7 |
7 |
AN4 |
現在のSesnorのVout |
このデジタル電流計回路は、ブレッドボード上に構築することも、パフォーマンスボードを使用することもできます。PICチュートリアルに従っている場合は、PICマイクロコントローラーの学習に使用したハードウェアを再利用することもできます。ここでは 、以下に示すように、PICマイクロコントローラーでLEDを点滅させるために構築したものと同じパフォーマンスボードを使用しました 。
注: このボードを作成する必要はありません。回路図に従ってブレッドボード上に回路を作成し、ダンパーキットを使用してプログラムをPICマイクロコントローラーにダンプするだけです。
シミュレーション:
この電流計回路 は、実際にハードウェアを使用する前に、Proteusを使用してシミュレートすることもできます。このチュートリアルの最後に記載されているコードの16進ファイルを割り当て、再生ボタンをクリックします。LCDディスプレイで電流に気付くはずです。ランプをAC負荷として使用しました。ランプをクリックして、ランプを流れる電流を変化させることにより、ランプの内部抵抗を変化させることができます。
上の写真でわかるように、電流計はランプを流れる実際の電流が約3.52 Aであることを示し、LCDは電流が約3.6Aであることを示しています。ただし、実際には、最大0.2Aのエラーが発生する可能性があります。理解のために、ADC値と電圧(mV)もLCDに表示されます。
PICマイクロコントローラーのプログラミング:
前に述べたように、完全なコードはこの記事の最後にあります。コードはコメント行で自己説明されており、LCDをPICマイクロコントローラーとインターフェースし、PICマイクロコントローラーを学習する以前のチュートリアルですでに説明したPICマイクロコントローラーでADCモジュールを使用するという概念が含まれています。
電流が交流し、ノイズも発生するため、センサーから読み取った値は正確ではありません。したがって、以下のコードに示すように、ADC値を20回読み取り、平均して適切な現在の値を取得します。
上で説明したのと同じ式を使用して、電圧と電流の値を計算しました。
for(int i = 0; i <20; i ++)//値を20回読み取る{adc = 0; adc = ADC_Read(4); // ADC電圧を読み取る= adc * 4.8828; //電圧を計算するif(Voltage> = 2500)//電流が正の場合Amps + =((Voltage-2500)/18.5); else if(Voltage <= 2500)//電流が負の場合Amps + =((2500-Voltage)/18.5); }アンペア/ = 20; // 20回読み取られた値の平均
このプロジェクトはAC電流も読み取ることができるため、電流の流れも負と正になります。つまり、出力電圧の値は2500mVの上下になります。したがって、以下に示すように、負の値が得られないように、負と正の電流の式を変更します。
if(Voltage> = 2500)//電流が正の場合Amps + =((Voltage-2500)/18.5); else if(Voltage <= 2500)//電流が負の場合Amps + =((2500-Voltage)/18.5);
30A電流センサーの使用:
5Aを超える電流を測定する必要がある場合は、ACS712-30Aモジュールを購入して同じ方法でインターフェースし、以下に示すように18.5を0.66に置き換えることで以下のコード行を変更できます。
if(Voltage> = 2500)//電流が正の場合Amps + =((Voltage-2500)/0.66); else if(Voltage <= 2500)//電流が負の場合Amps + =((2500-Voltage)/0.66);
低電流を測定したい場合は、AVRマイクロコントローラーを使用して100mA電流計も確認してください。
ワーキング:
PICマイクロコントローラーをプログラムし、ハードウェアの準備ができたら。負荷とPICマイクロコントローラーの電源を入れるだけで、LCD画面に表示されたワイヤーを流れる電流を確認できるはずです。
注: ASC7125Aモジュールを使用している場合は、負荷が5Aを超えて消費しないことを確認し、通電導体にはより高いゲージのワイヤも使用してください。
PICマイクロコントローラーベースの電流計プロジェクトの完全な動作は、以下のビデオに示されています。プロジェクトが機能し、楽しんでいただけたでしょうか。疑問がある場合は、以下のコメントセクションに書き込むか、フォーラムに投稿してください。