Pubblicato il

Come controllare Stepper Motore Passo Passo con Raspberry Pi – Lezione 4

Premessa:

In questo tutoriale spiegheremo come controllare uno Stepper noto anche come motore passo passo con la nostra Raspberry Pi. Utilizzeremo lo stesso integrato visto nelle precedenti lezioni L293D.

LISTA DEI MATERIALI:

Schema e parti Hardware

lezione4raspberrypi

N.B  Utilizzare i colori dei cavi per identificarli, non la posizione dalla quale emergono dal motore.

Si noti che il cavo rosso del motore passo-passo non è collegato a nulla.

Software

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)

enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24

GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)

GPIO.output(enable_pin, 1)

def forward(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 1, 0)
    time.sleep(delay)
    setStep(0, 1, 1, 0)
    time.sleep(delay)
    setStep(0, 1, 0, 1)
    time.sleep(delay)
    setStep(1, 0, 0, 1)
    time.sleep(delay)

def backwards(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 0, 1)
    time.sleep(delay)
    setStep(0, 1, 0, 1)
    time.sleep(delay)
    setStep(0, 1, 1, 0)
    time.sleep(delay)
    setStep(1, 0, 1, 0)
    time.sleep(delay)

def setStep(w1, w2, w3, w4):
  GPIO.output(coil_A_1_pin, w1)
  GPIO.output(coil_A_2_pin, w2)
  GPIO.output(coil_B_1_pin, w3)
  GPIO.output(coil_B_2_pin, w4)

while True:
  delay = raw_input("Delay between steps (milliseconds)?")
  steps = raw_input("How many steps forward? ")
  forward(int(delay) / 1000.0, int(steps))
  steps = raw_input("How many steps backwards? ")
  backwards(int(delay) / 1000.0, int(steps))

Cosa bisogna sapere

Eccitando le bobine nel giusto ordine, il motore viene azionato. Il numero di passi che il motore passo-passo contiene in una rotazione di 360 gradi è in realtà il numero di denti della cremagliera.
Usando Il motore ha 8 punti, sappiamo che incorpora anche un riduttore di 1:64 il che significa che ha bisogno di 8 x 64 = 512 punti.
In questa lezione, non usiamo la connessione Red comune. Questo collegamento è fornito solo se si utilizza un diverso tipo di circuito di pilotaggio che non permette la corrente in ogni bobina deve essere invertita. Avere una connessione centro di ogni bobina significa che è possibile eccitare il lato sinistro o destro della bobina, e ottenere l’effetto di invertire il flusso di corrente senza dover utilizzare un circuito che può invertire la corrente.
Poiché stiamo usando un L293D che è molto bravo a invertire la corrente, non abbiamo bisogno di questa connessione comune, siamo in grado di fornire corrente in entrambe le direzioni per ciascuna delle bobine.