La connaissance précise du comportement d'un servo, surtout en cas d’absence de fiche technique, est incontournable pour garantir le fonctionnement de l'application finale, d’autant plus que prolifèrent de nos jours toutes sortes de servos de qualité, performance et prix divers.

On appelle servomécanisme, ou servo, un dispositif asservi dans une boucle de rétroaction, dont la grandeur de sortie est de nature mécanique. En électronique, et en particulier dans le domaine des actionneurs électromécaniques, un servomoteur est un organe qui traduit un signal électrique en un mouvement mécanique.

On rencontre ces servos dans de nombreux domaines. Ici, je m’intéresserai à ceux des maquettes radiocommandées, extrêmement populaires et largement utilisés, en modélisme comme dans d’autres activités de loisirs. Il existe de nombreux types de servos, analogiques et numériques, avec des engrenages en plastique ou en métal, avec ou sans roulements à billes, etc. Mais ils ont tous un point commun : ils peuvent être commandés par un même signal électrique.


Ce signal est constitué d'impulsions de largeur variable, séparées par une période fixe (fig. 1), généralement de vingt millisecondes (ms). La largeur des impulsions est ce qui contrôle effectivement la rotation du servo. La position centrale est fixée à 1500 microsecondes (µs) pour la plupart des servos, tandis qu’on atteint les positions extrêmes à 500 µs minimum pour l’une et 2500 µs maximum pour l’autre. Habituellement, ces extrêmes correspondent à une rotation de −90° et +90° à partir du point central, le sens de rotation dépendant du fabricant.

Figure 1. Impulsions de commande du servo.

L'amplitude de l'impulsion, en volts, est généralement égale à la tension d'alimentation du servo dont les plus courantes sont 4,8 V et 6,0 V, mais on en trouve aussi des amplitudes de 3,7 V à 14 V et plus.
 

Why a Servo Tester?

While the manufacturer’s datasheet gives all the specifications of the servo in terms of maximum displacement, speed, dead band, etc., the datasheet is not always available. And this is particularly true for the wide range of low-cost servos currently available on the market. In many cases, although some data may be available, testing the actual performance may give quite different results. At the end of the day, what matters is the actual performance of the servo you will use, not its theoretical behavior.
 

Pourquoi un testeur de servo ?

La fiche technique du fabricant censée donner toutes les caractéristiques du servo (angle maximum de rotation, vitesse, bande morte, etc.) n’existe pas toujours, surtout pour la plupart des nombreux servos à bas prix proposés sur le marché. Même quand certaines données sont disponibles, il est fréquent que la mesure des caractéristiques réelles donne des résultats très différents, et ce qui compte en définitive, ce sont les performances réelles de votre servo, et non son comportement théorique.
 

Conception d'un testeur de servo

Il est très facile de construire un testeur de servo simple, et il y en a beaucoup d'exemples sur le web. Il suffit d’un 555 (un circuit intégré très populaire) et de quelques autres composants pour réaliser un testeur de servo analogique. L’étape suivante serait un appareil avec un contrôle précis de la largeur d'impulsion et un affichage de cette valeur. On peut en trouver des versions bon marché sur le web, mais elles présentent un inconvénient : la plupart des paramètres sont déjà programmés et ne peuvent pas être modifiés par l'utilisateur. Ce serait beaucoup mieux de disposer d'un testeur de servo entièrement personnalisable, dans lequel tous les paramètres seraient accessibles à l’utilisateur pour créer le signal souhaité, y compris les fonctions de test manuel et automatique.

C'est ce qui est proposé ici : un testeur entièrement programmable donnant accès à tous les paramètres du signal, avec les modes manuel et automatique et une interface utilisateur claire et intuitive.
 

Matériel informatique

Le schéma complet du circuit est présenté à la figure 2. Les connexions externes sont indiquées dans la partie inférieure ; à gauche se trouve l'entrée d'alimentation (J5 - DC IN), qui peut être connectée à l'alimentation de la maquette radiocommandée, ou à toute autre alimentation capable de fournir le courant requis pour le servo testé. L'unité consomme moins de 15 mA, un supplément de charge faible pour l'alimentation. La tension peut être comprise entre 4,5 et 6,0 V, selon les besoins du servo.

Figure 2. Schéma du circuit.

Remarque : le servo recevra la pleine tension de la source d'alimentation. Veillez à ne pas dépasser les valeurs maximales du servo ! Pour se conformer aux spécifications de la plupart des fabricants, le connecteur central est toujours la borne +V, tandis que les extrêmes sont GND et SIGNAL.

L'entrée d'alimentation ne nécessite que deux lignes, +V et GND, mais un connecteur à 3 bornes a été monté pour recevoir n'importe quel connecteur ESC standard. Sur le côté droit du schéma se trouve la sortie du servo (J4 - OUT), avec les trois lignes connectées (+V, GND et SIGNAL), à connecter au servo en cours de test.

La partie supérieure-milieu gauche montre le microcontrôleur (U2) et l'interface utilisateur, un seul potentiomètre (T1) et deux interrupteurs simples (X1 et X2). La rotation du potentiomètre modifie la durée de l'impulsion tandis que les commutateurs sélectionnent les quatre modes de fonctionnement, comme le montre ce tableau (les différents modes seront expliqués dans la section consacrée au logiciel) :

Enfin, en haut à droite se trouve U3 : l'afficheur à 4 chiffres à 7 segments et ses composants.


Dessin de la carte

Bien que ce matériel puisse fonctionner s’il est monté sur une platine d’essai, un circuit imprimé le rendra plus durable et plus fiable. Un tracé possible de circuit imprimé est présenté sur la figure 3. Les fichiers de conception (NI Multisim) et les fichiers Gerber pour commander la carte chez votre fournisseur préféré sont disponibles au téléchargement. Notez que les condensateurs du circuit oscillant du microcontrôleur sont absents de cette version du circuit imprimé ; apparemment le testeur de servo de l'auteur se débrouille très bien sans C5 et C6. Les condensateurs peuvent facilement être ajoutés sur le côté cuivre (inférieur) de la carte, vous devrez peut-être gratter le vernis épargne du plan de masse. Mais bien sûr, vous pouvez aussi télécharger les fichiers de conception et ajouter les deux condensateurs au tracé.

Figure 3. Dessin de la carte équipée ; le potentiomètre est J3, et les interrupteurs sont J1 et J2.

Caractéristiques et spécifications:

  • Modes : manuel (basse et haute résolution) et automatique (basse et haute vitesse).
  • Largeur d'impulsion minimale : réglable par logiciel.
  • Largeur d'impulsion maximale : réglable par logiciel.
  • Position centrale : peut être réglée manuellement.
  • Résolution minimale du pas/impulsion : 1 µs.
  • Pas maximum : réglable par logiciel.
  • Période du signal : fixée à 20 ms.
  • Stabilité/précision de l'impulsion : contrôlée par quartz.
  • Alimentation électrique : 4,5 à 6,0 V.
 

Logiciel

La partie la plus importante de ce montage est sans doute le logiciel, qui lui apporte la précision et la souplesse. Le programme s'exécute dans un PIC16F1829, cadencé à 32 MHz ; il est écrit en C, traduit par le compilateur C de CCS. Le code source et le fichier HEX pour la programmation du microcontrôleur peuvent être téléchargés.

Le programme commence par les définitions du matériel et des connexions, ainsi que des valeurs de référence clés : les lettres a à g représentent les 7 segments de l'affichage numérique, tandis que d1 à d4 correspondent aux quatre chiffres. PWM est le signal de sortie pour piloter le servo et SW1 / SW2 sont les interrupteurs. Le potentiomètre est connecté à l'entrée analogique AN7 (PIN_C3) et il est réglé dans la fonction main.
En bas, il y a quatre définitions très importantes :

  • BRI : luminosité (brightness) de l'afficheur à LED. Ce nombre commande la persistance de chaque chiffre (en µs), donc sa luminosité apparente. Il est fixé à 50 mais peut être modifié de 1 à 200.
  • SPD : vitesse (speed) du mouvement du servo en mode automatique. Ce nombre représente la taille du pas (en µs) lors de l'incrémentation/décrémentation de la largeur d'impulsion ; plus le nombre est élevé, plus le servo se déplace rapidement. Tout nombre compris entre 1 et 100 est valide.
  • MIN : largeur d'impulsion minimale (en µs). Valeur la plus courte de l'impulsion en mode manuel et en mode automatique. Bien que n'importe quel nombre soit valide, il est recommandé de ne pas descendre en dessous de 500, car le servo pourrait ne pas suivre en -deçà.
  • MAX : largeur d'impulsion maximale (en µs). Valeur la plus longue de l'impulsion en mode manuel et en mode automatique. Bien que n'importe quel nombre puisse convenir, il est recommandé de ne pas dépasser 2500, car le servo pourrait ne pas suivre au-delà.


Ces quatre paramètres confèrent au testeur une grande polyvalence, qu’on ne retrouve sur aucun appareil commercial bon marché. Si vous montez le microcontrôleur sur une embase, vous pouvez facilement le retirer, le reprogrammer et disposer d'un nouveau testeur conforme à vos besoins ; ou si vous êtes satisfait d'un jeu de paramètres, ne touchez plus à rien.

Chaque chiffre est entièrement défini à l'intérieur d'une fonction (num) et peut être sélectionné à l'aide d'une instruction switch ; chaque fois que cette fonction est appelée avec un nombre stocké dans n, le nombre sera allumé sur l’afficheur. Pour sélectionner lequel des quatre chiffres est actif à un moment donné (puisque l'affichage est balayé séquentiellement), la fonction digit inclut la sélection, également dans une instruction switch. Chaque fois qu'il est appelé, le chiffre stocké dans z s'allume. Si z contient « 5 », alors tous les chiffres seront éteints ; ceci est utilisé pour avoir une transition propre d'un chiffre à l'autre, sans rémanence dans l'affichage.

 

La fonction qui réunit tous les éléments (sélection des chiffres et sortie des nombres) est display ; cette fonction prend un nombre à 4 chiffres, le décompose en chiffres individuels et les allume en séquence sur l'afficheur, de droite à gauche (unités en premier), en appelant les deux fonctions précédentes. C'est ici qu’est contrôlée la luminosité de l'affichage, en réglant le délai avant d'effacer un chiffre.

 

Le chronométrage précis de la période et de la durée de l'impulsion est obtenu en utilisant l'interruption de TIMER1. Ce compteur, d’une largeur de 16 bits, déclenche une interruption quand il déborde à 65 536; en le chargeant avec une valeur initiale, un temps précis peut être mesuré en traitant cette interruption. En séquence, la première fois que cette INT est appelée, TIMER1 est chargé avec la valeur correspondant à la durée de l'impulsion ; la fois suivante, ce sera le reste de la période totale. Ce processus est répété en continu (contrôlé par la variable pulse), de sorte qu'on obtient une largeur d'impulsion précise, tout en gardant une période constante de 20 ms.

 

Ici, nous vérifions également l'état des commutateurs pour décider si nous sommes en mode automatique (SW1 = 0). Si c'est le cas, SW2 va déterminer la vitesse du balayage automatique (de MIN à MAX et retour à MIN en continu) : SW2 = 1 signifie une vitesse normale (l'impulsion varie de 1 µs à la fois) et SW2 = 0 signifie une vitesse élevée (l'impulsion varie de SPD µs à la fois). Souvenez-vous que SPD peut être un nombre compris entre 1 et 100 ; s'il est réglé sur 1, la vitesse normale et la vitesse élevée sont identiques (ce qui n'est pas très utile).

 

Enfin, main rassemble tout ; outre l'initialisation du convertisseur analogique-numérique (CAD), de TIMER1 et des interruptions, il contient la boucle du programme principal. Cette boucle lit le CAD (donc la valeur du potentiomètre) et en déduit la durée de l'impulsion.

 

Si nous sommes en mode manuel (SW1 = 1), alors SW2 est évalué ; si « 1 », le mode basse résolution est actif, et le potentiomètre est capable de balayer toute la gamme de largeurs d'impulsion (MIN - MAX). Ce mode est appelé « basse résolution » pour une raison simple : le CAD ne peut acquérir que 1 024 niveaux différents, mais la gamme de largeurs d'impulsion peut être de 1400 µs ou plus, il n'est donc pas possible d'obtenir une résolution de 1 µs dans la gamme complète. Si SW2 = 0, alors le mode haute résolution est activé. Ici, la gamme complète de largeurs d'impulsion est limitée de 1469 à 1531 µs. Le potentiomètre peut facilement être déplacé pour changer 1 µs à la fois, ce qui est extrêmement utile pour :

  • Positionner un servo au point central (1500 µs).
  • Mesurer la bande morte : de combien de µs l'impulsion doit-elle changer pour déplacer le servo ?

Donner un aspect professionnel

Un boîtier adéquat donnera à ce montage un aspect très professionnel et le protégera. Un simple boîtier imprimé en 3D (fig. 4) fera l'affaire, dont le fichier de conception peut être téléchargé.

Figure 4. Conception 3D du boîtier.

Le circuit imprimé est « pris en sandwich » entre quatre entretoises et la coquille inférieure ; la coquille supérieure est fixée à l'aide de quatre vis Phillips Pan Head M2,5 × 20 mm (#2-56 × ¾). L'assemblage final est illustré à la figure 5.

Figure 5. Le circuit imprimé et les connexions à l'intérieur du boîtier.

Questions About the Servo Tester?

Do you have technical questions the servo tester or comments about this article? Email the editor at luc.lemmens@elektor.com or contact Elektor at editor@elektor.com.