- zawiera kontroler mikrokrokowy typu DRV8821, który integruje dwa pełne mostki H z tranzystorami MOSFET,
- dopuszczalny prąd uzwojeń wynosi 1,5 A, przy napięciu zasilania 8...32 V,
- sterowanie odbywa się w standardowej konwencji STEP/DIR/EN.
Strukturę wewnętrzną układu DRV8821 pokazano na rysunku 1. Zawiera on kontroler mikrokroku z podziałem 1/1, 1/2, 1/4 oraz 1/8 a także układ zabezpieczeń. Układ konfigurowany jest sprzętowo, a sterowanie odbywa się w standardowej konwencji STEP/DIR/EN.
Budowa i działanie
Schemat nakładki został pokazany na rysunku 2. Dzięki niej możliwe jest sterowanie dwoma niezależnymi silnikami krokowymi podłączonymi do złączy MS1, MS2. Zasilanie silników z zakresu 8...28 V jest oddzielone od Raspberry Pi i musi być doprowadzone do złącza PWR. Kondensatory filtrujące CE1...CE4 zapewniają podstawowe filtrowanie napięcia zasilania silników, transil TVS zabezpiecza U1 przed skutkami przepięć.
Rezystory RA1, RA2...RD1, RD2 ustalają maksymalny prąd uzwojeń, zgodnie ze wzorem:
I = Vref / 5 × Rx1||Rx2
gdzie:
- Vref – napięcie odniesienia wyprowadzeń ABVRF/CDVRF i wynosi ok. 2,5 V
Płynna regulacja prądu odbywa się za pomocą dzielników R1/RM1, R2/RM2. Kondensatory C3, C4 to elementy przetwornicy polaryzującej mostki H. Zasilanie części logicznej U1 podłączone jest do napięcia 3,3 V Raspberry.
Wszystkie sygnały sterujące podłączone są do złącza GPIO i muszą być generowane programowo. Standardowo są to sygnały:
- ENx (ENABLE) – stan niski załącza tranzystory mostka,
- STPx (STEP) – narastające zbocze generuje krok indeksera,
- DIRx (DIR) – zmienia kierunek wirowania,
- RESx (RESET) – stan niski kasuje logikę indeksera i wyłącza mostki.
Sygnały konfiguracyjne to:
- MSxx (MicroSTEP) – określa pracę mikrokrokową zgodnie z tabelą 1,
- DECx (Decay) – sygnał trybu hamowania, stan niski aktywuje tryb slow decay-brake (zwieranie uzwojeń silnika), stan wysoki to tryb mixed rozpoczynający się trybem fast decay-reverse (hamowanie przeciwprądem), a kończący się trybem slow decay-brake (zwieranie uzwojeń).
Układ uzupełnia złącze magistrali I²C w standardzie Grove.
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej o wymiarach zgodnych z płytką Raspberry Pi, której schemat pokazano na rysunku 3.
Montaż jest typowy i nie wymaga opisu, należy tylko zwrócić uwagę na poprawne przylutowanie padu termicznego układu U1. Zmontowana nakładka nie wymaga uruchamiania. W zależności od typu silnika należy sprawdzić wartość rezystorów układu pomiaru prądu RAx...RDx i ewentualnie skorygować ich wartość zgodnie z notą DRV8821.
Sterowanie silnikami odbywa się po konfiguracji GPIO przez programowe generowanie sygnałów konfiguracyjnych i impulsów kroku STP. Prosty skrypt testowy w Pythonie dla silnika MS1 pokazano na listingu 1.
import RPi.GPIO as GPIO
from time import sleep
# SLP & Mx config
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT) #EN1
GPIO.setup(27, GPIO.OUT) #DIR1
GPIO.setup(22, GPIO.OUT) #STP1
GPIO.setup(5, GPIO.OUT) #RES1
GPIO.setup(26, GPIO.OUT) #DEC1
GPIO.setup(13, GPIO.OUT) #M10
GPIO.setup(19, GPIO.OUT) #M11
GPIO.output(5, GPIO.LOW) #RES1 pulse
sleep(0.2)
GPIO.output(5, GPIO.HIGH)
sleep(0.2)
GPIO.output(26, GPIO.LOW) #DEC1 slow/mixed
GPIO.output(17, GPIO.LOW) #EN DRV
GPIO.output(27, GPIO.LOW) #DIR set
GPIO.output(13, GPIO.LOW) #MS10=0
GPIO.output(19, GPIO.LOW) #MS11=0, 1/1 step
x=0
while x < 1440:
print("STEP: ",x)
GPIO.output(22, GPIO.LOW) # STP+
GPIO.output(22, GPIO.HIGH)
sleep(0.01)
x=x+1
GPIO.output(17, GPIO.HIGH) #EN DRV
GPIO.output(5, GPIO.LOW) #RES DRV
GPIO.cleanup()
Dla sprawdzenia drugiego silnika wystarczy w skrypcie zmienić numery wyprowadzeń sterujących GPIO.
Adam Tatuś, EP
- R1, R2: 5,6 kΩ (SMD0603)
- R3, R4: 4,7 kΩ (SMD0805)
- C1, C2, C3: 0,1 μF/50 V ceramiczny (SMD0805)
- CE1, CE2, CE3, CE4: 100 μF/50 V elektrolityczny Low ESR
- C4: 10 nF/50 V ceramiczny (SMD0805)
- C5: 0,47 μF/10 V ceramiczny (SMD0805)
- C6: 0,1 μF/10 V ceramiczny (SMD0805)
- U1: DRV8821DCA (HTSSOP48)
- GPIO: złącze IDC żeńskie 2×20
- I²C: złącze Grove kątowe
- MS1, MS2: SIP4 2,54 mm kątowe
- PWR: złącze DG 5 mm 2 piny
- RA1, RA2, RB1, RB2, RC1, RC2, RD1, RD2, : 1 Ω (SMD1206) dobrać do prądu silnika
- RM1, RM2: potencjometr montażowy 20 kΩ (RV0.2)
- TVS: transil 33 V SMAJ28A (SMB_D)