Comment contrôler un servomoteur avec Raspberry Pi : un guide étape par étape_Custom Drive_Industry Insights_Kpower
Maison > Aperçu de l'industrie >Lecteur personnalisé
ASSISTANCE TECHNIQUE

Comment contrôler un servomoteur avec Raspberry Pi : un guide étape par étape

Publié 2026-04-18

Ce guide fournit une procédure complète et pratique pour contrôler un standardservomoteurmoteur à l’aide d’un ordinateur monocarte Raspberry Pi. Vous apprendrez le câblage exact, le code Python et les paramètres PWM nécessaires pour obtenir un contrôle angulaire précis, sur la base de tests réels et de la documentation officielle du matériel.

01Ce dont vous avez besoin – Composants communs (aucune marque requise)

Raspberry Pi (tout modèle avec broches GPIO, par exemple 3B+, 4B ou 5)

Carte MicroSD avec Raspberry Pi OS (Bookworm ou version ultérieure)

Norme 5Vservomoteurmoteur (couramment utilisé dans la robotique de loisir)

Alimentation externe 5 V (2 A ou plus) – la plupartservomoteurs consomment un courant élevé

Fils de liaison (femelle à femelle)

Petit potentiomètre (en option, pour exemple de contrôle manuel)

> Remarque du monde réel: Dans une configuration typique de salle de classe ou d'amateur, les utilisateurs endommagent souvent leur Raspberry Pi en alimentant le servo directement à partir de la broche 5 V. Ce guide montre la méthode d'isolation de puissance correcte.

02Principe de base : comment la position du servo est contrôlée

Un servomoteur standard ne tourne pas en continu. Au lieu de cela, il se déplace vers un angle spécifique (généralement de 0° à 180°) basé sur un signal PWM (Pulse width Modulation). Le Raspberry Pi génère ce signal sur une broche GPIO.

Paramètres critiques (à partir des fiches techniques des servos et de la documentation officielle du Raspberry Pi) :

Fréquence du signal : 50 Hz (période = 20 ms)

Largeur d'impulsion pour 0° : 0,5 ms (rapport cyclique = 2,5 %)

Largeur d'impulsion pour 90° : 1,5 ms (rapport cyclique = 7,5 %)

Largeur d'impulsion pour 180° : 2,5 ms (rapport cyclique = 12,5 %)

Ces valeurs sont des normes industrielles pour la plupart des servos analogiques et numériques. Vérifiez toujours avec la fiche technique de votre servo – de petites variations existent.

03Étape 1 : Câblage – Connexion sûre et correcte

N’alimentez jamais le servo directement à partir de la broche 5 V du Raspberry Pi.Un servo typique peut consommer 200 à 800 mA pendant le mouvement et les courants de crête dépassent 1A. La broche 5 V du Raspberry Pi est directement connectée à l’entrée USB et ne peut fournir qu’environ 500 mA de manière fiable (moins sur les anciens modèles). Tirer davantage de courant peut provoquer une chute de tension, un gel du système ou des dommages permanents.

Câblage correct (testé avec des configurations courantes) :

Fil d'asservissement Connexion
Marron (sol) Terrain d'entente : connectez-vous au Raspberry Pi GNDetalimentation externe GND
Rouge (alimentation, 5 V) Borne positive d'alimentation externe 5 V
Orange/Jaune (Signal) Broche GPIO du Raspberry Pi (par exemple, GPIO18 – broche physique 12)

Pourquoi un terrain d’entente est obligatoire :Le signal de commande du servo (0–3,3 V du Pi) et l'alimentation du servo (5 V provenant d'une alimentation externe) doivent partager une tension de référence. Sans terrain d'entente, le signal devient indéfini et le servo tremblera ou ne bougera pas.

04Étape 2 : Activer PWM sur le Raspberry Pi

Raspberry Pi OS est livré avec Python préinstallé. Il existe deux méthodes fiables pour générer des signaux PWM précis. La méthode recommandée pour les débutants consiste à utiliserRPi.GPIOavec matériel PWM sur des broches spécifiques.

Broches GPIO matérielles compatibles PWM sur l'en-tête Raspberry Pi à 40 broches :

GPIO12 (broche 32) – canal PWM 0

GPIO13 (broche 33) – canal PWM 1

GPIO18 (broche 12) – Canal PWM 0 (le plus couramment utilisé)

GPIO19 (broche 35) – canal PWM 1

树莓派pca9685多路舵机_树莓派控制舵机_树莓派控制360度舵机转动

Activer l'interface PWM (si vous utilisez le matériel PWM) :Aucune étape supplémentaire n'est nécessaire : le matériel PWM est toujours disponible. Pour le logiciel PWM (n'importe quelle broche), aucune configuration n'est requise mais la synchronisation peut être moins stable.

05Étape 3 : Code Python – Contrôle de position exact

Vous trouverez ci-dessous un script Python complet et testé qui déplace le servo selon trois angles (0°, 90°, 180°) avec une pause de 2 secondes entre chacun. Ce code suit la documentation officielle RPi.GPIO.

importer RPi.GPIO comme heure d'importation GPIO # Utiliser la numérotation des broches BCM GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Configurer GPIO18 comme sortie PWM servo_pin = 18 GPIO.setup(servo_pin, GPIO.OUT) # Créer une instance PWM à 50 Hz pwm = GPIO.PWM(servo_pin, 50) pwm.start(0) # Commencer par 0 % de cycle de service défini set_servo_angle(angle): """ Convertir l'angle (0-180) en cycle de service (2,5 à 12,5) Formule : service = (angle / 180)10 + 2,5 Vérifié avec plusieurs fiches techniques servo """ si angle 180 : angle = 180 service = (angle / 180,0)10.0 + 2.5 pwm.ChangeDutyCycle(duty) # Autoriser le servo à atteindre la position time.sleep(0.5) # Arrêter d'envoyer le signal pour réduire la gigue (facultatif) pwm.ChangeDutyCycle(0) time.sleep(0.1) try: while True: print("Moving to 0°") set_servo_angle(0) time.sleep(2) print("Moving to 90°") set_servo_angle(90) time.sleep(2) print("Déplacement à 180°") set_servo_angle(180) time.sleep(2) except KeyboardInterrupt : print("Arrêté par l'utilisateur") pwm.stop() GPIO.cleanup()

Détail clé :Après chaque position, le code définit le rapport cyclique sur 0 % et attend 0,1 seconde. Cela évite une consommation d'énergie continue et réduit la gigue du servo. De nombreux exemples en ligne omettent cela, ce qui entraîne une consommation de courant inutile.

06Étape 4 : Exécuter et tester

Enregistrez le script sousservo_control.py. Dans le terminal, exécutez :

python3 servo_control.py

Comportement attendu :L'arbre du servo tourne à 0°, fait une pause de 2 secondes, se déplace à 90°, fait une pause, se déplace à 180°, puis répète.

Si le servo ne bouge pas :

Vérifiez les points communs – erreur la plus fréquente

Vérifiez que l'alimentation externe est allumée et fournit au moins 5 V.

Confirmez le numéro de broche GPIO (BCM 18 = broche physique 12)

Réduire le temps de sommeil aprèsChangeDutyCycle? Non – le servo a besoin d'environ 300 à 500 ms pour atteindre la position

07Problèmes courants et solutions du monde réel

Problème Cause la plus probable Correctif vérifié
Le servo tremble mais ne tourne pas Courant insuffisant de l’alimentation Utilisez une alimentation de 5 V/2 A ou plus ; ajoutez un condensateur de 1 000 µF sur les rails d'alimentation
Le servo se déplace uniquement vers les extrêmes (0° ou 180°) Plage de cycle de service incorrecte Mesurez la largeur d'impulsion réelle avec un oscilloscope ; ajuster la formule
Raspberry Pi redémarre lorsque le servo bouge Servo alimenté par la broche 5V de Pi Déplacez immédiatement l'alimentation du servo vers une alimentation externe
Gigue sous certains angles Bruit sur la ligne de signal ou synchronisation PWM logicielle Utilisez la broche matérielle PWM (GPIO12/18) ; ajoutez une résistance de 1kΩ en série avec la ligne de signal
Le servo devient très chaud Le cycle de service ne revient jamais à 0 % après le positionnement Ajouterpwm.ChangeDutyCycle(0)comme le montre l'exemple

08Avancé : contrôle manuel avec un potentiomètre

Pour les projets interactifs, vous pouvez lire un potentiomètre analogique à l'aide d'un ADC MCP3008 (puisque Raspberry Pi n'a pas d'entrées analogiques). Cependant, une méthode de test plus simple consiste à utiliser la saisie au clavier :

importer RPi.GPIO comme heure d'importation GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 50) pwm.start(0) def angle_to_duty(angle): return (angle / 180.0) * 10.0 + 2.5 try: while True: cmd = input("Entrez l'angle (0-180) ou 'q' pour quitter : ") if cmd == 'q' : break try : angle = float(cmd) if 0

09Conclusion et recommandations concrètes

Point essentiel répété :Pour contrôler en toute sécurité et avec précision un servo avec un Raspberry Pi, vous devez (1) utiliser une alimentation externe de 5 V pour le servo, (2) connecter une masse commune entre le Pi, le servo et l'alimentation, (3) générer un signal PWM de 50 Hz avec des cycles de service correspondant à des impulsions de 0,5 à 2,5 ms et (4) arrêter le signal PWM (service à 0 %) après chaque mouvement pour réduire la gigue et la consommation d'énergie.

Étapes d'action pour appliquer ce guide :

1. Rassemblez les composants répertoriés ci-dessus – aucune marque spécifique n’est requise, n’importe quel servo 5 V standard fonctionne.

2. Câblez exactement comme indiqué, en revérifiant la connexion à la terre commune.

3. Copiez le script Python et exécutez-le. Observez le servo se déplacer à 0°, 90° et 180°.

4. Modifiez les valeurs d'angle dans le script pour répondre aux besoins de votre projet.

5. Pour tout projet de production ou de longue durée, utilisez toujours le matériel PWM et ajoutez un condensateur électrolytique de 100 à 470 µF sur les lignes d'alimentation du servo pour lisser les pics de tension.

Sources fiables pour une vérification plus approfondie :Documentation officielle du Raspberry Pi (/documentation/computers/os.html#gpio-and-the-40-pin-header) et fiche technique du servomoteur (généralement disponible sur le site Web du fabricant). Référez-vous toujours à la plage de largeur d'impulsion spécifique de votre servo – alors que 0,5 à 2,5 ms est la norme, certains servos utilisent 0,7 à 2,3 ms. Un simple script d'étalonnage qui balaie le servo et enregistre les limites réelles vous donnera une précision parfaite.

Heure de mise à jour:2026-04-18

Alimenter l’avenir

Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.

Courrier à Kpower
Soumettre une demande
Message WhatsApp
+86 0769 8399 3238
 
kpowerCarte