Club robotique de Sophia-Antipolis

Accueil > Projets, études > Nos robots > Robots du club > Robots à chenilles > Contrôle de vitesse du robot à chenilles

Contrôle de vitesse du robot à chenilles

dimanche 2 janvier 2011, par Julien H.

On peut modifier la valeur de la fréquence du PWM généré par un micro-contrôleur. Dans le cas du robot à chenilles utilisé pour nos tests, l’intérêt de modifier cette fréquence est de sortir de la bande des sons audibles par l’homme car le PWM fait résonance avec la mécanique du châssis motorisé.

Article expliquant comment modifier la fréquence du PWM

Et n’oubliez pas de revenir ici quand vous l’aurez lu :)

Pourquoi un PWM ?

Mais au fait, pourquoi a-t-on besoin d’un PWM : il permet de modifier la vitesse en donnant un rapport cyclique variable sur la patte d’activation (enable) d’un circuit de puissance type pont en H.

Il y a deux façons de modifier la vitesse : utiliser la patte d’activation ou directement les signaux de commande des phases de chaque moteur.

Dans notre cas, on utilise un circuit L298 (double pont en H) de ST Microelectronics déjà câblé sur la carte Roméo. Il n’y a que deux pattes par moteur : une pour le sens (câblée en inverseur sur les signaux de commande) et une pour l’activation.

Le mode "PWM sur enable" est donc obligatoire. Passons maintenant au problème de fréquence.

Différentes fréquences disponibles

Comme nous l’avons vu dans l’article sur la modification de fréquence du PWM, il y a différentes valeurs de division de l’horloge (prescaler), correspondant aux fréquences suivantes :

prescaler fréquence
1 62,5 kHz
8 7,8 kHz
64 976 Hz
256 244 Hz
1024 61 Hz

La bande audible est généralement comprise entre 16 hertz et 20 kHz (selon les capacités auditives de chacun). Il n’y a donc que le premier choix (pas de division donc horloge I/O en direct) qui est en-dehors de cette bande de fréquences.

On pense donc à utiliser cette fréquence en premier.

Mais il y a un inconvénient

Et de taille : quand on teste un PWM de valeur moitié (duty cycle de 50%) après modification du timer, le robot n’avance plus. Etrange non ? Il y a en fait une perte de couple quand la fréquence du PWM est trop élevée.

Je n’ai pas trouvé d’explication dans la datasheet du L298. Mais la solution est donc d’utiliser une fréquence basse (le 61 Hz est inaudible par rapport au bruit que font les engrenages, en tout cas pour moi, et j’interdis toute blague comportant le mot "baleine").

Impact sur les autres fonctions

On a déjà vu que la modification du prescaler du timer 0 avait un impact direct dans le code Arduino (dont dépend la Romeo) sur la fonction "delay" : il faut donc adapter notre code, puisqu’on passe d’un diviseur 64 à un diviseur 1024 soit 16 fois plus. Un arrêt d’une seconde devient donc "delay(62)".

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.