Le forum français des radios FrSKY

Reconversion d'une télécommande pour simulateur

Aller en bas

Reconversion d'une télécommande pour simulateur

Message par Jibeji le Mer 17 Aoû 2016 - 14:42

Bonjour,
Souhaitant pouvoir m’entraîner au simulateur pendant la pause déjeuner, je me suis mis en quête de la télécommande la plus petite possible. Après avoir passé beaucoup de modèles en revue, mon choix s'est porté sur la E-Flite MPL4DSM.



Tout serait allé pour le mieux dans le meilleur des monde si elle avait su générer le signal PPM nécessaire au simulateur !
Renseignement pris sur le net, il apparaît que le microcontrôleur interne dialogue avec le module d'émission en PWM, donc pas de PPM en vue... Plutôt que de réfléchir à un convertisseur, j'en suis arrivé à la conclusion qu'il valait mieux refaire toute l'électronique en ne gardant que les potentiomètres des manches.
C'est là qu'intervient mon microcontrôleur préféré : l'Arduino ! Ça coûte pas cher, ça se programme en C, vraiment idéal.

L'idée est donc de lire la valeur des 4 potentiomètres sur 4 entrées analogiques différentes, la logique fera le reste.
(nous reparlerons de la LED à gauche un peu plus tard)



Le programme est très simple, il est constitué d'un boucle qui lit séquentiellement la valeur des potentiomètres sur une certaine fourchette (les valeurs sont arbitraires pour l'instant) :

Code:
voie01 = map(analogRead(A7),300,800,1000,2000);

Puis de générer les impulsions nécessaires en basculant la sortie de l'état haut à l'état bas pendant la durée représentant la position du manche :

Code:
digitalWrite(ppm, HIGH);
delayMicroseconds(initPulse);
digitalWrite(ppm, LOW);
delayMicroseconds(voie01-initPulse);

On envoie le canal 1, puis le 2, puis le 3, puis le 4, et on recommence indéfiniment.

Souhaitant alimenter la télécommande avec une batterie LiPo 2S, et ayant beaucoup de puissance de calcul en réserve, j'ai ajouté une petite fonctionnalité qui lit la tension de la batterie sur l'entrée analogique A2, à travers un simple pont diviseur (les deux R de 2.2k). L'Arduino fonctionnant en 5V, lui faire ingurgiter du 7V n'est pas très bon.
La valeur de A2 est convertie en numérique puis comparée à une valeur seuil (3.1 V par cellule) en deçà duquel la LED clignote.
On peut se le permettre car tout le montage est alimenté au travers d'un régulateur 5V intégré à l'Arduino. Les valeurs de référence des convertisseurs Analogique/Numérique sont après le régul, la prise de tension est faite avant.

J'ai fait les tests sur plaquette d'essai avec un Arduino Pro Mini, 4 potars, et le simulateur Heli-X, ça fonctionne nickel.
Etape suivante : attendre patiemment la radio achetée d'occasion pour 12 € et attaquer les modifs hard.
Si le sujet vous intéresse, je posterai des photos lundi prochain.

Je n'arrive pas à joindre le fichier, le forum me dit qu'il est incorrect, alors voici le code. Il est tout plein de commentaires pour ceux qui ne causent pas couramment l'Arduino.

Code:
/*
Génération de signal PPM pour simulateur, en ne réutilisant que les potentiomètres de la radio.
La LED est allumée fixe lorsque la radio est sous tension, ou clignote lorsque la tension de
la batterie (LiPo 2S) chute en dessous de 6,1 V.
- Jibeji 17.08.2016
*/

int ppm = 13;  // sortie PPM
int led = 2;   // Sortie LED

// Variables pour les 4 voies
int voie01 = 0;
int voie02 = 0;
int voie03 = 0;
int voie04 = 0;
// Durée du Pulse d'init
int initPulse = 300;
// Durée de la trame reset
int frameReset = 7000;  
// Référence de tension pour la conversion
float refVcc = 5.0;

void setup() {
   Serial.begin(9600);
   pinMode(ppm, OUTPUT);
}

void loop() {
   /* ------------------------------------------------------ */
   // Partie Voltmètre
   /* ------------------------------------------------------ */
   int TensionLiPo = analogRead(A2);
  
      // Débugage, à supprimer en fonctionnement normal
      // Affichage de la valeur lue et de la tension
      Serial.print("Lecture brute: ");
      Serial.println(TensionLiPo);
      Serial.print("Tension: ");
      Serial.print(TensionLiPo*refVcc/1024);
      Serial.println(" V");
      Serial.println("--------------------");
      // Fin débugage
  
   if (TensionLiPo > 640) {      // Tension supérieure à 6.1V ?
      digitalWrite(led, HIGH);   // Oui, LED allumée
   } else {
      blink_led();               // Non, LED clignote
   }

   /* ------------------------------------------------------ */
   // Partie lecture potentiomètres et envoi PPM
   /* ------------------------------------------------------ */
  
   // Mapping en fonction des valeurs des potentiomètres
   voie01 = map(analogRead(A7),300,800,1000,2000); // RUD
   voie02 = map(analogRead(A1),300,800,1000,2000); // ELE
   voie03 = map(analogRead(A6),300,800,1000,2000); // THR
   voie04 = map(analogRead(A0),300,800,1000,2000); // AIL
  
      // Débugage, à supprimer en fonctionnement normal
      // Affichage des valeurs corrigées
      Serial.print(voie01);
      Serial.println(voie02);
      Serial.println(voie03);
      Serial.println(voie04);
      delay(1000);
      // Fin débugage
  
   // Envoi du signal PPM
   // Voie 1 - Dérive
   digitalWrite(ppm, HIGH);             // Etat haut
   delayMicroseconds(initPulse);        // Durée d'init
   digitalWrite(ppm, LOW);              // Etat bas
   delayMicroseconds(voie01-initPulse); // Envoi valeur
  
   // Voie 2 - Profondeur
   digitalWrite(ppm, HIGH);
   delayMicroseconds(initPulse);
   digitalWrite(ppm, LOW);
   delayMicroseconds(voie02-initPulse);
  
   // Voie 3 - Gaz
   digitalWrite(ppm, HIGH);
   delayMicroseconds(initPulse);
   digitalWrite(ppm, LOW);
   delayMicroseconds(voie03-initPulse);
  
   // Voie 4 - Ailerons
   digitalWrite(ppm, HIGH);
   delayMicroseconds(initPulse);
   digitalWrite(ppm, LOW);
   delayMicroseconds(voie04-initPulse);
    
   // Trame reset
   digitalWrite(ppm, HIGH);
   delayMicroseconds(initPulse);
   digitalWrite(ppm, LOW);
   delayMicroseconds(frameReset-initPulse);
}
// Fin de la boucle, on recommence

int blink_led () {
   digitalWrite(led, HIGH);
   delay(200);
   digitalWrite(led, LOW);
   delay(200);
}  

Edit: faut de grammaire qui piquait les yeux


Dernière édition par Jibeji le Mer 17 Aoû 2016 - 15:32, édité 1 fois
avatar
Jibeji

Messages : 151
Date d'inscription : 22/07/2016
Age : 45
Localisation : Paris, juste en dessous du nuage marron

Revenir en haut Aller en bas

Re: Reconversion d'une télécommande pour simulateur

Message par Jibeji le Mer 17 Aoû 2016 - 15:19

J'ai oublié la photo du montage de test :

avatar
Jibeji

Messages : 151
Date d'inscription : 22/07/2016
Age : 45
Localisation : Paris, juste en dessous du nuage marron

Revenir en haut Aller en bas

Re: Reconversion d'une télécommande pour simulateur

Message par Kilrah le Mer 17 Aoû 2016 - 19:28

Jibeji a écrit:Bonjour,
Souhaitant pouvoir m’entraîner au simulateur pendant la pause déjeuner, je me suis mis en quête de la télécommande la plus petite possible. Après avoir passé beaucoup de modèles en revue, mon choix s'est porté sur la E-Flite MPL4DSM.

Le problème c'est que les potentiomètres / manches de ces radios sont hyper pourris, et donc que la réponse est peu réaliste... donc l'intérêt est limité de l'utiliser en simu, au contraire ça peut te faire adopter des mauvaises habitudes.

Kilrah

Messages : 2175
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

Re: Reconversion d'une télécommande pour simulateur

Message par Jibeji le Mer 17 Aoû 2016 - 19:34

J'ignorais cela.
Ceci étant, l'objectif premier est d'acquérir des réflexes en pilotage collectif (sans retour au neutre) pendant la pause déjeuner, j'aurai tout loisir d'approfondir avec la Taranis le soir.
Le montage est par ailleurs compatible avec n'importe quels potentiomètres, alors je pourrai changer de "boitier" si nécessaire.
Et puis tu sais, entre nous, la bidouille m'intéresse tout autant que le résultat. Wink
avatar
Jibeji

Messages : 151
Date d'inscription : 22/07/2016
Age : 45
Localisation : Paris, juste en dessous du nuage marron

Revenir en haut Aller en bas

Re: Reconversion d'une télécommande pour simulateur

Message par Jibeji le Lun 22 Aoû 2016 - 10:11

La télécommande m'attendait sagement dans la boite aux lettres lorsque je suis rentré de week-end hier soir, une petite soirée de bricolage et nous y voilà !
La précision n'est peut-être pas bonne, je ne suis pas assez doué pour en juger, mais le résultat est très satisfaisant.

J'ai coupé (afin que les composants d'origine ne perturbent pas le fonctionnement) et réutilisé les pistes du PCB.




Un peu de charcutage du boitier piles pour y placer une LiPo 850 mAh en stock :




Et voici le résultat :

avatar
Jibeji

Messages : 151
Date d'inscription : 22/07/2016
Age : 45
Localisation : Paris, juste en dessous du nuage marron

Revenir en haut Aller en bas

Re: Reconversion d'une télécommande pour simulateur

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum