Electronique > Réalisations > Affichage / Mesures > Encodeur-multiple 001

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). 

encoder_multiple_001_pcb_3d_front      
   

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.

   
encoder_multiple_001
    

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 #3droite (CW)51d ($33)52d ($34)$03$333+incrémentation
Enc #1droite (CW)0d ($00)1d ($01)$01$011+incrémentation
Enc #4gauche (CCW)0d ($00)0d ($00)$04$004-pas de changement (1)
Enc #8gauche (CCW)132d ($84)131d ($83)$08$838-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". 
 
encoder_multiple_001_com_debug
 
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.
 
encoder_multiple_001_pcb_components_top  
 -

   

Historique

13/07/2025
- Première mise à disposition