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

Comment contrôler un micro servomoteur avec un Raspberry Pi : un guide complet

Publié 2026-04-20

Ce guide fournit des instructions étape par étape pour connecter et contrôler un microservomoteurmoteur utilisant un Raspberry Pi. Vous apprendrez le câblage correct, des exemples de code Python et des solutions pratiques aux problèmes courants. Toutes les informations sont basées sur des pratiques électroniques standard et vérifiées par des tests réels.

01Ce dont vous avez besoin avant de commencer

Un Raspberry Pi (n'importe quel modèle avec des broches GPIO, telles que 3B+, 4 ou 5)

Un microservomoteurmoteur (type commun : 9gservomoteur, 3 fils)

Fils de liaison (femelle à femelle)

Source d'alimentation externe 5 V (en option mais recommandée pour un fonctionnement stable)

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

Note de sécurité importante :N'alimentez pas leMicro-servodirectement à partir de la broche 5 V du Raspberry Pi si vous utilisez le servo sous charge ou pendant des périodes prolongées. La sortie 5 V du Pi ne peut fournir qu'environ 500 mA, et unMicro-servopeut tirer 200-400mA pendant le mouvement. Utilisez une alimentation 5 V séparée (par exemple, 4 piles AA ou une banque d'alimentation USB 5 V) et connectez la masse de cette alimentation à la masse du Pi.

02Schéma de câblage (étape par étape)

Suivez exactement ces trois connexions. LeMicro-servoa trois fils :

Marron ou Noir→ Masse (GND)

Rouge→ Alimentation 5 V (alimentation externe ou broche 5 V du Pi pour les tests uniquement)

Orange ou Jaune→ Broche GPIO (par exemple, GPIO18)

Fil de servo Connectez-vous à
Marron/Noir Raspberry Pi GND (broche 6) ET alimentation externe GND
Rouge Positif externe 5 V (ou broche Pi 2 pour les tests de lumière)
Orange/Jaune GPIO18 (broche 12)

Exemple de cas courant :Un amateur a essayé d'alimenter deux micro-servos directement à partir de la broche 5V du Pi. Les servos ont tremblé de manière erratique et le Pi a redémarré. Après avoir ajouté une batterie 5 V séparée (4xAA) et connecté toutes les masses ensemble, les deux servos ont fonctionné sans problème pendant des heures.

03Comment fonctionne un micro servo

Un micro servomoteur contient un moteur à courant continu, un potentiomètre (capteur de position) et un circuit de commande. Il utiliseModulation de largeur d'impulsion (PWM)pour régler l’angle de l’arbre. Le servo attend un signal de 50 Hz (période de 20 ms). La longueur d'impulsion détermine l'angle :

Impulsion de 0,5 ms → 0 degré

Impulsion de 1,5 ms → 90 degrés (centre)

Impulsion de 2,5 ms → 180 degrés

La plupart des micro-servos ont une plage physique d'environ 180 degrés, mais certains sont de 90 ou 270 degrés. Testez toujours d'abord les limites sans charge.

04Configuration du logiciel (système d'exploitation Raspberry Pi)

1. Activez le matériel PWM sur le Raspberry Pi. Ouvrez un terminal et exécutez :

sudo raspi-config

Accédez à : Options d'interface → GPIO distant → Oui → Terminer.

2. Installez la bibliothèque RPi.GPIO (préinstallée sur la plupart des versions du système d'exploitation Raspberry Pi). Pour un contrôle PWM complet, installez pigpio :

sudo apt update sudo apt installer pigpio python3-pigpio sudo systemctl activer pigpiod sudo systemctl démarrer pigpiod

05Code Python de base pour balayer le servo

Créez un fichier nomméservo_sweep.py:

import pigpio import time # Connectez-vous au démon pigpio pi = pigpio.pi() if not pi.connected: print("Le démon Pigpio ne fonctionne pas. Commencez par : sudo pigpiod") exit() # Définir la broche GPIO (en utilisant GPIO18) SERVO_PIN = 18 # Définir la largeur d'impulsion en microsecondes (500 = 0,5 ms, 2500 = 2,5 ms) def set_angle(angle): # Convertir l'angle (0-180) en largeur d'impulsion (500-2500) impulsion = 500 + (angle / 180,0)2000 pi.set_servo_pulsewidth(SERVO_PIN, pulse) essayez : while True : pour l'angle dans la plage (0, 181, 10) : set_angle(angle) time.sleep(0.1) pour l'angle dans la plage (180, -1,-10) : set_angle(angle) time.sleep(0.1) sauf KeyboardInterrupt : print("Stopping...") pi.set_servo_pulsewidth(SERVO_PIN, 0) # Arrêter le signal PWM pi.stop()

Exécutez le code :

sudo pigpiod # s'il n'exécute pas déjà python3 servo_sweep.py

Résultat attendu :Le bras du servo balayera de 0 à 180 degrés et inversement, en faisant une pause de 0,1 seconde à chaque pas de 10 degrés.

06Contrôler le servo avec un potentiomètre (contrôle manuel en temps réel)

Cet exemple vous permet de tourner un potentiomètre pour positionner le servo. Câblez un potentiomètre de 10 kΩ : broche gauche à 3,3 V, broche droite à GND, broche centrale à GPIO17 (entrée ADC). Le Raspberry Pi n'a pas d'entrées analogiques, nous utilisons donc une puce ADC MCP3008 ou une simple méthode de synchronisation RC. Vous trouverez ci-dessous la méthode de synchronisation RC (aucune puce supplémentaire n'est nécessaire).

Connectez un condensateur de 1 μF entre GPIO23 et GND et une résistance de 10 kΩ du GPIO23 à l'essuie-glace du potentiomètre. C’est avancé. Pour plus de simplicité, utilisez un MCP3008 avec SPI. Cependant, un cas courant : de nombreux débutants échouent parce qu’ils essaient de lire directement de l’analogique.Recommandation:Utilisez un ADC peu coûteux comme le MCP3008 ou achetez une carte de servomoteur.

Voici un code fiable utilisant un MCP3008 :

import pigpio import time import spidev spi = spidev.SpiDev() spi.open(0, 0) spi.max_speed_hz = 1350000 def read_adc(channel): si canal 7 : return -1 adc = spi.xfer2([1, (8+channel) 2000 pi.set_servo_pulsewidth(SERVO_PIN, pulse) try: while Vrai : valeur = read_adc(0) # potentiomètre sur la voie 0 angle = (valeur / 1023.0) * 180 set_angle(angle) time.sleep(0.02) sauf KeyboardInterrupt : pi.set_servo_pulsewidth(SERVO_PIN, 0) pi.stop() spi.close()

07Problèmes courants et solutions

Problème Cause la plus probable Solution
Le servo tremble ou ne bouge pas Puissance insuffisante Utilisez une alimentation externe de 5 V (2 A max pour plusieurs servos). Connectez les terrains.
Le servo ne se déplace que vers une extrémité Plage de pouls incorrecte Certains servos ont besoin de 600 à 2 400 μs. Test en code : changez 500 en 600 et 2500 en 2400.
Tremblement au repos Fréquence PWM ou gigue de synchronisation Utilisez pigpio (PWM synchronisé par le matériel) au lieu du PWM logiciel de RPi.GPIO.
Le servo chauffe Courant de décrochage ou signal erroné Débranchez la charge. Vérifiez que les impulsions s'arrêtent après le mouvement (réglée à 0).
Erreur Python "aucun module nommé pigpio" Bibliothèque manquante Courir:sudo pip3 installer pigpioalorssudo apt installer pigpio

08Optimisation pour plusieurs microservos

Pour contrôler jusqu'à 16 micro servos, utilisez une carte pilote PWM dédiée (sans nommer de marques, recherchez "servo driver PWM 16 canaux I2C"). Connectez-le via I2C. Le pilote ne nécessite que deux broches GPIO (SDA/SCL) et une alimentation externe de 5 V. Chaque servo reçoit sa propre broche de signal. Cela élimine la gigue et la charge du processeur.

09Recommandations concrètes

1. Commencez toujours avec un servo et une alimentation externe de 5 V.Testez le code de balayage avant d'ajouter votre propre logique.

2. Utilisez pigpio pour tous les projets de servo.Il fournit une PWM synchronisée par le matériel avec une précision à la microseconde, essentielle pour un mouvement fluide.

3. Réglez l'impulsion du servo sur 0 (arrêt) lorsque vous ne bougez pas.Cela réduit la consommation d'énergie et évite la surchauffe.

4. Ajoutez un condensateur de 1 000 μF aux bornes d'alimentation(positif et masse) près du servo pour lisser les pics de tension.

5. Pour les projets alimentés par piles, utilisez 4 piles AA rechargeables NiMH(4,8 V) ou un UBEC 5 V régulé. N'utilisez pas de 6 V à moins que le servo ne soit conçu pour cela (la plupart des micro servos acceptent 4,8-6,0 V).

10Conclusion

Contrôler un micro servomoteur avec un Raspberry Pi nécessite un câblage correct, une source d'alimentation externe pour un fonctionnement fiable et la bibliothèque pigpio pour des signaux PWM précis. Les étapes principales sont les suivantes : connecter correctement la terre et l'alimentation, utiliser GPIO18 pour PWM, écrire du code Python qui mappe les angles sur des largeurs d'impulsion comprises entre 500 et 2 500 microsecondes et toujours tester d'abord sans charge.

Étapes d'action finales :

Assemblez le circuit avec une batterie 5V séparée.

Installez pigpio et exécutez le code de balayage.

Modifiez le code pour intégrer l'asservissement dans votre propre projet (bras robotique, caméra panoramique ou alimentateur automatique).

Si vous rencontrez de la gigue, passez de RPi.GPIO à pigpio.

Pour plusieurs servos, ajoutez une carte pilote PWM.

En suivant ce guide, vous obtiendrez un contrôle stable et précis de n'importe quel micro servomoteur standard à l'aide de votre Raspberry Pi.

Heure de mise à jour:2026-04-20

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