Tutorial: como utilizar o Big Easy Driver com um motor de passo e Arduino

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial vamos mostrar como controlar um motor de passo com Big Easy Driver e Arduino. Para controlar um motor de passo é necessário um driver ou ponte-H, o Easy Driver e o Big Easy Driver são drivers de controle para motor de passo. 

O Big Easy Driver, como o nome já diz, é maior e pode alimentar motores de passo com tensão de até 35V e 2A de corrente, enquanto que o Easy Driver pode alimentar com 30V e 750mA. Resumindo, o Big Easy Driver é um upgrade do Easy Driver. Caso queiram saber mais sobre o Easy Driver, temos um tutorial sobre ele clicando aqui.

Apesar de parecidos, o Big Easy Driver necessita de um tempo menor entre pulsos, isto será melhor demonstrado na programação.

Para controlar o motor de passo, precisamos fazer a seguinte ligação:

Onde o tamanho do passo (step) será o pino digital 3 do Arduino e a direção (dir) no pino digital 2 do Arduino. As ligações "+" e "-" devem ser ligadas a uma fonte externa de até 35V. Olhe na documentação do seu motor de passo para saber qual a corrente máxima e a tensão máxima do motor para não queimá-lo.

Assim como o Easy Driver, o Big Easy Driver tem um ENABLE que pode ser conectado a um pino digital para ligar e desligar o Big Easy Driver e evitar que este fique consumindo corrente o tempo todo. Para desligar o Big Easy Driver é necessário setá-lo para HIGH (alto) e para ligar é simplesmente o contrário.

Como apenas estamos demonstrando seu funcionamento, não foi utilizado o ENABLE. Para maiores informações você pode ver o datasheet do Big Easy Driver e o datasheet do A4983.

Agora vamos para a programação:

int stepPin = 3;
int dirPin=2;

// Variables will change:
int dirState = LOW;
int stepState =LOW;
long previousMicros = 0;


long interval = 1000;

void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
}

void loop()
{

unsigned long currentMicros = micros();

if(currentMicros - previousMicros > interval) {

previousMicros = currentMicros;


if (stepState == LOW)
stepState = HIGH;
else
stepState = LOW;


digitalWrite(stepPin, stepState);
}
}

Como vocês podem ver na programação, o tamanho do passo (step) é dado por microssegundos e não milissegundos como no Easy Driver. Ao passar o tempo determinado, a programação muda de estado do pino digital 3 do Arduino. Se estiver em baixo (LOW) muda pra alto (HIGH) e vice-versa.

E é isso! Esperamos que tenham gostado! Se tiverem dúvidas, postem aqui neste blog. Para sugerir tutoriais, vocês podem sugerir aqui! Para ver outros tutoriais e projetos abertos, cliquem aqui e aqui respectivamente!

Referências:

http://www.sparkfun.com/products/10735

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Robotics/4983.pdf

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Robotics/BigEasyDriv...

Exibições: 13440

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de José Gustavo Abreu Murta em 11 janeiro 2016 às 6:56

Atenção , essa placa Big Easy Driver tem um potenciometro para ajuste de corrente no motor. 

Ajuste antes de usar !  Corrente = 0 a 2A

Ajuste para a mínima corrente e depois vá aumentando até o motor girar. 

Se esquentar muito, é porque a corrente esta excessiva. 

https://learn.sparkfun.com/tutorials/big-easy-driver-hookup-guide

Comentário de Alfredo Morais Lopes em 12 dezembro 2013 às 18:14

Gostaria de saber, se, com  Big Easy Driver, posso controlar dois motores de passo e como?

obrigado

Comentário de Elaine Correa Acosta em 26 agosto 2013 às 12:49

Olá amigos, comprei uma big e um motor desses, A ideia é que o motor de passos dê 12 passos com 15 graus cada passo, aguardando um tempo de um passo para outro, essa parte funciona ele já executa tal função como quero, porém após isso ele deveria retornar a posição original, não precisa dar os 12 passos de cada vez pode ser de uma só vez.no momento não consigo faze-lo inverte a sua rotação após executar a primeira parte não sei se o problema esta nas ligações da big com o Arduíno uno, ou no código o que acho o mais provável, se alguém poder me ajudar? 

#include <Stepper.h>
const int stepsPerRevolution = 64;
Stepper myStepper(stepsPerRevolution, 2,3,4,5); //DIR;STEP;MS1;MS2 RESPECTIVAMENTE
int i=0;
int j=0;

void setup() {
myStepper.setSpeed(200);
}

void loop()
{

for (i ;i<24;i++){
j= 0 ; //essa parte funciona
i++;
myStepper.step(64);

delay(937); //tempo entre um passo e outro
}
for (j ;j<24;j++){
i = 0; //aki deveria retornar de uma só vez
j++;

myStepper.step(-64);

}

delay(3750); //tempo para retornar
}

Comentário de Janio em 28 abril 2013 às 15:45

Boa tarde gostaria de saber se essa placa consegue controlar o NEMA 23 de 6.6Kf/cm e como seria sua ligação na placa e também utilizando o Arduíno para fazer o controle? Grato.

Comentário de Lucas Pereira Fodor em 28 março 2013 às 22:41

hummm como entraria um encoder rotativo ai? gostaria de um motor copiando os giros de um encoder...

Comentário de Eric Demétrius de Castro Barroca em 24 agosto 2012 às 17:07

É possível usar um motor de passo de 8 fios com essa placa?

Esse é o motor.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço