光学センサーを使用してArduino RPMのカウンター
RPM(毎分革命)のカウンターは、古典的で有用なArduinoプロジェクトです。 このガイドは、作成を通してあなたを歩きます 光学タコメーター IR LED、IRフォトトランジスタ、16×2液晶ディスプレイ 結果は、モーター、ファン、またはプロペラに適したシンプルで正確なRPMカウンターです。
プロジェクト概要
このArduinoのRPMのカウンターは回転オブジェクト(プロペラのような)と赤外線ビームを中断することによって働きます。 各割込みは、Arduinoによって検出され、カウントされ、LCD画面に表示されるRPM値に変換されます。
主な機能:
リアルタイムのRPMの測定
光(非接触)センシング
容易な読書のためのLCDの出力
シンプルで低価格なコンポーネント
部品リスト
次のコンポーネントが必要になります。
1×Arduinoボード
1×16×2液晶ディスプレイ(HD44780対応)
1×10kΩの電位計(LCDの対照制御)
1×10kΩ抵抗器
1つの× IR LED
1× IRフォトトランジスタ
ジャンパー線
配線手順
回路を組み立てるために慎重にこれらの手順に従ってください。 各サブセクションは、すべてのワイヤが混乱を避けるために行くべき場所を正確に説明しています。
電力配分
接続する Arduino 5V ピン パンボードへ 正の柵お問い合わせ
接続する Arduino GND ピン パンボードへ 地上の柵お問い合わせ
すべてのコンポーネント(LCD、電位差計、IR LED、フォトトランジスタ)がこの共通の地面を共有していることを確認してください。
液晶・電位計接続 (16×2 並列液晶)
液晶ピン1(VSS) → グラウンド
液晶ピン2(VDD) → 5Vの
液晶ピン3(VO) → 中間ピンの 10kの Ωの電位差計
電位差計の側面ピン→ 5Vおよび地面(LCDの対照を調節するのに使用される)
液晶ピン 4 (RS) → Arduinoのデジタル ピン 7月7日
液晶ピン 5 (RW) → 地上(LCDはモードを書きます)
液晶ピン 6 (E) → Arduinoのデジタル ピン 8月8日
液晶ピン 11 (D4) → Arduinoのデジタル ピン 9月9日
液晶ピン 12 (D5) → Arduinoのデジタル ピン 10月10日
液晶ピン13(D6) → Arduinoのデジタル ピン 11月11日
液晶ピン14(D7) → Arduinoのデジタル ピン 12月12日
液晶ディスプレイ バックライト
ピン15(A)→抵抗器による5V
ピン 16 (K) → グラウンド
IR LED (送信機)
陽極(長鉛) → Arduino(アルディノ) デジタル ピン 13
キャトード(より短い鉛) → グラウンド
IR LEDは、フォトトランジスタに向かって赤外線ビームを放つために継続的に残っています。
IRフォトトランジスタ(受信機)
コレクター(より短い鉛) → Arduino(アルディノ) デジタルピン2
エミッタ(長鉛) → グラウンド
ビームが回転オブジェクトによって中断されるように、IR LEDに直接直面するフォトトランジスタを配置します。
最終チェック
すべてを確かめて下さい 地上の接続は共通ですお問い合わせ
回路を動力にする前にピン番号をダブルチェックします。
テキストがLCD上ではっきり見えるまで、電位計を調整します。
ヒント: デジタルピン 2 はサポートするので使用されます ハードウェア割込み、Arduinoがビーム中断を正確にカウントし、確実にRPMを計算できるようにします。
Arduinoコード
次のスケッチをArduinoボードにアップロードします。
/*
* Optical Tachometer
*
* Uses an IR LED and IR phototransistor to implement an optical tachometer.
* The IR LED is connected to pin 13 and runs continuously.
* Digital pin 2 (interrupt 0) is connected to the IR detector.
*/
#include
int ledPin = 13; // IR LED connected to digital pin 13
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
// Initialize the LCD with the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void rpm_fun() {
// This interrupt runs every time the IR beam is cut
rpmcount++;
}
void setup() {
lcd.begin(16, 2); // Initialize the LCD
// Attach interrupt to digital pin 2 (interrupt 0)
attachInterrupt(0, rpm_fun, FALLING);
// Turn on IR LED
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop() {
// Update RPM every second
delay(1000);
// Temporarily stop interrupts during calculation
detachInterrupt(0);
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
timeold = millis();
rpmcount = 0;
// Display RPM on LCD
lcd.clear();
lcd.print("RPM=");
lcd.print(rpm);
// Re-enable interrupt
attachInterrupt(0, rpm_fun, FALLING);
}
RPM計算を理解する
このプロジェクトは、 革命ごとの2つの中断2ブレードプロペラでモーターを使用した場合など。
つまり、RPM の計算は、この式を使用する理由です。
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
セットアップの調整
革命ごとの1つの中断:
リプレース30お問い合わせ60より多くの刃か印:
ダイバーシティ60完全な回転ごとの中断の数によってそしてそれに応じて方式を更新して下さい。
この柔軟性により、プロジェクトを異なるモーターや回転オブジェクトに適応させることができます。
最終的なノート
信頼できる読書のためにIR LEDおよびフォトトランジスタがきちんと整列していることを確認します。
より一貫したビーム中断のための反射テープか細長かったディスクを使用して下さい。
このプロジェクトは、RPM データをロギングしたり、シリアル出力を追加することで拡張できます。
ビルドする準備は?
このArduino RPMのカウンターはモーター制御プロジェクト、ロボティクスおよび機械診断のための大きい基礎です。 コンポーネントを組み立て、コードをアップロードし、 RPM を自信を持って測定を開始します。