Hoje vamos ver como ligar um Stepper Motor, ao Arduino Diecimila (http://loja.lusorobotica.com/microcontroladores/10-arduino-duemilanove-com-atmega328.html) utilizando o EasyDriver v3 para ficar a saber como o controlar.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg90.imageshack.us%2Fimg90%2F7485%2Ftmpphpbln9wdgh0.jpg&hash=8ee4edb837929d3d071a5b75dd35a6d013c1eaad) (http://img389.imageshack.us/my.php?image=dsc00465hl9.jpg)
Como vêm na imagem acima, é bastante fácil montar todo o circuito, tendo que recorrer apenas a 5 fios, dos quais apenas 2 do microcontrolador:
Info:
- Arduino Duemilanove (http://loja.lusorobotica.com/microcontroladores/10-arduino-duemilanove-com-atmega328.html)
- Datasheet do Motor (http://www.sparkfun.com/datasheets/Robotics/StepperMotor.pdf)
- Datasheet do EasyDriver v3 (http://www.sparkfun.com/datasheets/Robotics/A3967.pdf)
- Código fonte (http://www.lusorobotica.com/ficheiros/stepper_codigo_1.pde)
- Loja que vende os componentes (http://loja.lusorobotica.com)
Controlo:
- Dir --> direcção do motor, ligado ao pin 2 do Arduino
- Stp --> steps do motor, ligado ao pin 3 do Arduino
Alimentação:
- +V --> alimentação positiva do motor, +15,4
- GND --> alimentação negativa do motor, 0V
- GND --> um segundo GND para ligar as massas do EasyDriver com o Arduino, para que este consiga entender os valores lógicos enviados pelo Arduino Diecimila
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg262.imageshack.us%2Fimg262%2F7704%2Ftmpphp7vl9prsz4.jpg&hash=9077d8b1c8e486d6ffa639d66420f100389bfee6) (http://img385.imageshack.us/my.php?image=dsc00463iv9.jpg)
O código abaixo já tem o método step(boolean direcçao, int numero_de_steps) que permite fazer o motor andar numa dada direcção X steps, sem que vocês se tenham que preocupar com o resto do código, quem quiser aprofundar mais, é só perguntar.
Estou a desenvolver um código que permita também controlar a velocidade do motor, e fazer com que este ande em background, permitindo o Arduino Diecimila ir fazendo outro código enquanto vai dando ordens ao motor para ir andando. Para já este já vos permite fazer o motor andar sem grande esforço. Deixo mais uma imagem da montagem completa.
Ahh para esta montagem utilizei um transformador de 12V, pois não tinha de 15,4 e funcionou perfeitamente ;)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg204.imageshack.us%2Fimg204%2F6607%2Ftmpphpt4ijfiwa3.jpg&hash=b30cc02679395ce140ffcdd9080c890fa0b514bb) (http://img407.imageshack.us/my.php?image=dsc00461fg4.jpg)
Código:
/********************************************************
** More info about the project at: **
** http://lusorobotica.com/index.php?topic=106.0 **
** by TigPT at [url=http://www.LusoRobotica.com]www.LusoRobotica.com[/url] **
*********************************************************/
int dirPin = 2;
int stepperPin = 3;
void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
}
void step(boolean dir,int steps){
digitalWrite(dirPin,dir);
delay(50);
for(int i=0;i<steps;i++){
digitalWrite(stepperPin, HIGH);
delayMicroseconds(100);
digitalWrite(stepperPin, LOW);
delayMicroseconds(100);
}
}
void loop(){
step(true,1600);
delay(500);
step(false,1600*5);
delay(500);
}