Une carte de contrôle robotique pour Raspberry-Pi Pico
La société Kitronik est déjà bien connue pour ses cartes et kit autour du Micro:Bit. Elle développe aussi un gamme de produit autour du Raspberry-Pi Pico.
Aujourd'hui, nous allons nous pencher sur sa carte d'extension robotique
Carte Robotique pour Raspberry-Pi Pico |
Nous commencerons par apprécier le fait que notre Raspberry-Pi Pico n'est pas soudée dessus! Même si le Pico coûte trois fois rien, c'est appréciable!
En quoi est-ce une carte pour projet robotique?
Parce qu'elle permet de contrôler une grande variété de moteurs et en quantité.
Nous pouvons ainsi contrôler:
- 4 moteurs continu avec un courant max de 1.5A par moteur.
- ou 2 moteurs pas-à-pas bipolaire, un moteur pas-à-pas ayant deux bobines, il faut deux sorties moteurs pour le contrôler. Le courant max est toujours de 1.5A par bobine.
- Jusqu'à 8 servo-moteurs
Comme la carte robotique exploite un contrôleur PWM I2C, cette carte utilise uniquement 2 broches de votre Pico : le port I2C(0) présent sur GP8 et GP9
Carte Robotique pour Raspberry-Pi Pico |
Avec cette configuration, il est possible d'envisager toute sorte de robot:
- 2 moteurs continu --> Robot 2 roues + roulette
- 4 moteurs CC --> Robot 4 roues
- 8 servo moteurs --> un robot à 4 pattes
- 2 moteurs pas-à-pas --> Robot dont on contrôle avec précision les déplacements
- Contrôle d'un Romi-Robot + Romi ARM
Raspberry Pico + Carte Robotique + Romi-Robot + Romi ARM |
Voilà de quoi bien s'occuper :-)
Attention à l'alimentation!
La carte robotique accepte une tension d'alimentation de 3.3V à 10V mais il est recommandé d'utiliser une tension de 5V à 10V.
Alimentation du Pico
L'alimentation de la carte robotique passe par un régulateur de tension 3.3V pour alimenter la carte Pico. A noter que l'on ne dispose de 100mA.
Alimentation moteur
L'alimentation de la carte est utilisée pour alimenter tous les moteurs utilisés. Il n'est donc pas possible d'utiliser ensemble des moteurs exploitant des tensions différentes:
- PAS OK : alimentation 12V (car 10.8V max pour la carte robotique)
- PAS OK : alimentation 9V + moteur pas-à-pas 9V + un moteur Continu 5V.
- OK : alimentation 9V + moteur pas-à-pas 9V + moteur Continu 9V
- OK : alimentation 5V + moteur continu 5V + Servo moteur
- Pas OK : alimentation 9V + moteur continu 9V + Servo moteur (6V max)
Tous les moteurs utilisés doivent fonctionner dans la même gamme de tension! (celle de l'alimentation).
Si vous comptez utiliser des servo-moteurs alors la tension d'alimentation sera de 6V MAX.
Note MCHobby
L'utilisation d'une seule source de tension pour tous les moteurs est une bonne chose pour des débutants. Je suggère d'ailleurs de s'en tenir à une tension de 5 ou 6V pour augmenter la panoplie de moteurs utilisables en même temps.
Utilisation avec MicroPython
Kitronik propose une bibliothèque/pilote MicroPython sur son dépôt Kitronik-Pico-Robotics-Board-MicroPython .
Une fois copié sur la carte MicroPython avec Thonny IDE (idéal pour les plateformes RP2040), vous êtes près à utiliser votre carte robotique.
Moteur Continu
L'exemple suivant permet de piloter un moteur continu.
Moteur Continu sur carte Robotique |
Moteur que l'on contrôle comme suit:
from PicoRobotics import * import time robot = KitronikPicoRobotics() # Numéro moteur, direction ("f"=avant, "r"=arrière), vitesse (0..100) # Moteur 2 en marche avant (forward) à vitesse 50 robot.motorOn( 2, "f", 50 ) time.sleep( 2 ) # Moteur 2 en marche arrière (rear) à vitesse max robot.motorOn( 2, "r", 100 ) time.sleep( 2 ) # Arret moteur 2 robot.motorOff( 2 )
Commande de Servo moteur
Les Servo-moteurs permettent d'asservir l'angle de rotation d'un axe entre 0 et 180°. Ce sont des moteurs idéaux pour créer des bras articulés, des animatroniques, commande de gouvernail, etc car ils peuvent revenir à leur positions de départ et adopter l'amplitude angulaire souhaitée (dans les limites des caractéristiques du moteur).
Ces moteurs utilisent presque exclusivement une tension d'alimentation entre 5 et 6V.
Servo-moteur sur carte Robotique |
Le servo-moteur branché sur la sortie Servo #4 se pilote comme suit:
from PicoRobotics import * import time robot = KitronikPicoRobotics() # Numéro Servo (1..8), degree (0..180) # Servo Moteur 4 à 90 degres robot.servoWrite( 4, 90 ) time.sleep( 2 ) # Servo Moteur 4 à 30 degres robot.servoWrite( 4, 30 ) time.sleep( 2 ) # Servo Moteur 4 à 150 degres robot.servoWrite( 4, 150 )
Commande de moteur pas-à-pas
Les moteurs pas-à-pas sont contrôlés à l'aide de deux bobines (coils en anglais), il faut donc deux sorties moteurs pour contrôler le moteur pas-à-pas.
Servo-moteur sur carte Robotique |
Truc et astuce: Les moteurs bipolaires ont 4 fils. Pour identifier les bobines, il faut utiliser un multimètre et mesurer la résistance entre les paires de fils. Les bonnes paires correspondant à une bobine présenterons une résistance (sinon elle sera infinie)
Le moteur pas-à-pas le plus courant présente généralement 200 pas par révolution.
Ce type de moteur est commandé en pas!
Le script suivant fait avancer le moteur de 100 pas (donc 1/2 tour) avec une pause de 30ms entre deux pas consécutifs. Le délai minimum est de 20 ms sinon il est impossible de vaincre l'inertie du moteur (et le rotor n'accroche pas le champs magnétique).
from PicoRobotics import * import time robot = KitronikPicoRobotics() # Numéro moteurs pas-à-pas (1..2), direction( "f"=avant, "r"), vitesse=20 (délai en ms) # Moteur pas-à-pas 1, marche avant, 200 pas, 30ms entre les pas robot.step( 1, "f", 200, 35 ) # Moteur pas-à-pas 1, marche arriere, 400 pas, 90ms entre les pas (donc plus lent) robot.step( 1, "r", 400, 90 )
Ressources
Voici différents liens permettant d'accéder aux produits décris dans cet article.
Écrire un commentaire