Résumé des épisodes précédents : le char a été doté d'un viseur laser puis le pointage du canon a été amélioré.

Cette troisième phase consiste à compenser la flèche importante du projectile (sa chute au cours de sa trajectoire) due à la faible puissance du canon "softgun". Si le laser vise efficacement à courte distance (en dessous de 2 mètres), au-delà il est franchement trop haut.

Le principe est le suivant : la cible est désignée avec le laser, la distance est mesurée à l'aide d'un télémètre et le pointage du viseur laser est corrigé en fonction de cette distance via un servo et un jeu de tringles. Il ne reste plus alors qu'à corriger le pointage du canon pour faire à nouveau pointer le laser sur la cible.

Le télémètre

IMGP5125bb.jpg

Le télémètre sélectionné est un modèle à infrarouge Sharp GP2Y0A710K. C'est celui qui affiche la plus longue portée (de 1 à 5,5m) de cette famille de composants, et ce pour un prix modique. Sa précision décroît fortement avec la distance mais celle du canon aussi, il convient donc plutôt bien. Il y a mieux, comme des télémètres laser, mais c'est très nettement plus cher. De toute façons au-delà de 5m la précision du canon devient franchement médiocre.

La mécanique

IMGP5093pp.jpg

Le télémètre et le laser sont montés solidairement sur un pivot lui-même monté sur le canon. Une tringle relie le pivot à un servo qui permet de l'orienter de bas en haut. Elle est réalisée en fil de fer avec des articulations en gaine thermo-rétractable. L'ensemble a été monté sur le canon et non sur la tourelle pour qu'il suive les mouvements de visée en assiette comme en azimut.

Le système de tringle est conçu pour assurer une forte démultiplication du mouvement du servo (environ x10) grâce à un pivot (réalisé en plastique transparent, on le devine sur la photo à l'arrière droite du système de tir). Les premiers essais, en connexion directe, étaient peu concluants, l'intégralité du mouvement nécessaire tenant sur 5 ou 6 degrés de déplacement du servo. Là on est sur 50 degrés environ, ce qui est bien plus confortable.

Par rapport à la photo, un certain nombre de guides ont été rajoutés à la tringle afin qu'elle ne se promène pas trop. La correction des jeux et la calibration des mouvements du servo ont été la partie la plus longue du projet, la précision nécessaire au pointage étant en fait très grande. A force de rajouter des guides et des contraintes j'ai fini par obtenir des résultats reproductibles et j'ai dû écrire un programme ad hoc pour la calibration.

L'électronique

La seule modification par rapport au montage précédent a été l'ajout du télémètre et du servo. Le télémètre est activé par un MOSFET afin qu'il ne s'allume que pour la prise de mesure et non en continu, car il consomme plus de 300 mA. L'autonomie de la batterie a déjà suffisamment souffert comme ça!

Fonctionnement

La séquence de tir en mode "pointage précis" (voir épisode précédent) a été modifiée en conséquence.

Elle se décompose comme suit :

  • pointage de la cible avec le laser ;
  • premier appui sur le bouton K : extinction du laser pour éviter qu'il n'interfère avec le télémètre, prise de mesure par le télémètre (moyenne de 5 mesures pour lisser les erreurs), rallumage du laser, modification de l'orientation de ce dernier par le servo en fonction de la distance mesurée ;
  • correction de la visée à l'aide de la télécommande ;
  • deuxième appui sur le bouton K : tir ;
  • réinitialisation du pointage du laser (qui bouge au moment du tir du fait de la secousse).

Pour rattraper les jeux résiduels, la modification de l'orientation du laser se fait systématiquement avec un balayage tout en bas - tout en haut puis en l'abaissant à la position désirée.

Calibration

calibration_charduino.png

Une fois le système fonctionnel, il a fallu le calibrer, c'est à dire faire correspondre une hausse à une distance donnée. J'ai effectué plusieurs séries d'essais que j'ai résumés dans un graphique. L'axe horizontal représente l'angle donné au laser (donc la hausse). Il ne s'agit pas de l'angle donné au laser lui-même, mais de la position communiquée au servo qui l'anime, ce qui revient au même à un facteur multiplicatif près. L'axe vertical représente la distance à la cible en cm. Ça disperse un peu, mais on voit qu'il y a une certaine continuité des résultats. La première série de tirs (en bleu) est plus haute que les deux suivantes qui sont elles très bien alignées.

J'en ai tiré des valeurs moyennes dont j'ai extrapolé une bête fonction proportionnelle puisque ça semblait correspondre suffisamment à l'approximation générale. L'équation de droite obtenue (avec ma vieille Casio FX 850P) nous donne:

angle du servo = (distance-1280)/(-17)

Le code

Tout ceci a été intégré au code que je vous livre ci-dessous.

Télécharger le code

A suivre...