LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: Deaftones em 03 de Março de 2011, 18:30

Título: Controlo de velocidade NGW100
Enviado por: Deaftones em 03 de Março de 2011, 18:30
Boas pessoal!
Andei a ver alguns tópicos deste fórum e resolvi pedir uma ajuda, sendo a primeira vez que aqui participo.
Estou a fazer um projecto usando a NGW100, programando em C++ em que o bjectivo é controlar a rotação de um motor DC12V a partir de várias aplicações.
Já faço a aquisição de sinal (velocidade de rotação do motor), e recebo o valor de rotação desejada.
Para controlar o motor tinha um controlador proporcional com este código:
Código: [Seleccione]
if(mot.get_act_speed() < mot.get_des_speed())
{
if(pwm>100)
{
pwm = 100;
}
else
{
pwm++;
}
value[1] = pwm;
write(fd1, value, 2);
}
if(mot.get_act_speed() > mot.get_des_speed())
{
if(pwm<1)
{
pwm = 1;
}
else
{
pwm--;
}
value[1] = pwm;
write(fd1, value, 2);
}
Mas este controlador não é eficiente em que testando, apresentava valores de histerese de cerca de 1000rpm.
Então pensei em fazer um controlador PID, mas estou com muitas dificuldades em tirar a "expressão matemática"/código para implementar este controlador.
Será que me podem ajudar?
Abraço
Título: Re: Controlo de velocidade NGW100
Enviado por: senso em 03 de Março de 2011, 18:47
Tens uma app note da atmel sobre controladores PID.
http://www.atmel.com/dyn/resources/prod_documents/doc2558.pdf (http://www.atmel.com/dyn/resources/prod_documents/doc2558.pdf)
Source:
http://www.atmel.com/dyn/resources/prod_documents/avr220.zip (http://www.atmel.com/dyn/resources/prod_documents/avr220.zip)