Publié 2026-04-29
Si vous constatez que le servo vibre de manière irrégulière lorsque vous utilisez un Raspberry Pi pour contrôler le servo et qu'il est incapable de rester stable à la position d'angle spécifiée, cette situation n'est généralement pas causée par des dommages au servo lui-même, mais est causée par des problèmes avec le signal de commande ou l'alimentation électrique. Cet article propose un ensemble complet de solutions de dépannage, du logiciel au matériel. Si vous opérez en séquence, plus de 90 % des problèmes de gigue peuvent être résolus en 15 minutes.
1. Vérifiez la capacité d'alimentation. Si le servo vibre, la raison la plus courante est un courant momentanément insuffisant. Lorsqu'un servo standard est démarré, le courant peut atteindre 1 à 2 A, et la sortie maximale de la broche 5 V du Raspberry Pi n'est qu'environ 500 mA. Une alimentation indépendante de 5 V, c'est-à-dire une alimentation de plus de 2 A, doit être utilisée pour alimenter le servo, et le Raspberry Pi GND et l'alimentation du servo GND doivent être mis à la terre ensemble.
2. Confirmez la stabilité du signal PWM : la précision de la forme d'onde générée par les broches PWM du matériel Raspberry Pi (c'est-à-dire GPIO12, GPIO13, GPIO18, GPIO19) est bien plus précise que le PWM simulé par logiciel.. Si vous utilisez le logiciel PWM de RPi.GPIO, les interférences provoqueront une gigue. La priorité doit être donnée à la migration vers le matériel PWM ou à l'utilisation de la bibliothèque pigpio (qui fournit des impulsions précises à la microseconde).
3. Réduisez la fréquence de contrôle et la charge. Pour l'appareil à gouverner, la période PWM typique est de 20 ms, soit 50 Hz. Lorsque la largeur d'impulsion est comprise entre 500 et 2 500 μs, elle correspond à 0 à 180 degrés. Si le cycle de service est mis à jour fréquemment dans le code, par exemple une fois toutes les 1 ms, cela provoquera une surcharge et une gigue dans le circuit interne du servo. L'intervalle de mise à jour doit être contrôlé à plus de 20 ms et il convient d'empêcher que le même angle ne soit écrit en continu dans la boucle.
Cas 1 : L'utilisateur utilise Raspberry Pi 3B+ et connecte le servo MG996R. Le servo continue de trembler lorsque le code est exécuté.
Après vérification, le servo est alimenté par la broche 5V du Raspberry Pi. Après le passage à une alimentation externe 5V/3A, le phénomène de gigue a disparu. La conclusion est la suivante : le Raspberry Pi ne peut pas piloter directement des servos de haute puissance.
Cas 2 : Entre différentes commandes d'angle, le servo faisait un bruit de "grésillement" et tremblait.
L'analyseur logique a détecté que la période de la forme d'onde PWM dérivait entre 18 et 22 millisecondes. Ensuite, je suis passé au PWM matériel de la bibliothèque pigpio, puis la forme d'onde est devenue stable et le problème a été résolu. La conclusion tirée est que le logiciel PWM manque de précision et provoque du jitter.

Les éléments associés nécessaires sont les suivants : Raspberry Pi, un servo responsable de fonctions spécifiques, une alimentation CC 5 V/2 A qui fournit une certaine énergie potentielle électrique et une planche à pain ou un câble de connexion pour connecter divers composants électroniques.
Étapes de câblage:
1. Fil rouge du servo (pôle positif) → pôle positif de l'alimentation externe
2. Le fil marron ou noir du servo, qui est le pôle négatif, doit être connecté au pôle négatif de l'alimentation externe. Dans le même temps, il doit également être connecté à n’importe quelle broche GND du Raspberry Pi.
3. Le fil jaune-orange du servo, qui est le fil de signal, doit être connecté au PWM GPIO du matériel Raspberry Pi, tel que GPIO18.。
4. Il est nécessaire de connecter le pôle négatif de l'alimentation externe au Raspberry Pi GND. Sinon, si le signal n'a pas de niveau de référence, il produira inévitablement une gigue, ce qui entraînera une gigue du signal.。
# Installation : sudo apt install pigpio et sudo systemctl activent pigpiod import pigpio pi = pigpio.pi() pi.set_mode(18, pigpio.OUTPUT) # Définir 50 Hz PWM, plage de largeur d'impulsion 500-2500 μs pi.set_servomoteur_pulsewidth(18, 1500) # Moyen 90 degrés time.sleep(0.5) pi.set_servomoteur_pulsewidth(18, 1000) # 0 degrés # Signal d'arrêt : pi.set_servomoteur_pulsewidth(18, 0)
Le paramètre clé est qu'après chaque commande d'angle, vous devez attendre au moins 20 millisecondes avant d'envoyer la commande suivante pour éviter les conflits de signaux.

Q1 : Que dois-je faire si le servo vibre toujours après avoir été alimenté seul ?
R : Vérifiez la connexion à la terre commune. Lorsque l'extrémité négative de l'alimentation externe n'est pas connectée au GND du Raspberry Pi, le signal reste flottant, provoquant une gigue.
Q2 : Le servo tremble encore légèrement après avoir utilisé le matériel PWM ?
Réduisez la fréquence PWM au milieu de la plage de 40 à 60 Hz. Dans le même temps, assurez-vous qu'il n'y a pas d'autres GPIO dans le code qui fonctionnent fréquemment et provoquent des interférences.
Q3 : La gigue ne se produit que dans une plage d'angle spécifique ?
Si la situation mentionnée en A est la suivante, il est possible que le potentiomètre du servo soit usé, alors le servo doit être remplacé et testé. Si cela est exclu par des tests, il est alors nécessaire de vérifier s'il y a un débordement dans le calcul de la largeur d'impulsion.
Q4 : Comment résoudre le problème de vibration simultanée de plusieurs servos ?
Pour A, pour calculer le besoin total en courant, chaque servo a besoin d'une plage de 1 à 2 ampères. Il est nécessaire d'utiliser une alimentation de 5 volts et un courant supérieur ou égal à IO ampères. Un condensateur électrolytique supplémentaire d'une capacité de 1000 microfarads doit être installé pour le filtrage.
Q5 : Pourquoi est-il facile de trembler lors de l'utilisation du logiciel PWM ?
R : Raspberry Pi Linux est un système non temps réel. Le logiciel PWM sera affecté par la planification du système. Son erreur de largeur d'impulsion atteint ± 200 μs. Il y a des erreurs dans le PWM matériel.。
[ ] L'alimentation du servo est indépendante du Raspberry Pi, et le courant est ≥ 2A ?
[ ] Le pôle négatif de l'alimentation externe et le Raspberry Pi GND sont-ils connectés ?
[ ] La ligne de signal est connectée à l'un des GPIO12/13/18/19 ?
[ ] Le code utilise-t-il pigpio ou utilise-t-il le matériel PWM de câblagePi ?
[ ] Intervalle de mise à jour de l'angle ≥ 20 ms ?
[ ] Vous ne pilotez pas plus de 2 servos de taille moyenne en même temps ?
L'essence du phénomène de gigue dans le servo de commande du Raspberry Pi est la suivante : alimentation électrique insuffisante, manque de précision PWM ou liaison de masse commune manquante. L'alimentation électrique indépendante, la méthode matérielle PWM et la connexion à la terre commune sont les trois principes à toute épreuve pour résoudre ce problème. Il est recommandé de mettre en œuvre immédiatement les mesures suivantes :
1. Retirez le servo et utilisez une alimentation externe 5 V/2 A pour une alimentation séparée.
2. Migrez le code verscochonSortie PWM matérielle de la bibliothèque.
3. Utilisez un multimètre pour mesurer la résistance entre l'alimentation du servo et le Raspberry Pi GND. Ce devrait être 0Ω.
Après avoir mis en œuvre ces trois étapes, 90 % des problèmes de gigue disparaîtront en dix minutes. S'il existe toujours, vérifiez les circonstances particulières dans les questions et réponses ci-dessus une par une. N'oubliez pas : n'essayez jamais d'utiliser un logiciel pour simuler une modulation de largeur d'impulsion pour piloter le servo - c'est la solution la moins fiable.
Heure de mise à jour:2026-04-29
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.