Raspberry Pi Motor Driver Board v1.0 to sterownik silników na bazie układu scalonego podwójnego mostka H Freescale MC33932, który może kontrolować obciążenia indukcyjne o natężeniu do 5,0 A na pojedynczy mostek. Pozwala sterować dwoma silnikami DC za pomocą Raspberry Pi B/B+/A+ i Pi 2 Model B, niezależnie kontrolując ich prędkość i kierunek.
Sterownik silników obsługuje bardzo szeroki zakres napięcia wejściowego 6V~28V. Poza tym, znajdujący się na płytce konwerter DC/DC również obsługuje bardzo szeroki zakres napięcia wejściowego, a także zasila Raspberry Pi z 5V przy maksymalnym natężeniu 1000mA. Jeden zasilacz wystarczy zatem zarówno do napędzania silników, jak i zasilania Raspberry Pi.
Kup Teraz |
Charakterystyka
- Ochrona przeciwzwarciowa wyjścia (VPWR lub GND)
- Ograniczenie nadprądowe (regulacja) przez wewnętrzny PWM o stałym czasie wyłączenia
- Zmniejszenie wartości granicznej prądu zależnego od temperatury
- Kompatybilny z Raspberry Pi
Specyfikacja techniczna
Cecha | Min | Typowe | Max | Jednostka |
---|---|---|---|---|
Napięcie robocze | 6 | / | 28 | VDC |
Wyjście DC/DC | / | 5 V / 1000 mA | / | |
Natężenie wyjściowe (dla każdego kanału) | / | 2 (ciągła praca) | 5 (szczyt) | A |
Częstotliwość PWM | / | / | 11 | kHz |
Zakres obciążenia wyjściowego | 0 | / | 100 | % |
Napięcie wejścia logicznego | -0.3 | / | 7 | V |
Temperatura robocza | -40 | / | 120 | °C |
Wymiary | 91 x 56.15 x 32 | mm |
Przegląd sprzętu
- J1: złącze wejścia.
- J2: złącze wyjścia sterownika silników.
- EN,FT: Zworki do sterowania EN i wykrywania błędów. W przypadku zwarcia zworki EN, sygnał EN zostanie zmapowany na pin D4, można sterować wyjściem mostku H lub zresetować błąd przez pin D4. W przypadku zwarcia zworki FT sygnał błędu zostanie zmapowany na pin D3, a błąd można odczytać z eteru pinu D3.
- IO: zworka do wyboru poziomu napięcia logicznego.
- Zasilanie: Nakładkę zasila się z J1(złącze wejścia DC). Zakres napięcia wejściowego może być ustawiony do 6Vdc ~ 28Vdc. Konwerter DC/DC może konwertować napięcie wejściowe DC na 5Vdc napięcie wyjściowe w celu zasilania układy logicznego. Konwerter DC/DC może również zasilać płytkę mikrokontrolera (Arduino/Seeeduino) z pinu "5V" przy maksymalnym natężeniu prądu 100mA.
- Interfejs silnika:Out 1 i Out 2 (Out 3 i Out 4) podłącz Motor A(B) dla silnika DC.
Uwaga Nie dotykaj układu scalonego mostka H lub płytki PCB podczas pracy. Ich temperatura może wynieść nawet 100 stopni w przypadku pracy z pełnym obciążeniem. |
Wykorzystanie
To demo wykorzystuje Raspberry Pi B, aby pokazać, jak sterownik Raspberry Pi Motor Driver Board v1.0 może być wykorzystywany do sterowania silnikiem prądu stałego do przodu i do tyłu.
Montaż sprzętu
- Raspberry Pi B oraz Raspberry Pi Motor Driver Board v1.0
- Montaż sprzętu jak wskazano na obrazku
Podłącz do sieci i do zasilania.
Oprogramowanie
- Pobierz Motor_Driver.py oraz PiSoftPwn.py do tego samego folderu. Poniżej znajduje się kod Motor_Driver.py.
#!/usr/bin/python import RPi.GPIO as GPIO import time import signal from PiSoftPwm import * #print 'Go_1...' #frequency = 1.0 / self.sc_1.GetValue() #speed = self.sc_2.GetValue() class Motor(): def __init__(self): # MC33932 pins self.PWMA = 25 self.PWMB = 22 self._IN1 = 23 self._IN2 = 24 self._IN3 = 17 self._IN4 = 27 # Initialize PWMA PWMB GPIO.setmode(GPIO.BCM) GPIO.setup(self.PWMA, GPIO.OUT) GPIO.setup(self.PWMB, GPIO.OUT) GPIO.output(self.PWMA, True) GPIO.output(self.PWMB, True) # Initialize PWM outputs self.OUT_1 = PiSoftPwm(0.1, 100, self._IN1, GPIO.BCM) self.OUT_2 = PiSoftPwm(0.1, 100, self._IN2, GPIO.BCM) self.OUT_3 = PiSoftPwm(0.1, 100, self._IN3, GPIO.BCM) self.OUT_4 = PiSoftPwm(0.1, 100, self._IN4, GPIO.BCM) # Close pwm output self.OUT_1.start(0) self.OUT_2.start(0) self.OUT_3.start(0) self.OUT_4.start(0) self.frequency = 0.01 self.duty = 60 def Setting(self, frequency, duty): self.frequency = frequency self.duty = duty def Go_1(self): self.OUT_1.changeBaseTime(self.frequency) self.OUT_2.changeBaseTime(self.frequency) self.OUT_1.changeNbSlicesOn(self.duty) self.OUT_2.changeNbSlicesOn(0) def Back_1(self): self.OUT_1.changeBaseTime(self.frequency) self.OUT_2.changeBaseTime(self.frequency) self.OUT_1.changeNbSlicesOn(0) self.OUT_2.changeNbSlicesOn(self.duty) def Go_2(self): self.OUT_3.changeBaseTime(self.frequency) self.OUT_4.changeBaseTime(self.frequency) self.OUT_3.changeNbSlicesOn(0) self.OUT_4.changeNbSlicesOn(self.duty) def Back_2(self): self.OUT_3.changeBaseTime(self.frequency) self.OUT_4.changeBaseTime(self.frequency) self.OUT_3.changeNbSlicesOn(self.duty) self.OUT_4.changeNbSlicesOn(0) def Stop(self): self.OUT_1.changeNbSlicesOn(0) self.OUT_2.changeNbSlicesOn(0) self.OUT_3.changeNbSlicesOn(0) self.OUT_4.changeNbSlicesOn(0) if __name__=="__main__": motor=Motor() # Called on process interruption. Set all pins to "Input" default mode. def endProcess(signalnum = None, handler = None): motor.OUT_1.stop() motor.OUT_2.stop() motor.OUT_3.stop() motor.OUT_4.stop() motor.GPIO.cleanup() exit(0) # Prepare handlers for process exit signal.signal(signal.SIGTERM, endProcess) signal.signal(signal.SIGINT, endProcess) signal.signal(signal.SIGHUP, endProcess) signal.signal (signal.SIGQUIT, endProcess) motor.Setting(0.01, 60) print 'motor start...' while True: print 'motor A turning forward...' motor.Go_1() time.sleep(1) print 'motor A turning backward...' motor.Back_1() time.sleep(1) print 'motor A stop...' motor.Stop() time.sleep(1) print 'motor B turning forward...' motor.Go_2() time.sleep(1) print 'motor B turning backward...' motor.Back_2() time.sleep(1) print 'motor B stop...' motor.Stop() time.sleep(1)
- Włącz ten program. LED1, LED2 na Raspberry Pi Motor Driver Board v1.0 będą zapalać się naprzemiennie; LED3, LED4 także będą zapalać się na zmianę.
Oznacza to, że Out 1 oraz Out 2 (Out 3 oraz Out 4) łączą Motor A(B) do przodu i do tyłu.
- Zjawisko prezentuje się następująco:
Konsola szeregowa:
Raspberry Pi Motor Driver Board v1.0: zielona dioda LED oraz niebieska dioda LED zapalą się na zmianę.