44) 13/12/2017 : Ultime ajustements des programmes embarqués (MJD 58100)

Journée qui va compter dans la vie de la petite sonde qui vient d’être réveillée. Lorsque nous arrivons en S4 la salle informatique, Crouzet est tellement absorbé par son ordinateur qu’il ne nous a pas entendu approcher. Les reflets de l’écran renvoient un visage serein mais très concentré. Il est évident que nous allons le tirer de sa rêverie intense, mais nous tenons chaque jour à faire le tour des personnels histoire de détendre l’atmosphère et maintenir une bonne ambiance.

– Jour Julien, tu m’as l’air bien dubitatif.
– Oulp, je ne t’ai pas entendu venir GC.
– C’est quoi tous ces chiffres alignés, ta déclaration de revenus ?
– Heureusement que non, vu l’emplacement de la virgule, sauterait au plafond le percepteur. Non, ce sont les mesures de tension de l’alim des moteurs.
– Ya un truc qui cloche ?
– Non, pas vraiment, juste la précision qui n’est pas au top. Les électroniciens ont préféré adopter des composants costauds au détriment de la précision, faut qu’on ajuste les calibrages.

Ajustements logiciels et précision luxueuse.

Avouons qu’il serait tout à fait acceptable d’oublier ce chapitre. Ce n’est que dans le cadre d’un pinaillage justifié par une approche la plus rigoureuse possible que l’on peut raisonnablement présenter ce thème. D’un point de vue opérationnel, chercher à obtenir la valeur de la tension disponible sur les servomoteurs avec trois chiffres significatifs n’est pas très logique, vu que nous savons que durant les appels de courant cette tension peut facilement chuter de 2V. Toutefois, si un jour vous désirez réaliser une mesure précise avec Arduino, la démarche proposée ici vous sera certainement bien utile. Pour mémoire, montré sur la Fig.213, comme la tension d’alimentation des servomoteurs peut aller jusqu’à 6 ou 7Vcc, on a réalisé un diviseur de tension par deux. (Car le CAN ne peut convertir que des tensions allant jusqu’à +5Vcc.) Si les résistances de 1kΩ sont de médiocre précision, la valeur retournée par le programme sera imprécise dans des proportions équivalentes. Hors il est ultra facile d’ajuster leur calibrage finement par logiciel. Allez consulter le listage de P30_Programme_COMPLET.ino et recherchez les lignes contenant des remarques caractéristiques du genre //@@@@@@@@@@@@@@@@@@@@@@@@@@@. Comme déjà signalé dans le didacticiel, ce sont des constantes qui dans le programme sont faciles à repérer et à personnaliser. Tout particulièrement pour le cas analysé nous avons :


Comme pour le calibrage de n’importe quel instrument de mesure, il faut disposer d’un étalon fiable. En ce qui nous concerne un multimètre de qualité sera indispensable. Soit vous en possédez un, soit un ami vous en prêtera avec plaisir. (Si vous ne pouvez utiliser un tel appareil de mesure, contentez-vous d’utiliser deux résistances à 5% c’est largement suffisant, et l’affaire sera entendue.)
La constante Calibre_U_moteurs est spécifiquement créée pour réaliser un ajustage précis.
Voici comment procéder :
Vous utilisez une alimentation à tension variable et en ajustez sa tension de sortie à la plus forte valeur autorisée sur le multiplexeur, soit 6,5V mesurée avec précision.
Vous frappez « i* » dans le moniteur de l’IDE et vous prenez en compte la valeur qui est retournée par le programme d’exploitation de JEKERT.
Vous recalculez la valeur de calibrage avec la formule :

Prenons un exemple : Avec le multimètre vous avez ajusté précisément la tension à +6,5Vcc. La valeur retournée par le programme est de 6,34V. La nouvelle valeur à indiquer dans la ligne de calibration pour la constante est donc de :
Calibre_U_moteurs  = 6,67 x 6,5 / 6,34 = 6,84.

L’avantage d’une telle méthode réside dans la faculté de réaliser des mesures d’une grande précision tout en utilisant pour l’électronique des composants très ordinaires. Si vraiment vous cherchez le « fin du fin », recommencez deux fois ou trois fois la procédure, vous gagnerez un petit fifrelin de précision. Pour vous donner une idée de la fiabilité obtenue, le tableau présenté ci-contre résume les excellents résultats obtenus sur le prototype.

Ajustements précis des postures.

Abordé trop succinctement dans le chapitre 18) 04/10/2017 : Exploiter toutes les ressources du calculateur du TOME 2, la gestion des données en EEPROM avait été précisée, toutefois sans proposer un exemple précis. Hors nous savons que les servomoteurs présentent de petites dispersions de caractéristiques relatives à leur neutre opérationnel. Du coup certaines postures ne seront pas parfaites. Par exemple vous constaterez qu’en Stable Transversal l’une des Jambe ne semble pas totalement posée et exerce une pression limite sur le sol. Il ne sera pas très compliqué en manuel d’équilibrer géométriquement les quatre membres, puis de corriger la table en EEPROM. Nous allons aborder un exemple concret.
Ajouter le petit module LASER sur le Tibia de la Jambe A augmente légèrement l’encombrement de ce membre. Quand on passe en Posture de décollage, les deux Jambe A et B viennent en légère collision. Plus insidieux, toujours dans cette configuration la Griffe de la Jambe C vient en contact avec la languette du « strap » de la LED verte clignotante. Les moteurs ne sont pas réellement forcés, mais on entend nettement le bruit de « grenaillage » des servomoteurs qui tentent de se caler avec précision. Il importe donc d’augmenter le jeu entre ces divers éléments en conflits. La Fiche n°29 détaille avec précision la procédure pour corriger la table de la Posture de décollage.

Puisque nous abordons l’aspect logiciel, si certains désirent modifier des fonctions, en enlever ou en ajouter, la procédure de traitement des programmes n’est pas évidente vu le nombre de cas particuliers qu’elle doit gérer. Pour synthétiser son comportement, la Fiche n°28 propose l’organigramme de void Traite_Programme() dans lequel on comprend plus facilement pourquoi dans l’instruction switch (NOMBRE) il n’y a pas de case 9 par exemple. Les commentaires joints à ce diagramme facilitent l’interprétation de la structure logicielle de cette procédure.

JEKERT est terminée, tout au moins la saga relative à sa réalisation. Un peu à l’opposé de ce qu’invite fortement un contexte de loisir, nous avons cherché à développer ce petit robot avec une approche rigoureuse, comme si nous étions dans un contexte professionnel. La motivation de ce didacticiel réside précisément dans ces contraintes méthodiques, au risque parfois de ressembler plus à une obligation scolaire qu’à un plaisir dominical.

Heureusement que l’on peut librement « ne regarder que les images ». Et puis, si vous avez envie de réaliser cette petite machine, rien n’interdit de se faire plaisir directement, sans trop se prendre la tête. Une difficulté se présente ? Alors on cherche « rapidos » le chapitre du didacticiel qui en parle. On corrige et on continue son petit bonhomme de chemin. Alors si vous optez pour l’approche ludique, en premier consultez la Fiche n°29 et tout particulièrement la face de cette dernière intitulée Pour celles et ceux qui n’ont pas le temps … Cette page résume les opérations à conduire pour construire votre petit robot en y engloutissant le moins de temps de loisir possible. Vous y prendrez plaisir, vous y trouverez l’envie de recommencer. Alors, si le désir de réaliser une machine plus conséquente vous titille, le jour où vous disposerez de plus de temps, probablement que ce didacticiel pourra vous ouvrir la piste de la rigueur dont vous aurez alors forcément besoin.

Le TOME 5 est ici.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *