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ę.