L298N Stepper Motor Driver Controller Board for Arduino

From air
Revision as of 13:17, 30 April 2013 by Donsez (talk | contribs) (→‎Montage)
Jump to navigation Jump to search
Motor Driver Controller Board for Arduino SKU 120542 driving one High Torque 30RPM 12V DC Geared Motor (SKU 91627) with a Mystery 11.1V 2200mAh Lithium Polymer Rechargeable Battery (SKU 46058)


http://www.dealextreme.com/p/l298n-stepper-motor-driver-controller-board-for-arduino-120542

AKA Keyes L298

Montage


ENA : Commande PWM du moteur A
IN1 : Entrée de commande de sens du pont A
IN2 : Entrée de commande de sens du pont A
IN3 : Entrée de commande de sens du pont B
IN4 : Entrée de commande de sens du pont B
ENB : Commande PWM du moteur B
GND : Masse
+5V : Sortie régulée en 5V


Code de test d'après http://mchobby.be/wiki/index.php?title=Pont-H_L298N

// from http://mchobby.be/wiki/index.php?title=Pont-H_L298N

//-- MOTEUR A --
int ENA=5; //Connecté à Arduino pin 5(sortie pwm)
int IN1=2; //Connecté à Arduino pin 2
int IN2=3; //Connecté à Arduino pin 3

//-- MOTEUR B --
int ENB=6; //Connecté à Arduino pin 6(Sortie pwm)
int IN3=4; //Connecté à Arduino pin 4
int IN4=7; //Connecté à Arduino pin 7


int curDirA=0; // 1=forward, -1=reverse
int curSpeedA=0;
int curDirB=0; // 1=forward, -1=reverse
int curSpeedB=0; 
int batteryLevel;
int batteryNominalLevel=111; // 11.1V with Mystery 11.1V 2200mAh Lithium Polymer Rechargeable Battery (SKU 46058)
int MAX_SPEED=200;
int curAccelerationStep=32;

void setup() {
  configAB();
}

void loop() {
 int i;
 stopAB();
 delay(1000);
 forwardA();
 reverseB();
 for(i=0; i<255; i+=32) {
   speedA(i);
   speedB(i);
   delay(500);
 }
 delay(5000);
 for(i=255; i>0; i-=32) {
   speedA(i);
   speedB(i);
   delay(500);
 }
 stopAB();
 delay(1000);
 forwardB();
 reverseA();
 for(i=0; i<255; i+=32) {
   speedA(i);
   speedB(i);
   delay(500);
 }
 delay(5000);
 for(i=255; i>0; i-=32) {
   speedA(i);
   speedB(i);
   delay(500);
 }
}

void configAB() {
 pinMode(ENA,OUTPUT);
 pinMode(ENB,OUTPUT);
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
}

void stopA() {
  digitalWrite(ENA,LOW);// Moteur A - Ne pas tourner (désactivation moteur)
}

void stopB() {
  digitalWrite(ENB,LOW);// Moteur B - Ne pas tourner (désactivation moteur) 
}

void stopAB() {
  stopA();
  stopB();
  //delay(??);
}


void forwardA() {
 if(curDirA==1) return;
 
 stopA();
 curDirA=1;
 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,HIGH);
}

void reverseA() {
 if(curDirA==-1) return;
 
 stopA();
 curDirA=-1;
 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);
}

void forwardB() {
 if(curDirB==1) return;
 
 stopB();
 curDirB=1;
 digitalWrite(IN3,LOW); 
 digitalWrite(IN4,HIGH);
}

void reverseB() {
 if(curDirB==-1) return;
 
 stopB();
 curDirB=-1;
 digitalWrite(IN3,HIGH); 
 digitalWrite(IN4,LOW);
}

void speedA(int speed) {
  if(curDirA==0) return;
  curSpeedA=(speed>=MAX_SPEED)?MAX_SPEED:speed;
  analogWrite(ENA,curSpeedA);
}

void speedB(int speed) {
  if(curDirB==0) return;
  curSpeedB=(speed>=MAX_SPEED)?MAX_SPEED:speed;
  analogWrite(ENB,curSpeedB);
}

void speedAB(int speed) {
  speedA(speed);
  speedB(speed);
}

void rotate() {
  forwardA();
  reverseB();
}

void antirotate() {
  forwardB();
  reverseA();
}

Pilotage via le moniteur série de l'IDE Arduino

Liste des commandes sur 1 octet

  • s or S
  • f
  • x
  • l
  • r
  • 1
  • 2
  • 3
  • 4
  • 5


Projets @ AIR

Liens