Obtenez la livraison gratuite sur toutes les commandes de plus de 20 £!

Compteur RPM Arduino utilisant un capteur optique

Compteur RPM Arduino utilisant un capteur optique

Construire un compteur RPM (révolutions par minute) est un projet Arduino classique et utile. Ce guide vous accompagne dans la création tachymètre optique utilisant une LED IR, un phototransistor IR et un écran LCD 16×2. Le résultat est un compteur RPM simple et précis adapté aux moteurs, aux ventilateurs ou aux hélices.


Aperçu du projet

Ce compteur Arduino RPM fonctionne en interrompant un faisceau infrarouge avec un objet rotatif (comme une hélice). Chaque interruption est détectée par l'Arduino, comptée et convertie en une valeur RPM affichée sur un écran LCD.

Principales caractéristiques:

  • Mesure RPM en temps réel

  • Détection optique (sans contact)

  • Sortie LCD pour une lecture facile

  • Composants simples et peu coûteux


Liste des pièces

Vous aurez besoin des composants suivants :

  • 1 × Planche Arduino

  • 1 × 16×2 écran LCD (compatible HD44780)

  • Potentiomètre 1 × 10k.

  • Résistance à 1 × 10 kW

  • 1 × LED IR

  • 1 × Phototransistor IR

  • Câbles de saut


Instructions de câblage

Suivez attentivement ces étapes pour assembler le circuit. Chaque sous-section explique exactement où chaque fil devrait aller pour éviter toute confusion.

  1. Distribution d'électricité

    • Connectez la Épingle Arduino 5V à la table à pain rail positif.

    • Connectez la Pin Arduino GND à la table à pain rails terrestres.

    • Assurez-vous que tous les composants (LCD, potentiomètre, IR LED et phototransistor) partagent ce terrain commun.

  2. Connexions LCD et Potentiomètre (16×2 LCD parallèle)

    • Pin LCD 1 (VSS) → Sol

    • Épinglette LCD 2 (VDD) → 5V

    • Épinglette LCD 3 (VO) → Pin moyen de la 10k Potentiomètre

      • Pins latéraux du potentiomètre → 5V et du sol (utilisés pour ajuster le contraste LCD)

    • Pin LCD 4 (RS) → Pin numérique Arduino 7

    • Épinglette LCD 5 (RW) → Sol (LCD défini pour écrire le mode)

    • Épingle LCD 6 (E) → Pin numérique Arduino 8

    • Pin LCD 11 (D4) → Pin numérique Arduino 9

    • Pin LCD 12 (D5) → Pin numérique Arduino 10

    • Pin LCD 13 (D6) → Pin numérique Arduino 11

    • Pin à écran LCD 14 (D7) → Pin numérique Arduino 12

    • LCD Feu arrière

      • Pin 15 (A) → 5V à travers une résistance

      • Pin 16 (K) → Sol

  3. LED IR (transmetteur)

    • Anode (plomb plus long) → Arduino broche numérique 13

    • Cathode (plomb plus court) → Sol

    • La LED IR reste allumée en continu pour émettre un faisceau infrarouge vers le phototransistor.

  4. Phototransistor IR (récepteur)

    • Collecteur (piste plus courte) → Arduino broche numérique 2

    • Emitter (plus longue plomb) → Sol

    • Positionner le phototransistor directement face à la LED IR afin que le faisceau soit interrompu par l'objet rotatif.

  5. Vérifications finales

    • Assurer tout les connexions au sol sont fréquentes.

    • Vérifiez les numéros d'épingle avant d'alimenter le circuit.

    • Régler le potentiomètre jusqu'à ce que le texte soit clairement visible sur l'écran LCD.

Conseil : Pin numérique 2 est utilisé parce qu'il supporte interruptions matérielles, permettant à l'Arduino de compter les interruptions de faisceau avec précision et de calculer RPM de façon fiable.


Code Arduino

Téléchargez le croquis suivant sur votre carte 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);
}

Comprendre le calcul RPM

Ce projet suppose deux interruptions par révolution, comme lors de l'utilisation d'un moteur à hélice à deux lames.

Voilà pourquoi le calcul RPM utilise cette formule :

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

Réglage pour votre configuration

  • Une interruption par révolution :
    Remplacer 30 avec 60

  • Autres lames ou marques:
    Diviser 60 par le nombre d'interruptions par rotation complète et mettre à jour la formule en conséquence.

Cette flexibilité vous permet d'adapter le projet à différents moteurs et objets rotatifs.


Notes finales

  • Assurez-vous que la LED IR et le phototransistor sont correctement alignés pour des lectures fiables.

  • Utilisez un ruban réfléchissant ou un disque à fente pour une interruption de faisceau plus cohérente.

  • Ce projet peut être étendu en enregistrant des données RPM ou en ajoutant une sortie série.


Prêt à construire ?

Ce compteur Arduino RPM est une excellente base pour les projets de contrôle moteur, la robotique et le diagnostic mécanique. Assemblez les composants, téléchargez le code et commencez à mesurer RPM avec confiance.

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.

Laissez un commentaire