Dernière mise à jour le 27 Janvier 2007

Depuis un bout de temps l'idée de faire un altimètre déporté me trotte dans la tête. Avec les nouvelles technologies de capteurs et de module HF ont doit pouvoir faire un altimètre et variomètre « simplement ». Apres avoir intégré dans ma centrale à inertie (version 1) un capteur de pression de type MS5534, je me suis aperçu que celui-ci était très sensible et permettait de faire même un variomètre. En parallèle de ceci j’ai fait l’acquisition d’un IPAQ 3970 et j’ai commencé à développer du logiciel en langage C dessus. Pour commencer en langage C sur l'IPAQ j’ai pris mon module de centrale à inertie qui transmet entre autre l’altitude, et j’ai décidé de me faire un altimètre et variomètre déporté. En fait ce petit module peut servir de datalogger, car il était facile de rajouter de l'EEPROM pour cela.Voici une photo du logiciel fait sur IPAQ (modèle 3970). En fait la photo est prise sous l'émulateur livre avec EVC++, le compilateur C++ de Microsoft.

 

Le logiciel est au point à part le son du vario qui "bloque" un peu car il n'est pas encore en multi tache. On entre le module de réception sur le port série du IPAQ et le tour est joué.

Si vous le souhaitez vous pouvez toujours télécharger ce soft ici. Choisir mode demo dans les options pour avoir une simulation si vous n'avez pas encore réalisé le module de réception !

Si vous souhaitez l’utiliser en «vrai » il faut connecter votre carte sur le port série du IPAQ. La version 1.8 (celle présente ici) supporte un format de 4800 Bauds, 8 bits, 1 stop, pas de parité. Le format sur le port série est :

Le format de sortie de la chaine sur le port série est : printf("%s %d\n",chaine_out, checksum_serie());
Sachant que la variable "chaine_out" est:


sprintf(chaine_out,"%2d %3d %5d %3d %4d %4d %3d", ( unsigned char) identificateur , vitesse , tachy , (int)(temperature*10),( int) pression, (int) altitude,(int) (vario_brut*10));

la variable vitesse est en Km, le Tachy en Tr/minute ( 2 pales), la température en dixième de degré, la pression en millibar, l'altitude en mêtres et enfin la valeur du vario en dixieme de mêtre/seconde. Cette chaine est suivi d'une checksum qui est simplement la somme de tout les caractères de la chaine ( avait la checksum elle même bien sur). la premiere donnée "identificateur" servira dans le futur si plusieurs modules émettent en même temps sur la même fréquence. On enverra des burst au lieu d'envoyer en continu. chaqu'un a la reception recevra la trame qui le concerne grace a cette identificateur

Voici la partie source du calcul de la checksum de la chaine:

unsigned char checksum_serie(void) // renvoie la valeur de la checksum si utilisée
{
unsigned char i,j,cs;
sprintf(chaine_out,"%2d %3d %5d %3d %4d %4d %3d", ( unsigned char) identificateur
,vitesse , tachy , (int)(temperature*10),( int) pression, (int) altitude,(int) (vario_brut*10));
j = strlen(chaine_out);
cs=0;
for(i=0;i<j;i++){
cs += *(chaine_out+i);
}

return (cs);
}

en résumé sur le port série est envoyé ceci:

128 0 0 242 980 1 -1 227
128 0 0 242 980 1 -1 227
128 0 0 242 980 1 0 213

128 0 0 249 980 0 -6 238
128 0 0 242 980 1 0 213
128 0 0 247 980 0 -10 247

Chaque ligne est suivi d’un line feed, comme vous avez pu le voir dans le source.

et voici le module altimetre / variometre / tachymetre / thermometre / vitesse / gestion servo :

Le 21 Octobre 2004 : ca y est ! le circuit electronique purement vario est réalisé. Ayant été "poussé" par le club de modèle réduit, j'ai fini par faire un petit module ( 5 cm x 3.5 cm). Ce module permet de recevoir le vario embarqué dans le modèle sur un scanner ou sur l'IPAQ ( ce que je nomerais plus loin transmission analogique ou digital cette fonctionalitée est configurable par un strap ( connecteur J3 sur la carte)). De plus il permet également de mesurer la vitesse ( module d'extension : entrée analogique), de lire la position d'un servo et de générer un signal de sortie pour un servo ( à savoir quoi lui faire faire !), une entrée compte tour et enfin une mémoire de 64 K octets pour enregistrer l'altitude et eventuellement la vitesse toute les seconde.

Il y a un poussoir sur le module : Celui-ci ne vous servira que si vous avez choisi la transmission numérique et non pas analogique: Si on allume le vario sans toucher au switch alors fonctionnement normal. Si à la mise sous tension le switch est préssé alors le module transmet les données d'altitude et de vitesse stockées précedemment en mémoire. Il faut bien entendu être en mode numérique pour que cela fonctionne ( strap J3). la transmission ce fait à 9600 Bauds 8 bits pas de parité, 1 stop 1 start. Ceci sert uniquement si vous connectez le module de réception sur un PC ou PDA pour capturer les paramêtres.

Comme à mon habitude j'utilise un PIC ( 18F252 ) et un capteur de pression MS5534AM. La liaison HF est réalisée par un module TX1 ou TX2 de chez Radiometrix que vous pouvez trouver chez Lextronic. Pour le coté réception plusieurs choix son possible:

1° ) réception sur un scanner : dans ce cas il faut mettre le strap J3 sur la position analogique. Le module transmettra alors un son discontinu si vous etes dans une pompe, la fréquence étant de plus en plus élevée lorsque le taux de monté augmente. Sinon un son continue et de plus en plus grave en fonction du taux de descente.

2°) Sur un PDA : il faudra réaliser une petite interface entre le PDA et le module de réception RX1 ou RX2 pour le port série et utiliser le logiciel que j'ai ecris, et disponible plus haut dans cette page. Dans ce cas mettre le strap J3 sur la carte en position digital.

3°) Réception sur un module RX1 ou RX2 avec un écouteur relié a celui-ci ( un petit transistor faisant office d'ampli en sortie du module Radiometrix)). Dans ce cas le module fonctionne en mode analogique.

Pour résumer en mode analogique vous avez uniquement le son du vario retransmit au sol; en mode numérique vous récupérez en plus la vitesse, le compte tour, la pression, la température et l'altitude.

alors commencons par le plus simple : la partie réception au sol. J'ai réalisé un petit récepteur avec un modulde RX1 ou RX2 dont voici le shéma ci-dessous:

( sauvegarder l'image ci-dessus pour pouvoir l'imprimer au format A4 directement, et donc plus lisible)

Pour cette partie réception, pas de circuit imprimé, un petit bout de carte veroboard à pastilles suffit amplement ! Je n'ai pas prévu de régulateur non plus mais il est facile d'en rajouter un, genre 7805. avec cette carte vous disposez d'une sortie RS232 pour le PDA ou le PC et d'une sortie écouteur. Donc vous pouvez utiliser le module en mode analogique ou digital.

Coté module embarqué:

Vous trouverez ici le schéma de celui-ci sous format acrobat reader. Ici la liste des composants utilisés et enfin ici la fabrication du circuit imprimé si vous souhaitez vous lancer dans l'aventure !

DERNIERE MINUTE:

Sur certains modules l'initialisation ne se fait pas correctement à tous les coups. Pour remédier à ceci il faut couper la piste qui relie le MS5534 patte 5 au reste du circuit. Puis il faut relier cette patte à la patte 12 du PIC. ( en fait il faut relier le masterclock du MS5534 non pas à la sortie de l'oscillateur 32Khz du PIC patte 11 mais à l'entrée de l'oscillateur patte 12 du PIC, bizarre mais la forme d'onde est bien plus propre sur la patte 12 que la patte 11 du PIC. De plus le logiciel a été modifié pour faire une tempo plus longue au démarrage, le temp que l'oscillateur 32 Khz se stabilise.

De plus sur le shéma éléctronique j'ai oublié 2 résistances de 1K sur le bus I2C. Il faut donc mettre une résistance de 1Kohm entre la patte 14 du PIC (SCK) et le 3V3 (patee 1 du LP2950CZ3.3 dénommé R7. Et une résistance de 1Kohm dénommée R8 entre la patte 15 du PIC ( SDA) et le 3V3. Le fichier de la liste des composants a été mis à jour.

Attention ces résistances ne sont pas implantées sur le circuite imprimé, Idem pour la modification du circuit d'horloge 32Khz.

En ce qui concerne le logiciel dans le PIC vous trouverez ici la version actuelle du logiciel (le 3/7/06). Il reste a faire des optimisations en ce qui concerne le filtrage dans ce logiciel. Revenez sur cette page pour verifier ci une nouvelle version est disponible.

Pour vous donner un ordre d'idée des valeurs transmisses vous trouverez ici un fichier Xcel capturé lors d'un vol en avion ( ce qui explique le taux de monté qui dépasse 20m/S ! Sur la dernière version du logiciel sur PDA, il a été ajouté une fonction synthese vocale qui donne l'altitude tous les 10 mêtres ou tous les 25 mêtres. Je suis en pleine période de test en "réel" pour ajuster les derniers paramêtres de l'interface PDA.

Et pour finir un petit schéma ( vaut mieux qu'un grand chez les autre) de l'implantation à l'échelle si vous souhaitez le coler sur le module lui-même.

Laissez un commentaire sur le livre d'or

RETOUR