Commande d’un robot 2 axes
EEZYbotARM
EEZYborARM MK2 est un petit bras robot à 3 axes, opensource et imprimable. Il est piloté par des servomoteurs et peut être doté d’une pince.
Version modifiée
Une version modifiée est disponible sur Onshape.
- Trous des axes en 3mm au lieu de 4mm
- Réduction des contours de l’engrenage (pour compenser surépaisseur à l’impression 3D)
- Ajout d’un socle à découper pour Arduino et pilote moteurs
- …
Matériel choisi
Arduino UNO
Adafruit PCA9685 16-Channel Servo Driver
Servomoteurs
Logiciel de pilotage
Pour piloter le bras depuis un ordinateur, connecté au robot via le port USB d’un Arduino UNO, un logiciel est constitué de :
- un firmware pour l’Arduino
- un programme en Python et interface tkinter.
Configuration du firmware
Débattements angulaires
Les valeurs de ces angles ne varient à priori pas d’un robot à l’autre, mais elles peuvent être affinées ….
Paramètre des servomoteurs
La conception du robot fait que les angles limites des servomoteurs sont différents d’un robot à l’autre, en raison de la façon dont on les accouple aux bras.
Il faut donc modifier les lignes suivantes dans le firmware :
const int16_t PULSEMIN[2] = {210, 331};
Ce sont des valeurs à l’image de la longueur des pulsations du signal PPM, exprimées par un entier entre 0 et 4096 (voir documentation du pilote PCA9685).
PULSEMIN[i]
correspond à la longueur de pulsation à du signal PPM correspondant à l’angle ANGLEMIN[i]
.
const float PENTE[2] = {2, 2};
Ce sont les pentes de la fonction de conversion pulse/angle (à affiner expérimentalement !)
ATTENTION : il est probable que ces valeurs dépendent du modèle de servomoteur employé.