Krijg gratis levering op alle bestellingen boven £20!

Arduino RPM-teller met behulp van een optische sensor

Arduino RPM-teller met behulp van een optische sensor

Het bouwen van een RPM (revoluties per minuut) teller is een klassiek en nuttig Arduino project. Deze gids leidt u door het creëren van een optische tachometer met behulp van een IR LED, een IR fototransistor en een 16×2 LCD display. Het resultaat is een eenvoudige, nauwkeurige RPM-teller geschikt voor motoren, ventilatoren of propellers.


Projectoverzicht

Deze Arduino RPM-teller werkt door een infraroodstraal met een roterend object (zoals een propeller) te onderbreken. Elke onderbreking wordt gedetecteerd door de Arduino, geteld en omgezet in een RPM waarde die wordt weergegeven op een LCD scherm.

Belangrijkste kenmerken:

  • Real-time RPM-meting

  • Optische (non-contact) sensor

  • LCD-uitgang voor gemakkelijk lezen

  • Eenvoudige en goedkope componenten


Onderdelenlijst

U heeft de volgende componenten nodig:

  • 1 × Arduino-plank

  • 1 × 16×2 LCD-display (HD44780 compatibel)

  • 1 × 10kΩ potentiometer (LCD contrast control)

  • 1 × 10kΩ weerstand

  • 1 × IR LED

  • 1 × IR fototransistor

  • Jumperdraden


Bedradingsinstructies

Volg deze stappen zorgvuldig om het circuit te monteren. Elke subsectie legt precies uit waar elke draad moet gaan om verwarring te voorkomen.

  1. Energieverdeling

    • Verbind de Arduino 5V pin naar de breadboard positief spoor.

    • Verbind de Arduino GND-speld naar de breadboard grondspoor.

    • Zorg ervoor dat alle componenten (LCD, potentiometer, IR LED en fototransistor) deze gemeenschappelijke grond delen.

  2. LCD- en Potentiometerverbindingen (16×2 parallelle LCD)

    • LCD-pin 1 (VSS) → Grond

    • LCD-pin 2 (VDD) → 5V

    • LCD-pin 3 (VO) → Midden speld van de 10k Ω potentiometer

      • Potentiometer zijspelden → 5V en grond (gebruikt om LCD contrast aan te passen)

    • LCD-pin 4 (RS) → Arduino digitale pin 7

    • LCD-pin 5 (RW) → Grond (LCD ingesteld op schrijfmodus)

    • LCD-pin 6 (E) → Arduino digitale pin 8

    • LCD-pin 11 (D4) → Arduino digitale pin 9

    • LCD-pin 12 (D5) → Arduino digitale pin 10

    • LCD-pin 13 (D6) → Arduino digitale pin 11

    • LCD-pin 14 (D7) → Arduino digitale pin 12

    • LCD Achtergrondverlichting

      • Pin 15 (A) → 5V door een weerstand

      • Pin 16 (K) → Grond

  3. IR LED (Transmitter)

    • anode (langer lood) → Arduino digitale pin 13

    • Kathode (korter lood) → Grond

    • De IR LED blijft continu aan om een infraroodstraal naar de fototransistor uit te stralen.

  4. IR Phototransistor (Receiver)

    • Verzamelaar (korter lood) → Arduino digitale pin 2

    • Emitter (langere lood) → Grond

    • Plaats de fototransistor direct naar de IR LED zodat de bundel wordt onderbroken door het roterende object.

  5. Definitieve controles

    • Zorgen voor alles grondverbindingen zijn gebruikelijk.

    • Dubbele controle pin nummers voordat de stroomkring.

    • Pas de potentiometer aan totdat de tekst duidelijk zichtbaar is op het LCD.

Tip: Digitale pin 2 wordt gebruikt omdat het ondersteunt hardware interrupts, waardoor de Arduino de bundelonderbrekingen nauwkeurig kan tellen en RPM betrouwbaar kan berekenen.


Arduino-code

Upload de volgende schets naar uw Arduino bord:

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

Inzicht in de RPM-berekening

Dit project gaat uit van twee onderbrekingen per revolutie, zoals bij het gebruik van een motor met een tweebladige schroef.

Daarom gebruikt de RPM berekening deze formule:

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

Aanpassen voor uw installatie

  • Eén onderbreking per revolutie:
    Vervangen 30 met 60

  • Meer bladen of markeringen:
    Verdelen 60 het aantal onderbrekingen per volledige rotatie en de formule dienovereenkomstig bijwerken.

Met deze flexibiliteit kunt u het project aanpassen aan verschillende motoren en roterende objecten.


Laatste opmerkingen

  • Zorg ervoor dat de IR LED en fototransistor goed zijn uitgelijnd voor betrouwbare metingen.

  • Gebruik reflecterende tape of een sleufschijf voor meer consistente straalonderbreking.

  • Dit project kan worden uitgebreid door RPM-gegevens te loggen of seriële output toe te voegen.


Klaar om te bouwen?

Deze Arduino RPM teller is een geweldige basis voor motorcontrole projecten, robotica en mechanische diagnostiek. Verzamel de componenten, upload de code en meet RPM met vertrouwen.

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.

Laat een reactie achter