PILOTAGE des servomoteurs.

Tester un servomoteur avec le mini laboratoire :

Visiblement le « servo » motorisant les ailerons de roulis sur notre maquette volante ne présente pas un comportement normal. l’amplitude du mouvement est trop faible. Est-il en défaut, est-ce le récepteur ou l’émetteur de télécommandes qui sont en cause ? Autre cas de figure : Vous venez de recevoir le dernier modèle de ServotronicMachin et vous désirez en déterminer les caractéristiques en vue de le mettre en service, tant sur le plan mécanique que celui de la micro-informatique. Un dispositif fournissant à la demande des signaux permettant de répondre à ce type de besoin sera le bienvenu, d’autant plus qu’il ne nous coutera strictement rien à par un bon paquet d’octets ajoutés au programme global.

Diverses possibilités de pilotage.

Pour en savoir plus sur la technologie des servomoteurs couramment utilisés en modélisme et dans les petits automatismes, consultez la fiche nommée Pilotage des servomoteurs. Seulement trois fils à brancher, on ne peut rêver plus simple. Les technologies utilisées sont anciennes et éprouvées. En revanche, d’un modèle à l’autre on trouve de fortes dispersions de caractéristiques relatives à leur comportement en fonction des signaux reçus. La Fig.1 donne une échelle des durées d’impulsions que l’on pourra générer avec le mini laboratoire. En vert se situent les fréquences correspondant à la norme. Mais force est de constater que sur certains éléments il faut injecter des  impulsions de durées inférieures et supérieures pour faire balayer à leur arbre toute la

Fig 1

plage angulaire pour laquelle le moteur est prévu. Les zones jaunes correspondent à des valeurs couramment rencontrées, il est donc impératif que notre instrument de mesure puisse couvrir ces plages. Les valeurs repérées en orange ne sont pas rares non plus, quoique moins fréquentes. Les fourchettes rouges constituent une marge de sécurité pour nous assurer de pouvoir évaluer tout servomoteur du commerce, et tout particulièrement si ses caractéristiques sont relativement marginales et débordent notablement du standard habituel.

Tester un moteur est d’une grande simplicité. Réunir la masse et le +5Vcc pour alimenter l’échantillon. Relier sa ligne de commande (Le troisième fil.) à la sortie D12 déjà sollicitée pour la génération de tonalités B.F. Quand on active la fonction PILOTAGE de SERVOMOTEURS, l’élément branché doit immédiatement tourner pour se placer en position neutre, c’est à dire son orientation centrale par rapport à l’angle total qu’il peut balayer. Le tableau proposé en bas de cette page résume les options présentées par les deux boutons poussoir. Chaque clic sur l’un des deux boutons fait changer de plus ou de moins 100μS l’impulsion « positive ». Le moteur doit immédiatement réagir dans un sens ou dans l’autre. Cliquer consécutivement sur le même bouton jusqu’à pousser le moteur dans ses retranchements. Arrivé en limite de sa plage angulaire, il ne tourne plus et se met à « grenailler », une sorte de bruit de grillon. On a trouvé sa limite. Il suffit de lire sur l’écran de visualisation de la ligne série USB la valeur de « Travail » et l’on à une première borne connue pour la programmation. On recommence pour l’autre butée. Si le moteur présente un fonctionnement erratique, c’est soit qu’il consomme trop sur le +5Vcc du mini laboratoire et en perturbe le fonctionnement, soit qu’il est en mauvais état et qu’il doit être changé ou réparé. Si un tel cas se présente, pour lever le doute, alimenter le moteur avec un bloc secteur séparé. C’est d’autant plus concevable que les servomoteurs ne sont pas forcément prévus pour fonctionner sous 5V. Certains exigent bien plus. penser dans tous les cas à réunir la masse à GND d’Arduino.
ATTENTION : Les servomoteurs sans limitation angulaire présentent un comportement différent.
Le signal ne sert plus à les positionner, mais il conditionne leur vitesse de rotation. 1500μS correspond à l’arrêt. Plus la durée s’écarte de cette valeur, plus le moteur tourne rapidement, avec bien entendu une limite. L’écart vers 200μS fait tourner dans un sens, celui vers 3000μS dans l’autre.

Le logiciel associé au testeur de servomoteurs.

L’idée qui vient immédiatement à l’esprit consiste à se servir des sorties spécialisées en PWM de l’ATmega328 puisque c’est précisément ce type d’onde électrique que l’on désire générer. Malheureusement pour nous, comme ces broches spécialisées sont destinées à créer des tensions « ANALOGIQUES », pour privilégier « la rémanence » leur fréquence est relativement élevée et ne convient pas puisque la répétition des impulsions de pilotage doivent se faire à 50 Hz. C’est bien dommage, car il aurait été possible de reléguer la génération PWM en tâche de fond et disposer ainsi du travail en parallèle du microcontrôleur. Tant pis, on doit faire avec …
La deuxième piste qui tombe sous le sens, tout au moins si vous avez consulté la fiche relative au Pilotage des servomoteurs, consiste à se faciliter le travail en utilisant les instructions de la bibliothèque spécialisée Servo.h qui propose des fonctionnalités très alléchantes. Et bien là encore on va oublier les bienfaits de la civilisation, car cette approche présente deux inconvénients :
• Dès que l’on importe cette bibliothèque, la taille du programme augmente de 380 octets, avant d’avoir fait appel à l’une quelconque de ses procédures. Surtout, il puise 92 octets dans la mémoire réservée aux données dynamiques. Hors, pour le programme complet, on commence à friser la correctionnelle dans ce domaine. Du reste le compilateur génère un avertissement à ce sujet.
• La bibliothèque fait appel aux ressources du microcontrôleur et nous ne sommes plus maitres de la fonction millis() qui est employées dans notre procédure void Tester_le_BP_A0(). De ce fait la lecture des boutons poussoir n’est plus garantie et se produisent des effets pervers.

Le programme « cousu main ».

Globalement la structure de la fonction en cours d’étude est identique à toutes celles déjà créées. C’est celle d’une fonction bouclée dont on sort de façon standard par une utilisation longue du bouton FC + et c’est P18_Pilotage_SERVOMOTEUR_sur_USB.ino qui nous sert de démonstrateur. Rien de bien nouveau. La difficulté réside dans le fait que le microcontrôleur est en permanence bloqué dans la génération du signal, alors qu’il doit surveiller les deux B.P. Pour cerner le fonctionnement de la fonction bouclée, aidons-nous de l’organigramme très simplifié représenté sur la Fig.2 dans lequel les instructions en jaune appartiennent en réalité à une procédure de service.

Fig 2

En (1) on fait monter le signal à l’état « 1 ». Puis, avant de le ramener à « 0 » en (3) on effectue un délai (2) correspondant à la durée T désirée pour l’impulsion positive. (T comprise entre 200μS et 3000μS.)

La durée du repos doit être égale à 20ms – T puisque la fréquence est imposée à 50Hz. On commence à générer en (4) un premier délai « important » de 15mS. Enfin en (5) on complète ce délai pour que la période complète du « 1 » plus le « 0 » fasse exactement 20000μS. Deux instructions en cascade sont prévues. En (4) on temporise à une milliseconde près. En (5) on peut affiner à une microseconde près. Ainsi, moyennant d’utiliser un périodemètre indépendant on peut peaufiner la durée, et ainsi tenir compte du temps passé dans les instructions bleues. C’est franchement du luxe, il faut bien l’avouer. Les trois dessins proposés ci-dessous représentent des copies d’écran effectuées avec un petit oscilloscope numérique de type DSO 062 et sont mémorisés lorsque le signal est généré pour le neutre, ainsi que pour les deux limites de la plage possible des valeurs prévues pour T.

>>> Page suivante.

Laisser un commentaire

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