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

Exibições: 592

Responder esta

Respostas a este tópico

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço