IL ÉTAIT UN PETIT NAVIRE !

Allusion à cette contine populaire dans laquelle le petit navire «n'avait ja ja jamais navigué». Mon petit démonstrateur non plus n'ira pas sur l'eau, c'est juste une maquette symbolique pour servir de prétexte à programmer un Arduino.



Avec mon post sur http://forum.arduino.cc/index.php?topic=217045.0 je vous avais présenté mon projet d'automatisation de la barre d'un supposé petit voilier. Et surtout posé de nombreuses questions, notamment relatives au choix Bâbord ou Tribord pour corriger le CAP.
C'est fait, mon projet est achevé et fonctionne divinement bien. Pour vous remercier de vos aides respectives, je me sentais un peu votre « obligé », et je croix normal de vous présenter les grandes lignes de cet amusement informatique. J'ai préféré ouvrir un nouveau sujet, car l'ancien « fil » est bien encombré.
Mon problème le plus épineux est résumé sur la Fig.1 qui montre la solution tout compte fait facile pour déterminer de quel coté tourner. En réalité mon problème résultait de calculs erronés suite à une non homogénéité des variables. (Mélange de int et de long dans une expression arithmétique)


La Fig.2 présente le comportement de la barre. Elle ne doit pas dévier le safran de plus de 30°. Pour des déviations de route correspondant « au neutre » elle est placée dans l'axe. Plus la route s'écarte du CAP désiré, plus le rappel de barre est énergique.
Comme montré sur la Fig.3, quand on donne au servomoteur la consigne de rappel central, le palonnier de ce dernier mécaniquement n'est pas forcément dans l'axe. Naturellement le programme effectue la correction qui s'impose.


Comme Arduino présente beaucoup plus d'E/S que je n'en avais besoin, j'ai ajouté des compléments lumineux. Par exemple les LED de la Fig.4 qui s'allument en fonction de la consigne de barre. Elles sont éteintes quand le safran est dans l'axe du bateau. Plus le gouvernail est décalé, plus la couleur de la LED est « chaude », et ce pour chaque coté de la correction de route.
Comme symbolisé sur la Fig.5 une option de correction de dérive permet de compenser la navigation « en crabe » qui résulte du dérapage dû au vent ou d'un courant traversier, car rien n'interdit de faire traverser une rivière à notre navire, surtout si à proximité un pont permet d'aller le récupérer en face. On peut compenser jusqu'à 15° de dérive ce qui doit probablement couvrir tous les besoins.


Pour le plaisir je vous livre ci-dessous l'organigramme qui décrit la logique de ma boucle de base. Comme en général sur presque tous mes programmes, la boucle principale ne présente qu'une suite d'appels à procédures. C'est fondamental pour la lisibilité d'un programme et facilite considérablement sa mise au point.

CONCLUSION : La première remarque concerne le concept. Il s'agissait de mettre en œuvre une boussole électronique et un servomoteur. Mais automatiser un voilier par son cap magnétique n'est pas une très bonne idée. Si le vent change quand il est au centre du lac et que notre beau navire se retrouve face au vent … YAPLUKA aller le chercher à la nage. Pour un voilier, il vaudrait mieux l'asservir sur l'amure … mais c'est un autre projet.
Il s'agissait d'un amusement informatique. Pari réussi, car j'ai avec ce prétexte à programmer appris beaucoup de choses sur Arduino, et tout particulièrement à me méfier et à traiter les problèmes d'homogénéité des variables dans les calculs.
VLA les Amis, encore merci pour vos remarques, conseils et aides diverses.
Amicalement : Nulentout.

source : http://forum.arduino.cc/

Partager cette article :

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...