PRINCIPE D'UN SERVOMOTEUR


Un servo moteur est un moteur à courant continu avec réducteur (engrenages) et une électronique de commande intégrée  qui permet d'asservir en rotation l'arbre moteur (en sortie) : en fonction normal, il suffit d'envoyer une impulsion d'une largeur déterminée (entre 1 et 2ms) pour que l'axe tourne d'un angle déterminé:

    Par programmation du microcontrôleur, il est possible de générer ce signal directement sur une sortie.
L'algorithme (le plus simple) est le suivant :

Répéter 
    Mettre A0 à 1
    temporiser n      (n étant la valeur en ms voulue)
    Mettre A0 à 0
    temporiser 20ms  
Toujours   
  

     Mais ce programme n'est guère performant car il mobilise tout le temps machine pour 1 seul malheureux servo.
On peut faire beaucoup mieux en travaillant sous interruption du microcontrôleur. 

Programme principal
Répéter
   (ici , vous traitez vos E/S ou ce que vous voulez)

Toujours

Programme interruption (déclenchée toutes les 20ms par timer)
      Mettre A0 à 1
       temporiser n
       Mettre A0 à 0
Fin interruption

    En paramétrant correctement votre microcontrôleur, toutes les 20ms le programme principal sera interrompu par la routine d'interruption qui va envoyer votre impulsion sur la sortie A0 du portA . Pendant tout le reste du temps, votre programme principal pourra exécuter d'autre tâches (gestion des obstacles, cycle de déplacement ...)