Come controllare un micro servomotore con un Raspberry Pi: una guida completa_Custom Drive_Industry Insights_Kpower
Casa > Approfondimenti sul settore >Guida personalizzata
SUPPORTO TECNICO

Supporto al prodotto

Come controllare un micro servomotore con un Raspberry Pi: una guida completa

Pubblicato 2026-04-20

Questa guida fornisce istruzioni passo passo per collegare e controllare un microservomotore utilizzando un Raspberry Pi. Imparerai il cablaggio corretto, esempi di codice Python e soluzioni pratiche a problemi comuni. Tutte le informazioni si basano su pratiche elettroniche standard e sono verificate con test nel mondo reale.

01Cosa ti serve prima di iniziare

Un Raspberry Pi (qualsiasi modello con pin GPIO, come 3B+, 4 o 5)

Un microservomotore (tipo comune: 9gservo, 3 fili)

Cavi ponticello (femmina-femmina)

Fonte di alimentazione esterna da 5 V (opzionale ma consigliata per un funzionamento stabile)

Un piccolo potenziometro (opzionale, per esempio di controllo manuale)

Nota importante sulla sicurezza:Non alimentare ilMicroservodirettamente dal pin 5V del Raspberry Pi se si utilizza il servo sotto carico o per periodi prolungati. L'uscita a 5 V del Pi può fornire solo circa 500 mA e aMicroservopuò assorbire 200-400 mA durante il movimento. Utilizza un alimentatore separato da 5 V (ad esempio, 4 batterie AA o un power bank USB da 5 V) e collega la terra di tale alimentazione alla terra del Pi.

02Schema elettrico (passo dopo passo)

Segui esattamente questi tre collegamenti. ILMicroservoha tre fili:

Marrone o Nero→ Terra (GND)

Rosso→ Alimentazione 5 V (alimentazione esterna o pin 5 V del Pi solo per test)

Arancione o Giallo→ Pin GPIO (ad esempio GPIO18)

Cavo del servo Connettiti a
Marrone/Nero GND del Raspberry Pi (pin 6) E GND dell'alimentatore esterno
Rosso Positivo esterno da 5 V (o pin Pi 2 per test della luce)
Arancione/Giallo GPIO18 (pin 12)

Esempio di caso comune:Un hobbista ha provato ad alimentare due micro servi direttamente dal pin 5V del Pi. I servi si contrassero in modo irregolare e il Pi si riavviò. Dopo aver aggiunto una batteria separata da 5 V (4xAA) e aver collegato tutte le masse insieme, entrambi i servi hanno funzionato senza problemi per ore.

03Come funziona un micro servo

Un micro servomotore contiene un motore CC, un potenziometro (sensore di posizione) e un circuito di controllo. UtilizzaModulazione di larghezza di impulso (PWM)per impostare l'angolo dell'albero. Il servo si aspetta un segnale di 50Hz (periodo di 20ms). La lunghezza dell'impulso determina l'angolo:

Impulso da 0,5 ms → 0 gradi

Impulso da 1,5 ms → 90 gradi (centro)

Impulso da 2,5 ms → 180 gradi

La maggior parte dei microservi hanno un range fisico di circa 180 gradi, ma alcuni sono di 90 o 270 gradi. Testare sempre prima i limiti senza carico.

04Configurazione del software (sistema operativo Raspberry Pi)

1. Abilita l'hardware PWM sul Raspberry Pi. Apri un terminale ed esegui:

sudo raspi-config

Passare a: Opzioni interfaccia → GPIO remoto → Sì → Fine.

2. Installa la libreria RPi.GPIO (preinstallata sulla maggior parte delle versioni del sistema operativo Raspberry Pi). Per il controllo PWM completo, installa pigpio:

sudo apt update sudo apt install pigpio python3-pigpio sudo systemctl abilita pigpiod sudo systemctl start pigpiod

05Codice Python di base per spazzare il servo

Crea un file denominatoservo_sweep.py:

import pigpio import time # Connettiti al demone pigpio pi = pigpio.pi() if not pi.connected: print("Pigpio daemon not running. Start with: sudo pigpiod") exit() # Imposta il pin GPIO (usando GPIO18) SERVO_PIN = 18 # Definisce la larghezza dell'impulso in microsecondi (500 = 0.5ms, 2500 = 2.5ms) def set_angle(angle): # Converti angolo (0-180) alla larghezza dell'impulso (500-2500) impulso = 500 + (angolo / 180,0)2000 pi.set_servo_pulsewidth(SERVO_PIN, impulso) try: while True: for angolo in range(0, 181, 10): set_angle(angle) time.sleep(0.1) for angolo in range(180, -1,-10): set_angle(angle) time.sleep(0.1) tranne KeyboardInterrupt: print("Arresto...") pi.set_servo_pulsewidth(SERVO_PIN, 0) # Arresta il segnale PWM pi.stop()

Esegui il codice:

sudo pigpiod # se non è già in esecuzione python3 servo_sweep.py

Risultato atteso:Il braccio del servo si muoverà da 0 a 180 gradi e indietro, fermandosi 0,1 secondi ad ogni passo di 10 gradi.

06Controllo del servo con un potenziometro (controllo manuale in tempo reale)

Questo esempio consente di ruotare un potenziometro per posizionare il servo. Collegare un potenziometro da 10 kΩ: pin sinistro a 3,3 V, pin destro a GND, pin centrale a GPIO17 (ingresso ADC). Il Raspberry Pi non dispone di ingressi analogici, quindi utilizziamo un chip ADC MCP3008 o un semplice metodo di temporizzazione RC. Di seguito è riportato il metodo di temporizzazione RC (non è necessario alcun chip aggiuntivo).

Collega un condensatore da 1μF tra GPIO23 e GND e un resistore da 10kΩ da GPIO23 al cursore del potenziometro. Questo è avanzato. Per semplicità, utilizzare un MCP3008 con SPI. Tuttavia, un caso comune: molti principianti falliscono perché provano a leggere direttamente l'analogico.Raccomandazione:Utilizza un ADC economico come MCP3008 o acquista una scheda servoazionamento.

Ecco un codice affidabile che utilizza un MCP3008:

import pigpio import time import spidev spi = spidev.SpiDev() spi.open(0, 0) spi.max_speed_hz = 1350000 def read_adc(canale): if canale 7: return -1 adc = spi.xfer2([1, (8+canale) 2000 pi.set_servo_pulsewidth(SERVO_PIN, impulso) try: while True: valore = read_adc(0) # potenziometro sul canale 0 angolo = (valore / 1023.0) * 180 set_angle(angle) time.sleep(0.02) tranne KeyboardInterrupt: pi.set_servo_pulsewidth(SERVO_PIN, 0) pi.stop() spi.close()

07Problemi comuni e soluzioni

Problema Causa più probabile Soluzione
Il servo si contrae o non si muove Potenza insufficiente Utilizzare un'alimentazione esterna da 5 V (2 A max per più servi). Collegare i terreni.
Il servo si muove solo verso un'estremità Intervallo di impulsi errato Alcuni servi necessitano di 600-2400μs. Test nel codice: modifica da 500 a 600 e da 2500 a 2400.
Tremore a riposo Jitter di frequenza o temporizzazione PWM Utilizza pigpio (PWM temporizzato hardware) invece del PWM software di RPi.GPIO.
Il servo si surriscalda Corrente di stallo o segnale errato Scollegare il carico. Verificare che gli impulsi si interrompano dopo il movimento (impostare a 0).
Errore Python "nessun modulo chiamato pigpio" Biblioteca mancante Correre:sudo pip3 installa pigpioPoisudo apt installa pigpio

08Ottimizzazione per più micro servi

Per controllare fino a 16 micro servi, utilizzare una scheda driver PWM dedicata (senza nominare i marchi, cercare "servo driver PWM a 16 canali I2C"). Collegalo tramite I2C. Il driver richiede solo due pin GPIO (SDA/SCL) e un'alimentazione esterna da 5 V. Ogni servo riceve il proprio pin di segnale. Ciò elimina il jitter e il carico della CPU.

09Raccomandazioni attuabili

1. Inizia sempre con un servo e un alimentatore esterno da 5 V.Testare il codice di scansione prima di aggiungere la propria logica.

2. Usa pigpio per tutti i progetti servo.Fornisce PWM temporizzato tramite hardware con precisione al microsecondo, essenziale per un movimento fluido.

3. Impostare l'impulso del servo su 0 (spento) quando non si è in movimento.Ciò riduce il consumo energetico e previene il surriscaldamento.

4. Aggiungere un condensatore da 1000μF ai terminali dell'alimentatore(positivo e massa) vicino al servo per attenuare i picchi di tensione.

5. Per i progetti alimentati a batteria, utilizzare 4 batterie AA ricaricabili NiMH(4,8 V) o un UBEC regolato da 5 V. Non utilizzare 6 V a meno che il servo non sia classificato per questo (la maggior parte dei micro servi accetta 4,8-6,0 V).

10Conclusione

Il controllo di un micro servomotore con un Raspberry Pi richiede un cablaggio corretto, una fonte di alimentazione esterna per un funzionamento affidabile e la libreria pigpio per segnali PWM accurati. I passaggi principali sono: collegare correttamente terra e alimentazione, utilizzare GPIO18 per PWM, scrivere codice Python che mappa gli angoli su larghezze di impulso comprese tra 500 e 2500 microsecondi e testare sempre prima senza carico.

Passaggi finali dell'azione:

Assemblare il circuito con un pacco batteria da 5 V separato.

Installa pigpio ed esegui il codice di scansione.

Modifica il codice per integrare il servocontrollo nel tuo progetto (braccio robotico, brandeggio della telecamera o alimentatore automatico).

Se riscontri jitter, passa da RPi.GPIO a pigpio.

Per più servi, aggiungi una scheda driver PWM.

Seguendo questa guida, otterrai un controllo stabile e preciso di qualsiasi micro servomotore standard utilizzando il tuo Raspberry Pi.

Tempo di aggiornamento:2026-04-20

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
Messaggio WhatsApp
+86 0769 8399 3238
 
kpowerMap