Open form

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

CechaMinTypoweMaxJednostka
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

  1. #!/usr/bin/python
  2. import RPi.GPIO as GPIO
  3. import time
  4. import signal
  5.  
  6. from PiSoftPwm import *
  7.  
  8. #print 'Go_1...'
  9. #frequency = 1.0 / self.sc_1.GetValue()
  10. #speed = self.sc_2.GetValue()
  11.  
  12. class Motor():
  13. def __init__(self):
  14. # MC33932 pins
  15. self.PWMA = 25
  16. self.PWMB = 22
  17. self._IN1 = 23
  18. self._IN2 = 24
  19. self._IN3 = 17
  20. self._IN4 = 27
  21.  
  22. # Initialize PWMA PWMB
  23. GPIO.setmode(GPIO.BCM)
  24. GPIO.setup(self.PWMA, GPIO.OUT)
  25. GPIO.setup(self.PWMB, GPIO.OUT)
  26. GPIO.output(self.PWMA, True)
  27. GPIO.output(self.PWMB, True)
  28.  
  29. # Initialize PWM outputs
  30. self.OUT_1 = PiSoftPwm(0.1, 100, self._IN1, GPIO.BCM)
  31. self.OUT_2 = PiSoftPwm(0.1, 100, self._IN2, GPIO.BCM)
  32. self.OUT_3 = PiSoftPwm(0.1, 100, self._IN3, GPIO.BCM)
  33. self.OUT_4 = PiSoftPwm(0.1, 100, self._IN4, GPIO.BCM)
  34.  
  35. # Close pwm output
  36. self.OUT_1.start(0)
  37. self.OUT_2.start(0)
  38. self.OUT_3.start(0)
  39. self.OUT_4.start(0)
  40.  
  41. self.frequency = 0.01
  42. self.duty = 60
  43.  
  44. def Setting(self, frequency, duty):
  45. self.frequency = frequency
  46. self.duty = duty
  47.  
  48. def Go_1(self):
  49. self.OUT_1.changeBaseTime(self.frequency)
  50. self.OUT_2.changeBaseTime(self.frequency)
  51. self.OUT_1.changeNbSlicesOn(self.duty)
  52. self.OUT_2.changeNbSlicesOn(0)
  53.  
  54. def Back_1(self):
  55. self.OUT_1.changeBaseTime(self.frequency)
  56. self.OUT_2.changeBaseTime(self.frequency)
  57. self.OUT_1.changeNbSlicesOn(0)
  58. self.OUT_2.changeNbSlicesOn(self.duty)
  59.  
  60. def Go_2(self):
  61. self.OUT_3.changeBaseTime(self.frequency)
  62. self.OUT_4.changeBaseTime(self.frequency)
  63. self.OUT_3.changeNbSlicesOn(0)
  64. self.OUT_4.changeNbSlicesOn(self.duty)
  65.  
  66. def Back_2(self):
  67. self.OUT_3.changeBaseTime(self.frequency)
  68. self.OUT_4.changeBaseTime(self.frequency)
  69. self.OUT_3.changeNbSlicesOn(self.duty)
  70. self.OUT_4.changeNbSlicesOn(0)
  71.  
  72. def Stop(self):
  73. self.OUT_1.changeNbSlicesOn(0)
  74. self.OUT_2.changeNbSlicesOn(0)
  75. self.OUT_3.changeNbSlicesOn(0)
  76. self.OUT_4.changeNbSlicesOn(0)
  77.  
  78. if __name__=="__main__":
  79. motor=Motor()
  80. # Called on process interruption. Set all pins to "Input" default mode.
  81. def endProcess(signalnum = None, handler = None):
  82. motor.OUT_1.stop()
  83. motor.OUT_2.stop()
  84. motor.OUT_3.stop()
  85. motor.OUT_4.stop()
  86. motor.GPIO.cleanup()
  87. exit(0)
  88.  
  89. # Prepare handlers for process exit
  90. signal.signal(signal.SIGTERM, endProcess)
  91. signal.signal(signal.SIGINT, endProcess)
  92. signal.signal(signal.SIGHUP, endProcess)
  93. signal.signal (signal.SIGQUIT, endProcess)
  94.  
  95. motor.Setting(0.01, 60)
  96. print 'motor start...'
  97. while True:
  98. print 'motor A turning forward...'
  99. motor.Go_1()
  100. time.sleep(1)
  101. print 'motor A turning backward...'
  102. motor.Back_1()
  103. time.sleep(1)
  104. print 'motor A stop...'
  105. motor.Stop()
  106. time.sleep(1)
  107. print 'motor B turning forward...'
  108. motor.Go_2()
  109. time.sleep(1)
  110. print 'motor B turning backward...'
  111. motor.Back_2()
  112. time.sleep(1)
  113. print 'motor B stop...'
  114. motor.Stop()
  115. 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ę.

Linki

zapraszamy do współpracy!