Moduł MX1508 |
- napięcie:
- zasilania 2 - 10V
- sygnału wejściowego (sterującego) 1.8-7V
- prąd wyjściowy:
- ciągły 1,5A
- chwilowy 2,5A
- w trybie czuwania mniej niż 0,1uA
- tryby pracy:
- ruch do przodu
- ruch do tyłu
- stop
- czuwanie
- zabezpieczenie termiczne
- wymiary: 24,7x21x5mm
Moduł ma dwa piny mniej niż w przypadku L298N wymagane do sterowania (czyli cztery). Z drugiej strony jednak wymaga użycia 4 pinów PWM (a L298N dwóch), a tych nie ma za wiele w Arduino. Z kolei porównując ten układ z TB6612FNG, zdecydowanie mniej słychać buczenie silników (przy niskim poziomie wypełnienia PWM). Niepokoić może jedno zdanie ze źródła (2) "There is some discussion on some forums where people describe a few problems with reverse EMF voltage spikes coming back through the system and confusing their micro-controllers".
Piny modułu
Pin(y) | Opis |
---|---|
+ | Plus zasilania 2 - 10V |
- (GND) | Minus zasilania (masa) |
IN1, IN2 | Sterowanie kierunkiem silnika kanału A (sygnał PWM) |
IN3, IN4 | Sterowanie kierunkiem silnika kanału B (sygnał PWM) |
MOTOR-A | Wyjścia kanału A silnika |
MOTOR-B | Wyjścia kanału B silnika |
Sterowanie modułem (H - stan wysoki, L - stan niski, PWM - sygnał PWM)
IN1/IN3 | IN2/IN4 | Działanie silnika |
---|---|---|
H/PWM | L | Maksymalna prędkość określona przez sygnał PWM na wejściu IN1/IN3 zgodnie ze wskazówkami zegara na wyjściu MOTOR-A/MOTOR-B (ruch do przodu) |
L | H/PWM | Maksymalna prędkość określona przez sygnał PWM na wejściu IN2/IN4 przeciwnie do ruchu wskazówek zegara (ruch do tyłu) |
H | H | Hamowanie |
L | L | Tryb czuwania |
Uruchomienie
Tym razem nie znalazłem żadnej biblioteki na githubie, więc napisałem własny kod w katalogu projektu. Docelowo wyniosę go do odrębnej biblioteki. Poniżej zamieszczam przykładowy kod uruchomieniowy, natomiast całość (wraz z kodem obsługi mostka) zamieściłem w repie na bitbukecie. Mostkiem steruje Arduino Uno, natomiast na wyjściu dodane są dwa silniki o dopuszczalnym napięciu zasilania 9V. Na potrzeby układu i własnej wygody, zasilanie modułu czerpię z Arduino (5V). Normalnie jednak powinno to być inne źródło zasilania.
Schemat połączeń |
#include "MX1508.h" #define IN1 9 #define IN2 10 #define IN3 5 #define IN4 6 #define TURN_WITH_BOTH_MOTORS 0 #define MOVE_TIME 2000 #define STOP_TIME 4000 #define MOVE_SPEED 150 MX1508 leftMotor = MX1508(IN1, IN2); MX1508 rightMotor = MX1508(IN3, IN4); void setup() { Serial.begin(9600); motorsStandby(); } void loop() { motorsForward(MOVE_SPEED); delay(MOVE_TIME); motorsBackward(MOVE_SPEED); delay(MOVE_TIME); motorsStop(); delay(STOP_TIME); motorsTurnLeft(MOVE_SPEED); delay(MOVE_TIME); motorsTurnRight(MOVE_SPEED); delay(MOVE_TIME); motorsStop(); delay(STOP_TIME); } void motorsForward(int speed) { Serial.print(F("motorsForward: ")); Serial.println(speed); forward(leftMotor, rightMotor, speed); } void motorsBackward(int speed) { Serial.print(F("motorsBackward: ")); Serial.println(speed); backward(leftMotor, rightMotor, speed); } void motorsTurnLeft(int speed) { Serial.print(F("motorsTurnLeft: ")); Serial.println(speed); left(leftMotor, rightMotor, speed, TURN_WITH_BOTH_MOTORS); } void motorsTurnRight(int speed) { Serial.print(F("motorsTurnRight: ")); Serial.println(speed); right(leftMotor, rightMotor, speed, TURN_WITH_BOTH_MOTORS); } void motorsStop() { Serial.println(F("boatStop")); brake(leftMotor, rightMotor); } void motorsStandby() { standby(leftMotor, rightMotor); }
Uruchomiony moduł |
Logi z terminala |
Źródła:
1) Prawdopodobna specyfikacja MX1508 ;)
2) TUTORIAL FOR ARDUINO MINI DC MOTOR DRIVER DUAL H-BRIDGE PWM CONTROL (L293D)
Brak komentarzy:
Prześlij komentarz