Dernière mise à jour :
13/07/2025
Présentation
Ce circuit comporte sur un même circuit imprimé 8 encodeurs
rotatifs et dispose d'une unique sortie de données série
(UART).
Chaque mouvement de n'importe lequel des 8 encodeurs se traduit par
l'émission de données série (UART) indiquant l'index de l'encodeur
manipulé ainsi que la
valeur nouvellement acquise (ou le sens de rotation). Le système peut
être utilisé pour différents usages, domaine audio ou autre.
Schéma
Le schéma ne cache rien, on y trouve 8 encodeurs
EC12D à
contacts mécaniques et un PIC24F pour la gestion de l'ensemble.
Fonctionnement
Parmi les lignes d'entrée/sortie du PIC24F,
16 sont configurées en entrée avec pour chacune un pullup activé et une
interruption activée. Le PIC utilisé ici n'est pas un haut de gamme,
mais il suffit pour la tâche qu'on lui confie, à savoir réagir
immédiatement à tout changement d'état sur l'une des 16 lignes et
envoyer les données idoines sur sa sortie Tx.
Décodage des signaux A et B
Pour chaque paire de signaux A/B
provenant des 8 encodeurs
rotatifs EC12D, le PIC déduit le sens de rotation et le taux
d'incrémentation ou de décrémentation. Le fabricant ALPS/Alpine indique dans sa documentation technique (
datasheet)
que les rebonds des contacts durent au maximum 3 ms (pour
une rotation pleine - soit 360 degrés - effectuée en une seconde).
Pour cette raison, une fonction "debounce" est mise en oeuvre sous
forme logicielle pour éviter de multiples interruptions (et actions
correspondantes) indésirables. La durée de "silence temporel" a été ici
fixé à 5 ms, ce qui exclue l'utilisation d'encodeurs de mauvaise
qualité dont les rebonds peuvent atteindre plusieurs dizaines de ms. A
chaque mouvement validé d'un
encodeur, une petite trame de données est émise sur la sortie Tx.
Sortie des données (Tx)
Les données émises (Tx) par l'encodeur multiple 001 respectent
le format de transmission série (UART) suivant :
19200 bauds, 8 bits data, 1 bit stop, sans parité
Deux
octets sont transmis à chaque mouvement d'un encodeur. Le premier
octet indique l'index de l'encodeur manipulé, le second fournit la
valeur en cours ou le sens de rotation ("+" pour rotation dans le sens
horaire, "-" pour le sens anti-horaire). Deux possibilités sont
offertes :
-
Choix 1 : envoi en hexa, transmission de la valeur en cours entre 0 et 255
-
Choix 2 : envoi en ASCII, transmission du caractère "+" ou "-"
Le tableau qui suit donne quelques exemples.
N° d'encodeur (index) | Sens de rotation (CW / CCW) | valeur précédente décimale (hexa) | valeur nouvelle décimale (hexa) | Tx en Hexa (2 octets) | Tx en ASCII (2 octets) | Nota |
Enc #3 | droite (CW) | 51d ($33) | 52d ($34) | $03$33 | 3+ | incrémentation |
Enc #1 | droite (CW) | 0d ($00) | 1d ($01) | $01$01 | 1+ | incrémentation |
Enc #4 | gauche (CCW) | 0d ($00) | 0d ($00) | $04$00 | 4- | pas de changement (1) |
Enc #8 | gauche (CCW) | 132d ($84) | 131d ($83) | $08$83 | 8- | décrémentation |
Nota (
1)
- Pas de changement de valeur au sein du système encodeur multiple 001
pour l'encodeur considéré, mais transmission en binaire de la valeur
non modifiée (si Tx en hexa) ou transmission du symbole indiquant le
sens de rotation (si Tx en ASCII).
Problème de communication ?
Une
version spéciale "debug" permet à tout instant de connaître la
valeur du dernier encodeur manipulé et de la valeur en cours qui
lui correspond, sous la forme "
Index:Valeur".
Toutes les données émises sont en ASCII, y compris le message de
bienvenue émis au démarrage qui doit s'afficher en toutes
circonstances, même si on ne manipule aucun encodeur.
Utilisation du système
La sortie Tx de l'encodeur multiple 001 doit
aboutir à l'entrée Rx de votre système, ce dernier devra pouvoir réagir
aux données hexa ou ASCII reçues. Attention dans le cas de la
transmission en binaire/hexa : la "trame" de 2 octets n'est pas suivi
d'une information de type "fin de trame". Pour cette raison, il
conviendra de vérifier la validité du premier octet dont la valeur en
tout cas est comprise entre 1 et 8. Dans le cas de la transmission en
ASCII, la gestion des données reçues est plus simple côté
réception, puisque le premier octet est forcément un caractère compris
entre "1" et "8" et que le second caractère est forcément "+" ou "-".
Logiciels du PIC
Les fichiers binaires compilés *.hex à flasher dans le
PIC (versions hexa et ASCII) sont disponibles dans l'archive zip
ci-après.
Encodeur multiple 001
- 24F08KA101 - (13/07/2025)
Remarque
; en cas de difficulté d'approvisionement du PIC24F08KA101, le
PIC24F16KA101 peut aussi être utilisé, moyennant une adaptation mineure
et recompilation du logiciel.
Si vous souhaitez
recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Circuit imprimé (PCB)
Réalisé en double face.
-
Historique
13/07/2025
- Première mise à disposition