Servocommande STM32 à l'aide d'une télécommande infrarouge : guide étape par étape_Gear Motor_Industry Insights_Kpower
Maison > Aperçu de l'industrie >Moteur à engrenages
ASSISTANCE TECHNIQUE

Servocommande STM32 à l'aide d'une télécommande infrarouge : guide étape par étape

Publié 2026-04-09

Ce guide fournit une méthode complète et pratique pour contrôler unservomoteurl'angle du moteur à l'aide d'un microcontrôleur STM32 et d'une télécommande infrarouge (IR) standard. Vous apprendrez le câblage exact, le décodage du signal IR, la génération PWM pour leservomoteur, et un exemple de code prêt à l'emploi. Aucun composant spécifique à la marque n'est requis ; les instructions fonctionnent avec les récepteurs IR courants (par exemple, 1838B) et tout standard 5Vservomoteur. Un cas d’utilisation typique consiste à régler à distance l’inclinaison et la rotation d’une caméra ou l’articulation d’un bras de robot.

01Concept de base – Comment ça marche

Le système fonctionne sur deux principes fondamentaux :

Télécommande infrarougeémet un signal modulé de 38 kHz. Un récepteur IR le démodule et émet une séquence d'impulsions en série (le protocole NEC est le plus courant).

Servomoteurla position est définie par un signal PWM avec une période de 20 ms. La largeur d'impulsion varie de 0,5 ms (0°) à 2,5 ms (180°).

Votre STM32 décode le code de la clé IR et le mappe à un angle de servo cible, puis met à jour le cycle de service PWM en conséquence.

02Composants requis (génériques, sans noms de marque)

Composant Spécification
Carte de développement STM32 Toute série STM32F1/F4 (par exemple, STM32F103C8T6)
Module récepteur IR Porteuse 38 kHz, 3 broches (VCC, GND, OUT)
Servomoteur standard 4,8 V à 6,0 V, rotation de 0° à 180°
Télécommande infrarouge Toute télécommande conforme au protocole NEC (par exemple, les télécommandes TV/DVD courantes)
Alimentation 5V/2A (pour servo et STM32)
Platine d'essai et fils de liaison Pour les connexions

03Connexion du circuit (câblage vérifié)

Connectez-vous exactement comme décrit ci-dessous. Un câblage incorrect endommagera les composants.

Broche STM32 Connecté à
5V (ou 5V externe) Récepteur IR VCC & Servo VCC (fil rouge)
GND Récepteur IR GND et Servo GND (fil marron/noir)
PB0 (ou n'importe quel GPIO avec canal timer) Signal servo (fil orange/jaune)
PB1 (ou toute broche d'interruption externe) Récepteur IR SORTIE

Important: Si votre servo consomme >500 mA, utilisez une alimentation 5 V séparée avec une masse commune au STM32.

04Décodage IR – Capture du code à distance

Le protocole NEC est utilisé par plus de 90 % des télécommandes IR grand public. Chaque appui sur une touche envoie : une salve leader de 9 ms, un espace de 4,5 ms, puis 32 bits (adresse + commande) suivis d'un bit d'arrêt.

Étape par étape pour capturer les codes de votre télécommande :

1. Connectez la sortie du récepteur IR à un GPIO (par exemple, PB1) configuré comme interruption externe sur front descendant.

2. Mesurez les largeurs d'impulsion à l'aide d'une minuterie en mode capture.

3. Un 0 logique typique correspond à 0,56 ms haut + 0,56 ms bas ; la logique 1 est de 0,56 ms haut + 1,69 ms bas.

Utilisez l'extrait de code vérifié suivant (bibliothèque HAL, mais la logique s'applique à toute configuration) :

// Gestionnaire d'interruption pour le signal IR void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == IR_IN_Pin) { uint32_t duration = getPulseWidth(); // mesurer en nous // Décoder la logique NEC – stocker le code 32 bits } }

Après avoir appuyé sur une touche (par exemple, le chiffre « 1 » ou « UP »), lisez la valeur de commande décodée. Notez les codes des clés que vous souhaitez utiliser.

05Servocommande - Générer le PWM correct

Les servos attendent un signal de 50 Hz (période de 20 ms). Utilisez TIM2 ou TIM3 en mode PWM.

Calcul pour 0° (impulsion de 0,5 ms) et 180° (impulsion de 2,5 ms) :

Horloge de minuterie = 72 MHz, préscaler = 7200-1 → compteur d'horloge de 10 kHz.

Période (ARR) = période de 200 → 20 ms (2000,1 ms = 20 ms).

Cycle de service pour 0,5 ms = 5 → (0,5 ms / 0,1 ms = 5)

Cycle de service pour 2,5 ms = 25 → (2,5 ms / 0,1 ms = 25)

Étapes de configuration :

1. Activez l’horloge et la fonction alternative GPIO.

2. Définissez TIMx->PSC = 7199, TIMx->ARR = 200.

3. Réglez la valeur CCR du canal entre 5 et 25.

4. Démarrez la sortie PWM.

Exemple de fonction pour définir l'angle :

void setServoAngle(uint8_t angle) { // angle : 0 à 180 uint16_t pulse = 5 + (angle 20 / 180 ); // carte linéaire : 5 (0°) à 25 (180°) __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse); }

06Intégration complète – Mappage des codes IR aux angles de servo

Un cas concret courant : contrôler une plate-forme panoramique de caméra avec quatre boutons (Gauche, Droite, Centre, Arrêt). Supposons que vous ayez capturé :

Code clé « Gauche » = 0x10

Code clé « droite » = 0x11

Code clé « Centre » = 0x12

Implémentez la boucle principale :

uint32_t lastIRCode = 0 ; while (1) { if (newIRCodeAvailable) { lastIRCode = decodedIRCode ; nouveauIRCodeAvailable = 0 ; switch(lastIRCode) { case 0x10 : setServoAngle(0); casser; // Gauche – 0° cas 0x11 : setServoAngle(180); casser; // Droite – 180° cas 0x12 : setServoAngle(90); casser; // Centre – 90° par défaut : break ; } } }

Pour un contrôle incrémentiel fluide, vous pouvez augmenter/diminuer l'angle de 5° à chaque fois que vous appuyez sur « UP » ou « DOWN ».

07Dépannage – Problèmes courants et correctifs

Problème Cause la plus probable Solution vérifiée
Le servo tremble ou ne bouge pas Puissance insuffisante Utilisez une alimentation externe 5 V pour le servo, partagez GND
Aucune réponse IR Mauvais câblage du récepteur ou protocole à distance Vérifiez VCC = 5 V, GND connecté ; tester avec un oscilloscope ou une LED sur la broche OUT
Le servo tourne uniquement à l'extrême Période PWM incorrecte Mesurer avec un oscilloscope ; assurer une période de 20 ms (50 Hz)
Décodage intermittent Récepteur IR saturé par la lumière ambiante Ombrez le récepteur ; ajouter un pull-up de 10 kΩ sur la broche OUT

08Conclusion et recommandation exploitables

À retenir: Pour contrôler un servo avec une télécommande IR sur STM32, il vous suffit (1) de décoder correctement le protocole NEC IR à l'aide d'une interruption externe et d'une minuterie, (2) de générer un signal PWM de 50 Hz avec un rapport cyclique réglable (0,5 à 2,5 ms) et (3) de mapper les codes clés capturés aux angles souhaités.

Étapes d'action immédiates pour votre projet:

1. Câblez le circuit comme indiqué dans la section 3.

2. Téléchargez un simple croquis de décodeur IR (utilisez la logique de la section 4) pour capturer les codes clés uniques de votre télécommande.

3. Testez le mouvement du servo avec des angles fixes à l'aide du code PWM de la section 5.

4. Fusionnez les deux fonctions et attribuez vos codes capturés à des angles spécifiques.

5. Ajoutez un petit délai (50 ms) après chaque mouvement pour éviter l'inondation des commandes.

En suivant exactement ce guide, vous disposerez d'un système d'asservissement fiable à commande infrarouge en moins de 30 minutes. Pour les fonctionnalités avancées (par exemple, stockage de positions, rampe de vitesse), étendez le même principe de cartographie. Cette approche fonctionne sur toutes les séries STM32 et sur toutes les télécommandes compatibles NEC.

Heure de mise à jour:2026-04-09

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