Introduction
Le site RC-Thoughts de Tero Salminen (Finland) propose de nombreuses réalisations de capteurs pour le système de télémesure Jeti Ex. J’ai réalisé un capteur Vario pour planeur basé sur cet article de RC-Thoughts.
Il utilise une carte Arduino Pro Mini en version 3.3V/8Mhz et un capteur de pression barométrique. La carte Arduino Pro Mini n’étant plus officiellement produite, il faut acheter un ‘clone’ sur Ebay par exemple.
Pour le capteur de pression, il est possible de choisir entre les références suivantes : BMP085, BMP180, BMP280, BME280, LPS331AP, MS5611.
Comme l’article RCT conseille le BME280 pour ses meilleures performances, j’ai choisi ce modèle (Acheté sur Ebay également).
Câblage
Le câblage est assez simple, et identique pour les BMP280 et BME280. (Schéma RCT)
Mon câblage est légèrement différent au niveau du GND afin de ne pas souder de fil sur les points de connexions nécessaires à la programmation de la carte Arduino. La carte BME280 est collée au double face mousse au dos de la carte Arduino.
Logiciel
Le chargement du logiciel sur la carte nécessite une carte ‘FTDI’ connectée en USB sur un PC.
Remarque :
Je ne soude pas le connecteur sur la carte, pendant la programmation je maintiens le connecteur en mettant une pression suffisante à assurer de bons contacts.
- Le chargement du logiciel peut être effectué de 2 façons :
Avec l’IDE Arduino, en compilant les codes sources et transférant directement le binaire généré. (Dans ce cas, il est nécessaire d’installer les bibliothèques des capteurs …) - En chargeant un fichier binaire au format HEX (en utilisant par exemple le logiciel RCT Firmware Uploader)
La dernière version de RCT (V1.6) est disponible en téléchargement. Le ZIP contient les fichiers sources et plusieurs HEX compilés pour des Arduino Pro Mini 5V et 3.3V, avec différents ‘BaudRates’.
L’interface Jeti EX utilise une liaison série asynchrone ‘standard’, mais avec une donnée sur 9 bits. Ce mode de fonctionnement de l’UART n’est pas implémenté dans les bibliothèques standards Arduino, ce qui explique probablement pourquoi le logiciel du Vario met en œuvre un UART logiciel en lieu et place du contrôleur UART intégré au microcontrôleur ATMega 328p de la carte Pro Mini.
L’utilisation de l’UART logiciel ne permet pas de garantir un baudrate précis et stable, c’est pour cette raison qu’il y a plusieurs fichiers HEX à 9700, 9800 et 9900 bauds (la valeur normale étant de 9600).
Fonctionnement du Vario et filtrage
Le capteur de pression barométrique permet de mesurer la pression atmosphérique.
La pression atmosphérique normale au niveau de la mer à 15°C est de 1013.25 hPa.
Cette pression varie en fonction des conditions météorologiques, de la température et de l’altitude.
Le BME280 intègre un capteur de température pour une compensation de la mesure de pression.
En considérant le paramètre météorologique stable sur le lieu et la durée du vol de notre planeur, la pression peut être utilisée pour déterminer altitude.
Calcul de l’altitude :
Au niveau de la mer :
- Une variation d’1 hPa = 8,3 m
- Un écart d’1 m = 0.12 hPa.
Le logiciel détermine donc la variation d’altitude à partir de la différence entre 2 mesures de pressions consécutives.
Le résultat (uVario dans le code du logiciel) est affecté d’une certaine instabilité due au capteur (Erreur de mesure, bruit, …) et aux conditions d’utilisation (Perturbations aérodynamiques, variations de pressions dues au vol).
Pour limiter les effets de cette instabilité, il est nécessaire de filtrer l’information uVario avant de l’émettre vers la radiocommande afin de l’utiliser avec le variomètre sonore et d’éviter ainsi trop de ‘bips’ parasites.
Le logiciel RCT Vario utilise un filtre de type EMA « Exponential Moving Average », ou filtre à moyenne mobile exponentielle ou plus simplement lissage exponentiel.
Son implémentation dans le logiciel RCT Vario, pose pour moi un problème, comme on le verra plus loin.
Filtre EMA
Le filtre EMA a comme avantage d’être très simple à mettre en œuvre sur un petit microcontrôleur et ne nécessite que 2 données, des multiplications et additions.
Principe
Le résultat (sortie du filtre) à un instant (t) est la somme d’une partie (Y %) de la mesure et une partie (X %) de la sortie du filtre au temps précédent (t-1)
Avec les paramètres X et Y compris entre 0 et 1, et avec X + Y = 1
s(t-1) : sortie du filtre au temps précédent
m(t) : mesure au temps courant
La sortie du filtre calculée à un instant est : s(t) = X . s(t-1) + Y . m(t)
Le graphe suivant donne la réponse à un échelon du filtre EMA pour différente valeur du paramètre X.
L’échelon est le passage de 0 à 1 de l’entrée du filtre.
Lorsque l’on augmente X, on augmente le temps nécessaire pour que la sortie converge vers 1. Donc, on augmente le filtrage, et donc aussi le retard.
Les courbes sont tracées pour X = 0.5, 0.7, 0.8 et 0.9.
En vol, un paramètre X faible donnera au Vario une meilleure sensibilité aux variations d’altitude et moins de retard à délivrer l’information, mais avec comme inconvénient de plus nombreux ‘bips’ parasites.
A contrario, un paramètre X fort limitera les ‘bips’ parasites mais aura une moins bonne sensibilité aux variations d’altitude et délivrera l’information avec plus de retard.
La mise en œuvre du filtre dans la version 1.6 du logiciel de RC-Thoughts pose problème car les 2 coefficients X et Y sont réglables de façon indépendante.
Il en résulte que la somme X + Y peut être différente de 1.
Si (X + Y ) < 1, le filtre va converger vers une valeur plus faible.
Si (X + Y ) > 1, le filtre va converger vers une valeur plus forte.
A titre d’exemple, sur quelques couples (X,Y) dont la somme diffère de 1 :
On peut voir que même avec de faibles écarts les réponses sont très loin de converger vers 1.
Par exemple, la courbe jaune pour X=0.8 et Y=0.15, soit X+Y = 0.95 (-5%) converge à peine vers 0.8 …
Modification du logiciel
Pour éviter d’avoir à s’assurer que les paramètres X et Y répondent à l’équation X + Y = 1, j’ai modifié le logiciel de RCT Vario.
Le réglage du paramètre Y est supprimé, il est calculé à partir de X selon l’équation Y = 1-X.
Modifications V1.6 vers V1.7 :
– Suppression du menu JetiBox de réglage du paramètre Y,
– Calcul de Y = 1 – X,
– Changement du pas de réglage du paramètre X de 0.01 à 0.02. Réduction du nombre d’appui sur les boutons.
Utilisation
Le Vario est connecté sur une interface EXT (ou E1, E2) du récepteur. Le récepteur est bien évidemment appairé.
L’accès aux paramètres se fait en mode JetiBox (Application JetiBox de la radiocommande), sélection <MX> et ‘flèche bas’.
Le capteur utilisé est détecté automatiquement.
Le paramètre X est réglable par les flèches haut et bas.
La sauvegarde des paramètres doit être effectuée par ‘flèche bas’.
Les données capteurs détectées sur la radiocommande :
Réglages du Variomètre sonore sur la radiocommande
Exemple d’affichage Altitude et Vario
Fichiers de la version 1.7
Fichiers à télécharger : Fichiers V1.7
Mise à jour V 1.8 et V1.9
Version 1.8
Sur la version logicielle d’origine RCT, le filtrage est effectué sur la valeur ‘vario’ calculée entre 2 altitudes consécutives, et comme les perturbations de pressions font bouger l’altitude, la valeur ‘vario’ cumule les erreurs sur les 2 valeurs d’altitude consécutives. Sur la V1.8, j’ai donc ajouter un filtrage sur l’altitude. La valeur altitude étant stabilisée avant calcul du ‘vario’, on peut baisser le filtrage vario.
Version 1.9
Le capteur BME280 intègre un filtre IIR (équivalent à l’EMA) qui n’est pas activé dans le logiciel RCT. J’ai donc activé ce filtre (en X16) pour le BME280. Les autres capteurs ne profitent pas de cette modification. Avec le BME280, on dispose de 3 filtres en cascade. Le filtre interne IIR sur la pression (fixe) et 2 filtres EMA réglables sur l’altitude et le vario.
Fichiers à télécharger : Fichiers V1.9
Remerciements
Je tiens à remercier Tero Salminen pour ses travaux sur les capteurs Jeti Ex et pour les avoir mis à disposition de la communauté.