My little place on the web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
projects:steppermotor [2013/01/06 12:42]
elger
projects:steppermotor [2013/01/06 12:44]
elger
Line 29: Line 29:
 <iframe width="​853"​ height="​480"​ src="​http://​www.youtube.com/​embed/​-20p3q9VnIA"​ frameborder="​0"​ allowfullscreen></​iframe>​ <iframe width="​853"​ height="​480"​ src="​http://​www.youtube.com/​embed/​-20p3q9VnIA"​ frameborder="​0"​ allowfullscreen></​iframe>​
 </​html>​ </​html>​
 +
 +====== The code ======
 +<code cpp L298N_driver_test.ino>​
 +// test script
 +// Drive a Motor controller L298N
 +
 +
 +//IN1 IN2 : TTL Compatible Inputs of the Bridge A
 +//In3 In4 :TTL Compatible Inputs of the Bridge B.
 +//ENA ENB:TTL Compatible Enable Input: the L state disables the
 +//bridge A(enable A) and/or the bridge B (enable B).
 +
 +#define ENA  8
 +#define IN1  9
 +#define IN2 10
 +#define IN3 11
 +#define IN4 12
 +#define ENB 13
 +
 +void setup() {
 +  // put your setup code here, to run once:
 +  pinMode(ENA,​ OUTPUT);
 +  pinMode(IN1,​ OUTPUT);
 +  pinMode(IN2,​ OUTPUT);
 +  pinMode(IN3,​ OUTPUT);
 +  pinMode(IN4,​ OUTPUT);
 +  pinMode(ENB,​ OUTPUT);
 +
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ HIGH);
 +
 +}
 +
 +void loop() {
 +  // put your main code here, to run repeatedly: ​
 +  engage();
 +  for (int i = 0 ; i < 50; i++ ) {  ​
 +    //​waveDriveOneFaseOn();​
 +    //​waveDriveTwoFaseOn();​
 +    halfStep();
 +  }
 +  delay(10);
 +  disengage();​
 +  delay(2000);​
 +
 +
 +}
 +
 +void engage() {
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(ENB,​ HIGH);
 +}
 +
 +void disengage() {
 +  digitalWrite(ENA,​ LOW);
 +  digitalWrite(ENB,​ LOW);
 +}
 +
 +void  waveDriveTwoFaseOn() {
 +  //State sequence and output waveforms for the two phase on sequence
 +  // only four steps for one turn
 +  // 0101
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  delayMicroseconds(1000);​
 +
 +  //1001
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  delayMicroseconds(1000);​
 +
 +  //1010
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  delayMicroseconds(1000);​
 +
 +  //0110
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  delayMicroseconds(1000);​
 +}
 +
 +void halfStep() {
 +
 +  //101011
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  digitalWrite(ENB,​ HIGH); ​
 +  delayMicroseconds(1000);​
 +
 +  //000011
 +  digitalWrite(ENA,​ LOW);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  digitalWrite(ENB,​ HIGH);
 +  ​
 +
 +  //110011
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  digitalWrite(ENB,​ HIGH); ​
 +  delayMicroseconds(1000);​
 +
 +  //110000
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ LOW); 
 +  delayMicroseconds(1000);​
 +
 +  //110101
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ HIGH); ​
 +  delayMicroseconds(1000);​
 +
 +
 +  //000101
 +  digitalWrite(ENA,​ LOW);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ HIGH); ​
 +  delayMicroseconds(1000);​
 +
 +
 +  //101101
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ HIGH); ​
 +  delayMicroseconds(1000);​
 +
 +  //101000
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ LOW);   
 +  delayMicroseconds(1000);​
 +}
 +
 +void waveDriveOneFaseOn() {
 +
 +  //000011
 +  digitalWrite(ENA,​ LOW);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ HIGH);
 +  digitalWrite(ENB,​ HIGH); ​  
 +  delayMicroseconds(1000);​
 +
 +  //110000
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ HIGH);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ LOW);   
 +  delayMicroseconds(1000);​
 +
 +  //000101
 +  digitalWrite(ENA,​ LOW);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ LOW);
 +  digitalWrite(IN3,​ HIGH);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ HIGH); ​  
 +  delayMicroseconds(1000);​
 +
 +  //101000
 +  digitalWrite(ENA,​ HIGH);
 +  digitalWrite(IN1,​ LOW);
 +  digitalWrite(IN2,​ HIGH);
 +  digitalWrite(IN3,​ LOW);
 +  digitalWrite(IN4,​ LOW);
 +  digitalWrite(ENB,​ LOW);   
 +  delayMicroseconds(1000);​
 +}
 +</​code>​