top of page

Avant de lire cette partie nous vous conseillons d'avoir lu l'entrée en matière.

LE CODE PPM : OBSERVATION

Le mot "code" possède un sens commun très large. En effet, il est souvent utilisé dans le sens de cryptage, pour transmettre des informations sans qu'elles puissent être lues par des tierces personnes. Il peut également prendre le sens de compression de données ; sens qui est par exemple utilisé pour le code MP3 (codage son). Mais, d'une manière plus générale, un code peut être vu comme la représentation particulière de données en vue de faciliter leur traitement ou leur transmission. C'est à cette définition, proche de celle qu'en donne le Larousse, que le code mis en œuvre dans la radiocommande se rapproche le plus. En effet, celui-ci permet de faciliter le traitement et la transmission, vers l'hélicoptère , des signaux électriques représentatifs des actions exercées sur les joysticks de la radiocommande.

Le code utilisé dans notre radiocommande est le code Pulse Position Modulation, ou PPM. Selon ce code, les informations sont représentées par des impulsions électriques et plus précisément par l'espacement, dans le temps, qui existe entre elles. Pour comprendre cela, reprenons le chemin de l'information depuis le début.

 

Comme vu dans la partie « Composition de la radiocommande », l'information naît dans les potentiomètres solidaires des joysticks. Elle prend à ce stade la forme d'un signal analogique, qui est en fait la tension électrique présente aux bornes des dits potentiomètres.

Ce signal, est ensuite traité par un codeur. Dans la radiocommande que nous étudions, cette fonction est assurée par le composant de référence : EM78P458AP, de la marque Elan. Sous ce nom se cache en fait un microcontrôleur pouvant être programmé afin d'établir une fonction précise. Il est, en ce point, semblable au microcontrôleur Atmega328, présent sur les cartes Arduino Uno que nous utiliserons dans la partie qui traite du Décodeur PPM, de son fonctionnement et  des résultats de notre expérimentation. Ces deux composants possèdent en effet tous deux des entrées analogiques et des sorties numériques. La différence notoire entre ces deux produits, réside dans le type et la quantité de mémoire utilisée par l'un et par l'autre. Le programme est enregistré sur une mémoire Read Only Memory (ROM) sur le EM78P458AP, ce qui nous empêche de le modifier et de le visualiser. En effet, la lecture du programme n'est possible que par le microcontrôleur lui même lors de son exécution. Cette limitation, qui n'est pas présente sur Arduino car le programme est écrit sur une mémoire FLASH, lisible et reprogrammable à souhaits, à pour but notamment d'empêcher le plagiat des sociétés entre elles. Nous n'avons donc malheureusement pas pu lire ce programme. Cependant, nous connaissons son but : transformer l'information analogique en information codée, pouvant être transmise puis décodée par l'électronique de l'hélicoptère. Voici donc à quoi ressemble ce fameux code PPM, analysé à l'oscilloscope :

 

Nous pouvons voir que ce code fonctionne par « groupes », appelés trames. Chaque trame est composée de 6 impulsions électriques. La première impulsion est appelée impulsion de référence. Chacune de celles qui suivent permet de coder une voie de commande. Le temps séparant deux impulsions de référence est fixe. Cette durée peut être déterminée grâce à la mesure du signal électrique pris à la sortie du codeur PPM réalisé à l'aide du microcontrôleur. Le relevé effectué à l'oscilloscope avec une échelle horizontale de 5ms/cm permet de déterminer la durée T d'une trame.

 

 

Le nombre de trames PPM qui sont transmises par seconde, et ainsi la résolution maximale qui peut être obtenue, peuvent alors être calculés  :

Les informations ne sont donc renouvelées que 53 fois par seconde, et non en continu. Cela est cependant suffisant dans le cas du pilotage d'un aéromodèle. En effet, les capacités humaines et les temps de réponse des chaînes mécaniques mises en jeu dans l'hélicoptère ne permettent que très difficilement, d'une part au pilote de faire des mouvements d'une durée inférieure à 19ms et, d'autre part à l'hélicoptère d'y réagir.

 

Le codage PPM consiste à moduler, c'est à dire faire varier, le temps qui sépare deux impulsions consécutives en fonction de la valeur du signal électrique qui doit être codé.

La durée qui sépare deux impulsions est donc variable et proportionnelle à la valeur à transmettre. Ainsi, la durée qui sépare la deuxième impulsion (imp 0) de l'impulsion de référence permet de coder l'information de la voie 0. Celle qui sépare la troisième impulsion (imp 1) de la seconde code la voie 1 et ainsi de suite. Pour illustrer cela, nous avons donc décidé de comparer ces différentes positions des impulsions, grâce à un oscilloscope en faisant bouger les joysticks. 

Voici donc le tableau récapitulatif des mesures effectuées sur la Voie 0 :

Ici, la voie 0 est au neutre, le joystick au centre horizontalement. Le temps séparant l'impulsion de l’impulsion de référence est alors :

 

T1 ≈ 1,5 ms

A présent, le joystick de la voie 0 est complètement à droite. Le temps séparant l'impulsion de l'impulsion de référence est alors plus grand :
 

T2 ≈ 2 ms

Pour finir, le joystick de la voie 0 est placé complètement à gauche, ce qui a pour conséquence de diminuer le temps séparant l'impulsion de l'impulsion de référence :
 

T3 ≈ 1 ms

ANALYSE

Il peut être remarqué que l'action sur le joystick de la voie 0 a pour conséquence de changer le temps de séparation entre l'impulsion de référence et l'impulsion 0.

Intéressons nous à présent à la position de l'impulsion 1. Cette position dépend de deux paramètres :

 

  • La position du joystick de la voie 1

  • La position de l'impulsion à partir de laquelle son espacement est mesuré : l'impulsion 0. Ainsi, si l'impulsion 0 bouge, alors l'impulsion 1 se déplacera avec elle. Cela est également valable pour les impulsions, 2, 3, et 4 qui dépendent respectivement de la position de l'impulsion précédente.

Nous comprenons donc mieux pourquoi toutes les impulsions se déplacent lorsque nous agissons sur la voie 0.

Nous pouvons donc faire les mêmes observations sur les autres voies. Par exemple, prenons la voie 3 :

 

Ici, la voie 3 est au neutre, le joystick au centre horizontalement. Le temps séparant l'impulsion de l’impulsion de référence est alors :

 

T1 ≈ 1,5 ms

A présent, le joystick de la voie 3 est complètement à droite. Le temps séparant l'impulsion de l'impulsion de référence est alors plus petit :
 

T2 ≈ 1 ms

Pour finir, le joystick de la voie 3 est placé complètement à gauche, ce qui a pour conséquence d'augmenter le temps séparant l'impulsion de l'impulsion de référence :
 

T3 ≈ 2 ms

ANALYSE

Nos observations sont sensiblement identiques à celles effectuées sur la voie 0 ; l'action sur le joystick de la voie 3 permet de changer le temps séparant l'impulsion 3 de l'impulsion 2.

 

SYNTHESE GENERALE

Nous pouvons constater que l'action sur un joystick a pour conséquence de faire varier la position de l'impulsion qui code la position de ce joystick, dans la trame PPM, par rapport à son impulsion de référence. Cela a également pour conséquence de décaler toutes les impulsions situées derrière cette impulsion.

 

Nous pouvons également constater que les temps séparant les impulsions au sein d'une même trame sont bien plus faibles que les temps séparant deux trames (1 ou 2 ms << 12 ms). Cela a en effet pour but d'empêcher le décodeur présent sur l'hélicoptère, de confondre le passage d'une trame à l'autre, avec le temps séparant 2 impulsions. Cela réduit ainsi fortement le risque d'erreur, qui doit être minimal pour éviter tout problème en vol.

 

La phase d'observation de ce code est à présent terminée. Nous allons poursuivre en expliquant plus précisément comment se passe le codage à l'intérieur du microcontrôleur. Pour cela, nous avons choisi, dans une première partie, de nous intéresser à la théorie, en exposant les grandes lignes d'un programme de codeur PPM. Une deuxième partie traitera, quant à elle, du fonctionnement, de la réalisation et de l'expérimentation d'un programme de décodeur PPM tel qu'il pourrait être mis en oeuvre dans notre aéromodèle.

 

Pour le moment, intéressons nous à la première partie de l'explication du codage.

 

bottom of page