Un ensemble codeur/décodeur POLYTOR "arduinisé"
I. Introduction
Il y a quelques années, en 2004, le projet POLYTOR avait vu le
jour. Il reposait à l'époque sur un codeur construit autour de circuits
CD4017 (pas de microcontrôleur) et sur un décodeur basé sur un
microcontrôleur PIC12F629 ou PIC12F675. Pour le détail, voir cette page.
Depuis cette époque, les arduinos ont fait leur
apparition, ce qui facilite le développement d'application sur
microcontrôleur de type AVR. Après avoir développé toute une collection
de librairies dédiées aux applications RC, il m'est venu l'idée de
créer un nouvel ensemble codeur/décodeur POLYTOR basé sur arduino. Les
librairies <RcTxSerial> et
<RcRxSerial> permettent de créer un port série virtuel entre un émetteur
RC et un récepteur RC. Ceci donne la possibilité d'envoyer n'importe
quel message de l'émetteur vers le récepteur. D'où l'idée de
transmettre dans le message la position de n interrupteurs lue via un
codeur POLYTOR. Ainsi, une voie proportionnelle de l'émetteur est
utilisée pour
transporter la position des n interrupteurs. Côté réception, les
positions des n interrupteurs sont extraites du message et sont
utilisées pour activer/désactiver chacune des n sorties.
II. Caractéristiques techniques
III. Codeur POLYTOR côté émetteur RC
Le nouveau codeur POLYTOR, utilise le nouveau codeur universel URC (Universal RC EnCoder: Codeur RC Universel).![]() |
Avantages: - faible encombrement - lecture de 8 contacts Inconvénients: - nécessite de remplacer les connecteurs fournis par des barrettes "tulipe". - l'adresse I²C se configure par coupure d'une mini piste et par un pont de soudure entre 2 pastilles. |
![]() |
Avantages: - modules "empilables" - lecture de 8 contacts - l'adresse I²C se configure simplement par cavaliers. Inconvénients: - encombrement relativement important. |
![]() |
Avantages: - encombrement moyen, - lecture de 16 contacts Inconvénients: - difficilement "chaînable", - l'adresse I²C se configure par des petits fils à souder vers VCC ou GND, - pas de connecteur pour les contacts. |
Il
est possible de chaîner 4 modules au maximum. Les modules pouvant être
identiques ou de type différents (8 ou 16 contacts, marques
différentes): le codeur les détecte automatiquement au démarrage. Afin
de les différencier, les adresses I²C (définies par les connections de
A2, A1 et A0) doivent évidemment être différentes.
Pour valider ce nouveau codeur POLYTOR, les modules I/O expender de chez Digistump ont été utilisés:
III.2. Câblage des modules I²C
Le câblage des modules I/O Digistump avec le codeur universel PoP/URC est le suivant:
- Les modules I/O expenders sont équipés de barettes de contacts "tulipe" pour plus de compacité,
- Le câble en nappe blanc/vert/rouge/bleu permet le chaînage des modules I/O expenders,
- Le commun de tous les contacts est à prendre, par exemple, sur le connecteur de chaînage du dernier module I/O expender,
- Les contacts des interrupteurs ayant tous un commun, il est possible
d'utiliser des interrupteurs de type inverseur ou même des rotacteurs,
- Cette configuration permet de lire 16 contacts et est directement compatible avec le décodeur POLYTOR d'ancienne génération,
- Il est possible de chaîner 2 I/O Expenders supplémentaires pour
supporter la lecture de davantage de contacts: il faudra alors
impérativement utiliser les décodeurs POLYTOR de nouvelle génération basés sur un micro-contrôleur ATtiny85,
- L'utilisation du Port Série de configuration n'est nécessaire qu'en cas de l'utilisation du mode PoP (nécessaire au dessus de 16 contacts): par défaut, le codeur URC est en mode de compatibilité avec les décodeurs POLYTOR d'ancienne génération,
- Sur la gauche du module I/O expender N°2, notez, en rouge, le petit pont de soudure qui permet d'avoir une adresse I²C différente du module I/O expender N°1.
III.3. Intégration dans l'émetteur Skysport 4
On y distingue:
- Le codeur URC derrière l'antenne,
- Un premier module I/O Expender en haut à droite,
- Un second module I/O Expender en haut à gauche,
- Le cable en nappe blanc/vert/rouge/bleu pour le chaînage des modules I/O expenders,
- Au dessus du premier module, le connecteur qui permet de dialoguer avec le port série d'un PC,
- Dans le bas de chaque module, la barrette de connecteur "tulipe" pour lire 8 contacts,
- Tout en haut, la platine en CTP qui reçoit les interrupteurs (ici de type inverseur),
- Sur cette photo, il ne manque que les fils entre les barrettes "tulipe" et les contacts des différents interrupteurs.
IV. Décodeur POLYTOR côté récepteur RC
IV.1. Décodeur POLYTOR ancienne génération
![]() |
Le décodeur d'ancienne génération est basée sur un PIC12F629 ou PIC12F675. Pour qu'il fonctionne avec le nouveau codeur, il faut que ce dernier soit configuré pour fonctionner avec le "vieux" Protocole de communication: sur le codeur il faut lui envoyer la commande P=O; c'est déjà le cas par défaut. |
IV.2. Décodeur POLYTOR nouvelle génération
![]() |
Seul le
micro-contrôleur change: le PIC12F629 ou PIC12F675 est remplacé par un
ATtiny85 de chez ATMEL. Afin de conserver le même circuit imprimé, un
petit adaptateur permet à l'ATtiny85 de se connecter sur l'empreinte de
l'ancien PIC. Ce décodeur peut fonctionner avec 2 protocoles de communication: - l'ancien protocole PPM: il faut envoyer sur le codeur ET le décodeur la commande P=O. - le nouveau protocole PoP: il faut envoyer sur le codeur ET le décodeur la commande P=N. |