No29 eJackinoとLCDを組み合わせた汎用開発支援ボードを作る(21)
電流測定を行う(12)
商用電源の電流測定(8)
実効値の算出
前回のスケッチでは、最初にキーの入力が要求されます。キーが押されると測定を開始します。
電流測定を行う(12)
商用電源の電流測定(8)
実効値の算出
前回のスケッチでは、最初にキーの入力が要求されます。キーが押されると測定を開始します。
電流測定を行う(11)
商用電源の電流測定(7)
実効値
通常商用の100Vの電源の電圧は、実効値と呼ばれる電圧値で表示されています。この実効値とピーク値の間には正弦波の場合次のような関係があります。
実効値(V)=ピーク値/1.414
となります。1.414は2の平方根です。
ただし、この関係は交流の波形が正弦波のときに成り立つもので、波形にひずみがあったり波形が正弦波でない場合誤差が生じます。
電流測定を行う(9)
商用電源の電流測定(5)
A-Dコンバータの変換速度
ArduinoのATmega328のA-Dコンバータのクロックは10ビットの分解能を得るためには、200kHz以下のクロックとなります。16MHz、または8MHzのシステム・クロックから分周してA-Dコンバータ用のクロックの最大周波数は125kHzとなります。この上の周波数は250kHzとなり、10ビットの分解能を得るための上限の200kHzを超えます。
A-D変換の通常の変換サイクルは13クロックで、
13/125k/sec
= 0.104ms
= 104μs
電流測定を行う(8)
商用電源の電流測定(4)
今回は配列を用意し、センサからの値を順番に配列にセットします。配列への書き込みが終わったら、配列に書き込まれた内容をシリアル通信でPCに送信しシリアル・モニタのウィンドウで確認します。
この処理を繰り返すスケッチを作ります。モニタに表示されたデータを確認するために一巡ごとにシリアルモニタからの入力を待つことにします。
シリアル・モニタからの入力を待つスケッチ
シリアル・モニタに対して、何かキーを入力するように次のメッセージを表示し、
Type any character to start
電流測定を行う(7)
商用電源の電流測定(3)
正弦波の場合でも50Hz の変化する電流測定値を可能な限り連続して測定できるように、スケッチの中で配列に書き込みます。
配列の定義
配列の定義は次に示すように、配列の型と配列の要素の数を示して定義します。
データの型 配列名[ 配列の要素の数];
long indata[30];
電流測定を行う(3)
ACS712-5は185mV/Aの感度で電流に応じた電圧出力が得られます。センサからの電圧から2.5Vを引き185で割ることでセンサに流れる電流が得られます。
またArduinoとLCDモジュールを一体にしていますので、次に示すようなシンプルなスケッチで電流の測定ができるようになります。
今回使用したスケッチ
#include <LiquidCrystal.h>
// LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);
LiquidCrystal lcd(2,3,4,5,6,7);
int ta=125;
void setup()
{
lcd.begin(2,16);
}
基板の外部基準電圧と切り離す
LCD用のヘッダ・ファイルを読み込み、ここまででLCDに16文字2行で表示できるように設定しています。次に表示結果と照らし合わせて説明します。前回設置した2.5Vの外部基準電圧と接続してあるジャンパを外し、基準電圧は電源電圧を使用します。
電流測定を行う(2)
ACS712の電流の測定回路は、次に示すようにVccに5Vの電源を加えて、IP+、IP-に電流を流し、電流に応じて値がVoutに出力されます。その電圧をArduinoのアナログ・ポートで読み取ります。
電流を変化させる
トランジスタ2SC4682で電流の制御を行います。VR1でトランジスタのベースに加える電圧を調整してR1に流れる電流を制御します。R1にはトランジスタのコレクタに流れこむ電流とベースから流れ込む電流の合計が流れます。
ただし、この2SC4682は電流増幅率(hfe)が500くらいで大きいのでベース電流はコレクタ電流の1/500となり、R1に流れる電流の大半がコレクタ電流となります。
ベースに流れる電流が小さいのでR2の電圧降下は小さく無視できるものとして、VR1で2SC4682に加えた電圧がほぼ2SC4682のベース電圧となります。
この回路でLEDに流れる電流は次のようになります。
LEDに流れる電流=(ベース電圧-0.6V)/R1
0.6Vは2SC4682のB-E間電圧

おすすめ書籍 |
最近のコメント |
|
|