- 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.
- Materiali necessari
- Raspberry Pi (consigliato Raspberry Pi 3B+ o superiore)
- Motore passo-passo (ad es. NEMA 17)
- Modulo driver per motore passo-passo (ad es. DRV8825 o A4988)
- Cavi jumper (connettori DuPont)
- Alimentatore DC 12V
- Breadboard (opzionale)
- Condensatore di disaccoppiamento (ad es. elettrolitico da 100 µF)
- 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.
- Collegare i quattro fili del motore passo-passo ai pin A1, A2, B1 e B2 del modulo driver.
- 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.
- 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.
- 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.
- 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
- 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.