
Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:46



Cette instructable décrit une méthode simple de décodage d'un encodeur rotatif séquentiel à l'aide d'un Arduino Uno R3.
Des routines logicielles compactes sont utilisées pour compter le nombre de transitions, éliminer les rebonds de contact et déterminer le sens de rotation. Des composants et des tables de recherche supplémentaires ne sont pas nécessaires.
Des versions avec et sans interruption du code sont fournies.
La version d'interruption du code ne nécessite qu'une seule broche d'interruption.
Images:
- La photo d'ouverture montre l'encodeur assemblé.
- La capture d'écran montre le code de la version d'interruption et le nombre lorsque l'arbre du codeur est tourné dans le sens horaire et antihoraire.
- La vidéo montre le décompte pendant la rotation rapide.
Étape 1: schéma de circuit

Le schéma de câblage de l'encodeur est représenté sur la fig.1.
Les cavaliers sont soudés directement aux broches de l'encodeur.
Échangez les deux fils bleus si le sens de comptage est inversé.
Étape 2: Liste des pièces
Les pièces suivantes ont été obtenues à partir de
- 1 seul Arduino UNO R3 avec câble USB.
- 1 seul encodeur rotatif séquentiel (EC11 ou équivalent) avec interrupteur.
- 1 seul bouton pour s'adapter à l'arbre.
- 3 fils de cavalier Arduino mâle-mâle uniquement.
Étape 3: Théorie

Les encodeurs rotatifs séquentiels génèrent deux ondes carrées dont chacune est déplacée de 90 degrés, comme le montre la Fig.1.
Les schémas logiques au contact A et au contact B sont différents lorsque l'arbre est tourné dans le sens horaire (CW) et antihoraire (CCW) sur les positions 1 à 6.
Les méthodes courantes de détermination du sens de rotation comprennent:
- Matériel
- interruptions jumelles
- tables de recherche de modèle
Ce projet utilise une méthode logicielle qui ne nécessite pas de tables de recherche. [1]
Direction
Au lieu de regarder les modèles de sortie du contact A et du contact B, concentrons-nous sur le contact A.
Si nous échantillonnons le contact B après chaque transition du contact A, nous notons que:
- Le contact A et le contact B ont des états logiques opposés lorsque l'encodeur est tourné dans le sens horaire
- Le contact A et le contact B ont le même état logique lorsque l'encodeur est tourné dans le sens antihoraire
Code réel:
// ----- Compter les transitions
CurrentStateA = stateContactA(); if (CurrentStateA != LastStateA) { CurrentStateB = digitalRead(ContactB); if (CurrentStateA == CurrentStateB) Count++; if (CurrentStateA != CurrentStateB) Count--; LastStateA = CurrentStateA; }
Cette méthode offre les avantages suivants:
- les tables de recherche ne sont pas nécessaires
- une seule ligne d'interruption est requise
Anti-rebond
Tous les codeurs mécaniques souffrent de « rebond de contact ».
Si un contact d'interrupteur n'ouvre/s'ouvre pas proprement, son état logique oscillera rapidement de HAUT à BAS jusqu'à ce que le contact d'interrupteur se stabilise. Cela se traduit par de faux décomptes.
Une méthode pour supprimer le rebond de contact consiste à ajouter un petit condensateur entre chaque contact de commutateur. Le condensateur et la résistance de rappel associée forment un intégrateur qui court-circuite efficacement les hautes fréquences et permet à la tension de commutation de monter/baisser gracieusement.
L'inconvénient de cette approche est que des transitions peuvent être manquées si l'arbre du codeur est tourné rapidement.
Anti-rebond logiciel
Cette méthode utilise deux compteurs (Open, Closed) qui ont été mis à zéro. [2]
Une fois qu'une transition est détectée sur le contact A:
- Sondage en continu Contact A.
- Incrémentez le compteur d'ouverture et réinitialisez le compteur de fermeture chaque fois que le contact A est au niveau haut.
- Incrémentez le compteur Fermé et réinitialisez le compteur Ouvert, chaque fois que le Contact A est BAS.
- Quittez la boucle lorsque l'un des compteurs atteint un nombre prédéterminé. Nous recherchons effectivement la période d'équilibre après tout rebond de contact.
Code réel:
// ----- Anti-rebond Contact A
while (1) { if (digitalRead(ContactA)) { // ----- ContactA is Open Closed = 0; // Intégrateur inverse vide Open++; // Intégrer if (Open > MaxCount) return HIGH; } else { // ----- ContactA est Fermé Ouvert = 0; // Intégrateur inverse vide Closed++; // Intégrer if (Fermé > MaxCount) return LOW; } }
Il n'est pas nécessaire de neutraliser le contact B car les transitions du contact A et du contact B ne coïncident pas.
Compte
Un "détente" mécanique double efficacement votre compte car deux comptes sont enregistrés entre les clics (voir fig 1).
Le nombre de « détentes » peut être déterminé en utilisant l'arithmétique modulo 2 comme indiqué ci-dessous.
Code réel:
// ----- Compter "détentes"
if (Count % 2 == 0) { Serial.print("Count: "); Serial.println(Count / 2); }
Les références
De plus amples informations peuvent être trouvées sur:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Étape 4: Logiciel
Ce projet nécessite une version récente de l'IDE Ardino Uno R3 (environnement de développement intégré) disponible sur
Téléchargez chacun des deux croquis Arduino suivants (ci-joints)
- Rotary_encoder_1.ino (version d'interrogation)
- Rotary_encoder_2.no (version d'interruption)
Double-cliquez sur votre version préférée et suivez les instructions à l'écran.
Prendre plaisir …
Cliquez ici pour voir mes autres instructables.
Conseillé:
LabDroid : Encodeur/décodeur de code Morse : 4 étapes

LabDroid : Encodeur/décodeur de code Morse : Remarque : Cette instruction ne peut pas être réalisée 1:1 dans la dernière version de LabDroid. Je le mettrai à jour bientôt. Ce projet vous montrera ce que vous pouvez faire avec LabDroid. Puisqu'un Hello World est normalement fait à base de texte, de lumière ou de son, j'ai pensé pour LabDr
Décodeur Binary Tree Morse : 7 étapes (avec photos)

Décodeur Binary Tree Morse : a.articles {font-size : 110,0 %; font-weight : gras ; style de police : italique ; texte-décoration : aucun; background-color: red;} a.articles:hover {background-color: black;} Cette instructable explique comment décoder le code Morse à l'aide d'un Arduino Uno R3.T
Comment faire un simple décodeur de ligne téléphonique DTMF (tonalité) : 3 étapes

Comment faire un simple décodeur de ligne téléphonique DTMF (tonalité) : Il s'agit d'un projet simple qui vous permet de décoder les signaux DTMF sur pratiquement n'importe quelle ligne téléphonique. Dans ce tutoriel, nous utilisons le décodeur MT8870D. Nous utilisons un décodeur de tonalité prédéfini parce que, croyez-moi, c'est pénible d'essayer de le faire avec le
Décodeur de protocole de contrôle à distance RC5 sans bibliothèque : 4 étapes

Décodeur de protocole de contrôle à distance RC5 sans bibliothèque : avant de décoder rc5, nous discutons d'abord de ce qu'est la commande rc5 et de sa structure. Donc, fondamentalement, la commande rc5 utilisée dans les télécommandes utilisées dans les téléviseurs, les lecteurs de CD, les d2h, les systèmes de cinéma maison, etc
Comment programmer un décodeur IR pour la commande de moteurs à courant alternatif à plusieurs vitesses : 7 étapes

Comment programmer le décodeur IR pour la commande de moteur à courant alternatif à plusieurs vitesses : Les moteurs à courant alternatif monophasé se trouvent généralement dans les articles ménagers tels que les ventilateurs, et leur vitesse peut être facilement contrôlée lors de l'utilisation d'un certain nombre d'enroulements discrets pour des vitesses définies. Dans ce Instructable, nous construisons un contrôleur numérique qui un