Publié 2026-04-29
Ce n'est que lorsque les conditions matérielles sont remplies que le lecteur peut être réalisé. Le microcontrôleur 51 produit un PWM standard, qui est un signal de modulation de largeur d'impulsion, et peut contrôler l'angle de braquage. L'étape de réglage principale consiste à générer un signal PWM avec une période de 20 ms et un temps de haut niveau compris entre 0,5 ms et 2,5 ms. Le rapport cyclique correspond à une rotation de 0° à 180°. Cet article fournit le schéma complet de connexion du circuit et de configuration du code.
La rotation de l'appareil à gouverner est déterminée par la largeur d'impulsion du signal de commande. Les servos standards, tels que SG90 et MG995R, ont les exigences suivantes :
période de signal:20 ms(50 Hz)
La relation entre le temps de haut niveau et l'angle:
0,5ms → 0°
1,0 ms → 45°
1,5ms → 90°
2,0 ms → 135°
2,5 ms → 180°
Concernant les exigences de sortie du microcontrôleur 51, l'une est que n'importe quel port d'E/S peut générer un signal PWM, et l'autre est que ce processus de génération doit contrôler avec précision la durée de son niveau.. Concernant la fréquence de l'oscillateur à cristal, il est suggéré qu'elle soit soit de 11,0592 MHz, soit de 12 MHz. Le but de ceci est de permettre à la minuterie de chronométrer avec précision.
Lorsque le servo fonctionne, son courant est relativement important. À vide, le courant est compris entre 100 mA et 200 mA. En cas de décrochage, le courant peut atteindre plus de 500 mA. Il est absolument interdit d'obtenir l'alimentation directement du port E/S du microcontrôleur 51, ni d'obtenir l'alimentation de la broche 5V de la carte pédagogique. Sinon, une réinitialisation se produira ou la puce sera brûlée.
Méthode de connexion standard:
1. ligne de signalisation: Connectez-vous à n'importe quel port d'E/S du microcontrôleur (tel que P1.0)
2. La borne positive, qui est VCC, doit être connectée à une alimentation externe de 5 V, telle que le module de stabilisation de tension LM2596, et à une batterie de 4,8 V à 6 V.

3. L'électrode négative, c'est-à-dire GND, doit être dans le même état fondamental que le GND du microcontrôleur, c'est-à-dire que l'électrode négative de l'alimentation doit être connectée au GND de la carte de développement.
Le cas de référence concernant YPMFG est qu'un passionné d'électronique a utilisé le STC89C52RC pour piloter le servo MG995R. Au début, il obtenait directement l'alimentation de la carte de développement, provoquant le scintillement de l'écran. Plus tard, il a été remplacé par deux accus 18650 connectés en série, puis réduit à 5,5 V pour l'alimentation. Après cela, le servo a fonctionné sans problème et sans interférence.
La logique de base consiste à utiliser une minuterie pour générer une interruption de 100 μs et à contrôler le temps de haut niveau en accumulant le nombre d'interruptions.
étapes de code(Prenons comme exemple un oscillateur à cristal de 12 MHz) :
#inclurecracherservomoteur= P1^0 ; // Nombre de caractères non signés de la broche de signal = 0 ; // Nombre d'interruptions char non signé high_time = 15 ; // 1,5 ms correspond à 90° (15×100μs) void Timer0_Init() { TMOD = 0x01; // Mode 1, minuterie 16 bits TH0 = 0xFE ; // Valeur initiale de 100 μs (12 MHz : 65536-100=65436→0xFF9C) TL0 = 0x0C ; EA = 1 ; // Active l'interruption totale ET0 = 1; // Active l'interruption du timer 0 TR0 = 1; // Démarre le minuteur } void Timer0_ISR() interruption 1 { TH0 = 0xFE; // Recharge la valeur initiale TL0 = 0x0C; compte++; if(count++; servo = 1; // Le niveau haut dure high_time×100μs } else if(count servo = 0; } else { count = 0; // Fin du cycle, réinitialiser le compte } } void main() { Timer0_Init(); high_time = 10; // Définir l'angle : 10→45°, 15→90°, 20→135° while(1); }
Les impulsions sont générées à l'aide de _nop_() ou de boucles de retard, mais l'utilisation du processeur est élevée et l'angle n'est pas précis. Exemple:
servo = 1 ; delay_us(1500); // Servo de haut niveau 1,5 ms = 0 ; delay_ms(18.5); // Temps de cycle restant
Inconvénients : Incapable de gérer d’autres tâches en même temps, l’erreur de l’oscillateur à cristal a un impact important.
Q1 : Que dois-je faire si le microcontrôleur 51 est directement connecté au servo et qu'il n'y a pas de réponse ?
R : Vérifiez s’ils ont un terrain d’entente. Le pôle négatif de l'alimentation du servo et le GND du microcontrôleur doivent être connectés, sinon il n'y aura pas de boucle de signal.
Q2 : Comment résoudre le problème du tremblement du servo et de l’impossibilité de fixer l’angle ?
Améliorez la précision de la minuterie, utilisez un oscillateur à cristal de 12 MHz et réinstallez la valeur initiale toutes les 100 μs, afin que la fréquence d'interruption reste stable.
Q3 : Un port E/S peut-il être utilisé pour contrôler plusieurs servos en même temps ?

A a dit non. Chaque servo nécessite une ligne de signal séparée. Plusieurs servos peuvent partager les fils positifs et de terre, mais l'alimentation doit avoir suffisamment de puissance.
Q4 : Quelle est la raison pour laquelle il tourne réellement à 30° lorsqu'il est réglé à 45° ?
R : Il y a une erreur dans la fréquence de l’oscillateur à cristal ou le temps de haut niveau n’est pas précis. Utilisez un oscilloscope pour mesurer la largeur d'impulsion PWM, puis ajustez la valeur high_time.
Q5 : Conseils pour la rédaction d'un article : Comment prolonger la durée de vie de l'appareil à gouverner ?
R : Pour éviter le blocage, ajoutez un condensateur. Connectez un condensateur électrolytique de 100 μF en parallèle entre les bornes positives et négatives de l'alimentation du servo pour filtrer les ondulations.
Source des données : Manuel de données officiel de chaque appareil à gouverner (édition 2023-2025)
1. Obtenez la forme d'onde mesurée et utilisez un oscilloscope ou un analyseur logique pour vérifier si le cycle PWM est compris dans la plage de 20 ms plus ou moins 0,5 ms.
2. Angle de vérification: Écrivez un niveau haut de 1,5 ms, le servo doit être toujours en position 90°
3. essai de charge: Tournez doucement le bras du servo à la main, la fluctuation de tension ne doit pas dépasser 0,3 V
4. Basculez sous plusieurs angles, donnez-lui une valeur de 1,0 ms, puis une valeur de 1,5 ms, puis une valeur de 2,0 ms en séquence, puis observez attentivement sa rotation pour voir si elle a des caractéristiques fluides.
Tableau de dépannage typique:
Le servo ne tourne pas → Vérifier la masse commune et la tension d'alimentation (4,8 V-6 V)
Tremblements et tremblements → Alimentation insuffisante ou conflits d'interruption (désactiver les interruptions non pertinentes)
Il ne peut pivoter que de 0° et 180°, ce qui fait que le temps de haut niveau ne change pas de manière linéaire. Dans ce cas, la variable count dans le code doit être vérifiée.
À l'aide d'un microcontrôleur 51, à l'aide de deux minuteries et d'un tableau, il peut piloter jusqu'à 8 servos. Les méthodes clés sont :
La minuterie 0 déclenche une interruption de 2,5 millisecondes et contrôle les moments de démarrage de haut niveau des 8 ports d'E/S de manière séquentielle.
Chaque servo est stocké indépendammenthigh_timetableau
Doit utiliser une alimentation à découpage externe de 5 V/10 A ou plus pour l'alimentation électrique
cadre de code:
caractère non signé servo_high[8] = {15,10,20,5,15,12,18,8} ; //Valeur d'impulsion de chaque servo non signé char current_servo = 0; //Dans l'interruption, le servo précédent est abaissé et le servo actuel est relevé.
L'utilisation du processeur de cette solution est d'environ 40 % et elle peut toujours gérer des tâches simples telles que l'analyse des clés.
Avec un microcontrôleur 51, il est tout à fait capable de piloter le servo. Les principaux facteurs de succès sont une alimentation indépendante, une synchronisation précise, c'est-à-dire une interruption de 100 μs et une connexion à la terre commune. Pour les débutants, vous devez commencer avec un seul servo, un oscillateur à cristal de 12 MHz et une solution d'interruption de minuterie, et éviter d'utiliser directement la fonction de retard.
Exécuter la liste de contrôle maintenant:
1. Préparez une alimentation régulée de 5 V/1 A ou plus ou une batterie de 4,8 V.
2. Écrivez le code d'initialisation de la minuterie (interruption de 100 μs)
3. Utilisez un multimètre pour mesurer les tensions positives et négatives du servo (aucune charge ne doit être inférieure à 4,5 V)
4. Testez d'abord la position 90° (impulsion de 1,5 ms), puis développez-la à d'autres angles.
Conseils pour la rédaction de l'article : Si le microcontrôleur est réinitialisé pendant le fonctionnement du servo, connectez immédiatement un condensateur de 470 µF en parallèle à l'extrémité d'alimentation du servo et raccourcissez la longueur du cordon d'alimentation (moins de 20 cm). Suivez ce guide et vous pourrez obtenir un contrôle précis de l'angle en 30 minutes.
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.