Con questo progetto andremo a gestire un motore passo-passo 28BYJ-48, usando la scheda di sviluppo FTDI FT232H (di cui esiste una pagina dedicata su questo sito). Il motore passo-passo deve essere collegato ad una scheda di controllo basata sul chipset STMicroelectronics ULN2003.
Il motore passo-passo deve essere collegato alla scheda ULN2003, mentre quest'ultima deve essere collegata alla scheda di sviluppo FTDI FT232H. I connettori di collegamento sono elencati qui di seguito:
Immagine | Scheda FT232H | Scheda ULN2003 |
---|---|---|
AD0 | IN1 | |
AD1 | IN2 | |
AD2 | IN3 | |
AD3 | IN4 | |
+5V | VCC | |
GND | GND |
Per gestire il motore passo-passo, è richiesta la presenza della libreria "PyFTDI".
Il seguente esempio di codice Python fa girare il motore passo-passo prima velocemente, poi lentamente:
from os import environ from pyftdi.gpio import GpioAsyncController import time clockwise = [[0b1000], [0b0100], [0b0010], [0b0001]] def MotorCW(time_s, speed): counts = int(time_s /speed/16) for i in range(counts): for i in range(4): _gpio.write(clockwise[i]) time.sleep(speed) _gpio.write(0) def MotorCCW(time_s, speed): counts = int(time_s /speed/16) for i in range(counts): for i in reversed(range(4)): _gpio.write(clockwise[i]) time.sleep(speed) _gpio.write(0) _ctrl = GpioAsyncController() url = environ.get('FTDI_DEVICE', 'ftdi:///1') _ctrl.configure(url, direction=0b0, frequency=None, initial=0b0) _gpio = _ctrl.get_gpio() _gpio.set_direction(0b1111, 0b1111) try: print("\nFast Clockwise...") MotorCW(20, 0.0020) time.sleep(0.5) print("\nFast Counterclockwise...") MotorCCW(20, 0.0020) time.sleep(0.5) print("\nSlow Clockwise...") MotorCW(20, 0.010) time.sleep(0.5) print("\nSlow Counterclockwise...") MotorCCW(20, 0.010) except KeyboardInterrupt: # Capture keyboard ^C to exit the program print('\nYou terminated the program. The program ends!') _gpio.write(0)