Pessoal, fiz um pequeno programa com acionamento de tres motores de passo, cada um com seus drives e com 6 entradas para acionamento nos dois sentidos.
Acontece que muitas vezes as entradas acionam sozinhas e o motor ja inicia rodando.
Um caso estranho é que de passar o dedo sobre o conector, sem sequer encostar, aciona a saída para o motor.
Deixeis os drives bem proximo ao arduino. isso emite algum ruído?
Alguem me ajude
Tags:
Bem tente usa resistores de pull-down interligando as entradas do modulo ao GND
Garantindo que a entrada lógica esteja sempre em 0 e só acione quando o arduino mandar o sinal lógico 1. pois sem ele ate o aproximar de seus dedos faz ele acionar por causa da sua carga eletrostática. Espero que resolva pelo que entendi do seu problema a solução talvez seja esta pois já passei por isso.
Deixa eu ver se entendi. Eu tenho 4 saídas do meu arduino indo para o modulo do motor de passo. A seta que vc identificou arduino são as saídas para o drive? ou a entrada do arduino que indiquei para acionar?
Uma outra alternativa é usar os resistires pullup que já tem no microprocessador do Arduino, aí não precisa de resistir externo: http://automatobr.blogspot.com.br/2013/07/sensor-refletivo-com-filt...
Resolvido com os resistores, porém meu programa não funciona.
Algue´m consegue perceber algum erro? quando aciono as entradas não aciona as saídas
int bobina1=11;
int bobina2=10;
int bobina3=9;
int bobina4=8;
int bobina5=28;
int bobina6=26;
int bobina7=24;
int bobina8=22;
int bobina9=7;
int bobina10=6;
int bobina11=5;
int bobina12=4;
int botaoyh=19;
int botaozh=16;
int botaoxh=14;
int botaoxanth=52;
int botaoyanth=51;
int botaozanth=46;
int tempo=3;
void setup()
{
pinMode (bobina1, OUTPUT);
pinMode (bobina2, OUTPUT);
pinMode (bobina3, OUTPUT);
pinMode (bobina4, OUTPUT);
pinMode (botaoxh, INPUT);
pinMode (bobina5, OUTPUT);
pinMode (bobina6, OUTPUT);
pinMode (bobina7, OUTPUT);
pinMode (bobina8, OUTPUT);
pinMode (botaoyh, INPUT);
pinMode (bobina9, OUTPUT);
pinMode (bobina10, OUTPUT);
pinMode (bobina11, OUTPUT);
pinMode (bobina12, OUTPUT);
pinMode (botaozh, INPUT);
pinMode (botaoxanth,INPUT);
pinMode (botaoyanth,INPUT);
pinMode (botaozanth,INPUT);
digitalWrite (bobina1, LOW);
digitalWrite (bobina2, LOW);
digitalWrite (bobina3, LOW);
digitalWrite (bobina4, LOW);
digitalWrite (bobina5, LOW);
digitalWrite (bobina6, LOW);
digitalWrite (bobina7, LOW);
digitalWrite (bobina8, LOW);
digitalWrite (bobina9, LOW);
digitalWrite (bobina10, LOW);
digitalWrite (bobina11, LOW);
digitalWrite (bobina12, LOW);
digitalWrite (botaoxh, LOW);
digitalWrite (botaoxanth, LOW);
digitalWrite (botaoyh, LOW);
digitalWrite (botaoyanth, LOW);
digitalWrite (botaozh, LOW);
digitalWrite (botaozanth, LOW);
delay(100);
}
void loop()
{
if (digitalRead(botaoxh)==1) // Motor eixo X sentido horário
{
digitalWrite (bobina1, HIGH);
delay (tempo);
digitalWrite (bobina1, LOW);
delay (tempo);
digitalWrite (bobina2, HIGH);
delay (tempo);
digitalWrite (bobina2, LOW);
delay (tempo);
digitalWrite (bobina3, HIGH);
delay (tempo);
digitalWrite (bobina3, LOW);
delay (tempo);
digitalWrite (bobina4, HIGH);
delay (tempo);
digitalWrite (bobina4, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina1, LOW);
digitalWrite (bobina2, LOW);
digitalWrite (bobina3, LOW);
digitalWrite (bobina4, LOW);
}
if (digitalRead(botaoxanth)==1) // Motor eixo X sentido anti-horário
{
digitalWrite (bobina4, HIGH);
delay (tempo);
digitalWrite (bobina4, LOW);
delay (tempo);
digitalWrite (bobina3, HIGH);
delay (tempo);
digitalWrite (bobina3, LOW);
delay (tempo);
digitalWrite (bobina2, HIGH);
delay (tempo);
digitalWrite (bobina2, LOW);
delay (tempo);
digitalWrite (bobina1, HIGH);
delay (tempo);
digitalWrite (bobina1, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina4, LOW);
digitalWrite (bobina3, LOW);
digitalWrite (bobina2, LOW);
digitalWrite (bobina1, LOW);
}
if (digitalRead(botaoyh)==1) //Motor eixo Y sentido horário
{
digitalWrite (bobina5, HIGH);
delay (tempo);
digitalWrite (bobina5, LOW);
delay (tempo);
digitalWrite (bobina6, HIGH);
delay (tempo);
digitalWrite (bobina6, LOW);
delay (tempo);
digitalWrite (bobina7, HIGH);
delay (tempo);
digitalWrite (bobina7, LOW);
delay (tempo);
digitalWrite (bobina8, HIGH);
delay (tempo);
digitalWrite (bobina8, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina5, LOW);
digitalWrite (bobina6, LOW);
digitalWrite (bobina7, LOW);
digitalWrite (bobina8, LOW);
}
if (digitalRead(botaoyanth)==1) //Motor eixo Y sentido anti-horário
{
digitalWrite (bobina8, HIGH);
delay (tempo);
digitalWrite (bobina8, LOW);
delay (tempo);
digitalWrite (bobina7, HIGH);
delay (tempo);
digitalWrite (bobina7, LOW);
delay (tempo);
digitalWrite (bobina6, HIGH);
delay (tempo);
digitalWrite (bobina6, LOW);
delay (tempo);
digitalWrite (bobina5, HIGH);
delay (tempo);
digitalWrite (bobina5, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina8, LOW);
digitalWrite (bobina7, LOW);
digitalWrite (bobina6, LOW);
digitalWrite (bobina5, LOW);
}
if (digitalRead(botaozh)==1) // Motor eixo Z sentido horário
{
digitalWrite (bobina9, HIGH);
delay (tempo);
digitalWrite (bobina9, LOW);
delay (tempo);
digitalWrite (bobina10, HIGH);
delay (tempo);
digitalWrite (bobina10, LOW);
delay (tempo);
digitalWrite (bobina11, HIGH);
delay (tempo);
digitalWrite (bobina11, LOW);
delay (tempo);
digitalWrite (bobina12, HIGH);
delay (tempo);
digitalWrite (bobina12, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina9, LOW);
digitalWrite (bobina10, LOW);
digitalWrite (bobina11, LOW);
digitalWrite (bobina12, LOW);
}
if (digitalRead(botaozanth)==1
) // Motor eixo Z sentido anti-horário
{
digitalWrite (bobina12, HIGH);
delay (tempo);
digitalWrite (bobina12, LOW);
delay (tempo);
digitalWrite (bobina11, HIGH);
delay (tempo);
digitalWrite (bobina11, LOW);
delay (tempo);
digitalWrite (bobina10, HIGH);
delay (tempo);
digitalWrite (bobina10, LOW);
delay (tempo);
digitalWrite (bobina9, HIGH);
delay (tempo);
digitalWrite (bobina9, LOW);
delay (tempo);
}
else
{
digitalWrite (bobina12, LOW);
digitalWrite (bobina11, LOW);
digitalWrite (bobina10, LOW);
digitalWrite (bobina9, LOW);
}
}
Eu tive exatamente esse problema, antes do Arduino comecar o motor ficava girando sem parar na maioria das vezes e o arduino não iniciava...
Resolvi isso, colocando um resistor de 10K entre o GND e o pino Step do driver e outro entre o GND e o pino Dir do driver.
Vl liga o pino do arduino que vai dar o passo ao pino de step do driver e o pino de direcao do arduino ao pino DIR do driver e pronto..
Nunca mais deu problema, lembrese de não deixar nenhum outro pino sem ligacao ao VCC ou GND para não causar nenhuma flutuação desse tipo...
[]´s
Jota
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por