LipoMètre Hott, Conception

Introduction

Graupner a développé pour son système de radio et télémétrie Hott différents modules spécialisés comme les vario-mètre, GPS, compte-tours, et quelques modules multifonctions (Général Air, Général Engine) permettant entre autre les mesures de tensions et de courant. Il n'existe pas à ce jour de module de télémétrie simple pour la mesure de tension sur des accus de propulsions Lipo.
Logo
La partie communication télémétrie avec le récepteur est basée sur les travaux de Stefan Radolf disponibles sur le forum RC-Network.de : Graupner HoTT Telemetrie-Sensoren Eigenbau DIY | Telemetrie-Protokoll entschlüsselt

Je vous propose donc de réaliser ce module.

Avertissement !

La réalisation de ce module peut présenter des risques pour votre matériel. Si vous réalisez ce module, en aucun cas je ne pourrais être tenu responsable des éventuels dommages quels qu'ils soient.

Matériel

Ce module de télémétrie repose sur une plateforme Arduino / Atmel AVR Atmega choisie par S. Radolf. Cela tombe plutôt bien, puisque c'est la plateforme du projet MultiWii utilisé sur mon X-copter.
Arduino
La carte utilise est une Arduino Pro Mini 5V/ 16 MHz. Elle est équipée d'un processeur Atmel Atmega328p.
Ce processeur propose une interface série UART qui sera utilisé en liaison avec le récepteur Graupner et un convertisseur analogique/numérique (ADC ou CA/N) 10 bits associé à un multiplexeur permettant de numériser 6 entrées.

Logiciel de développement

Le logiciel "Arduino" permet de compiler le code. (Téléchargement : Arduino)
La carte Arduino doit être connectée à l'aide d'un adaptateur "FTDI" pour le transfert de l'application compilée sur la carte.

Arduino

Communication télémétrie (Hott Version 3, jusque fin 2011)

Comme vu précédemment, la partie communication repose sur les fonctions développées par Stefan Radolf. Il a réussi à comprendre le protocole de communication en analysant les trames échangées entre un module "Général Air" et un récepteur. La trame est spécifiques à ce module "Général Air" et non compatible avec le module "Général Engine".
Dans le principe, le récepteur émet vers le module de télémétrie une demande, et le module de télémétrie envoie la réponse sous la forme d'une trame numérique codant les différentes informations. A priori, la demande est initiée par l'émetteur radio et retransmise par le récepteur vers le module de télémétrie. La liaison série est bidirectionnelle, mais sur un seul fil, ce qui ne permet à un seul d'émettre à un instant.
Il est à remarquer que Stefan Radolf a simplifié son module en ne gérant que l'émission de la trame de télémétrie vers le récepteur sans traiter les demandes. Cela doit provoquer des collisions entre les trames émises par le récepteur et trames du module.
L'interface de communication est de type UART (Liaison série asynchrone) en niveau logique 5V (TTL).
La liaison n'utilise qu'un seul fil et est rendue bi-directionnelle en connectant le signal TX (émission) au signal RX (réception) par une résistance (Valeur 1K2 ou 1K5).

Trame de demande télémétrie "Général Air"
 $80 $8D

Trame de télémétrie "Général Air" (Hott V3), non compatible avec les versions de firmware radio et récepteur après décembre 2011 !!

Trame

Source S. Radolf

Alimentation

L'alimentation de la carte Arduino est réalisée à partir de 2 éléments de la batterie Lipo à surveiller. Cela permet de déclencher l'autodétection du nombre d'élément au démarrage du logiciel.
La tension maxi. d'alimentation de la carte est de 12V.
L'alimentation se fait sur la broche "RAW" de la carte arduino pro mini.

Mesure de tension

Le microcontroleur Atmel intègre un convertisseur analogique/numérique qui va permettre d'effectuer les mesures de tensions sur les différents éléments de la batterie LiPo.(Connexion sur la fiche d'équilibrage de la batterie).
Le convertisseur A/N fonctionne par rapport à une référence de tension.
Il y a 3 possibilités sur l'Atmega 328p.
- Vref = Tension d'alimentation analogique Avcc (relié sur cette carte au 5V régulé)
- Vref = Entrée référence de tension Aref : pas de référence de tension sur la carte. Non utilisable.
- Vref = Référence interne 1.1V

La référence interne 1.1V est spécifiée (Data sheet Atmel 8271D) entre 1.0V et 1.2V. Cela est étonnament mauvais et ne peut pas permettre une mesure correcte. J'ai réalisé un essai avec cette référence interne, le résultat était très bon. Peut être une erreur dans la doc.
La régulation du 5V est réalisé par un Micrel MIC5205. La précision est de +/-1% à 25°C et de +/-2% sur la plage –40°C à +125°C.
Comme le régulateur est très précis, l'utilisation du Avcc pour Vref semble la meilleure solution.

La tension maximum d'entrée du convertisseur A/N est de Vref (soit 5V dans ce cas).
La tension à mesurer est de 4.2V pour le 1ier élément, de 8.4V pour le 2ième, etc. Il faut abaisser la tension pour les cas dépassant 5V en utilisant un pont diviseur.
Un coefficient sera appliqué dans le logiciel afin de calculer la tension réelle en fonction de la mesure.

Tableau ponts diviseur (jusqu'à 6S)

Tableau

Schéma carte diviseurs pour accu Lipo 6S

Schema

L'alimentation de la carte "RAW" est connecté sur le 2ième élément. Les condensateurs filtrent les variations de tensions (oui, je sais les RC sont différents ..). Les diodes protègent les entrées CA/N en cas inversions de polarité en connectant la prise accu. Il n'y a pas de diviseur sur le 1ier élément puisque la tension est inférieure à 5V.

Erreurs de mesure

Sources d'erreur

La précision de la mesure est affectée par différentes sources d'erreurs :

- Le convertisseur analogique / numérique (C A/N) intégré au microcontroleur Atmel. Il faut vivre avec ...
- La précision des résistances des ponts de mesures : J'utilise des résistances à 1% (pas cher).
- La référence de tension du C A/N.

Améliorations

Les résistances peuvent être remplacées par des 0.1%, mais c'est plus cher et difficile à trouver en magasin. L'autre solution consiste à mesurer les valeurs réelle avec un appareil précis et de préférence étalonné. Les coefficients peuvent être modifiés en conséquence dans le fichier "Tension_Lipo.h".

La référence de tension utilisée est l'alimentation 5V délivré par le régulateur, c'est semble t'il la moins mauvaise solution sur cette carte Arduino. Les spécification Atmel de la référence interne sont mauvaises et l'entrée référence externe n'est pas accessible sur la carte Arduino. On peut réduire l'erreur en effectuant une mesure de l'alimentation 5V de la carte en condition de fonctionnement. Puis corriger les coefficients en conséquence. La tension régulée peut varier en fonction de la consommation en courant (peu dans notre utilisation), mais surtout en fonction de la température. (écart été / hivers, auto échauffement par dissipation de puissance).

Protocole Hott Version 4

En fin d'année 2011, Graupner a modifié le protocole Hott afin d'en étendre les capacités. Il est par exemple possible maintenant d'utiliser plusieurs capteurs ou modules en réseau. Les "firmwares" des émetteurs, récepteurs et modules ont été mis à jour. Après mise à jour, il s'est avéré que mon "Lipomètre" n'était plus compatible.

A partir d'infos récupérées sur des forums allemands, j'ai pu reconstituer la trame de données en Version 4.

Trame de télémétrie "Général Air" (Hott V4).

V4

Remarque : Les données de 34 à 42 ne produisent pas d'affichage sur la radio. Peut être pour une future évolution.

Octets d'affichage en inverse vidéo.

Inverse

Détection automatique de module Hott

A partir de mi-2013, Graupner/SJ a introduit la détection automatique des modules Hott. Le logiciel du "LiPoMètre" est compatible. Le module doit être sous tension avant la mise sous tension de la radio et du récepteur. Pour la détection automatique la radio émet des demandes avec chacun des codes capteurs et considère actifs les modules ayant répondus. Cette phase ne se produit qu'à la mise sous tension de la radio.

Depuis juin 2005