OrdreVoies

Mise à jour 17/5/2006

Contrairement à la version précédente, il n'y a plus qu'un seul .HEX, le nombre de voies est détecté à la mise en route du montage par le programme.

Ce dispositif est destiné à modifier l'ordre des voies dans un signal PPM.

Le but est principalement de permettre l'écolage entre des radios dont l'ordre des voies diffère de l'une à l'autre et qui n'a pas la fonction d'affectation des voies aux manches. Cette fonction n'existe que sur les radios haut de game.

Ce montage ne fonctionne qu'avec un codage PPM.

Vous trouverez ailleurs (Voir par exemple http://home.nordnet.fr/~fthobois/theorieRC.htm ou http://users.belgacom.net/TX2TX/tx2tx/french/tx2txfr1.htm ou http://www.chez.com/silicium31/les_docs.htm ) des explications détaillés sur le codage PPM (Pulse Position modulation) de la liaison émetteur-récepteur. En résumé et en prenant l'exemple d'une transmission 7 voies , la radio transmet toutes les 20ms un signal consistant en un train de 8 impulsions d'environ 300µs. La durée séparant les fronts de la première et la seconde impulsion donne la position du servo voie 1, celle séparant la seconde impulsion et la troisième donne la position du servo 2 et ainsi de suite. Après transmission de la voie 7, il y a un temps mort permettant la synchronisation émetteur-récepteur.

Dans un but d'écolage, seules les 4 première voies sont nécessaires. Il n'est donc prévu de ne permettre ces permutations que sur les 4 premières voies.

Schéma :

Rien de rare, que du classique. La led permet la mise au point du programme ou de visualiser les trames reçues et envoyées par le biais de la synchro externe d'un scope. Elle sort un signal à la fréquenc de la trame reçue (normalement voisine de 50Hz). Elle s'éteint en début de trame de réception et s'allume en début de trame restituée.

Le programme est prévu pour 4 à 9 voies. Il y a au lancement du programme une lecture du signal d'entrée pour savoir combien de voies sont reçues. Ce nombre de voies est repris pour la restitution avec permutation sur les 4 premières voies. Si le switch 4/T est positionné ON, il n'y a que les 4 premières voies qui sont restituées.

Les switche 4/T sont lues à chaque trame, par contre, le nombre de voies reçues et la permutation demandée n'est lue qu'à l'initialisation. Pour prendre en compte une modification de l'ordre des voies, il faut éteindre et rallumer le montage.

L'acquisition se fait en utilisant un timer sur 16 bits via le CCP et les interruptions, la restitution utilise un timer 8 bits sans déclenchement d'interruption mais la résolution reste sur 16 bits grâce à la programmation.

Il y a synchronisation entre la trame d'entrée et la trame de sortie. Cette dernière commence avec la fin de la trame d'entrée et délivre un signal identique à la trame d'entrée précédente dans laquelle on a permuté les voies selon la configuration demandée. Il y a donc un retard non perceptible de 20ms au plus entre le signal fourni par la radio et celui modifié fourni par le montage.

Les non programmeurs peuvent sauter ces commentaires.

Pour les programmeurs

La trame d'entrée est annalysée par IRQ via le CCP du 628. Le temps de chaque voie est mémorisé en µs via le timer 1 (16 bits) qui peut donc aller jusqu'à 65535 µs soit 65,536 ms. On ira jamais au delà de 2200µs pour les voies et 10 à 15 ms pour la synchro. Dès l'arrivée de la trame suivante, la sortie de la trame de sortie est activée. La trame de sortie utilise un compteur 16 bits pour restituer à l'identique la trame d'entrée après permutation des voies.
Quand le programme traite les IRQ entrants, la tempo de sortie en cours est allongée du temps de traitement de l'IRQ.
Ce temps est faible, de l'ordre de 15 à 20 µs soit à peine plus de 2% dans le pire des cas, mais peut être gènant.
Pour palier à ce problème, le signal n'est sorti qu'après la dernière impulsion entrante.
La conséquence est que si la trame de sortie n'est pas terminée quand arrive la nouvelle trame d'entrée, les dernières voies de sorties sont un peu perturbées. Mais attention, cette "perturbation" n'intervient qu'à partir de la voie 6 dans le pire des cas et elle ne représente qu'une errreur de 2% au plus sur la position des voies perturbées, qui sont en principe des voies annexes.
L'utilisation de l'IRQ pour arrêter la tempo de sortie plutôt que le scan du bit d'IRQ n'a pas été retenu car c'est alors la mesure de la tempo d'entrée qui aurait été perturbée. Rappelons que le PIC est monotache mais qu'à la vitesse où il travaille, ces "perturbations" resteront invisible dans 99% des cas et ne seront mis en évidence que par la volonté d'aller les chercher. L'honnêteté intellectuelle qui m'anime me conduit à vous donner toutes les données du problème.
Enfin, rappellons aussi qu'il existe des 16F628 qui peuvent tourner à 20 MHz, il suffit d'utiliser une version 20 MHz, d'ajouter un quartz et deux condensateurs. Le timer aura encore la capacité de cette vitesse et la "perturbation" passera de 2% (dans le pire des cas) à 0,4% sur les voies 6 et suivantes. Il faut aussi revoir dans le source le bit d'option pour l'oscillateur et la valeur de test pour différencier les temps voies des temps synchro. Mais là, je serais étonné que quelqu'un aie besoin de ça.

Le programme fait l'acquisition de 7 ou 8 voies voies et peut ne ressortir que les 4 premières selon la position su switch 4/Tvoies. Cette possibilité ne présente en fait pas d'interret et sera sans doute supprimée si le besoin d'une entrée supplémentaire se faisait sentir.

Il est testé sur une MC12 pour 7 voies et une FX14 pour 8 voies. Il donne parfaitement satisfaction. Pour faire de "l'inter marque", mettre en conformité la polarité du signal de sortie avec le switch de configuration ad-hoc ainsi que son niveau de tension. Si l'emetteur a plus de 8 voies ou moins de 7 voies, modifier en conséquence le source en ajoutant ou supprimanr les IRQ en plus ou en moins. Voir dans le sourc les zones d'assemblage conditionnel sur 7 et 8 voies qui inququeront ce qu'il y a à faire.

Choix de l'odre des voies

Comme vous le voyez sur le schéma, pour une entré en ordre 1234, la sortie peut se faire dans n'importe quel ordre selon la position des switchs de choix d'ordre.
Ce choix est obtenu en fournissant ua PIC un mot de 5 bits constitué de RB7 - RB4 - RB2 - RB1 - RB0
Il suffit de positionner les 5 switchs de gauche du DIP SWITCH 8 (en regardant le circuit imprimé switchs vers le bas) avec le mot correspondant à l'ordre choisi et de faire un Reset du PIC.
Les 5 switchs permettent 32 configurations, seules les 24 premières sont utilisées. Si vous donnez une configuration 25 à 32, le logiciel le comprend comme une configuration 1, c'est à dire pas de permutations.

Afin de vous aider dans la configuration, je donne ci dessous les ordres de voies transmis en fonction de la position des switchs 1 à 5 des inverseurs DIL monté tels que sur le CI ci-dessus. Un switc ON est à 0, un OFF est à 1. Si tous les switchs sont ON, on a 00000, l'ordre n'est pas changé : 1234. Si le switch 5 est le seul à OFF, on a 00001, l'ordre devient 1243 et ainsi de suite selon le tableau :

Switchs
Ordre
Switchs
Ordre
Switchs
Ordre
00000
1234
01000
3124
10000
3412
00001
1243
01001
4123
10001
4312
00010
1324
01010
3142
10010
2341
00011
1423
01011
4132
10011
2431
00100
1342
01100
2314
10100
3241
00101
1432
01101
2413
10101
4231
00110
2134
01110
3214
10110
3421
00111
2143
01111
4213
10111
4321

La réalisation

Le montage en cours de test (avec les fils bleu-rose-gris-jaune vers l'analyseur logique) et les prises (ici Futaba/Graupner)

Téléchargements

Pour le programme source, c'est ici.
Pour les fichiers .hex c'est ici.
Pour le fichier schéma c'est ici.
Pour le fichier circuit imprimé c'est ici.

Les fichiers schéma et circuit imprimé sont aux formats Abacom. Voir dans GlowSL comment les utiliser