Reconversion d'une télécommande pour simulateur
2 participants
Page 1 sur 1
Reconversion d'une télécommande pour simulateur
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) :
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 :
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.
Edit: faut de grammaire qui piquait les yeux
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
Invité- Invité
Re: Reconversion d'une télécommande pour simulateur
Intéressant. Je m'abonne pour voir si tu réalises le projet jusqu'au bout !
_________________
Pas de support par MP !! Pour garder l'esprit communautaire, on partage tout sur le forum.
Maintenant que vous avez tout lu, vous pouvez poser vos questions !
OpenTX is user friendly!!! It's just selective about who its friends are....
Re: Reconversion d'une télécommande pour simulateur
J'ai oublié la photo du montage de test :
Invité- Invité
Re: Reconversion d'une télécommande pour simulateur
Cela fonctionne déjà !!
_________________
Pas de support par MP !! Pour garder l'esprit communautaire, on partage tout sur le forum.
Maintenant que vous avez tout lu, vous pouvez poser vos questions !
OpenTX is user friendly!!! It's just selective about who its friends are....
Re: Reconversion d'une télécommande pour simulateur
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 : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse
Re: Reconversion d'une télécommande pour simulateur
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.
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.
Invité- Invité
Re: Reconversion d'une télécommande pour simulateur
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 :
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 :
Invité- Invité
Sujets similaires
» Bon simulateur pour mac ?
» OTX 2.3.7 Pas de simulateur pour QX7 Access ???
» Simulateur FR pour Opentx 2.2.4
» Simulateur de vol pour radio Horus
» Simulateur fpv-freerider pour Taranis
» OTX 2.3.7 Pas de simulateur pour QX7 Access ???
» Simulateur FR pour Opentx 2.2.4
» Simulateur de vol pour radio Horus
» Simulateur fpv-freerider pour Taranis
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|