Calcul de vitesse de rotation avec capteur optique et Arduino
Calculez rapidement les tours par minute, la fréquence, la vitesse angulaire et même la vitesse linéaire à partir d’un capteur optique relié à un Arduino. Cette page s’adresse aux makers, étudiants, techniciens et ingénieurs qui veulent transformer un simple comptage d’impulsions en mesure exploitable, stable et facile à interpréter.
Calculateur interactif
Saisissez le nombre d’impulsions détectées, la durée de mesure et le nombre d’impulsions par tour. Si vous connaissez le diamètre du disque, de la roue ou de l’arbre, vous pouvez aussi estimer la vitesse linéaire.
Renseignez vos paramètres puis cliquez sur le bouton pour obtenir les RPM, la fréquence, la vitesse angulaire et un graphique de progression des impulsions.
Visualisation des impulsions
Le graphique illustre la progression cumulée des impulsions sur votre fenêtre de mesure. Cela permet de visualiser le lien entre fréquence d’acquisition, durée de comptage et vitesse de rotation estimée.
Formule RPM
RPM = (N / PPR) / t × 60Formule fréquence
Hz = N / tFormule RPS
RPS = RPM / 60Formule vitesse linéaire
v = π × D × RPSGuide expert du calcul de vitesse de rotation avec capteur optique et Arduino
Mesurer une vitesse de rotation avec un capteur optique et une carte Arduino est l’une des méthodes les plus accessibles pour créer un tachymètre numérique, surveiller un moteur, suivre un convoyeur, contrôler une roue robotisée ou valider une expérience de laboratoire. Le principe paraît simple : un repère passe devant le capteur, le microcontrôleur compte les impulsions, puis une formule convertit ces événements en tours par minute. En pratique, la qualité de la mesure dépend de plusieurs paramètres : le type de capteur, le nombre d’impulsions par tour, la fenêtre de mesure, la gestion des interruptions, le contraste optique, l’éclairage ambiant et le traitement logiciel.
Le calcul de base repose sur quatre grandeurs essentielles. D’abord, N, le nombre total d’impulsions détectées. Ensuite, t, la durée de mesure exprimée en secondes. Puis PPR, le nombre d’impulsions générées pour un seul tour complet. Enfin, on obtient la vitesse de rotation en RPM selon la formule suivante : RPM = (N / PPR) / t × 60. Si vous mesurez 120 impulsions en 2 secondes avec un seul repère par tour, cela donne 60 impulsions par seconde, donc 60 tours par seconde si PPR = 1, soit 3600 RPM. Si votre disque codeur produit 20 impulsions par tour, les mêmes 120 impulsions en 2 secondes représentent seulement 3 tours par seconde, donc 180 RPM.
Comment fonctionne un capteur optique dans ce contexte
Un capteur optique de rotation détecte une variation lumineuse répétitive. Cette variation peut être produite par une bande réfléchissante collée sur un arbre, par une zone sombre et une zone claire sur un disque, ou par une succession de fentes passant dans une fourche optique. À chaque transition détectable, l’Arduino enregistre une impulsion. Cette impulsion est ensuite utilisée pour déterminer la vitesse instantanée ou moyenne.
- Capteur réfléchissant : pratique pour mesurer un arbre ou une roue sans contact mécanique direct.
- Capteur à fourche : très stable quand on utilise un disque percé ou une roue à fentes.
- Encodeur optique : idéal lorsque l’on veut plus de résolution, parfois avec plusieurs canaux.
Dans une application Arduino, le signal du capteur est généralement lu via une entrée numérique, souvent avec interruption matérielle. Cette stratégie est préférable à une simple lecture périodique avec digitalRead() dans la boucle principale, car elle limite fortement le risque de manquer des impulsions à haute vitesse. Plus la fréquence d’impulsions augmente, plus il devient important de réduire les délais bloquants, les impressions série excessives et les traitements lourds dans les routines d’interruption.
Pourquoi le nombre d’impulsions par tour est crucial
Le paramètre le plus souvent mal configuré est le nombre d’impulsions par tour. Avec un seul marqueur réfléchissant sur l’arbre, vous avez 1 impulsion par tour. Avec une roue de 12 fentes, vous avez 12 impulsions par tour. Avec un encodeur en quadrature, la situation peut devenir plus subtile, car selon la méthode de comptage utilisée, vous pouvez compter un front, deux fronts ou quatre états par période mécanique. Une mauvaise valeur de PPR crée une erreur systématique immédiate. Par exemple, si vous entrez 1 alors que le disque génère 8 impulsions par tour, le RPM affiché sera huit fois trop élevé.
| Vitesse réelle | PPR = 1 | PPR = 4 | PPR = 20 | Fréquence d’impulsions résultante |
|---|---|---|---|---|
| 60 RPM | 1 Hz | 4 Hz | 20 Hz | De 1 à 20 impulsions par seconde selon le disque |
| 300 RPM | 5 Hz | 20 Hz | 100 Hz | Très facile à lire avec interruption Arduino |
| 1200 RPM | 20 Hz | 80 Hz | 400 Hz | Demande un câblage propre et un signal net |
| 6000 RPM | 100 Hz | 400 Hz | 2000 Hz | La résolution augmente, mais les contraintes de lecture aussi |
Ce tableau montre un point fondamental : augmenter le nombre d’impulsions par tour améliore la résolution mécanique, mais augmente aussi la fréquence électrique que l’Arduino doit traiter. Dans une conception robuste, il faut équilibrer précision, charge processeur, sensibilité au bruit et vitesse maximale attendue.
Fenêtre de mesure et compromis entre stabilité et réactivité
La deuxième grande décision concerne la durée de mesure. Une fenêtre courte donne une réponse rapide, mais avec plus de fluctuation. Une fenêtre longue lisse mieux le résultat, mais retarde les changements de vitesse. Pour un moteur qui accélère rapidement, une fenêtre de 50 à 200 ms peut être utile. Pour un système de ventilation ou un convoyeur stable, 1 à 2 secondes donnent souvent une valeur plus propre.
Le phénomène derrière ce compromis est simple : avec une fenêtre plus longue, on compte davantage d’impulsions, donc l’erreur relative liée à une seule impulsion de plus ou de moins diminue. C’est particulièrement vrai aux basses vitesses. Si vous n’observez que 2 impulsions pendant une fenêtre très courte, l’incertitude relative est forte. Si vous en voyez 200 sur une durée plus longue, la mesure devient bien plus stable.
| Impulsions observées | Durée de fenêtre | Exemple de fréquence mesurée | Erreur relative si ±1 impulsion | Impact pratique |
|---|---|---|---|---|
| 5 | 0,1 s | 50 Hz | 20 % | Mesure très nerveuse, idéale seulement pour une réaction très rapide |
| 20 | 0,5 s | 40 Hz | 5 % | Bon compromis pour beaucoup de moteurs de petite puissance |
| 100 | 1 s | 100 Hz | 1 % | Mesure stable et facile à interpréter |
| 500 | 2 s | 250 Hz | 0,2 % | Très stable, mais moins réactive lors d’accélérations rapides |
Méthode de calcul avec Arduino
Dans un projet classique, le capteur génère un signal numérique connecté à une broche supportant les interruptions. À chaque impulsion, une variable compteur est incrémentée. Toutes les x millisecondes, l’Arduino lit la valeur du compteur, l’enregistre, remet éventuellement ce compteur à zéro, puis convertit le nombre d’impulsions en vitesse. Cette méthode de comptage par fenêtre fixe est simple, robuste et suffisante pour de nombreux besoins industriels et pédagogiques.
- Définir le nombre d’impulsions par tour.
- Compter les impulsions pendant une durée connue.
- Calculer les tours sur cette durée : tours = N / PPR.
- Calculer les tours par seconde : RPS = tours / t.
- Convertir en tours par minute : RPM = RPS × 60.
- Si nécessaire, calculer la vitesse angulaire : ω = 2π × RPS.
- Avec un diamètre connu, calculer la vitesse linéaire : v = π × D × RPS.
Pour les faibles vitesses, une autre méthode est parfois préférable : mesurer directement le temps entre deux impulsions successives avec micros(). Cette approche donne une meilleure résolution quand peu d’impulsions sont disponibles, mais elle peut être plus sensible aux irrégularités de passage et au bruit. En pratique, de nombreux systèmes hybrides utilisent la méthode par période à basse vitesse et la méthode par comptage de fréquence à vitesse moyenne ou élevée.
Erreurs fréquentes et comment les éviter
Le calcul théorique est simple, mais plusieurs erreurs pratiques peuvent fausser le résultat. La première est la confusion entre front montant, front descendant et cycle complet. Si le capteur produit deux transitions exploitables par motif optique et que votre code compte les deux, votre PPR effectif double. Deuxième erreur : oublier de convertir la durée en secondes. Une fenêtre de 500 ms doit être entrée comme 0,5 seconde si la formule attend des secondes. Troisième erreur : négliger le filtrage du bruit. Un capteur optique mal alimenté, un câble trop long ou une lumière ambiante parasite peuvent générer des impulsions fantômes.
- Utilisez une alimentation stable et des masses propres.
- Privilégiez un contraste optique élevé entre la zone détectée et le fond.
- Évitez les impressions série dans l’interruption.
- Vérifiez le PPR réel sur le montage physique, pas seulement sur le schéma.
- Testez plusieurs fenêtres de mesure pour choisir le bon compromis.
Comment interpréter RPM, Hz, RPS et rad/s
Les RPM sont l’unité la plus intuitive pour beaucoup de moteurs et ventilateurs. Les hertz sont utiles pour raisonner côté électronique et acquisition, car ils décrivent la fréquence d’impulsions ou de tours par seconde selon le contexte. Les RPS sont plus pratiques lorsque vous avez besoin de relier directement le mouvement à des distances parcourues par tour. Enfin, la vitesse angulaire en rad/s est indispensable dans les calculs physiques, notamment si vous manipulez le couple, l’énergie cinétique de rotation ou la commande d’un système asservi.
Prenons un exemple concret. Supposons 240 impulsions mesurées en 3 secondes avec un disque de 6 impulsions par tour. Vous avez alors 240 / 6 = 40 tours sur 3 secondes. Cela correspond à 13,33 RPS, soit 800 RPM. La vitesse angulaire vaut environ 83,78 rad/s. Si le disque a un diamètre de 0,12 m, sa circonférence vaut environ 0,377 m, donc la vitesse linéaire en périphérie est d’environ 5,03 m/s. Cette chaîne de calcul permet de passer d’un simple comptage numérique à une donnée mécanique réellement exploitable.
Choisir le bon capteur optique
Le choix du capteur dépend de l’environnement. Dans un atelier poussiéreux ou exposé à des variations lumineuses, un capteur à fourche ou un encodeur encapsulé peut être plus fiable qu’un simple capteur réfléchissant ouvert. Pour une maquette, un mini robot ou un banc d’essai éducatif, un capteur réfléchissant économique suffit souvent. Si vous avez besoin d’une très grande précision de position et de vitesse, un véritable encodeur incrémental reste la meilleure option.
Sur le plan logiciel, Arduino offre une excellente base pour un prototype, mais il faut penser au dimensionnement. Une carte 8 bits classique peut lire confortablement des fréquences de plusieurs centaines d’hertz, voire davantage selon le code, alors que des applications à très haute vitesse ou multi-axes bénéficieront d’un microcontrôleur plus performant, de timers matériels ou de compteurs dédiés.
Bonnes pratiques de développement
Pour obtenir des résultats reproductibles, commencez par valider votre chaîne de mesure à vitesse connue. Utilisez si possible une source de rotation stable, par exemple un moteur alimenté en tension constante ou un banc équipé d’un tachymètre de référence. Comparez ensuite votre calcul Arduino aux valeurs de référence et notez l’erreur. Cette étape est essentielle si le projet doit servir à la maintenance, à la robotique mobile, au contrôle moteur ou à l’enseignement.
Il est aussi conseillé de stocker les mesures dans un buffer et de calculer une moyenne glissante. Cette technique permet de lisser les fluctuations sans attendre une fenêtre très longue. Vous pouvez également afficher à la fois la valeur instantanée et la valeur filtrée. Pour des systèmes de contrôle, la valeur filtrée est plus stable. Pour le diagnostic, la valeur instantanée permet de voir les variations rapides et les à-coups mécaniques.
Ressources externes utiles
- NIST.gov : rappel officiel sur les unités SI et les conversions
- MIT OpenCourseWare : cours de mesure, électronique et systèmes embarqués
- Penn State University : ressources sur la dynamique des systèmes rotatifs
En résumé
Le calcul de vitesse de rotation avec capteur optique et Arduino est fiable et puissant à condition de bien définir les impulsions par tour, de choisir une fenêtre de mesure adaptée et de produire un signal optique propre. Le cœur du calcul reste simple, mais la qualité finale dépend de la rigueur du montage et du code. Si vous configurez correctement votre capteur, votre PPR, votre unité de temps et votre méthode de comptage, vous obtiendrez une mesure exploitable aussi bien pour un projet maker que pour une application technique plus avancée.