L298N Stepper Motor Driver Controller Board for Arduino

From air
Revision as of 11:06, 10 May 2013 by Donsez (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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)
Motor Driver Controller Board for Arduino SKU 120542 driving Wild Trumper
Motor Driver Controller Board for Arduino SKU 120542 driving driving Robotic Base LynxMotion A4WD1


Base robot LynxMotion A4WD1
Configuration 1


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


Programme de test

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


Test

Projets @ AIR

Liens