Casa > Approfondimenti sul settore >Motoriduttore
SUPPORTO TECNICO

Supporto al prodotto

Servocontrollo STM32 utilizzando un telecomando a infrarossi: guida passo passo

Pubblicato 2026-04-09

Questa guida fornisce un metodo completo e pratico per controllare aservol’angolo del motore utilizzando un microcontrollore STM32 e un telecomando a infrarossi (IR) standard. Imparerai il cablaggio esatto, la decodifica del segnale IR, la generazione PWM perservoe un esempio di codice pronto per l'uso. Non sono richiesti componenti specifici del marchio; le istruzioni funzionano con i comuni ricevitori IR (ad esempio 1838B) e qualsiasi standard 5Vservo. Un caso d'uso tipico è la regolazione remota dell'inclinazione della telecamera o del giunto del braccio di un robot.

01Concetto fondamentale: come funziona

Il sistema funziona su due principi fondamentali:

telecomando IRemette un segnale modulato a 38kHz. Un ricevitore IR lo demodula ed emette una sequenza di impulsi seriali (il protocollo NEC è il più comune).

Servomotorela posizione è impostata da un segnale PWM con un periodo di 20 ms. La larghezza dell'impulso varia da 0,5 ms (0°) a 2,5 ms (180°).

Il tuo STM32 decodifica il codice della chiave IR e lo mappa su un angolo del servo target, quindi aggiorna di conseguenza il ciclo di lavoro PWM.

02Componenti richiesti (generici, senza marchi)

Componente Specifica
Scheda di sviluppo STM32 Qualsiasi serie STM32F1/F4 (ad esempio, STM32F103C8T6)
Modulo ricevitore IR Portante 38kHz, 3 pin (VCC, GND, OUT)
Servomotore standard 4,8 V–6,0 V, rotazione 0°–180°
telecomando IR Qualsiasi telecomando con protocollo NEC (ad esempio, i comuni telecomandi TV/DVD)
Alimentazione elettrica 5 V/2 A (per servo e STM32)
Breadboard e cavi jumper Per le connessioni

03Collegamento del circuito (cablaggio verificato)

Collegare esattamente come descritto di seguito. Un cablaggio errato danneggerà i componenti.

Perno STM32 Connesso a
5 V (o 5 V esterni) Ricevitore IR VCC e Servo VCC (filo rosso)
GND GND del ricevitore IR e GND del servo (filo marrone/nero)
PB0 (o ​​qualsiasi GPIO con canale timer) Segnale servo (filo arancione/giallo)
PB1 (o qualsiasi pin di interruzione esterno) Ricevitore IR USCITA

Importante: Se il tuo servo assorbe >500mA, usa un'alimentazione separata da 5V con terra comune per l'STM32.

04Decodifica IR: acquisizione del codice remoto

Il protocollo NEC è utilizzato da oltre il 90% dei telecomandi IR consumer. Ogni pressione di un tasto invia: un burst leader di 9 ms, uno spazio di 4,5 ms, quindi 32 bit (indirizzo + comando) seguiti da un bit di stop.

Passo dopo passo per acquisire i codici del telecomando:

1. Collegare l'OUT del ricevitore IR a un GPIO (ad esempio, PB1) configurato come interruzione esterna sul fronte di discesa.

2. Misurare l'ampiezza dell'impulso utilizzando un timer in modalità di acquisizione.

3. Un tipico 0 logico è 0,56 ms alto + 0,56 ms basso; la logica 1 è alta 0,56 ms + bassa 1,69 ms.

Utilizza il seguente snippet di codice verificato (libreria HAL, ma la logica si applica a qualsiasi configurazione):

// Gestore degli interrupt per il segnale IR void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == IR_IN_Pin) { uint32_t durata = getPulseWidth(); // misura in noi // Decodifica la logica NEC – memorizza il codice a 32 bit } }

Dopo aver premuto un tasto (ad esempio il numero “1” o “UP”), leggere il valore del comando decodificato. Annota i codici delle chiavi che desideri utilizzare.

05Servocontrollo: generazione del PWM corretto

I servi si aspettano un segnale di 50 Hz (periodo di 20 ms). Utilizza TIM2 o TIM3 in modalità PWM.

Calcolo per 0° (impulso da 0,5 ms) e 180° (impulso da 2,5 ms):

Orologio timer = 72 MHz, prescaler = 7200-1 → contatore orologio 10 kHz.

Periodo (ARR) = 200 → periodo di 20 ms (2000,1 ms = 20 ms).

Ciclo di lavoro per 0,5 ms = 5 → (0,5 ms / 0,1 ms = 5)

Ciclo di lavoro per 2,5 ms = 25 → (2,5 ms / 0,1 ms = 25)

Passaggi di configurazione:

1. Abilitare il timer e la funzione alternativa GPIO.

2. Impostare TIMx->PSC = 7199, TIMx->ARR = 200.

3. Impostare il valore CCR del canale tra 5 e 25.

4. Avviare l'uscita PWM.

Funzione di esempio per impostare l'angolo:

void setServoAngle(uint8_t angolo) { // angolo: da 0 a 180 uint16_t impulso = 5 + (angolo 20 / 180); // mappa lineare: da 5 (0°) a 25 (180°) __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, impulso); }

06Integrazione completa: mappatura dei codici IR sugli angoli dei servi

Un caso comune nel mondo reale: controllare una piattaforma panoramica della telecamera con quattro pulsanti (Sinistra, Destra, Centro, Stop). Supponiamo di aver catturato:

Codice tasto “Sinistra” = 0x10

Codice tasto “Destra” = 0x11

Codice tasto “Centro” = 0x12

Implementa il ciclo principale:

uint32_t lastIRCode = 0; while (1) { if (nuovoIRCodeAvailable) { ultimoIRCode = decodificatoIRCode; nuovoIRCodeAvailable = 0; switch(lastIRCode) { case 0x10: setServoAngle(0); rottura; // Sinistra – caso 0° 0x11: setServoAngle(180); rottura; // Destra – 180° caso 0x12: setServoAngle(90); rottura; // Centro – 90° predefinito: interruzione; } } }

Per un controllo incrementale uniforme, è possibile aumentare/diminuire l'angolo di 5° ogni volta che si preme "SU" o "GIÙ".

07Risoluzione dei problemi: problemi comuni e soluzioni

Problema Causa più probabile Soluzione verificata
Il servo trema o non si muove Potenza insufficiente Utilizzare un'alimentazione esterna da 5 V per il servo, condividere GND
Nessuna risposta IR Cablaggio del ricevitore o protocollo remoto errati Verificare VCC=5V, GND collegato; test con oscilloscopio o LED sul pin OUT
Il servo ruota solo fino agli estremi Periodo PWM errato Misurare con l'oscilloscopio; garantire un periodo di 20 ms (50 Hz).
Decodifica intermittente Ricevitore IR saturato dalla luce ambientale Ombreggiare il ricevitore; aggiungi pull-up da 10kΩ sul pin OUT

08Conclusione e raccomandazione attuabili

Da asporto fondamentale: Per controllare un servo con un telecomando IR su STM32, è sufficiente (1) decodificare correttamente il protocollo IR NEC utilizzando un interrupt e un timer esterni, (2) generare un segnale PWM a 50 Hz con ciclo di lavoro regolabile (0,5–2,5 ms) e (3) mappare i codici chiave catturati agli angoli desiderati.

Passaggi di azione immediati per il tuo progetto:

1. Cablare il circuito come mostrato nella Sezione 3.

2. Carica un semplice schizzo del decodificatore IR (usa la logica nella Sezione 4) per acquisire i codici chiave univoci del tuo telecomando.

3. Testare il movimento del servo con angoli fissi utilizzando il codice PWM della Sezione 5.

4. Unisci entrambe le funzioni e assegna i codici acquisiti ad angoli specifici.

5. Aggiungere un piccolo ritardo (50 ms) dopo ogni movimento per evitare l'inondazione dei comandi.

Seguendo esattamente questa guida, avrai un servosistema affidabile controllato a infrarossi in meno di 30 minuti. Per funzionalità avanzate (ad esempio, memorizzazione di posizioni, rampa di velocità), estendere lo stesso principio di mappatura. Questo approccio funziona su tutte le serie STM32 e su qualsiasi telecomando compatibile con NEC.

Tempo di aggiornamento: 09-04-2026

Alimentare il futuro

Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.

Invia una e-mail a Kpower
Invia richiesta
+86 0769 8399 3238
 
kpowerMap