Programar um Pic para executar as funções de um A4983

Boa Tarde....

Estou tentando programar um pic (pode ser qual quer um, utilizo um 16f877a) para imitar um A4983 sem a ponte H.

Fiz um código que até funciona, mas não sei se faz a mesma coisa.

No caso como o PIC possui várias portas, fiz quatro A4983 dentro de um, porém não sei se o GRBL executa dois motores ao mesmo tempo, se sim teria algum comando para fazer essa função? e qual a forma de passo do A4983? um passo por pulso, 200 passos por pulso? e qual o tempo de intervalo de cada passo?

Coloquei meu código (feito no ccs) em anexo.

No meu caso eu fiz quatro passos por pulso só para ter uma ideia.

Agradeço desde já!

Exibições: 491

Anexos

Responder esta

Respostas a este tópico

só para complementar:

Vou utilizar um Arduino Uno com o GRBL antes do PIC e uma ponte H com Transistores depois do PIC.

Pelo q entendi o a4983 da um passo no motor por pulso. então fiz assim:

VOID motor1horariop1()
{
delay_ms (60);
output_high (PIN_E0);
output_low (PIN_E1);
output_low (PIN_C0);
output_low (PIN_C1);
}
VOID motor1horariop2()
{
delay_ms (60);
output_low (PIN_E0);
output_high (PIN_E1);
output_low (PIN_C0);
output_low (PIN_C1);
}
VOID motor1horariop3()
{
delay_ms (60);
output_low (PIN_E0);
output_low (PIN_E1);
output_high (PIN_C0);
output_low (PIN_C1);
}
VOID motor1horariop4()
{
delay_ms (60);
output_low (PIN_E0);
output_low (PIN_E1);
output_low (PIN_C0);
output_high (PIN_C1);
}

e depois no loop

IF (input(PIN_B1) == 1)
{
IF (input(PIN_B0) == 1)
{
if(t1 == 0)
{
motor1horariop1();
}
else if(t1 == 1)
{
motor1horariop2();
}
else if(t1 == 2)
{
motor1horariop3();
}
else if(t1 == 3)
{
motor1horariop4();
}
t1++;
}
else if (t1 == 4)
{
t1 = 0;
}
}

acontece q no proteus esta como se eu não tivesse alterado nada.

segue os arquivos .hex do projeto e do protheus

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço