Comment créer de A à Z une Jauge moteur avec moteur X27 et Arduino
* Octobre 2021 - Mise à jour de l'article
En fin d'article vous trouverez le complément qui vous explique comment rajouter l'indication digitale du torque sur les jauges avec un petit écran Oled 128X32.
Dans ce tuto, je vais essayer de rassembler les connaissances nécessaires pour réaliser les jauges moteurs du B200 sans trop de frais et permettre ainsi de s'affranchir de l'affichage de ces jauges sur écran.
Ce tuto explique comment faire le bloc des 4 premières jauges du B200 à savoir les jauges Itt et Torque
En effet si vous regardez mon simu, vous remarquerez qu'il reste sur la partie tableau de bord central toutes les jauges moteurs affichées sur un écran de Pc par des références à des .Dll ou des .Gau dans le panel.cfg
Pour évoluer dans mon cockpit je veux m'affranchir de cet écran pour placer la sortie de la carte graphique qui lui est consacrée sur une vue latérale droite du cokpit.
Voilà pour planter le décor de l'évolution du simulateur.
J'avais dans mes tiroirs un certain nombre de jauges réelles du King Air ou B200 et d'autres jauges de même diamètre et j'attendais d'avoir les connaissances pour les interfacer.
Ces dernier mois, je me suis beaucoup documenté et j'ai expérimenté pour essayer de trouver une solution pour créer ces jauges sans gros moyens et en m'affranchissant de programmes tiers pour les piloter.
Ma solution est basée sur Arduino Nano, moteurs pap X27.168 et driver Ax1201728sg, l'interface est faite du programme .ino chargé dans l'Arduino et un script Lua
Voilà une photo de ce qu'il vous faut comme composants pour mener à bien ce projet pour 4 jauges.
Le circuit driver Ax1201728sg permet en effet de piloter 4 moteurs sur une Arduino
Dans l'ordre : 4 moteurs X27.168
Un driver Ax1201728sg ou Vid 6606 et son support dip28
Une Arduino Nano
1 condensateur électrochimique de 22 uF 10/16 volts
1 condensateurs céramique de 100 nf
Des connecteurs à vis et une plaque ( dans mon cas c'est un shield d'Arduino Méga )
Pour la phase de mise au point, une Breadboard est recommandée
Voici une vidéo prise pendant le développement de la solution sur Arduino Uno
Pour ce qui est des connecteurs, de la plaque support et du boitier plastique etc , je vous ai photographié mes composants mais chacun fera avec ce qu'il a.
Voici une photo de la plaque d'interface terminée et câblée pour les 4 moteurs, je vous précise que certains câbles sont sur la face opposée
Le détail des opérations
Dans un premier temps nous allons nous occuper de la partie hard en construisant la partie électronique de notre interface avec le simulateur.
L'opération la plus délicate est de souder de driver Ax1201728sg sur un support de conversion 28 pattes. Avec du soin et un fer pointu on y arrive, je recommande fortement d'acheter du flux de soudure pour faciliter l'opération .
J'utilise ce flux de chez Weller acheté chez RS componants référence T005138199
Je précise que je ne touche rien pour la pub et ne suis pas associé à cette entreprise mais je commande régulièrement chez eux et c'est très sérieux
J'ai la seringue qui va bien pour l'étaler mais un simple coton tige suffit largement.
Dans l'ordre vous mettez le flux sur le circuit en ayant pas peur de déborder, puis vous faites fondre de la soudure fine de bonne qualité sur toutes les empreintes du pcb, vous appliquez du flux sur les pattes de l'Ax1201728sg, vous soudez 2 pattes en diagonales pour bloquer le CI et ensuite vous soudez le reste.
Terminez par un nettoyage à l'alcool pour enlever le flux résiduel.
L'utilisation de flux est à mon sens primordiale pour la réussite.
On termine ce circuit par la soudure de broches de connecteurs de chaque côtés de la plaque pour pouvoir l'insérer sur la plaque à pastilles.
Vient ensuite l'heure de câbler ce circuit à l'Arduino et aux moteurs, vous avez l'implantation que j'ai choisi sur la photo au dessus.
Voici le plan de câblage
Précision : sur le schéma, les moteurs sont vus de l'arrière
Une fois cette partie terminée, on passe à la confection des jauges.
La fabrication des jauges
Je suis parti de jauges réelles mais vous pourrez adapter en faisant imprimer la structure à partir des dimensions fournies.
Première étape , le démontage.
Il n'y a pas de règle, parfois c'est facile car l'arrière n'est pas scellé et il suffit d'enlever quelques vis, d'autres jauges sont soudées et doivent être coupées à la Dremmel pour être démontées.
La plupart de ces vraies jauges contiennent un servo receiver, je mets tout çà de côté car c'est trop compliqué pour moi et trop couteux d'interfacer sur ce principe.
Il faut savoir que ces servos fonctionnent pour la plupart en 26/28 volts et en 400 hertz et sont chargés avec 3 signaux sinus déphasés, de retranscrire la position d'un servo transmitter placé à l'endroit de la mesure.
Voici une photo de ces pièces avec notamment le servo que je stocke et le cadran que je garde
Je scanne ensuite le cadran original afin de l'imprimer sur un bon papier épais, après vernissage mat c'est ce cadran que j'utilise dans la nouvelle jauge notamment parce que je n'ai pas forcément toutes les jauges réelles en double.
Le moteur X27 est positionné sur un disque de plaque à bandes de diamètre 47 mm (intérieur de la jauge) et soudé sur ce disque.
Le cadran est collé sur le moteur après avoir été percé en son centre avec un emporte pièce de 2 mm
L'aiguille est fabriquée en quelques coups de cutter dans une feuille de plastique blanc et percée à 0.9 mm puis collée sur l'axe ( Attention : pas de Superglue qui pourrait couler et coller l'axe )
Au moment du collage, on s'arrange pour positionner l'aiguille sur le minimum du cadran concerné, cela évite bien des réglages par la suite.
Puis on soude les 4 fils des bobines des moteurs, en respectant un code couleur, sinon galère ... vécu
Une photo de l'arrière des jauges avec les plaques à bandes et le câblage des moteurs X27
Après positionnement dans la jauge, je mets 2 points de colle autour de la plaque à bandes ( non cyano pour pouvoir démonter ) afin de solidariser le tout.
Les jauges font 49 mm de diamètre au niveau de leur tube et 50.5 mm de diamètre extérieur sur leur face avant et un débord de 6 mm. La vitre est en retrait de 0.6 mm par rapport au bord avant de la jauge.
Pour les personnes équipées d'imprimante 3D, il n'y a pas de difficulté particulière à imprimer ces jauges en noir, si ce n'est à forcer un peu l'épaisseur du tube car sur les vraies cette épaisseur est en moyenne de 0.5 mm.
Passons à la programmation ...
Synoptique du fonctionnement pour la jauge ITT
Dans le code Sioc, l'offset de l'itt met à jour une variable libre qui va être recalculée pour avoir une valeur propre de température en C° X 100.
Un script Lua, lancé automatiquement par Fsuipc guette par un Event.Offset le changement de cette variable libre et lance une fonction qui va envoyer au port com de l'arduino une phrase de type numéro de la variable = valeur
Le programme .ino injecté dans l'Arduino quant à lui scrute son port com et dès que des données sont disponibles, il décode le numéro de variable et la valeur pour les affecter au bon moteur.
Entre temps, ce programme aura aussi adapté la valeur à l'échelle de la jauge car bien évidemment que c'est pas la même chose pour l'Itt que pour le torque.
Cette adaptation de l'échelle a celle de la jauge se fait par une fonction map( )
Voilà pour ce qui est du synoptique de fonctionnement de la chaine de programmation.
Je n'ai utilisé que des programmes écrits par mes soins, à part la bibliothèque SwitecX12.h en tête du programme .ino que vous pouvez récupérer ici : https://github.com/clearwater/SwitecX25
Mon étude de cette solution est inspirée du site de Guy Carpenter : https://guy.carpenter.id.au/gaugette/
Merci à lui
Les programmes ino et lua pour ces 4 jauges sont disponibles dans la rubrique Téléchargements, j'y laisserai les commentaires pour une meilleure lisibilité du code.
Ce code fonctionne parfaitement, même si j'ai conscience qu'il peut être encore optimisé et perfectionné, n'hésitez pas à me faire part de vos remarques et de vos critiques (bonnes ou mauvaises ), c'est comme çà qu'on avance.
Il me reste maintenant à poursuivre la construction des 2 autres blocs de 4 jauges puisqu'il y a 12 jauges en tout.
Avec une particularité pour les 2 jauges d'huile puisqu'elles sont doubles ( 2 aiguilles ), je vous parlerai de ma solution en temps utile.
Rajout de l'indication digitale du torque
Mes jauges de torque fonctionnant bien, afin de progresser j'ai décidé de me lancer dans la reproduction des jauges de Torque du B200 Aéroworx qui étaient dotées à l'époque d'un petit indicateur digital orange
qui facilitait la lecture directe du torque, cela donnait çà
La partie électronique
Pour ce faire j'utilise 2 petits écrans Oled blancs ssd1306 en 128X32.
Mais, il y a un premier problème car ces écrans interfacés en I2c n'ont qu'une adresse ( 0x3c ) et donc ne peuvent être connectés en direct sur l'Arduino Nano qui pilote ces 2 jauqes de torque.
Il faut donc multiplexer ces écrans et cela se fait avec un circuit Tca9548a.
Voici le plan de câblage de l'ensemble :
A propos des résistances de tirage sur SDA et SCL
La littérature est abondante sur le sujet mais pas toujours très bien argumentée alors je ne vais vous livrer ici que ce que j'ai expérimenté avec mon oscilloscope numérique SDS1202XE sur la pin SCL de l'Oled SSD1306.
J'ai constaté qu'à 100 khz de fréquence d'horloge du bus I2C ( fréquence de base du bus i2c), le front montant sur Scl est moins arrondi quand on met une résistance de 4.7k ohms entre cette broche et le + 3.3 v de l'alimentation, bien qu'il y en ait déjà une de cette valeur sur la platine de l'écran.
Le passage à 400 khz n'amène pas de changement notoire sur la qualité du front montant.
Une résistance de 10 k entre la broche A5 et le + 3.3 volts de l'Arduino améliore encore ce front.
Pour rappel, ces fronts montants dépendent des constantes de temps des réseaux RC présents sur ces entrées et les capacités parasites jouent un rôle important donc au chapitre des précautions à prendre il n'est pas inutile de câbler l'écran en dissociant les fils SDA et SCL et en les torsadant chacun avec un des fils d'alimentation et en se rappelant que c'est surtout le SCL qu'il faut soigner.
J'ai rajouté aussi un petit condensateur de 100 nf entre les broches d'alimentation du Tca954a au plus proche de la carte, soudé au verso sur les broches en fait.
Voilà les seules modifications ou rajouts que j'ai opérés par rapport au schéma présenté plus haut.
Ci dessous les écrans oscillo sur la sortie SCL :
Pour les bibliothèques dans le croquis Arduino j'utilise SparkFun_I2C_Mux_Arduino_Library.h pour le multiplexeur
et SSD1306Ascii.h et SSD1306AsciiAvrI2c.h pour les écrans car elles sont moins gourmandes en mémoire que les bibliothèques Adafruit .
Passons à la partie pratique
D'abord il m'a fallut revoir mes fonds de jauges, modifiés pour inclure l'écran Oled .
Voici l'image du fichier à imprimer sur papier photo :
Ensuite je découpe la fenêtre pour chaque écran et comme les écrans dans la vraie vie sont orange, je passe une couche de vernis orange Tamiya pour maquette.
L'étape suivante consiste à séparer le petit écran Oled de son Pcb car l'ensemble ne rentre pas dans la jauge.
Cela se fait avec précaution avec un Cutter.
A découvrir aussi
- Le bloc des annonciateurs
- Le mécanisme de la poignée de train
- Comment reproduire le sélecteur d'altitude Collins pre-80e
Inscrivez-vous au blog
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 122 autres membres