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:

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.

Aucun commentaire