Le pilote MX1508 est l'un des pilotes les moins chers pour faire fonctionner des moteurs à courant continu avec un courant maximum de 2 ampères. Les petites dimensions et la configuration simple sont les caractéristiques positives de ce module.
Le MX1508 est un pilote de moteur à double pont complet qui permet de connecter simultanément deux moteurs à courant continu.
Ce pilote dispose d'un circuit de protection contre la température qui désactive le pilote en cas de surchauffe. Les fonctionnalités de ce module sont les suivantes :
Ce capteur possède 10 broches :
/* MX1508 DC MOTOR DRIVER MODULE modified on 25 Sep 2020 by Saeed Olfat @ Electropeak Home */ void setup() { pinMode(8, OUTPUT); //IN2 pinMode(9, OUTPUT); //IN1 } void loop() { // Full speed forward digitalWrite(8, HIGH); digitalWrite(9, LOW); delay(3000); // Full speed backward digitalWrite(8, LOW); digitalWrite(9, HIGH); delay(3000); // 0 to 100% speed in forward mode for (int i=0;i<256;i++) { digitalWrite(8, HIGH); analogWrite(9, i); delay(20); } delay(50); // 0 to 100% speed in backward mode for (int i=255;i<0;i--) { digitalWrite(8, LOW); analogWrite(9, i); delay(20); } delay(50); }
Comme vous pouvez le voir dans le code, le moteur avance d'abord pendant 3 secondes et recule pendant 3 secondes. Ensuite le moteur s'arrête et sa vitesse augmente de 0 à 100% en marche avant avec une accélération constante, puis le même mouvement s'effectue en marche arrière.
#include <MX1508.h> #define PINA 9 #define PINB 10 #define NUMPWM 2 // MX1508 schematics(in Chinese) can be found here at: http://sales.dzsc.com/486222.html /* * MX1508(uint8_t pinIN1, uint8_t pinIN2, DecayMode decayMode, NumOfPwmPins numPWM); * DecayMode must be FAST_DECAY or SLOW_DECAY, * NumOfPwmPins, either use 1 or 2 pwm. * I recommend using 2 pwm pins per motor so spinning motor forward and backward gives similar response. * if using 1 pwm pin, make sure its pinIN1, then set pinIN2 to any digital pin. I dont recommend this setting because * we need to use FAST_DECAY in one direction and SLOW_DECAY for the other direction. */ MX1508 motorA(PINA,PINB, FAST_DECAY, NUMPWM); void setup() { Serial.begin(115200); } /* * Ramp up to pwm = 100, by increasing pwm by 1 every 50 millisecond. * then ramp down to pwm = -100, by decreasing pwm every 50 millisecond. * positive value pwm results in forward direction. * negative value pwm results in opposite direction. */ void loop() { // put your main code here, to run repeatedly: static unsigned long lastMilli = 0; static bool cwDirection = true; // assume initial direction(positive pwm) is clockwise static int pwm = 1; if(millis()-lastMilli > 50){ // every 50 millisecond if (cwDirection && pwm++ > 100 ) { cwDirection = false; } else if (!cwDirection && pwm-- < -100) { cwDirection = true; } motorA.motorGo(pwm); lastMilli = millis(); Serial.println(motorA.getPWM()); // we can just print pwm but just showing that member function getPWM() works. } }