L298N Stepper Motor Driver Controller Board for Arduino: Difference between revisions

From air
Jump to navigation Jump to search
No edit summary
No edit summary
Line 189: Line 189:
* 4
* 4
* 5
* 5
*


<pre>

</pre>


==Test==
* [http://dx.com/p/high-torque-30rpm-12v-dc-geared-motor-91627 High Torque 30RPM 12V DC Geared Motor (SKU 91627)] (works fine)
* [[Base robot LynxMotion A4WD1 Aluminium]] (works fine)
* [[Wild Thumper]] (not enough powerful)


==Projets @ AIR==
==Projets @ AIR==

Revision as of 13:58, 2 May 2013

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


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


Test

Projets @ AIR

Liens