Sterownik dwóch mikrosilników krokowych do Pi Zero

Sterownik dwóch mikrosilników krokowych do Pi Zero

Zaprezentowany projekt to nakładka ze sterownikiem dwóch mikrosilników krokowych dla Raspberry Pi. Zrezygnowano z zastosowania specjalizowanych driverów silników krokowych w postaci układów scalonych na rzecz gotowych modułów zgodnych ze standardem StepStick stosowanych np. w drukarkach 3D.

Podstawowe parametry:
  • wymaga zamontowania gotowych sterowników zgodnyh z StepStick,
  • dostosowana do modułów z układami: A4988, DRV8825, TMC2208, TMC2226,
  • płytka o wymiarach zgodnych z Raspberry Pi Zero,
  • konfiguracja poprzez magistralę I²C.

Użycie gotowego, wymiennego modułu, oprócz niższej ceny spowodowanej popularnością rozwiązania, umożliwia wybór optymalnych parametrów sterownika dla dołączonego silnika oraz sposobu sterowania mikrokrokowego. Takie rozwiązanie ułatwia też ewentualną wymianę uszkodzonego modułu, a jak wiemy, takie rzeczy się niestety zdarzają…

Przykładowe sterowniki zgodne z StepStick zostały pokazane na fotografii 1.

Fotografia 1. Przykładowe moduły driverów silników zgodne z StepStick

W kolejności od lewej znajdują się moduły z układami: A4988, DRV8825, TMC2208, TMC2226. Moduły są zgodne mechanicznie, mają ujednolicony sposób sterowania sygnałami EN/DIR/STEP, różnią się dostępną liczbą mikrokroków wbudowanego indeksera oraz możliwością konfiguracji poprzez interfejs szeregowy w przypadku modułów TMC22xx. Przyporządkowanie wyprowadzeń zestawiono w tabeli 1.

Moduły są wzajemnie zamienne, ale należy zwrócić uwagę na wyprowadzenie 10, na którym DRV8825 sygnalizuje usterkę, a dla pozostałych modułów jest to wyprowadzenie zasilania logiki.

Wyprowadzenia 2...6 należy sterować w różny sposób, ale odbywa się to już programowo. Dotyczy to sygnałów wyboru mikrokroku lub obniżonego poboru mocy. Moduły TMC22xx mają możliwość konfiguracji przez port szeregowy, ale nie jest ona stosowana w zaprezentowanym rozwiązaniu.

Zestawienie nie uwzględnia wszystkich dostępnych modułów, przed wybraniem konkretnego modelu należy sprawdzić zgodność sprzętową i uwzględnić zmiany programowe. Poszczególne płytki różnią się zakresem zasilania i maksymalnym prądem drivera, liczbą i zakresem dostępnych mikrokroków sekwencera, co w skrócie pokazuje tabela 2.

Z praktycznych uwag warto sprawdzić szczegółowo dokumentację StepSticków z TMC22xx ze względu na pewną liczbę dostępnych wersji sprzętowych.

Budowa i działanie

Schemat nakładki został pokazany na rysunku 1. Możliwe jest zastosowanie dwóch niezależnych modułów StepStick. Sygnały sterujące bezpośrednio silnikami: ENx(ENABLE), STPx(STEP), DIRx(DIR), RESx(RESET) oraz FLTx(FAULT), podłączone są do wyprowadzeń GPIO Pi Zero, co umożliwia ich szybkie generowanie. Zwory ZW1, ZW2 umożliwiają zmianę funkcji wyprowadzenia 10. W położeniu 1-2: A4988/TMC22xx doprowadzają do wyprowadzenia 10 zasilanie logiki (V33), w położeniu 2-3: DRV8825 wyprowadzają i polaryzują sygnał FLTx.

Rysunek 1. Schemat ideowy nakładki sterownika silników

Sygnały konfigurujące mikrokroki MSxx(MicroSTEP) oraz sygnały obniżonego poboru mocy SLPx(SLEEP) podłączone są poprzez ekspander GPIO-I²C U1 typu PCA8574 i dostępne są pod adresem 0x27 magistrali. Umożliwia to ich konfigurację programową.

Zwory SW11, SW12 służą do ręcznego ustalenia konfiguracji mikrokroków, która może być odczytana przez ekspander U1. Należy zwrócić uwagę na różną funkcję wyprowadzenia 4 w przypadku układu TMC22xx.

Montaż i uruchomienie

Nakładka została zmontowana na dwustronnej płytce drukowanej o wymiarach zgodnych z Raspberry Pi Zero, ale oczywiście może być stosowana także z innymi wersjami komputerka. Schemat płytki PCB został pokazany na rysunku 2.

Rysunek 2. Schemat płytki PCB

Zmontowana nakładka nie wymaga uruchamiania, należy jedynie zalutować zwory ZW1, ZW2 w zależności od posiadanych modułów StepStick. Napięcie zasilania silników doprowadzone jest do złącza PWR. Sterowanie silnikami odbywa się po konfiguracji GPIO i rejestrów I²C poprzez programowe generowanie impulsów kroku STP.

Prosty skrypt testowy w Pythonie pokazano na listingu 1.

Listing 1. Skrypt testowy dla PCA9634

import RPi.GPIO as GPIO
import smbus
from time import sleep
bus = smbus.SMBus(1)
# SLP & Mx config
bus.write_byte(0x27, 0x88)
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT) #EN
GPIO.setup(27, GPIO.OUT) #DIR
GPIO.setup(22, GPIO.OUT) #STP
GPIO.setup(5, GPIO.OUT) #RES
GPIO.setup(16, GPIO.IN) #FLT DRV8825
GPIO.output(5, GPIO.LOW) #RES pulse
sleep(0.2)
GPIO.output(5, GPIO.HIGH)
sleep(0.2)
GPIO.output(17, GPIO.LOW) #EN DRV
GPIO.output(27, GPIO.LOW) #DIR set
x=1
while x < 49:
print("STEP: ",x)
GPIO.output(22, GPIO.LOW) # STP+
GPIO.output(22, GPIO.HIGH)
sleep(0.2)
x=x+1
GPIO.cleanup()
bus.write_byte(0x27, 0x00)

Dla sprawdzenia drugiego silnika wystarczy w skrypcie zmienić numery linii sterujących GPIO. Poprzez odpowiednią modyfikację wpisu do rejestru U1 aktywujemy driver (SLP=1) oraz definiujemy liczbę mikrokroków. Niestety każdy z modułów obsługuje inną liczbę mikrokroków, które nie pokrywają się, dla A4988 ustawienie wejść MSxx=1 ustawia krok 1/16, a dla DRV8825 ta sama konfiguracja ustawia krok 1/32. W przypadku bardziej zaawansowanych modułów TMC nie wszystkie podziały są dostępne, ze względu na ograniczoną liczbę wyprowadzeń Msxx.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603)
  • R1, R2: 4,7 kΩ
  • R3, R4, R5, R6, R7, R8, R9, R11: 10 kΩ
  • R10, R12: 330 Ω
Kondensatory:
  • C1, C3: 0,1 μF/50 V ceramiczny 50 V (SMD0805)
  • CE1, CE2, CE3: 100 μF/50 V elektrolityczny
  • C2, C4, C5: 0,1 μF ceramiczny 16 V (SMD0603)
Półprzewodniki:
  • TSV: transil SMAJ33A (SMB_D)
  • U1: PCA8574PW (TSSOP16)
  • M1, M2: moduł StepStick4988 + gniazdo goldpin 1×8
Pozostałe:
  • GPIO: złącze IDC40 żeńskie 2×20
  • MS1, MS2: listwa goldpin kątowa 1×4
  • SW1, SW2: listwa goldpin 2×3
  • PWR: złącze śrubowe DG381-3.5-2
Artykuł ukazał się w
Elektronika Praktyczna
marzec 2023
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów