Dapatkan pengiriman gratis pada semua pesanan lebih dari £20!

Konter RPM Arduino Menggunakan Sensor Optik

Konter RPM Arduino Menggunakan Sensor Optik

Membangun RPM (revolusi per menit) adalah proyek Arduino klasik dan berguna. Panduan ini berjalan Anda melalui menciptakan Tachometer optik menggunakan LED IR, sebuah fototranstor IR, dan sebuah tampilan LCD 16 x 2. Hasilnya adalah RPM counter sederhana yang akurat cocok untuk motor, penggemar, atau baling-baling.


Ringkasan Projek

Ini counter RPM Arduino bekerja dengan mengganggu balok inframerah dengan objek berputar (seperti baling-baling). Setiap interupsi terdeteksi oleh Arduino, dihitung, dan diubah menjadi nilai RPM yang ditampilkan pada layar LCD.

Fitur kunci:

  • Real- waktu pengukuran RPM

  • Optik (non-kontak) sensing

  • Keluaran LCD untuk pembacaan mudah

  • Komponen sederhana dan berbiaya rendah


Daftar Bagian

Anda akan membutuhkan komponen berikut:

  • 1 × papan Arduino

  • 1 × 16 × 2 LCD display (HD44780 kompatibel)

  • 1 × 10kmemungkinkan potentiometer (kontrol kontras LCD)

  • 1 × 10ká resistor

  • 1 × LED IR

  • 1 × IR fototranstor

  • Kabel jumper


Instruksi Kabel

Ikuti langkah-langkah ini hati-hati untuk merakit sirkuit. Setiap bagian menjelaskan persis di mana setiap kawat harus pergi untuk menghindari kebingungan.

  1. Distribusi Daya

    • Hubungkan Pin Arduino 5V ke breadboard rel positif.

    • Hubungkan Pin GND Arduino ke breadboard deretan.

    • Pastikan semua komponen (LCD, potentiometer, IR LED, dan fototransstor) berbagi tanah umum ini.

  2. Koneksi LCD dan Potentiometer (16 × 2 LCD Parallel)

    • LCD Pin 1 (VSS) Ground

    • LCD Pin 2 (VDD) £5V

    • LCD Pin 3 (VO) Pin tengah 10k Optipotentiometer

      • Pin sisi potentiometer 5.V dan Ground (digunakan untuk menyesuaikan kontras LCD)

    • LCD Pin 4 (RS) Pin digital Arduino 7

    • LCD Pin 5 (RW) Ground (LCD diset ke mode tulis)

    • LCD Pin 6 (E) Pin digital Arduino 8

    • LCD Pin 11 (D4) Pin digital Arduino 9

    • LCD Pin 12 (D5) Pin digital Arduino 10

    • LCD Pin 13 (D6) Pin digital Arduino 11

    • LCD Pin 14 (D7) Pin digital Arduino 12

    • LCD Backlight

      • Pin 15 (A) £5V melalui resistor

      • Pin 16 (K) Ground

  3. LED IR (Transmitter)

    • Anode (memimpin lagi) Arduino pin digital 13

    • Kathode (memimpin lebih pendek) Ground

    • LED IR tetap ON terus memancarkan sinar inframerah terhadap fototransstor.

  4. IR Phototranstor (Penerima)

    • Kolektor (memimpin lebih pendek) Arduino pin digital 2

    • Emitter (lebih panjang memimpin) Ground

    • Posisi fototranstor langsung menghadapi LED IR sehingga balok terganggu oleh obyek berputar.

  5. Pemeriksaan Akhir

    • Pastikan semua koneksi dasar umum.

    • Periksa ulang nomor pin sebelum mengaktifkan sirkuit.

    • Sesuaikan poteniometer sampai teks jelas terlihat pada LCD.

Tip: Pin digital 2 digunakan karena mendukung perangkat keras interupsi, memungkinkan Arduino untuk menghitung balok interupsi secara akurat dan menghitung RPM diandalkan.


Kode Arduino

Upload sketsa berikut ke papan Arduino Anda:

/*
 * 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);
}

Memahami Kalkulasi RPM

Proyek ini mengasumsikan dua interupsi setiap revolusi, seperti ketika menggunakan motor dengan dua baling-baling pisau.

Itu sebabnya perhitungan RPM menggunakan formula ini:

rpm = 30 * 1000 / (millis() - timeold) * rpmcount;

Menyesuaikan untuk Penyiapan Anda

  • Satu gangguan setiap revolusi:
    Ganti 30 dengan 60

  • Lebih pisau atau tanda:
    Bagi 60 dengan jumlah interupsi per rotasi penuh dan update formula sesuai.

Fleksibilitas ini memungkinkan Anda untuk menyesuaikan proyek ke motor yang berbeda dan obyek yang berputar.


Catatan Akhir

  • Pastikan IR LED dan fototranstor benar selaras untuk pembacaan yang dapat diandalkan.

  • Gunakan tape reflektif atau disk yang digeser untuk interupsi sinar yang lebih konsisten.

  • Proyek ini dapat diperpanjang dengan log data RPM atau menambahkan keluaran serial.


Siap untuk membangun?

Konter RPM Arduino ini merupakan pondasi besar bagi proyek kontrol motor, robotika, dan diagnosa mekanis. Kumpulkan komponen, upload kode, dan mulai mengukur RPM dengan keyakinan.

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Tinggalkan komentar