Centrale de navigation Low Cost sur plateforme Arduino (3) - Les interfaces Speedo et Anémo
Publié le 6 Février 2014
La deuxième partie montrait comment interfacer un module GPS sur Arduino. Cette page décris maintenant comment interfacer les instruments analogiques Pen Lann qui équipent le bateau. Il est possible de s'inspirer des schémas pour d'autres marques de capteurs (speedo plastimo par exemple ..)
Les capteurs du système Pen Lann sont
- Le speedo (magnétique)
- L'anémo (Contact type ILS)
- La girouette (résistif)
Le module Arduino ne peut pas traiter directement le signal issu de ces capteurs, mais dispose de nombreuses interfaces analogiques capables de "lire" la valeur d'une tension continue. Les interfaces décrite ci-dessous adaptent le signal provenant des sondes en le transformant en tension continue pour permettre au module Arduino de le transformer en phrases NMEA.
Technologie des sondes (Anémo et Speedo)
Anémo Pen Lann: Un aimant sur le moyeux d'une roue à ailettes passe devant un relais
minuscule avec une languette aimantée dans le corps de la sonde. A chaque passage de
l'aimant, le contact se ferme et génère une impulsion électrique. La vitesse du vent,
correspondant au nombre de tours/sec de l'anémo est représentée par le nombre d'impulsions par secondes.
Speedo Pen Lann: Fonctionnement identique à l'anémo. Un aimant sur la pale d'une roue à aubes passe devant un relais minuscule avec une languette aimantée dans le corps de la sonde. A chaque passage de l'aimant, le contact se ferme et génère une impulsion électrique. La vitesse du bateau, proportionnelle au nombre de tours/sec de la roue à aubes est traduite ennombre d'impulsions par secondes.
Speedo Plastimo: Ce type de speedo (le plus courant) est constitué également d'une roue à ailette aimantée mais dans le corps de la sonde c'est une une self (bobine d'un millier de spires) qui génère l'impulsion. Le signal très faible doit être amplifié avant traitement.
Un peu de théorie ...
Le circuit électronique des interfaces convertit le signal impulsionnel issu de la sonde en une tension, proportionnelle à la vitesse de rotation de la roue à aube.
Calcul de l'anémomètre
L'anémomètre se présente comme une roue à aube (coupelles) à trois branches, comme sur le shéma ci dessous. Ces coupelles présentent un coefficient de résistance à l'air supérieur sur leur face concave par rapport à leur face convexe (donc à l'arret, F >> f et en mouvement, la vitesse tangentielle en F = W).
Lorsque le vent souffle sur le système, l'anémomètre tourne à une vitesse (en tours/sec) sensiblement égale à la vitesse du vent V divisée par le périmètre de la roue à aube.
Fixons la limite maximum de vent « mesurable » à 50 Noeuds
1. Périmètre de la roue à aube : Celle-ci fait 10 cm de diamètre ou 0,05 m de rayon.
Un tour de roue à aube représente donc 2xPIxR soit dans ce cas 2x3.14x0.05=0,314m.
2. Déplacement de l'air pour un vent de 50 Noeuds : l'air se déplace à la vitesse de 50 milles par heure, soit 50x1852 mètres pour 3600 secondes, donc 50x1852/3600 m/s
soit environ 25,72m/sec.
3. Vitesse de la roue à aube pour 50 Noeuds : à la vitesse maximum la roue à aube
tourne à 25,72/0,314=81,91 tours/secondes et génère donc environ 82 impulsions par
secondes.
4. Evolution de la tension de sortie en fonction du nombre d'impulsions : L'entrée analogique du module Arduino ne peut pas accepter plus de 5 volts. Le circuit d'interface aura donc pour mission de transformer un nombre d'impulsions par secondes (ou tours par secondes) en une tension proportionnelle. A 82 tours (50 noeuds) correspondra 5 volts, 41 tours (25 noeuds) correspondra 2,5 volts, etc.... La fonction sera donc S = 5 / 82 E
Calcul du speedo
La sonde Speedo fonctionne comme l'anémo à la différence de la roue à aube qui est
beaucoup plus petite. Le concept de calcul est donc identique.
Prenons comme hypothèses une vitesse maximum du bateau de 25 noeuds. (on a le droit de rèver ...)
1. Périmètre de la roue à aube : La roue à aube de la sonde fait 2 cm de diamètre, donc
0,02 m de diamètre ou 0,01m de rayon (R). Un tour de roue à aube représente 2xPIxR
soit dans ce cas 2 x 3.14 x 0.01 = 0,0628 m.
2. Nombre de tours pour réaliser 1 Mille nautique : Lorsque le bateau parcours un
mille nautique (1852 m), la roue fait 1852 / 0.0628 = 29490 tours !
3. Tours/secondes à la vitesse maximum: Pour une vitesse de 1 noeud: (1 mille par
heure) la roue fait donc 29490 tours en une heure (3600 secondes) soit 29490 / 3600
donc 8,1 tours par secondes (disons 8 T/s, nous allons voir plus loin comment calibrer
finement le speedo). A la vitesse maximum (25 noeuds) la roue à aube tourne à 200
tours (ou impulsions) par secondes.
4.
A la vitesse maximale « mesurable » la tension sera de 5 volts. La tension de sortie sera donc S = 5 / 200 ERéalisation des circuits d'interface
Les interfaces de l'anémo et du speedo transforment une fréquence d'impulsions en une
tension analogique proportionnelle. Le schéma du circuit électronique est donc celui d'un
fréquencemetre analogique très basse fréquence.
Le composant principal est le monostable MC4538 qui va transformer l'impulsion en un
créneau C d'une durée fixe (indépendante de la fréquence). Le haut de la plage de mesure sera atteint lorsque la durée entre deux impulsions issues de la sonde sera égale à la la durée du créneau C. La durée du créneau C est ajustée par les valeurs de la résistance et du condensateur Rc et Cc . C = Rc x Cc.
Le deuxième étage est un intégrateurs qui va lisser les créneaux provenant du monostable pour gènerer une tension continue stable qui sera proportionnelle à la fréquence des impulsions. Il est composé de deux étages RC avec une forte valeur de C afin de lisser les fréquences très basses (jusque 3 impulsions par secondes).
Attention à l'alimentation : Le 5V de l'alimentation est la référence de mesure, il est donc
fondamental que cette tension soit stable. Pour ce montage, j'utilise un convertisseur DC/DC 12v/5v à haut rendement (facilement trouvable sur Ebay)
Le schéma electronique de l'interface anémo
Calcul des valeurs Rc et Cc du monostable: 82 tours (ou impulsions) par secondes = valeur max, c'est à dire que la durée entre deux impulsions est égale à 1/82 s. Rc x Cc = 1 / 82= 12 ms. Les valeurs qui semblent les plus proches sont R=12O KΩ et C=100nF
L'entrée de l'interface est un diviseur de tension pour ne pas envoyer directement le 10 Volts venant de l'anémo au monostable alimenté en 5V.
Test de l'anémo au sèche cheveux ... La calibration reste à réaliser
Le schéma electronique de l'interface speedo
Cette interface est un peu plus complexe car il est nécessaire de mettre en oeuvre un trigger pour transformer l'impulsion très faible issue de la self de la sonde en un signal d'amplitude suffisante pour attaquer le monostable.
Le Trigger : Le schéma est l'aboutissement d'expérimentations multiples. Je ne saurais pas expliquer fonctionnement de ce montage curieux à base de 741 mais toujours est il qu'il fonctionne, a fait ses preuves tout au long de l'année 2013 et donc me convient.
Calcul des valeurs Rc et Cc du monostable: 200 tours (ou impulsions) par secondes =
valeur max, c'est à dire que la durée entre deux impulsions est égale à 1/200 s. Rc x Cc =
1/200= 5 ms. Les valeurs qui semblent les plus proches sont R=47KΩ et C=100nF ou
R=100KΩ et C=47nF
Je dépasse les 10 noeuds au sèche cheveux ... quels surfs ! Observez la vitesse affichée et la tension sur le voltmètre
Calibrage
Il est possible de réaliser le calibrage en remplaçant la résistance Rc par un potentiomètre. L'autre solution que je trouve préférable est de jouer sur les coefficients de calcul réalisés par le module Arduino: une tension de 5 V représente le nombre 1024 sur l'entrée analogique du module. Nous aurons donc approximativement la vitesse vent en divisant la valeur par 20 (si 5V sur l'entrée analogique, nous afficherons alors 1024/20= 51 noeuds) il suffit de remplacer ce coefficient de 20 par une valeur entre 15 et 25 pour calibrer l'appareil (voir la section code).
Réalisation pratique
Ces montages sont réalisés avec trés peu de composants. Il est facile de souder les composants sur une plaquette d'expérimentation à pastille ou à bande.
Datasheet du monostable MC 14538
Le code (extraits)
void loop()
{
char b[300]="0"; //initialize buffer b
char c[300]="0"; //initialize buffer c
int Z = 0;
int Y = 0; // initialize buffer index
int X = 0; // initialize datalog counter
EthernetClient client = server.available(); // if an incoming client connects, there will be bytes available to read:
strcpy(MWVSentence,"PIMWV,"); // création de la phrase PIMWV
sprintf(b,"%d",Z); //Z représente l'angle du vent (sera traité ultérieurement)
strcat(MWVSentence, b);
strcat(MWVSentence, ",R,");
Z=analogRead(4); //L'anémo arrive sur l'entrée 4 du module
sprintf(b,"%d",Z/20); //b représente la vitesse du vent en noeud
// Le chiffre 20 peut varier pour le calibrage
sprintf(c,".%d","0"); //c represent the deci knots
strcat(MWVSentence, b);
strcat(MWVSentence, c);
strcat(MWVSentence, ",N,A");
EtherNMEA(MWVSentence); // Write MWV Sentence
//////////// ////////////// VHW Sentence - Water Speed /////////////////
Z=analogRead(3)/4; // read Pin 3 : Boat Speed - Speed from 0 to 25 Knots - resolution of 0.1 Knots
strcpy(VHWSentence, "PIVHW,,T,211,M,");
sprintf(b,"%d",Z/10); //b represent the knots, 10 peut varier pour la calibration
sprintf(c,".%d",(Z-(Z/10)*10)); //c represent the deci knots
strcat(VHWSentence, b);
strcat(VHWSentence, c);
strcat(VHWSentence, ",N,0.0,K");
EtherNMEA(VHWSentence); // Write VHW sentence on Ethernet with Checksum
///////////////////////////// Routine d'écriture avec calcul du Checksum
//////////////////////////////////////
String Checksum(char* CSSentence) {
cs=0; //clear any old checksum
char b[10]="0";
//return b;
for (int n=0; n < strlen(CSSentence); n++) {
cs ^= CSSentence[n]; //calculates the checksum
}
sprintf(b,"%02X",cs);
return b;
}
void EtherNMEA (char* NMEASentence) {
server.print("$"); // Assemble the final message and send it out the serial port
server.print(NMEASentence);
server.print("*");
server.println(Checksum(NMEASentence)); // Call Checksum function
}
branchement sur le module Arduino. remarquez la carte d'extension Ethernet et la carte SD intégrée qui fera datalogger
Prochaine étape
Le réseau WiFI