Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

PROJETOS => Projetos - Eletrônica => Tópico iniciado por: lumens em 19 de Agosto de 2016, 16:12

Título: Tacômetro com PIC16F877A e controle de velocidade em motor AC
Enviado por: lumens em 19 de Agosto de 2016, 16:12
Olá Amigos.
Alterei o primeiro projeto que estava com PIC16F628A para um com PIC16F877A.
A principio usei uma placas de outros projetos, mas estarei confeccionando uma especifica para essa aplicação.

Depois de pesquisar bastante na net achei alguns exemplo e adaptei para minha aplicação.
A resposta do sistema esta um pouco lenta, e com uma variação pequena também.

Uma duvida é como diminuir o tempo de display que esta causando uma falha em meia onda as vezes numa onda completa, dando uma oscilação ou corte de potencia.
O controle de potencia esta sendo calculado com P+I, talvez o mais correto seria usar o P+I+D = PID

Segue abaixo um vídeo do teste.
Opiniões dos amigos serão bem vinda!

https://youtu.be/QzjybHuCEoY (https://youtu.be/QzjybHuCEoY)
Título: Re:Tacômetro com PIC16F877A e controle de velocidade em motor AC
Enviado por: lumens em 21 de Agosto de 2016, 09:35
Problema resolvido com a interferência do display.

Antes o disparo do triac estava dentro do main(), com isso se o programa estivesse executando a atualização do display e ocorresse uma interrupção externa ele lia a interrupção para depois voltar no display e continuar até o disparo, com isso ele falhava meia onda ou uma onda. O problema foi resolvido fazendo uma chamada para o disparo dentro da interrupção. segue parte do código resolvido. ps. o tempo de resposta do sistema tbm ficou mais rapido.
Código: [Selecionar]
//------------------------Disparo no triac-----------------------------------
void disparo()
{

     if(zc)
     {
     if(flag_ld)
     {
     if((v_rpm==0)&&(hz>=120))
     {
     tempo=54; //aplica 30% da potencia na saida
     }
for(m=0;m<tempo;m++)
{
delay_us(100);
}
output_high(pin_a0);
delay_us(200);
output_low(pin_a0);
}
zc=0;

      }
      return;
}
//----------------Interrupção externa pino RB0-----------------------------
#int_ext
void Trata_ac()

{
     if(INTF)               //testa registrador da interrupção externa
     {
     hz++;
     zc=1;
     INTF=0;    //zera registrador da interrupção externa para o próximo ciclo.
     }
     disparo(); //chama a rotina do disparo
}

//----------------------------fim interrupção externa------------------------
Título: Re:Tacômetro com PIC16F877A e controle de velocidade em motor AC
Enviado por: lumens em 07 de Setembro de 2016, 21:33
Testando a engenhoca
https://youtu.be/1QqUT7fh6a4 (https://youtu.be/1QqUT7fh6a4)
(https://youtu.be/1QqUT7fh6a4)
https://youtu.be/1QqUT7fh6a4 (https://youtu.be/1QqUT7fh6a4)