Piloter les moteurs
La propulsion de l’Alphabot est de type différentielle : deux moteurs indépendants propulsent et dirigent le robot.
Chaque moteur est piloté par les moyens techniques suivants :
- un pont en H pour modifier le sens de rotation (voir des explications sur le pont en H)
- un hacheur de tension pour faire varier la vitesse de rotation (voir des explications sur les signaux PWM)
Voici les correspondances entre les ports de communications des microcontrôleurs et les états qu’ils doivent prendre (LOW ou HIGH) pour obtenir le comportement moteur attendu :
Contrôle des mouvements
Arduino
Les mouvements du robot peuvent être contrôlés à l’aide de quelques commandes simples.
Bibliothèque
Il existe une bibliothèque Arduino pour faciliter l’utilisation de l’AlphaBot.
- Télécharger l’archive zip : AlphaBot_arduino.zip.
- Dézipper l’ensemble dans un dossier (avec 7zip par exemple)
- Copier le contenu de ce dossier dans Mes Documents/Arduino/libraries .
Initialisation
Au début du programme, en dehors de toute fonction, ajouter ces lignes :
#include "AlphaBot.h" AlphaBot Robot = AlphaBot(); // instanciation de l'objet "virtuel" Robot
Commandes
- Régler la vitesse du robot : Robot.SetSpeed(250);
- Avancer/Reculer tout droit : Robot.Forward(duree_en_ms); / Robot.Backward(duree_en_ms);
- Tourner sur place : Robot.Left(duree_en_ms); / Robot.Right(duree_en_ms);
- Décrire un cercle : Robot.LeftCircle(duree_en_ms); / Robot.RightCircle(duree_en_ms);
- Alimenter les moteurs : Robot.MotorRun(VitGauche, VitDroite); // Vitesses des moteurs de -255 à 255
- Stopper (freiner) : Robot.Brake();
Utilisation des codeurs
Chaque roue étant équipée d’un codeur incrémental, il est donc possible de commander le mouvement en distance plutôt qu’en temps.
Le code suivant propose quelques exemples de fonctions permettant de piloter les moteurs en utilisant les codeurs incrémentaux placés sur les roues.
Attention : les contrôleurs des moteurs n’autorisent pas le freinage ! Il y a donc un fort risque de dépassement des positions visées !