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.
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.
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)
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.
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.
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
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.
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()
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.
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).
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
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.