Arduino周波数カウンター:7ステップ

Arduino周波数カウンター:7ステップ

目次:

Anonim

信号の周波数を調べるには、CROを使う必要があります。私達はまた周波数計を使用できます。しかしそれらの両方とも費用がかかります。 Arduino周波数カウンター 我々は簡単に様々な信号の周波数を測定することができます。この回路は比較すると非常に少ないコストで簡単に作ることができます CRO そして 周波数計

用品:

ステップ1:必要なコンポーネント

  • Arduino Uno
  • 3ピンLCDインターフェースボード。
  • 16×2 LCD
  • IC 74LS14

私はLCDを3Pinsと簡単に接続するために3ピンLCDインタフェースボードを使いました。あなたが3ピンインターフェースボードを持っていないなら、あなたはそれを簡単に作ることができます。3ピンインターフェースボードを作る方法を知るために下のリンクをクリックしてください。

ArduinoとLCDのインターフェースは3本のピンのみを使用

ステップ2:IC 74LS14の操作

IC74LS14はシュミットトリガです。任意の信号を方形波に変換するためにシュミットトリガを使用しています。

このIC 74LS14を使用する利点

  • 5ボルトのICです
  • それの出力電流は40mA以下です
  • 任意の信号を方形波に変換します
  • 出力方形波の周期は入力信号と同じなので、方形波に変換しても測定される入力信号の周波数は変わりません。
  • Arduinoのデジタルピンとアナログピンは5Vボルトと40mAの電流にしか耐えられません。この範囲外のものはあなたのArduinoを損傷します。 ic 74LS14は5Vを使用し、出力電流は40mA以下です。このIC74LS14を使用しても安全です。

ステップ3:概略図

周波数の測定には任意の発振器回路を使用できます。この回路図ではデモ用に使用されている発振器であるCD4047を使用しました。

ステップ4:頻度の計算に使用される式

CROでは使っています f = 1 / T 頻度を計算する式。頻度の計算にも同じ概念が使用されます。

どこで

T 1サイクルの信号のマイクロ秒単位の期間(us)

私達が使用したArduinoの頻度カウンターのプログラムでは f = 1000000 /pulseTotal.

どこで

pulse Totalは、Signal(T)の期間に他なりません。

マイクロ秒(us)= 10 ^ -6

式がどのように与えられるかを以下で見てくださいf = 1000000 / pulseTotal にとって Arduino周波数カウンター

f = 1 / T マイクロ秒単位なので、式は次のようになります。 f = 1 / Tx(us)

マイクロ秒(us)= 10 ^ -6、だから式はf = 1 / Tx10 ^ -6のように書かれる。

マイクロ秒(us)を分子にすると10 ^ 6になります。これは1000000の値と同じです。

だから最後にarduinoの周波数カウンタの式は次のように与えられます f = 100000 / T。

信号を方形波に変換しているので。方形波にはTonとToffの周期が含まれています。

そのため、1サイクルの信号の合計時間は次のようになります。

pulseTotal = Ton + Toff

以下のコードはTonとToffの計算に使用されます。Ton= pulseHigh.Toff = pulseLow

pulseHigh = pulseIn(pulsePin、HIGH)。

pulseLow = pulseIn(pulsePin、LOW)。

ステップ5:プログラムコード(LCD用に3ピンインターフェイスボードを使用する場合)

#含める

#含める

LiquidCrystal_SR lcd(6、5、9);

const int pulsePin = 12; // Arduinoのピン12に接続されている入力信号

int pulseHigh; //入力パルスのHigh時間をキャプチャするための整数変数

int pulseLow; //入力パルスのLow時間をキャプチャするための整数変数

float pulseTotal; //入力パルスの合計時間

フロート周波数。 //計算頻度

void setup(){

pinMode(pulsePin、INPUT);

lcd.begin(16、2);

lcd.setCursor(0、0);

lcd.print( "Instructables");

lcd.setCursor(0、1);

lcd.print( "Freq Counter");

遅延(5000)。

}

void loop(){

lcd.setCursor(0、0);

lcd.print( "頻度は"です);

lcd.setCursor(0、1);

lcd.print( "");

pulseHigh = pulseIn(pulsePin、HIGH)。

pulseLow = pulseIn(pulsePin、LOW)。

pulseTotal = pulseHigh + pulseLow; //パルスの期間(マイクロ秒)

周波数= 1000000 / pulseTotal; //周波数(Hz)

lcd.setCursor(0、1);

lcd.print(頻度)

lcd.print( "Hz");

遅延(500)。

}

ステップ6:プログラムコード(3PinインタフェースボードなしでLCDを使用する場合)

#含める

液晶液晶(11、7、5、4、3、2)。

const int pulsePin = 12; // Arduinoのピン12に接続されている入力信号

int pulseHigh; //入力パルスのHigh時間をキャプチャするための整数変数

int pulseLow; //入力パルスのLow時間をキャプチャするための整数変数

float pulseTotal; //入力パルスの合計時間

フロート周波数。 //計算頻度

void setup(){

pinMode(pulsePin、INPUT);

lcd.begin(16、2);

lcd.setCursor(0、0);

lcd.print( "Instructables");

lcd.setCursor(0、1);

lcd.print( "Freq Counter");

遅延(5000)。

}

void loop(){

lcd.setCursor(0、0);

lcd.print( "頻度は"です);

lcd.setCursor(0、1);

lcd.print( "");

pulseHigh = pulseIn(pulsePin、HIGH)。

pulseLow = pulseIn(pulsePin、LOW)。

pulseTotal = pulseHigh + pulseLow; //パルスの期間(マイクロ秒)

周波数= 1000000 / pulseTotal; //周波数(Hz)

lcd.setCursor(0、1);

lcd.print(頻度)

lcd.print( "Hz");

遅延(500)。

}

ステップ7:ビデオ