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á!
Tags:
Muito dificil conferir a sua montagem com essa foto .
Polaridade do capacitor:
http://www.sabereletrica.com.br/entenda-o-funcionamento-dos-capacit...
Maiores informações >
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();
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por