Bom dia. Gostaria de uma ajuda aqui na montagem do circuito....
Primeiramente só tenho no momento fio branco e azul... Tentei manter:

Brando: Terra GND

Azul: Positivo

Motor: 12V / 1.2A (etiqueta está apagada)

Drive: A4988

Fonte: 12V / 5A

Capacitor: 1000uF / 16V (também tenho outro capacitor de 100uF / 16V)

 - Duvidas: 1) Se o capacitor está correto ? 2) Vou ligar o Arduino pelo P4 no mesmo terminal da Fonte e queria saber a posição mais correta em relação ao Capacitor? 

Obrigado desde já!

Exibições: 562

Anexos

Responder esta

Respostas a este tópico

Obrigado José Gustavo.
Consegui simular esse primeiro tutorial que sugeriu. Agora ficou bem configurado o circuito.

Agora estou tentando montar um código baseado nesse seu para que o motor dê um giro completo percorrendo 18,94°... um total de 19 furos... Estou utilizando Micro Passo 1/16 para melhor precisão... você tem alguma coisa do tipo para eu basear minha programação ? E até mesmo dar uma estudada na sua!

Bom dia,

Você usou esse exemplo ?

Nema17 + Driver A4988 - Controle através do Arduino:
http://labdegaragem.com/forum/topics/tutorial-arduino-motor-de-pass...

P1_16();
FREQ = 6600;
FREQUENCIA();
CONTADOR = 3200;
Serial.print(atraso);
Serial.println(" us Micro 1/16, 3200 passos, 6600 Hz");
Serial.println();
TesteMotor();

Bom dia.

Sim, usei este exemplo aí !

Eu queria fazer 19 furos equidistantes... Eu iria usar um:

for (int i = 0; i<=18; i++)
{

}

Aliás, José Gustavo... Estou com dificuldades em unidades aqui...
Se eu usar: 

P1_16();
FREQ = 6600;
FREQUENCIA();
CONTADOR = 168;
Serial.print(atraso);
Serial.println(" us Micro 1/16, 168 passos, 6600 Hz"); // 1 volta quando contador = 3200 passos
Serial.println();
TesteMotor();

LEMBRANDO QUE PRECISO DE 360°/19 = 18,94°.

Quase consigo o que quero, mas não entendo nada do atraso e frequência. E também como paro o motor depois de 19 furos? Me surgem dúvidas como:

1) Por que frequência 6600 HZ ?

2) Por que contador 168 ?

3) Por que o atraso ?

Obrigrado.

--------------------------------------------------------------------------------

// Definições das Portas Digitais do Arduino
int RST = 8; // Porta digital D08 - reset do A4988
int SLP = 9; // Porta digital D09 - dormir (sleep) A4988
int ENA = 7; // Porta digital D07 - ativa (enable) A4988
int MS1 = 4; // Porta digital D04 - MS1 do A4988
int MS2 = 5; // Porta digital D05 - MS2 do A4988
int MS3 = 6; // Porta digital D06 - MS3 do A4988
int DIR = 3; // Porta digital D03 - direção (direction) do A4988
int STP = 2; // Porta digital D02 - passo(step) do A4988
int atraso = 0; // Atraso no pulso em microsegundos
float FREQ = 0; // Frequências dos pulsos (100.7 Hz medido com scope = 100 Hz)
boolean sentido = true; // Variavel de sentido
int CONTADOR = 0; // Número de pulsos (passos por volta)
//P1_16 = 3200 passos
void setup()
{
Serial.begin(9600);

DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída
digitalWrite(ENA, HIGH); // Desativa o chip A4988

DDRB = 0x0F; // Configura Portas D08,D09,D10 e D11 como saída
digitalWrite(SLP, HIGH); // Desativa sleep do A4988
rst_A4988(); // Reseta o chip A4988
digitalWrite(ENA, LOW); // Ativa o chip A4988

FREQUENCIA(); // Calcula o período do sinal STEP
//Serial.println(atraso) ; // Imprime na Console, o tempo em microsegundos
}
void rst_A4988()
{
digitalWrite(RST, LOW); // Realiza o reset do A4988
delay (10); // Atraso de 10 milisegundos
digitalWrite(RST, HIGH); // Libera o reset do A4988
}
void HOR() // Configura o sentido de rotação do Motor
{
digitalWrite(DIR, LOW); // Configura o sentido HORÁRIO (HIGH para anti-horário)
}
void PASSO() // Pulso do passo do Motor
{
digitalWrite(STP, LOW); // Pulso nível baixo
delayMicroseconds (atraso); // Atraso de X microsegundos
digitalWrite(STP, HIGH); // Pilso nível alto
delayMicroseconds (atraso); // Atraso de X microsegundos
}
void FREQUENCIA() // Configura quantos pulsos por segundo (Hz)
{
atraso = 1000000 / (2*FREQ); // calculo do tempo de atraso (1/2 periodo) em us
}

void P1_16()
{
digitalWrite(MS1, HIGH); // Configura modo Micro Passo 1/16
digitalWrite(MS2, HIGH);
digitalWrite(MS3, HIGH);
}
void TesteMotor()
{
HOR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
delay (1500) ; // Atraso de 500 mseg
}
void loop()
{
P1_16();
FREQ = 6600;
FREQUENCIA();
CONTADOR = 168;
Serial.print(atraso);
Serial.println(" us Micro 1/16, 168 passos, 6600 Hz"); // 1 volta quando contador = 3200
Serial.println();
TesteMotor();
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço