![]() |
| 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