Aller au contenu

Faites fonctionner un servomoteur avec un ATtiny84

    Les servomoteurs sont des composants très présent dans notre vie quotidienne. On en trouve beaucoup dans les véhicules, les fraiseuses en somme partout ou un mouvement est nécessaire il est probable que vous trouviez un servomoteur.

    Qu’appelle t’on un servomoteur ?

    Un servomoteur est un moteur dont la position est contrôlée. C’est a dire qu’un retour de position est renvoyé pour savoir si le moteur a bien bougé à la position souhaitée. Le but de ce retour est bien entendu d’envoyer une position corrective si le déplacement n’était pas bon du premier coup.

    l’image que l’on a d’un servomoteur est celle-ci:

    Ce type de servomoteur existe en deux modèles, le premier est un servomoteur avec un retour résistif. C’est le cas du servomoteur que vous voyez ci-contre. Il y a un potentiomètre a l’intérieur de ce servomoteur qui renvoi la position de la sortie. Bien évidement les potentiomètres ne sont pas robustes et si vous voulez un composant solide vous devrez aller vers la deuxième version a codeur. Cette deuxième version est plus robuste car le codeur est optique et donc n’use pas une piste comme le ferait un potentiomètre en revanche ils sont souvent plus cher.

    Tout cela est totalement transparent pour vous car puisque c’est la carte interne de ce servomoteur qui gère le retour d’information. Il est simplement utile de savoir la technologie utilisée pour connaitre la robustesse des composants que vous allez utiliser.

     

    Comment les fait-on fonctionner ?

    La connexion est très simple simple, elle se fait sur 3 fils , un GND, un VCC , et une patte signal. En théorie le signal doit ressembler a ca:

     

    Le signal qui les pilotent devrait ressembler aux dessins que je vous ai fait au dessus, le signal a toujours la même période de 20 ms seule la largeur de l’impulsion change. Le SERVO interprète et change l’angle de la palette. Nous allons nous faire un programme avec l’Attiny84 pour voir comment ca se passe dans la pratique.

    Voici le premier programme:

    Comme vous le voyez, il est très simple, on utilise la bibliothèque de délais et la patte PA0 du Port A. Ensuite on l’allume on attend 1000 us ( 1 ms) puis on l’éteint pour 19 ms. le « While(1) » s’occupe ensuite de reboucler.

    Grace a ce petit programme je vais positionner ma palette a 90 ° a droite comme dans l’image ci-dessous.

    Nous allons maintenant pouvoir modifier la largeur de l’état haut pour voir ou la palette se positionne maintenant, voici les modifications:

    On a conservé ici les 20 ms de période. On a simplement augmenté l’état haut de 500 ms et diminué l’état bas de 500 ms. En revanche le SERVO n’a bougé comme prévu. Il ne s’est déplacé que de 45 ° au lieu des 90° prévu. Regardez ci dessous.

     

    Nouveau test.

    Voici l’angle maximal a gauche ou le servomoteur est capable d’aller. J’ai mit un peu plus de 2 ms pour être sur qu’il aille bien en buté.

    Ensuite progressivement 1.5 ms sur la première photo puis 1 ms et enfin 500ms. D’ailleurs, il grogne parce qu’il ne peut pas aller plus loin mécaniquement.

    La première chose que l’on peu dire avec ce servomoteur c’est qu’il est incapable de faire 180°. La deuxième c’est qu’il a l’aire d’être plus a l’aise de 0 a 90°. Je pense qu’il a probablement été conçu pour ca. Je teste le matériel en même temps que j’écrit cet article donc vous partagez avec moi les soucis de montage 🙂 . Pour ce qui est du programme cela ne change rien il fonctionnera quand même avec un autre servomoteur.

    En fouillant un peu sur le NET je suis tombé sur la documentation d’un model très proche du mien qui est un y-3009 et voici ce que l’on peu y lire:

    Dans la première ligne on peut lire « Servo can rotate approximately 180 degrees » ce n’est donc pas étonnant que l’angle maximal ne soit pas 180° puisque la documentation dit que les 180° seront approximatifs.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Vous retrouvez bien sur cette documentation les courbes que je vous ai mit au départ avec les mêmes timing.

     

    Voila vous avez vu comment on peut piloter un servomoteur avec un tout petit programme. Vous voyez aussi comment en achetant des SERVO pas cher vous risquez d’être déçu ! 🙂

    J’espère que ce test vous aura plu ! Merci de m’avoir lu !

     

    Sylvain Altmayer

     

    Laisser un commentaire

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