Arduino calculer une vitesse avec un ILS
Utilisez ce calculateur pour estimer la vitesse à partir d’un capteur ILS, du diamètre de roue, du nombre d’impulsions et de la durée de mesure. Le résultat convient à un vélo, une roue de robot, un convoyeur ou tout système rotatif où un aimant déclenche un interrupteur à lames souples.
Principe du calcul
Chaque fermeture du capteur ILS correspond au passage d’un aimant. En connaissant la circonférence de la roue et le nombre d’aimants, on peut déduire la distance parcourue pendant la fenêtre de mesure, puis calculer la vitesse moyenne.
Formule principale : vitesse = distance / temps, avec distance = (impulsions / nombre d’aimants) × circonférence.
Résultats
Entrez vos valeurs puis cliquez sur Calculer la vitesse.
Guide expert, Arduino calculer une vitesse avec un ILS
Calculer une vitesse avec un Arduino et un ILS, aussi appelé interrupteur à lames souples ou reed switch, est une méthode simple, robuste et économique pour mesurer la rotation d’une roue ou d’un axe. Le principe est bien connu dans les compteurs de vélo, les systèmes de suivi de convoyeurs, la robotique mobile, les maquettes de laboratoire et de nombreux projets d’automatisation. Lorsqu’un aimant passe à proximité du capteur ILS, le contact se ferme pendant un bref instant. Arduino peut compter ces impulsions, déterminer la fréquence de passage, puis convertir cette information en vitesse linéaire ou en vitesse de rotation.
Cette approche séduit parce qu’elle ne demande ni électronique complexe ni traitement de signal avancé. Un capteur ILS, une résistance de tirage, un aimant correctement fixé, et un code d’interruption suffisent souvent à produire des mesures très correctes. Pour autant, obtenir une mesure fiable demande de comprendre la chaîne complète, depuis la géométrie de la roue jusqu’au filtrage logiciel du rebond mécanique du contact. Si vous souhaitez mesurer la vitesse d’un vélo, d’une roue de robot, d’une poulie ou d’un disque équipé d’aimants, ce guide vous explique les formules, les bonnes pratiques et les limites de la méthode.
Le principe physique du calcul
Une vitesse linéaire correspond à une distance parcourue pendant un certain temps. Avec un ILS, vous ne mesurez pas directement la vitesse, vous mesurez des événements discrets. Chaque impulsion représente le passage d’un aimant. Si votre roue possède un seul aimant, une impulsion correspond à une rotation complète. Si elle possède deux aimants, deux impulsions correspondent à une rotation complète, et ainsi de suite.
Pour transformer ces impulsions en vitesse, il faut connaître la circonférence de la roue. Elle se calcule avec la formule suivante :
- Circonférence = π × diamètre
- Rotations = impulsions / nombre d’aimants
- Distance = rotations × circonférence
- Vitesse moyenne = distance / temps
Prenons un exemple concret. Une roue de 70 cm de diamètre possède une circonférence d’environ 2,199 m. Si vous détectez 24 impulsions en 10 secondes avec un seul aimant, cela signifie 24 rotations. La distance parcourue est alors d’environ 52,78 m. La vitesse moyenne est donc 5,28 m/s, soit 19,0 km/h.
Pourquoi choisir un ILS pour Arduino
Le capteur ILS a plusieurs avantages pour les débutants comme pour les prototypages rapides. Il est peu coûteux, n’exige pas d’alignement optique précis, tolère relativement bien la poussière, et fonctionne sans alimentation active dans sa forme la plus simple. Il est aussi très facile à interfacer avec une entrée numérique Arduino, notamment en mode INPUT_PULLUP.
- Coût bas et disponibilité élevée
- Câblage simple sur une entrée numérique
- Très adapté aux roues, axes et compteurs de passage
- Compatible avec interruptions matérielles sur de nombreuses cartes Arduino
- Consommation quasi nulle du capteur lui-même
En revanche, un ILS reste un composant mécanique. Il peut rebondir, sa fréquence maximale est limitée, et il s’use davantage qu’un capteur à effet Hall dans les applications très rapides. C’est pourquoi il est important de déterminer si votre vitesse cible et votre environnement correspondent bien à cette technologie.
| Technologie | Principe | Fréquence typique utilisable | Points forts | Limites |
|---|---|---|---|---|
| ILS | Contact magnétique mécanique | Souvent jusqu’à quelques centaines de Hz, selon le modèle et le rebond | Très simple, faible coût, robuste en milieu poussiéreux | Rebond, usure, moins adapté aux vitesses très élevées |
| Effet Hall | Détection magnétique électronique | Souvent plusieurs kHz | Pas de contact mécanique, bonne répétabilité | Électronique un peu plus élaborée, alimentation nécessaire |
| Optique | Rupture ou réflexion d’un faisceau | Très élevée, souvent plusieurs kHz à dizaines de kHz | Excellente résolution possible | Sensible à la saleté, à l’alignement et à la lumière parasite |
Câblage recommandé avec Arduino
Le montage le plus courant consiste à relier une borne du capteur ILS à la masse et l’autre à une entrée numérique Arduino configurée en résistance de tirage interne. Dans cette configuration, l’entrée est normalement à l’état haut. Lorsque l’aimant passe, le contact se ferme et l’entrée est ramenée à l’état bas. Ce schéma est simple et réduit le nombre de composants externes.
- Connectez une borne du capteur ILS à GND.
- Connectez l’autre borne à une entrée numérique, par exemple D2.
- Dans le code, utilisez pinMode(2, INPUT_PULLUP).
- Déclenchez une interruption sur front descendant si disponible.
- Ajoutez un filtrage logiciel pour supprimer le rebond.
L’utilisation des interruptions est recommandée, car elle évite de manquer des impulsions lorsque votre programme effectue d’autres tâches, comme afficher des données sur un écran, écrire sur une carte SD, communiquer en Bluetooth ou piloter des moteurs.
Le problème du rebond mécanique
Un des points essentiels lorsqu’on veut qu’Arduino calcule correctement une vitesse avec un ILS est le rebond. Comme le contact est mécanique, une seule activation peut produire plusieurs transitions très rapprochées. Si vous comptez toutes ces transitions, la vitesse calculée sera artificiellement trop élevée. Un délai anti-rebond logiciel de quelques millisecondes suffit souvent pour une roue lente ou moyenne.
Un filtre simple consiste à mémoriser le temps de la dernière impulsion valide avec micros() ou millis(). Toute nouvelle impulsion survenant avant un seuil défini, par exemple 3 ms à 10 ms selon votre montage, est ignorée. Le bon réglage dépend de la vitesse maximale, de la qualité du capteur et de la distance aimant capteur.
Mesure par fenêtre de temps ou par période
Il existe deux grandes façons de calculer la vitesse à partir d’un ILS :
- Méthode par fenêtre de temps : on compte le nombre d’impulsions pendant 1 s, 5 s ou 10 s, puis on calcule la vitesse moyenne.
- Méthode par période : on mesure le temps entre deux impulsions successives, puis on convertit directement cette période en vitesse instantanée.
La méthode par fenêtre de temps est très stable, simple à comprendre et parfaite pour l’affichage d’une vitesse moyenne. La méthode par période est plus réactive à basse vitesse, car une seule impulsion peut déjà fournir une information. En pratique, de nombreux projets combinent les deux approches : période pour la réactivité, moyenne glissante pour la stabilité visuelle.
Statistiques utiles pour bien dimensionner le projet
Pour choisir le bon capteur et la bonne stratégie de calcul, il est utile d’estimer l’ordre de grandeur des fréquences d’impulsions. Le tableau suivant donne quelques valeurs typiques pour une roue de 70 cm de diamètre, soit environ 2,199 m de circonférence, avec un seul aimant.
| Vitesse | Vitesse en m/s | Rotations par seconde | Fréquence ILS avec 1 aimant | Fréquence ILS avec 4 aimants |
|---|---|---|---|---|
| 5 km/h | 1,39 m/s | 0,63 rps | 0,63 Hz | 2,53 Hz |
| 15 km/h | 4,17 m/s | 1,90 rps | 1,90 Hz | 7,58 Hz |
| 30 km/h | 8,33 m/s | 3,79 rps | 3,79 Hz | 15,16 Hz |
| 50 km/h | 13,89 m/s | 6,32 rps | 6,32 Hz | 25,28 Hz |
Ces chiffres montrent qu’un ILS fonctionne très bien pour une roue de vélo ou de robot mobile à vitesse modérée. Même à 50 km/h avec 4 aimants, on reste autour de 25 Hz, ce qui reste raisonnable pour de nombreux capteurs ILS de qualité. En revanche, pour des moteurs très rapides, des disques de petit diamètre ou un grand nombre d’aimants, un capteur à effet Hall devient souvent plus pertinent.
Exemple de logique de code Arduino
Dans le code, vous pouvez utiliser une variable volatile incrémentée dans une routine d’interruption. Toutes les secondes, vous copiez le compteur, vous le remettez à zéro dans une section critique, puis vous calculez la vitesse. Cette architecture est très répandue, facile à maintenir et bien adaptée aux applications embarquées de petite taille.
- Déclarer un compteur d’impulsions en variable volatile.
- Attacher une interruption sur l’entrée du capteur.
- Filtrer les rebonds via le temps entre impulsions.
- Toutes les x millisecondes, convertir le nombre d’impulsions en distance.
- Calculer vitesse, RPM et éventuellement distance cumulée.
- Afficher le résultat sur le moniteur série, un écran OLED ou une page web.
L’un des pièges fréquents est de faire trop d’opérations directement dans l’interruption. Il faut au contraire garder la routine la plus courte possible, par exemple mettre à jour un compteur et enregistrer un horodatage. Les calculs plus lourds se font ensuite dans la boucle principale.
Sources d’erreur les plus courantes
- Diamètre incorrect : une erreur de 2 % sur le diamètre produit presque 2 % d’erreur sur la vitesse.
- Glissement de la roue : si la roue patine, la vitesse calculée ne correspond plus au déplacement réel.
- Distance aimant capteur excessive : certaines impulsions ne sont pas détectées.
- Rebond non filtré : la vitesse est surestimée.
- Trop d’aimants sans adaptation logicielle : la fréquence devient plus exigeante.
- Fenêtre de mesure trop courte : l’affichage devient instable, surtout à basse vitesse.
Comment améliorer la précision
Si vous voulez qu’Arduino calcule une vitesse avec un ILS de manière plus précise, commencez par mesurer la circonférence réelle de la roue au sol, sous charge, plutôt que de vous fier au diamètre théorique. C’est la méthode utilisée sur de nombreux compteurs de vélo. Faites un tour complet, mesurez la distance parcourue au sol, puis utilisez directement cette circonférence dans vos calculs.
Ensuite, choisissez une stratégie de filtrage adaptée. Une moyenne glissante sur les 3 à 10 dernières mesures améliore fortement la lisibilité sans dégrader excessivement la réactivité. Enfin, si votre besoin porte sur une vitesse instantanée à faible allure, la mesure de période entre impulsions donne souvent de meilleurs résultats qu’une simple fenêtre fixe.
Cas d’usage typiques
- Compteur de vitesse pour vélo ou trottinette électrique
- Robot mobile autonome ou télécommandé
- Mesure de convoyeur dans un atelier
- Suivi de rotation d’une roue codeuse artisanale
- Instrumentation éducative en physique et en automatisme
Ressources techniques et sources d’autorité
Pour approfondir les notions d’unités, de vitesse et de métrologie, vous pouvez consulter des sources institutionnelles reconnues. Le NIST, National Institute of Standards and Technology présente les bases des unités SI, très utiles pour éviter les erreurs de conversion. Pour une révision claire des grandeurs de mouvement, l’Physics Classroom, ressource éducative .edu, explique bien la différence entre vitesse et vélocité. Enfin, la NASA Glenn Research Center propose une page pédagogique sur la notion de speed et les conversions usuelles.
Conclusion
Arduino calculer une vitesse avec un ILS est un excellent point d’entrée dans la mesure de mouvement embarquée. Le système est peu coûteux, simple à déployer et suffisamment précis pour de très nombreux projets. Le secret d’un bon résultat tient à quatre points : une circonférence réelle bien mesurée, un comptage fiable des impulsions, un anti-rebond correctement dimensionné et une méthode de calcul cohérente avec votre besoin, moyenne ou instantanée. Si votre application reste dans des fréquences modestes, l’ILS est souvent une solution tout à fait pertinente. Pour les régimes plus élevés ou les environnements exigeant une précision maximale sans contact mécanique, le capteur à effet Hall sera généralement l’étape suivante.
Utilisez le calculateur ci-dessus pour valider rapidement vos paramètres, comparer plusieurs diamètres de roues et estimer la vitesse avant même d’écrire votre code Arduino final. C’est une manière efficace de vérifier la logique du projet, de dimensionner la fenêtre de mesure et d’anticiper la fréquence d’impulsions que votre système devra gérer.