Contrôle du servomoteur Raspberry Pi

Controle du servomoteur Raspberry Pi
Controle du servomoteur Raspberry Pi

En plus des moteurs pas à pas, il existe également des servomoteurs petits et bon marché. Le contrôle des servomoteurs Raspberry Pi est très simple et grâce à la petite taille et au poids, ils sont utilisés dans de nombreux domaines.
Contrairement aux moteurs pas à pas, les servomoteurs peuvent être contrôlés avec un seul GPIO.

Dans ce didacticiel, je vais montrer un exemple d’utilisation de Python pour contrôler un ou plusieurs servomoteurs.

Matériels requis

Bien sûr, il est possible d’alimenter le servomoteur avec une source d’alimentation externe, mais cela n’a de sens que lors de l’utilisation de plusieurs moteurs. Pour ça, batteries rechargeables/ des piles ordinaires seraient toujours nécessaires.

Installer

Dans la plupart des cas, les couleurs du servo sont les suivantes et sont connectées au Pi:

Noir – vient à GND (broche 6) du Pi
Rouge – vient à 3V3 (broche 1) du Pi
Jaune / Orange – vers une broche GPIO libre (par exemple, GPIO17, broche 11)

Servomoteur Raspberry Pi Anschluss

Si vous voulez jouer en toute sécurité, vous pouvez définir une résistance ~ 1 kΩ entre la broche de données (jaune / orange) et le Pi. Normalement, ce n’est pas nécessaire.

Si le servomoteur ne tourne pas correctement, cela peut également influer sur l’alimentation du Raspberry Pi (il suffit de regarder la fiche technique, ce que le moteur consomme). Dans un tel cas, une source d’alimentation externe est logique (généralement de 4 à 6 V).

Logiciel de contrôle des servomoteurs Raspberry Pi

Contrairement aux moteurs pas à pas, les servomoteurs n’occupent pas de nombreuses broches GPIO pour commander un mouvement. Pour cela, la rotation est contrôlée par la durée de l’impulsion.

L’angle du moteur est réglé sur la longueur de l’impulsion, donc PWM est particulièrement utile, qui envoie des signaux répétitifs à intervalles réguliers (le Raspberry Pi Bibliothèque Python doit être installé).

Soit on démarre python (sudo python) ou ouvrez un nouveau script (sudo nano servomotor.py) avec le contenu suivant:

import RPi.GPIO as GPIO
import time

servoPIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN, GPIO.OUT)

p = GPIO.PWM(servoPIN, 50) # GPIO 17 for PWM with 50Hz
p.start(2.5) # Initialization
try:
  while True:
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(12.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(2.5)
    time.sleep(0.5)
except KeyboardInterrupt:
  p.stop()
  GPIO.cleanup()

Si le servomoteur tremble un peu alors qu’il ne bouge pas, vous pouvez suspendre l’impulsion avec ChangeDutyCycle(0)

Pour les servomoteurs et leurs cartes de commande, l’indication de la période et du rapport cyclique est généralement Fiche technique. Dans l’exemple d’un MG996R nous avons ce qui suit: La période est 20ms longue. En outre, un cycle d’utilisation compris entre 5% et 10% de la période devrait. Ainsi, la durée d’impulsion est entre 1 ms et 2 ms. Habituellement, les servos peuvent tourner entre 0 et 180 °. Nous devons donc ajuster la longueur d’impulsion entre les deux. Une longueur de 1,5 ms (7,5%) donne ainsi un angle de 90 °. Et tout cela avec une précision de 50x par seconde (50Hz).

Si cela vous dérange que le servo (SG90) ne puisse pas tourner à 360 °, il y a un « pirater« .

  • AZDelivery 5 x Micro Servo Motor 9G Compatible avec SG90 pour RC Robot Hélicoptère/Avion Compatible avec Arduino et Raspberry Pi Incluant Un E-Book!
    ✅AZ-Delivery Micro-servomoteur compatible avec SG90 avec une efficacité et une puissance élevées. Ce type de micro-servos est applicable pour : Ailes rigides, hélicoptères, KT, planeurs, petits robots, bras de robot et autres modèles. ✅ La vitesse de fonctionnement de ce servomoteur RC est de 0,1 s / 60 degrés, et sa plage de tension est de 4,8 V ~ 6,0 V. ✅ Avec ses dimensions (L x l x H) de 22,2 mm x 11,8 mm x 31 mm, ce servomoteur RC AZ-Delivery est très compact et facile à connecter, car il dispose d'un circuit intégré pour contrôler son mouvement. ✅ Ce petit micro servo pratique compatible avec SG90 est le choix parfait pour les débutants qui veulent faire bouger les choses sans avoir à construire un contrôleur de moteur avec feedback et engrenage. ✅ Ce produit comprend un e-book qui contient des informations utiles pour commencer votre projet, il aide à une installation rapide et permet de gagner du temps lors de la configuration. Nous proposons une série d'exemples d'applications, des instructions d'installation complètes et des bibliothèques.
  • ANGEEK PCA9685 16 canaux 12 bits PWM Servomoteur moteur pilote I2C Module IIC Interface pour robot Arduino et Raspberry Pi
    Il est compatible avec 5 V, de sorte que vous pouvez le contrôler à partir d'un microcontrôleur de 3,3 V tout en conduisant jusqu'à 6 V en toute sécurité (ce qui est très utile pour contrôler des LED blanches ou bleues avec une tension de sortie de 3,4 et plus). Vous pouvez connecter 16 servomoteurs simultanément (les connecteurs servo sont légèrement plus larges que 0,1") avec 4 groupes de connecteurs à 3 broches. Chaque sortie a une résolution de 12 bits. Résolution d'environ 4US à un taux de rafraîchissement de 60 Hz pour les servomoteurs Parfait pour les engrenages de direction, robots, LED, moteurs et autres appareils. Nos produits sont garantis 2 ans. Veuillez nous envoyer un e-mail, si vous avez des questions, nous sommes à votre disposition.
  • MMOBIEL Kit de micro-servomoteur SG90 de 9 g pour drone RC/voiture/avion/hélicoptère/véhicules/robots/compatible avec les projets Arduino et Raspberry Pi, vis et 3 bras de servomoteur inclus
    Fonctions Type d'interface Compatible avec l'interface JR & FUTABA. Assemblé avec soin pour vous offrir la meilleure expérience possible lors du contrôle de votre machine télécommandée. Spécifications:Vitesse de fonctionnement sans charge0,09 ± 0,01 s/60° à 4,8 V ;couple de décrochage(4,8 V):17,5 oz/pouce/1kg/cm, type:Contrôleur analogique, Tension de fonctionnement 4,8 V-6,0V, déviation angulaire de déplacement à gauche et à droite:6 °,Déviation de centrage :≤ 1°,Angle maximal 120°,Position neutre:1500 μsec,Largeur de bande morte:7 μsec, Sens de rotation:Sens antihoraire (900→2 100 μsec),Plage de largeur d’impulsion:900→2 100 μsec,Plage de temp de fonctionnement : 10 ℃~50℃ Compatible avec les drones télécommandés, hélicoptères, voitures, bateaux et toutes sortes de jouets RC et de projets de loisirs. Peut également être utilisé avec tout type de système à distance, notamment le projet Arduino, Raspberry Pi, Futaba, JR, Sanwa et Hitec. Le set comprend 1 x Micro-servomoteur SG90 de 9 G, 1 x 3 câbles colorés (Marron / Jaune / Rouge) avec fiche de connecteur Futaba, 3 x bras de direction à cornet pour servomoteur, 3 x vis en acier inoxydable de différentes tailles 9 mm / 5 mm