Come controllare un motore passo-passo con un Raspberry Pi

D

Daniel Zhang

Ultimo aggiornamento Aug 17, 2026

  1. Introduzione

Il Raspberry Pi è un single-board computer molto diffuso, ampiamente utilizzato in progetti hobbistici e industriali. Si tratta essenzialmente di un piccolo computer delle dimensioni di una carta di credito. È ampiamente utilizzato in vari progetti, tra cui il controllo di motori passo-passo — un'attività comune nelle applicazioni di controllo del movimento. In questo articolo imparerai come utilizzare il linguaggio di programmazione Python e la libreria RPi.GPIO per controllare un motore passo-passo, insieme alle relative istruzioni di cablaggio.

  1. Materiali necessari
  1. Raspberry Pi (consigliato Raspberry Pi 3B+ o superiore)
  2. Motore passo-passo (ad es. NEMA 17)
  3. Modulo driver per motore passo-passo (ad es. DRV8825 o A4988)
  4. Cavi jumper (connettori DuPont)
  5. Alimentatore DC 12V
  6. Breadboard (opzionale)
  7. Condensatore di disaccoppiamento (ad es. elettrolitico da 100 µF)
  1. Istruzioni di cablaggio

Nota di sicurezza: Collegare sempre i cavi del motore e del driver prima di alimentare il circuito. Verificare attentamente tutti i collegamenti per evitare danni al Raspberry Pi o al modulo driver.

  1. Collegare i quattro fili del motore passo-passo ai pin A1, A2, B1 e B2 del modulo driver.
  2. Collegare il terminale positivo dell'alimentatore a 12V al pin VMOT del modulo driver e il terminale negativo al pin GND. Posizionare un condensatore di disaccoppiamento (ad es. elettrolitico da 100 µF) tra VMOT e GND, il più vicino possibile al modulo driver, per sopprimere i picchi di tensione.
  3. Collegare il pin di alimentazione a 5V del Raspberry Pi (pin fisico 2 o pin 4) al pin VCC del modulo driver e collegare un pin GND (ad es. pin fisico 6) al pin GND del modulo driver.
  4. Collegare i seguenti pin GPIO BCM del Raspberry Pi ai pin corrispondenti del modulo driver:
GPIO Raspberry Pi (BCM) Pin fisico Pin modulo driver
GPIO 17 Pin 11 DIR
GPIO 18 Pin 12 STEP
GPIO 27 Pin 13 MS1
GPIO 22 Pin 15 MS2
GPIO 23 Pin 16 ENABLE

Suggerimento: Il pin ENABLE sulla maggior parte dei moduli A4988/DRV8825 è attivo basso. Portandolo a LOW si abilita l'uscita del driver.

  1. Implementazione del codice Python

Per prima cosa, installare la libreria RPi.GPIO. Inserire i seguenti comandi nel terminale:

sudo apt-get update
sudo apt-get install python3-rpi.gpio

Successivamente, creare un file Python denominato stepper_motor.py e inserire il seguente codice:

import time
import RPi.GPIO as GPIO

# Definizione dei pin (numerazione BCM)
DIR = 17
STEP = 18
MS1 = 27
MS2 = 22
ENABLE = 23

# Impostazione della modalità GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)
GPIO.setup(MS1, GPIO.OUT)
GPIO.setup(MS2, GPIO.OUT)
GPIO.setup(ENABLE, GPIO.OUT)

# Abilitazione del driver e impostazione della direzione
GPIO.output(ENABLE, GPIO.LOW)   # Abilita il driver (attivo basso)
GPIO.output(DIR, GPIO.HIGH)     # Direzione oraria

# Impostazione della modalità di passo in base al modello del driver (ad es. A4988)
GPIO.output(MS1, GPIO.HIGH)     # 1/4 di passo
GPIO.output(MS2, GPIO.LOW)

# Controllo della rotazione del motore
steps = 200
delay = 0.001  # Delay più breve per una velocità maggiore

for _ in range(steps):
    GPIO.output(STEP, GPIO.HIGH)
    time.sleep(delay)
    GPIO.output(STEP, GPIO.LOW)
    time.sleep(delay)

# Pulizia dei GPIO
GPIO.cleanup()

Infine, salvare il file ed eseguirlo nel terminale:

python3 stepper_motor.py
  1. Riepilogo

Questo articolo ha illustrato come utilizzare un Raspberry Pi per controllare un motore passo-passo, incluse le istruzioni di cablaggio e il codice Python con la libreria RPi.GPIO. Seguendo questi passaggi è possibile ottenere facilmente il controllo del motore. Regolare i parametri nel codice (come il numero di passi, il ritardo e le impostazioni di microstepping) in base alle esigenze del proprio progetto.