正確な読み取りのためのArduinoタコメータ回路

問題を排除するために楽器を試してください





タコメータは、回転体のRPMまたは角速度を測定するデバイスです。スピードメーターやオドメーターとは異なり、これらのデバイスは体の線形または接線速度を処理しますが、タコメーター(別名「タコ」)はより基本的なRPMを処理します。

アンキット・ネギ



タコメーターはカウンターとタイマーで構成されており、これらの両方が連携してRPMを提供します。私たちのプロジェクトでは、Arduinoといくつかのセンサーを使用して、カウンターとタイマーの両方をセットアップし、便利で簡単なタコメーターを開発します。 。

前提条件

カウンターは、回転中にディスク内のドットを渡すなど、定期的に発生する特定のイベントをカウントできるデバイスまたはセットアップに他なりません。当初、カウンターは、ギア、ラチェット、スプリングなどの機械的な配置とリンケージを使用して構築されていました。



しかし現在、私たちはより洗練された高精度のセンサーと電子機器を備えたカウンターを使用しています。タイマーは、イベント間の時間間隔を測定したり、時間を測定したりできる電子要素です。

Arduino Unoには、時間を追跡するだけでなく、Arduinoの重要な機能のいくつかを維持するタイマーがあります。 Unoには、Timer0、Timer1、Timer2という名前の3つのタイマーがあります。これらのタイマーには次の関数があります-•Timer0-delay()、millis()、micros()、delaymicros()などのUno関数の場合。

•Timer1-サーボライブラリの動作用。

•Timer2-tone()、notone()などの関数の場合。

これらの関数に加えて、これらの3つのタイマーは、PMW指定ピンでanalogWrite()コマンドが使用されたときにPWM出力を生成する役割も果たします。

割り込みの概念

Arduino Unoには、タイマー割り込みと呼ばれる多くの機能にアクセスできる隠しツールがあります。割り込みは、デバイスの現在の機能を中断するように呼び出されたときに実行される一連のイベントまたは命令です。 Unoが以前に実行していたコードですが、割り込みが呼び出されたら、Arduinoは割り込みに記載されている命令を実行します。

モーターシャフトの磁石

これで、組み込みのArduino構文を使用して、ユーザーが定義した特定の条件で割り込みを呼び出すことができます。この割り込みをプロジェクトで使用して、タコメーターをWeb上に存在する他のタコメータープロジェクトよりも確実かつ正確にします。

Arduinoを使用したこのタコメータープロジェクトに必要なコンポーネント

•ホール効果センサー(図1)

ホール効果センサーモジュール

•ArduinoUno

ArduinoUNOボード

•小さな磁石

小さな磁石

•ジャンパー線

•回転物体(モーターシャフト)

DCモーター

回路設定

•作成の設定は次のとおりです-

•回転速度を測定するシャフトには、グルーガンまたは電気テープを使用した小さな磁石が取り付けられています。

•ホール効果センサーの前面には検出器があり、接続用に3つのピンがあります。

•VccピンとGndピンはそれぞれArduinoの5VピンとGndピンに接続されています。センサーの出力ピンは、入力信号を提供するために宇野のデジタルピン2に接続されています。

•すべてのコンポーネントはマウントボードに固定されており、ホール検出器はボードから指摘されています。

プログラミング

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

コードをアップロードします。

コードを知っている

私たちのタコメータはホール効果センサーを使用していますホール効果センサーは、発見者のエドウィンホールにちなんで名付けられたホール効果に基づいています。

ホール効果は、電流の流れに垂直に磁場が導入されたときに、電流が流れる導体の両端に電圧が発生する現象です。この現象によって生成されるこの電圧は、入力信号の生成に役立ちます。前述のように、このプロジェクトでは割り込みが使用されます。割り込みを呼び出すには、いくつかの条件を設定する必要があります。 Arduino Unoには、割り込みを呼び出すための2つの条件があります-

RISING-これを使用すると、入力信号がLOWからHIGHになるたびに割り込みが呼び出されます。

FALING-これを使用すると、信号がHIGHからLOWになったときに割り込みが呼び出されます。

RISINGを使用しましたが、シャフトまたは回転するオブジェクトに配置された磁石がホール検出器に近づくと、入力信号が生成され、割り込みが呼び出されます。割り込みは、割り込みサービスルーチン(ISR)機能を開始します。カウント値、したがってカウントが行われます。

タイマーの設定に対応して、Arduinoとprevioustime(変数)のmillis()関数を使用しました。

したがって、RPMは最終的に数学的関係を使用して計算されます-

RPM =カウント/所要時間ミリ秒を分に変換して再配置すると、式= 60 * 1000 /(millis()-previoustime)* countsになります。

delay(1000)は、RPMの値が画面上で更新されるまでの時間間隔を決定します。必要に応じて、この遅延を調整できます。

得られたRPMのこの値は、v =(3.14 * D * N)/ 60 m / sの関係を使用して、回転するオブジェクトの接線速度を計算するためにさらに使用できます。

RPMの値を使用して、回転するホイールまたはディスクが移動した距離を計算することもできます。

シリアルモニターに値を印刷する代わりに、LCDディスプレイ(16 * 2)とバッテリーを接続してこのデバイスをより便利に使用できます。




前:IC555を使用したステッピングモータードライバー回路 次へ:Arduinoを使用したデジタル静電容量計回路