Conception de gauges overhead à prix réduit

HB-EBC

PILOTE DE LIGNE
Messages
2 847
Réactions
1 163
Points
609
Bonjour à tous,

je pense ne pas être le seul à avoir les servos de mes gauges qui ont une fâcheuse tendance à cramer.
Ainsi je vous propose dans ce post, mon petit bricolage du moment, a savoir remplacer l'ensemble de mes gauges doverhead équipées de servo, par des gauges équipées de moteur pas à pas et d'un backlight.

Le matériel nécessaire pour l'ensemble de l'overhead est le suivant :

Les liens sont donnés a titre dexemple, vous pouvez trouver encore moins cher.
Il est a noté que les prix fluctues d'un jour à l'autre ainsi les prix indiqués peuvent ne plus être les bons.

  • 4 moteurs X27-168 Chez Ali... environ 9€20 les 4
  • 2 moteurs X40-8798 Chez Ali... environ 14€ les 2
  • 2 cartes Arduino nano Chez Ali... environ 10€ les 5
  • 1 carte ESP8266 Wemos D1 mini Chez Ali... environ 3€
  • 1 roul'eau de 5m de LED blanches chaudes ou orange sécable par bande de 5cm non étanche Chez Ali... environ 4€25
  • 1 lot de 10 connecteurs XH 4 points au pas de 2.54mm Chez Ali... environ 1€25
  • 1 lot de 10 connecteurs XH 2 points au pas de 2.54mm Chez Ali... environ 0€80
  • 1 plaque de pléxiglas de 30x30cm de 4mm dépaisseur Chez Amaz... environ 11€ (perso j'en ai récupéré à la décharge)
  • 1 bobine de fil AWG30 Chez Amaz... environ 10€50
  • 1 lot de 100vis M2 x 8 à tête fraisées Chez Ali... environ 1€90
  • 1 lot de gaine thermorétractable Chez Ali... environ 2€10
  • 1 jeu de stickers de gauge Chez 737home... ou Chez Avia...mega... ou Chez Openc... environ 20€ (FDP inclus)
  • Quelques pièces imprimables sur imprimante 3D dans un FabLab (il existe de très bons FabLab en ligne), environ 30€ (c'est une estimation), je vous fournirai les fichiers au format STL

Coût total denviron 125€ (en incluant les différents FDP)

Outillage nécessaire :

  • 1 perceuse
  • 1 "dremel"
  • 1 foret diamètre 0.8mm
  • 1 foret diamètre 2mm
  • 1 foret diamètre 3mm
  • 1 foret diamètre supérieur à 6mm
  • un fer à souder
  • de la soudure
  • 4 vis M3 de longueur au moins égale à 10mm

Logiciel necessaire :

- Arduino IDE

il vous faudra savoir compiler et téléverser les fichiers sources que je vous fournirai.

Le logiciel de gestion des gauges que je vous fournirai sera compatible Prosim et Project Magenta, pour les autres logiciels, ce sera possible si lon peut assigner un offset FSUIPC à chacune des gauges, sinon vous devrez réaliser votre propre logiciel à partir du protocole fourni.
Je vous fournirai l'ensemble du projet en VB.net

La liaison entre les gauges et le PC se fera via votre WiFi dom'estique (PC -> ESP, PC -> Box -> ESP, ....), ainsi votre simu devra être couvert par votre réseau wifi.
Si ce n'est pas le cas, il vous sera possible d'adapter le code pour qu'il fonctionne via ethernet et un arduino uno + son shield ethernet en lieu et place de lESP8266.
La vitesse de rafraîchissement des gauges est fixé à 0.2s (soit 5 fois par secondes) dans le logiciel en VB.

Voici de quoi vous donner une petite idée de ce que cela donne.
Actuellement j'utilise une photocopie pour la "sérigraphie", le résultat final aura un noir plus profond et ne devrait plus permettre de voir autant le moteur par transparence.
De plus pour la photo, j'ai alimenté les Leds sous leur tension max (12V), cela pourra être réduit avec un petit variateur à 2€, et j'ai eu la mauvaise idée dimprimer mes couvercles en blanc ce qui réfléchi encore plus la lumière, il vaut mieux utiliser une couleur plus sombre.

Commence au prochain post.
 
Effectivement.

Vous pouvez retrouver toutes les explications ici

Sinon vous voulez vous lancer dans larduino, il a fait un très bon tutoriel : Le blog dEskimon
 
Allez c'est partit !!!

1ere étape, les plaques
découper 5 carrés de 55mmx55mm dans le plexiglas.

2eme étape, le gabarit de perçage
récupérer le cache d'une des gauges.

3eme étape, création du gabarit
- Bien positionner le cache sur une des plaques de plexiglas (ou le fichier imprimé)
- Faire un premier trou au diamètre 3mm.
- Mettre une vis de 3mm dans ce trou
- Faire un trou à lopposé du premier
- Mettre une vis de 3mm dans ce trou
- Faire un 3eme trou
- Mettre une vis de 3mm dans ce trou
- Faire le 4eme trou
- Séparer les plaques
- Tracer les diagonales
- Percer précisément à l'intersection des diagonales un trou de diamètre 3mm
- Tracer les 2 trous de fixation du moteur selon le gabarit et les percer au diamètre 2mm (pas obligatoire si vous décidez de coller le moteur à la colle à chaud sur le plexy)

4eme étape, création des plaques
- A partir du gabarit reproduite 4 plaques identiques en veillant bien, âpres chaque trou, à mettre une vis de 3mm afin d'apporter le maximum de précision au perçage.
- Une fois le perçage des trous réalisé, il faut chanfreiner un peu les trous se trouvant aux 4 coins des plaques avec un foret supérieur à 6mm
- Réaliser un chanfrein pour les trous de fixation des moteurs, attention la tête de la vis doit se trouver en affleurement de la plaque.
1565115394_gauge_5.jpg


5eme étape, fixation du moteur
Fixer le moteur avec 2 vis M2 x 8 (ou à la colle à chaud)
1565115455_gauge_10.jpg

6eme étape, le backlight
- Imprimer le "couvercle" issue du fichier .STL suivant
- Couper une bande de 15cm du ruban de LED
- Souder un connecteur XH 2 points à la bande de led préalablement découpée en respectant les couleurs de cables (rouge pour le +, noir pour le - )

1565116246_gauge_15.jpg


- Défaire la protection de l'adhésif et coller la bande de LED au fond du couvercle en positionnant la soudure du connecteur au plus près du trou du couvercle

1565432474_20190809_195845.jpg

- Souder un connecteur XH 4 points au moteur (toujours repecter les couleurs par rapport aux bornes, cela sera plus facile pour la suite du cablage)
- Passer les 2 connecteurs XH dans le trou du couvercle
- Fixer le couvercle au moteur à laide d'une vis M2 x 8 (ou à la colle à chaud)

1565432511_20190809_200048.jpg

Prochain post les gauges doubles
 
Avec ta CNC tu aurais pu faire les fonds de Gauge pvc au lieu du stickers, qu'est ce qui ten empêche?
 
Le temps et le fait que j'ai voulu que ce projet soit accessible à  tous et le moins cher possible.
 
Pour les plastrons chez norsim on les réalise avec laide d'un FABLAB ( le CESI _école dingenieur à  Mt ST Aignan _ met un fablab à  disposition pour 60€ les 10h de découpe gravage laser)
Une plaque de PMMA de 3mm de 305x405 remplie de gravure découpe prend 1h1/4 en moyenne
Lavantage c'est la possibilité de graver beau et découper propre
Le hic c'est qu'il faut maîtriser le dessin vectoriel mais ce n'est pas trop difficile pour de la 2D
 
Essai du backlight en Blanc :
1565432474_20190809_195845.jpg


Et en Orange :
1565432511_20190809_200048.jpg


Sur les 2 photos, le backlight est alimenté en 12V direct, son maximum. Il est possible dy adjoindre un petit variateur pour diminuer l'intensité lumineuse.
 
Pour les moteurs double, c'est un peu plus compliqué.

Le principe pour la plaque du Diff press est identique que pour les gauge de 55*55mm, sauf que votre plexy doit faire 85*85mm

Le fichier pour son capot est ici

Pour les bleed, le fichier du capot est ici

Pour les aiguilles :
gauge simple : ici
gauge Diff press : ici
gauge bleed Left : ici
gauge bleed Right : ici

Une petite vidéo pour le montage d'une gauge simple.


Je vous explique prochainement le câblage et montage des moteurs double, ainsi qu'une vidéo des premiers tests
 
Voici la vidéo des premiers tests :



Le regulateur de LED dont je parles en fin de vidéo :
s-l300.jpg


Le Mosfet dont je parles en fin de vidéo (un IRF520) :
shopping


Voici le fichier Arduino nécessaire pour réaliser lessai de la vidéo :
Code:
[== Arduino ==]
#include <Stepper.h>

const int stepsPerRevolution = 600;
bool Sens = 0;

// initialize the stepper library on pins 4 through 6:
Stepper m'yStepper(stepsPerRevolution, 4, 5, 7, 6);

int stepCount;  // number of steps the motor has taken
int pas;
void setup() {
 
  Serial.begin(115200);
  m'yStepper.setSpeed(90);
  m'yStepper.step(-600);
  stepCount = 0;
  pas = 0;
}

void loop() {
 
  if (Serial.available() > 0) {
    pas = Serial.parseInt();
   // pas = Serial.read();
  }


  if (stepCount <= 0 or stepCount < pas) Sens = 1;
  if (stepCount >= stepsPerRevolution or stepCount > pas ) Sens = 0;
  if (pas != stepCount)
  {
    Serial.print("steps:");
    Serial.print(stepCount);
    Serial.print("   pas:");
    Serial.print(pas);
    Serial.print("   sens:");
    Serial.println(Sens);
    if (Sens == 1)
    {
      m'yStepper.step(1);

      stepCount += 1;
    }
    else
    {
      m'yStepper.step(-1);

      stepCount -= 1;
    }
  }

}

Il fonctionne aussi bien sur un Arduino mini, nano, uno, méga.

Par contre vous aurez besoin d'installer la libraire "stepper" dArduino v1.1.3
Pour cela dans lIDE arduino aller dans Croquis/Inclure une bibliothèque/Gérer les bibliothèques (ou taper CTRL + MAJ + I) puis dans la partie recherche taper stepper.
Cliquer sur la partie Stepper built in by Arduino puis cliquer sur installer.

Je vous prépare la vidéo pour les gauges doubles.
 
Bonjour,

Le projet n'est pas mort, il est même 100% fonctionnel (enfin) !!!
Tous les scripts ont été réalisés, reste juste une temporisation dinitialisation à  ajouter et à  peaufiner un peu la vitesse de rotation.
Testé sous Prosim hier soir, les 9 gauges ont correctement répondu après 1h de paramétrage des différentes positions dans la config de Prosim (ceux qui connaissent la config des gauges sous Prosim comprendront).

Le principe utilisé Prosim => Fsuipc => programme transfert Fsuipc vers requête HTML => WiFi => ESP8266 => I2C => 3 Arduinos Nano (ou micro) => Gauges.
Les offsets Fsuipc utilisés sont les même que sous Project Magenta pour rendre l'ensemble compatible.

Je vous fais la vidéo pour les moteurs double et une vidéo de démo du fonctionnement, et je vous transmet l'ensemble des programmes prochainement.

Pour ceux qui se demandent pourquoi j'utilise 3 arduino Nano et non pas 1 arduino Mega, hormis le coût, c'est dû à  la consommation des moteurs et de l'intensité maximale admissible par les composants (ATmega 2560(Méga) et ATmega328P (Nano) 200mA max).
chaque moteur consommant environ 40mA max cela limite à  4-5 moteurs par arduino. Un arduino Nano n'ayant pas assez dentrées/sorties pour prendre en charge plus de 4 moteurs, il en faut donc un minimum de 3.

Pour ceux qui n'utiliseront pas la gauge outflow valve position (la petite à  coté de l'indicateur numérique flight altitude) nauront besoin que de 2 Nano.
 
Chose promise, ..., voici la vidéo de présentation :



Je suis en train de vous faire le plan de câblage de l'ensemble. dès qu'il est fini, je vous le transmet ainsi que les différents fichiers sources du projet.
 
Suite et fin du projet :

Lensemble des fichiers sources se trouve ICI

Le schéma de câblage est le suivant :
1572375127_gauges.jpg



Vous pouvez retrouver le schéma dans le répertoire câblage du lien ci-dessus.

Pour faire fonctionner l'ensemble, vous devez programmer les 3 Arduinos Nano, lESP8266 (Wemos ou in D1).

Pour les Arduinos, rien de plus simple il vous suffit de téléverser les fichiers :
  • Stepper_motor_i2c_8.ino dans lArduino ayant l'adresse I2C 8
  • Stepper_motor_i2c_9.ino dans lArduino ayant l'adresse I2C 9
  • Stepper_motor_i2c_10.ino dans lArduino ayant l'adresse I2C 10

1572375574_config_esp.jpg

Pour lESP8266, c'est un peu plus compliqué, il vous faut avant de téléverser donner les renseignements concernant votre connexion WiFi et lui définir une adresse IP.

  • Il vous faut définir le SSID de votre WiFi entre les "" de la ligne WIFI_SSID
  • Le mot de passe de votre WiFi entre les "" de la ligne WIFI_PASS
  • Ladresse IP en séparant les différents nombres par des , et non des . de la ligne ip
  • Ladresse de votre passerelle (généralement votre box internet) en séparant les différents nombres par des , et non des . de la ligne gateway


Apres le téléversement de lESP en appuyant sur le bouton Reset de lESP, vous devriez entendre la gauge bouger (je dis entendre car si elles sont déjà en butée mini, vous n'entendrez qu'un léger bruit).

Pour voir si l'ensemble fonctionne, ouvrez votre navigateur Web préféré et tapez :

Code:
[== HTML ==]
http://IpDeVotreESP/Gauge1=512&Gauge2=512&Gauge3=512&Gauge4=512&Gauge5=512&Gauge6=512&Gauge7=512&Gauge8=&Gauge9=512
Bien sur il faut remplacer IpDeVotreESP par son adresse IP tapée dans le fichier .ino de lESP.

Apres avoir validé la ligne dans votre navigateur, vous devriez voir l'ensemble des gauges bouger jusqu'à leur position milieu.

Si la gauge ne tourne pas, ou dans le mauvais sens, il vous faut alors modifier l'ordre des pins du moteur concerné.
Exemple
Code:
[== C++ ==]
Stepper m'yStepperX(stepsPerRevolution, 6, 7, 8, 9);
Devient
Stepper m'yStepperX(stepsPerRevolution, 6, 8, 7, 9);
Puis téléverser de nouveau le programme dans lArduino correspondant.

Pour les faire fonctionner sous Prosim ou Project magenta (attention pour Project Magenta, il faut modifier 2 lignes dans les fichiers .ino des Arduino, voir en fin de post), il vous suffit de télécharger le répertoire suivant

Ouvrir ensuite le fichier Gauges Overhead WiFi.exe.config et à la ligne <add key="AdresseIP" value="192.168.2.130"/> remplacer l'adresse 192.168.2.130 par celle de votre ESP.

Lancer ensuite le logiciel Gauges Overhead WiFi.exe, une fenêtre apparaîtra.
Dès que le logiciel sera connecté à votre simulateur via FSUIPC ou XPUIPC, il commencera à communiquer avec votre ESP (la LED bleue de lESP se mettra à clignoter environ 4/5 fois par seconde).

Sous Prosim :
- Il vous faut configurer les gauges ainsi :
  • APU : FSUIPC 16bit U 0x5604
  • Cabin Altitude : FSUIPC 16bit U 0x56A6
  • Cabin Temperature : FSUIPC 16bit U 0x567E
  • Cabin VSI : FSUIPC 16bit U 0x56A4
  • Fuel Temperature : FSUIPC 16bit U 0x56B6
  • Outflow valve position : FSUIPC 16bit U 0x56BA
  • Pressure Differential : FSUIPC 16bit U 0x56B8
  • Pressure Left : FSUIPC 16bit U 0x567A
  • Pressure Right : FSUIPC 16bit U 0x567C


- Puis il vous faut faire correspondre chaque curseur des gauges avec la position sur la gauge (c'est comme le refroidissement du fût de canon, ça prend un certain temps !!!)

Sous Project Magenta :
Vous n'avez rien à paramétrer sous PMSystem, mais avant de téléverser les .ino dans les Arduinos, il vous faut modifier les lignes suivantes :
Code:
[== C++ ==]
dans le fichier Stepper_motor_i2c_8.ino remplacer
pas[1] = map(((reception[3] <<  + reception[2]), 0, 1023, 0, stepsPerRevolution);
par
pas[1] = map(((reception[3] <<  + reception[2]), -512, 511, 0, stepsPerRevolution);

dans le fichier Stepper_motor_i2c_9.ino remplacer
pas[1] = map(((reception[3] <<  + reception[2]), 0, 1023, 0, stepsPerRevolution);
par
pas[1] = map(((reception[3] <<  + reception[2]), -512, 511, 0, stepsPerRevolution);
Cela étant dû au fait que Project Magenta assigne une valeur comprise entre -512 et +511 sur les gauges dont le zéro se trouve au milieu de la gauge.
Lors du premier fonctionnement sous PM, il vous faut aussi bouger l'aiguille dans le sens anti-horaire pour la faire correspondre à la valeur obtenue dans PMSystem.

Il est possible que l'ensemble du projet fonctionne sur d'autres logiciels avionique, mais comme je ne les ai pas, je ne puis vous garantir la compatibilité.
 
Bonjour,

Une avancée sur ce projet, qui pourrait donner des idées à certains pour la réalisation d’interfaçage de cockpit.

J'ai réalisé un script Arduino pour faire communiquer lESP8266 directement avec le serveur IOCP de SIOC.
Résultat vous n'avez plus besoin de mon logiciel VB pour faire fonctionner les gauges (idéal si vous utilisez déjà un script SIOC).
Si vous n'utilisez pas SIOC, il vous suffit de l’exécuter sans script pour que cela fonctionne.

Lavantage c'est que les gauges peuvent ainsi directement communiquer avec Prosim.
Pour PM et autre il vous faudra un script SIOC pour transférer les variables FSUIPC vers IOCP.

Pour l'utiliser il vous faut comme sur l'ancien rentrer quelques renseignements :
1576970508354.png


Votre réseau Wifi, l'adresse IP du PC , l'adresse IP du PC qui lance SIOC, le port du serveur IOCP de SIOC, l'adresse de début à partir de laquelle vos gauges seront assignées.

Ladresse IP du PC SIOC et le port se trouve ici dans SIOC :
1576970711217.png


Dans mon exemple j'utilise l'adresse de variable SIOC de début 1200, ainsi mes gauges auront comme adresse de variable :
  • APU : 1200
  • Pressure Left : 1201
  • Pressure Right : 1202
  • Pressure Differential : 1203
  • Cabin VSI : 1204
  • Cabin Altitude : 1205
  • Fuel Temperature : 1206
  • Cabin Temperature : 1207
  • Outflow valve position : 1208
Cette ordre est non modifiable sans changement dans les scripts des Arduino Nano.

Pour paramétrer dans Prosim rien de plus simple, exemple avec la gauge APU :
1576971322621.png


Pour les autres logiciels avioniques, un simple petit script SIOC suffit :
Code:
// *****************************************************************************
// * Config_SIOC ver 4.6   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : Gauge.txt
// * Date : 21/12/2019

Var 1200, Link FSUIPC_IN, Offset $5604, Length 2     // APUEGT

Var 1201, Link FSUIPC_IN, Offset $567A, Length 2     // Eng1BleedPSI

Var 1202, Link FSUIPC_IN, Offset $567C, Length 2     // Eng2BleedPSI

Var 1203, Link FSUIPC_IN, Offset $56B8, Length 2     // CabinDiffPress

Var 1204, Link FSUIPC_IN, Offset $56A4, Length 2     // CabinClimb

Var 1205, Link FSUIPC_IN, Offset $56A6, Length 2     // CabinAlt

Var 1206, Link FSUIPC_IN, Offset $56B6, Length 2     // FuelTemp

Var 1207, Link FSUIPC_IN, Offset $567E, Length 2     // Cabin Temp gauge

Var 1208, Link FSUIPC_IN, Offset $56BA, Length 2     // OutFlow

Sinon cerise sur le gâteau, le script pour lESP8266 inclus une mise à jour en OTA (On The Air) via la Wifi directement depuis l'interface arduino :
1576972048528.png

ainsi plus besoin de débrancher lESP8266 du simu pour une mise a jour et plus besoin de la brancher sur votre PC Arduino, il suffit juste qu'il soit alimenté et relié a votre réseau Wifi et votre PC lui aussi a votre réseau (en Ethernet ou en Wifi).

En fin de script, j'ai laissé une fonction non utilisée pour les gauges, mais qui permettra à certains dentre vous qui veulent interfacer leur cockpit via SIOC et son serveur IOCP de comprendre comment on transfert des données du composant (ESP, Arduino, STM32, ...) vers SIOC.

Le nouveau script est disponible dans le répertoire du projet ICI puis dans les sous répertoires programmes/ESP8266 version IOCP

Bon ben Enjoy
 

Fichiers joints

  • 1576970508354.png
    1576970508354.png
    97 KB · Affichages: 109
  • 1576970711217.png
    1576970711217.png
    1.8 KB · Affichages: 109
  • 1576971322621.png
    1576971322621.png
    7.8 KB · Affichages: 106
  • 1576972048528.png
    1576972048528.png
    37 KB · Affichages: 105
Retour
Haut