Table des matières
MX1508
Caractéristiques du module pilote de moteur MX1508
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 :
- Plage de tension de fonctionnement : 2 à 9,6 V CC.
- Courant de sortie maximum : 1,5 A (crête 2 A)
- Température maximale de fonctionnement : 15 °C
Fiche technique
Brochage du module pilote de moteur MX1508
Ce capteur possède 10 broches :
- Vs : Alimentation du module (entrée – 2V à 9V6)
- GND : terre
- IN1 : Entrée 1
- IN2 : Entrée 2
- IN3 : Entrée 3
- IN4 : Entrée 4
- SORTIE1 : Sortie 1
- SORTIE2 : Sortie 2
- OUT3 : Sortie 3
- OUT4 : Sortie 4
Exemple d 'utilisation
Code arduino Exemple
- exemple_mx1508.ino
/* 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.
Utlisation avec une bibliotheque
Code utilisation librairie MX1508
- LibMX1508.ino
#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. } }