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.
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.
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
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.
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.
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 :
Remplacer30avec60Autres lames ou marques:
Diviser60par 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.