Odométrie
La réalisation de l'odométrie se base sur un hacheur qui alimente deux moteurs CC, ainsi que de deux encodeurs pour mesurer la distance parcourus par Serge. Le tout controlée avec une arduino mega pour réaliser un asservissement en position.
Moteur
Fréquence signal
La fréquence du signal souhaité pour contrôler les moteurs CC est de 25 KHz. Or, par default, la fréquence du pwm fournit par les pins GPIO de l'Arduino est de 50 Hz. Pour ce faire, nous créons une fonction analogWrite25k qui envoie un signal PWM de fréquence 25 kHz et qui prend en entrée un entier entre 0 et 320 au lieu de 0 et 255.
Cette fonction est active sur 2 timers car nous avons besoin de 2 GPIO PWM par moteur. Les pins 2, 3, 6, 6, 7, 8 sont donc sur une fréquence de 25 kHz
Commande moteur
Pour commander les deux moteurs avec des valeurs positives et négatives, nous utilisons la fonction ci-dessous. Comme nous les pins en des moteurs sont toujours à 1 nous avons seulement besoin de contrôler les moteurs avec deux pins.
Les deux vaudront LOW pour arrêter le moteur.
L'un aura un PWM et l'autre LOW pour faire tourner le moteur dans un sens.
Inversement pour faire tourner le moteur dans l'autre sens.
Encodeurs
Pour ce qui est des encodeurs, nous utilisons des interruptions afin de compter le nombre de pas parcouru par les roues codeuses. Nous n'utilisons que la moitié des pas des encodeurs (nous prenons utilisons l'interruption seulement sur un des deux pins des encodeurs) parce que le compte est suffisament précis avec uniquement la moitié des pas et cela permet d'économiser de la puissance de calcul.