Traitement du signal en ppm pour mixage sur une télécommande

Une fois un signale propre obtenu en sortie des capteurs, il reste à créer l’interface pour la transmission à distance.

L’arduino est utilisée pour traiter le signale et ainsi il reste toujours la possibilité de changer l’interfaçage. Le signale en sortie peux être maintenant codé sur des trames différentes : une sortie des données en série sur 8 bits (par exemple pour un driver sur un périphérique physique…joystick, pad,….), une sortie ppm (pour un codage type télécommande RC,….un post-traitement sur une trame propriétaire…..

Dans le cas présent, et pour une interface délivrée des contraintes de câblages, le choix d’une solution de codage en ppm s’impose pour l’efficacité et la praticité des télécommandes RC. Une solution de type Xbee, pour une transmission radio aurait pue être envisagé, mais l’utilisation du transfert du signal vidéo en 1.2 ou 2.5 GHz pose quelques problèmes de brouillage potentiels.

Le principe est donc de découper le signal en pulsations compatible avec les systèmes des télécommandes RC, pour mixer le signal. J’ai à ma disposition, deux télécommandes 6 canaux, de marques connues et possédant chacune une prise pour l’écolage)

Une FUTABA T6EXP :

ainsi qu’une SANWA RD6000Sport :

Grace à ces deux sites, j’ai récupéré beaucoup d’informations pour le mixage des données d’écolages des télécommandes :

Sur ce site des tas d’information concernant le cablage des télécommandes ->

sur le forum arduino, cet utilisateur à mixé un signal en ppm sur une télécommande Multiplex ->

Pour simplifier, les signaux ppm des télécommande sont sont constitués d’impulsions réparties sur environs 22 m-secondes, avec 2ms environ par voie. par exemple une impulsion d’1ms indique un positionnement minimum, 1.5ms est la valeur médiane, 2ms la valeur maximum (en fait chaques constructeurs semble avoir ses propre durées et référence : par exemple pour futaba, la norme semble plutôt être 0.7, 1.2, 2.4 ms…). après les 22ms une pause et effectué, pour indiquer le changement de trame.

Voila pour la théorie.

Dans la pratique,…..je n’arrive pas à réaliser la connection !!

Les deux télécommandes ont des connections totalements différentes :

la Futaba utilise un format propriétaire de fiche carré :fiche futaba

et la Sanwa une Dine standard, avec la masse sur la partie métallique externe :

fiche sanwa

Sur le cite précédent, les chémat de cablage sont données pour les deux télécommandes :

cablage futaba

et sanwa :

cablage sanwa

Brochage de Sanwa vu du coté d’accouplement de la fiche femelle :

1 = ??
2 = Ground
3 = OUT
4 = +V switched
5 = IN

——

——————-

Le problème :

Après plusieurs tentatives, impossible de faire communiquer les deux télécommandes, ou de mixer un signal en entrée !!!

Dans le cas d’un signal en entrée, j’ai réalisé des tests avec ce code minimal, à partir de l’arduino, qui envois en sortie un des impulsion sur une voix, pour déplacer un servo d’une valeur donnée.


la solution d’envois d’impulsions via l’arduino :

Le code C / arduino :

////////////////////////////////////////////////////////////
////////// CODE TEST ////////////////////////////////
////////////////////////////////////////////////////////////

int servoPin = 3; // Control pin for trainer interface

int pulseStart = 800; // pulse start width in microseconds
int pulseMin = 500; // pulse minimum width minus start in microseconds
int pulseMax = 2500; // pulse maximum width in microseconds
int conversionFactor = (pulseMax – pulseMin – pulseStart)/180;

int frameLength = 20; // The duration in millisecs of a frame

long lastFrame = 0; // The time in millisecs of the last frame
int channelNumber = 3; // Number of channels to send
int servo[3]; // Values to set for the servos in degrees
int channel[3]; // Values to send on channels (duration of pulse minus start, in microseconds)
int i; // Counter in for loop
int j = 0; // Counter for servo updates

void setup() {
pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
Serial.begin(9600); // connect to the serial port
for ( i = 0; i < channelNumber; i = i + 1 ) {servo[i] = 0;}
for ( i = 0; i < channelNumber; i = i + 1 ) {channel[i] = pulseMin;}
Serial.println("Trainer_PPM_Interface ready");
}

void loop() {

// Save the time of frame start
lastFrame = millis();

// This for loop generates the pulse train, one per channel
for ( i = 0; i < channelNumber; i = i + 1 ) {
digitalWrite(servoPin, LOW); // Initiate pulse start
delayMicroseconds(pulseStart); // Duration of pulse start
digitalWrite(servoPin, HIGH); // Stop pulse start
delayMicroseconds(channel[i]); // Finish off pulse
}
digitalWrite(servoPin, LOW); // Initiate synchronisation pulse
delayMicroseconds(pulseStart); // Duration of start of synchronisation pulse
digitalWrite(servoPin, HIGH); // Stop synchronisation pulse start


// wait for the next frame
while (millis() – lastFrame < frameLength) {
delay(1);
}
}

////////////////////////////////////////////////////////////
///////////////////////////FIN DU CODE /////////////////////

///////////////////////////////////////////////////////////

Avec l’arduino, je pilote directement les servo avec ces systèmes d’impulsions et ce type de code, donc pas de doute de ce coté, le signal est bon, compatible et bien étalonné. (J’ai d’ailleurs vérifié avec un oscilloscope basique, la forme du signal, et tout semble parfait, dans la norme des 22ms..)

pour simplifier après avoir tester des solution avec envoie d’impulsions via l’arduino, jai tenté de réaliser une simple connection type écolage entre les deux télécommandes…dans le paragraphe suivant->

la solution de liaison écolage entre les deux télécommandes :

Pour faire des tests et repartir du problème à la base, j’ai tenté de raccorder les deux télécommandes en écolage, avec les deux options possibles : soit la Futaba en maître, soit la Sanwa en maître….

les solutions cablâge testées :


Sans succès ! Aucune réaction dans tout les cas. Pas la moindre réaction de mixage sur la voix. Les deux marques peuvent, il est vrai être incompatibles. J’ai, il me semble vu quelques réserves sur la futaba FX6, qui ne serait pas normalisé au niveau des pulsations, et ne serait compatible qu’avec une autre futaba.

L’idéal serait bien sûr, d’avoir deux télécommandes identiques pour tester….

…….. à suivre

About these ads

5 réponses à Traitement du signal en ppm pour mixage sur une télécommande

  1. eric dit :

    Pour commencer as tu essaye cette option car il me semble qu’en écolage on ne met que l’emeteur maitre sous tension,
    c’est pour ça que tu as un switch (+5v) sur l’émeteur maitre.
    Malheureusement tout ceci est de mémoire, donc un peu loin et évidement a confirmer.

  2. fbmfbm dit :

    Je ne pense pas utiliser la solution de l’alimentation de l’élève par le maître, car cela me semble trop risqué….
    Comme tu le souligne, je pense qu’il faut switcher le +V, pour garder l’alimentation, mais je nage….

  3. pvol dit :

    Pour que ça marche il faut faire les 2 montages que tu as réalisé en seul :
    - le OUT du maître vers le IN de la radio élève
    - le OUT de l’élève vers le IN de la radio maître
    ainsi le signal est envoyé du maître vers l’élève qui "pilote" et renvoi la trame PPM vers le maître qui "émet".

  4. pvol dit :

    Attention j’ai dit une grosse c…….e, la double liaison fonctionne dans mon cas (avec 2 anciennes MPX) mais dans ton cas il semblerait qu’il faut bien utiliser qu’une seule des liaisons IN ou OUT comme tu l’as fait mais si cela ne marche pas et selon les infos du site que tu as consulter il y a un problème car sanwa et futaba semble avoir un sens opposé de codage de la trame PPM.
    Pour en avoir le coeur net il faudra visualiser à l’oscillo la trame en sortie de chaque radio et comparer qu’elles sont bien toutes les 2 positives (ou les 2 négatives).
    Désolé…

  5. pvol dit :

    En complément un lien qui, si le Pb de sens de modulation est constaté, décrit un montage simple pour inverser le sens de modulation de la trame PPM :
    http://www.chez.com/silicium31/les_docs.htm

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Suivre

Recevez les nouvelles publications par mail.

%d bloggers like this: