Estou fazendo um pan-tilt com servos e uma WebCam, já consegui programar o PIC e controlar a câmera, mas estou achando a "resolução" do servo muito ruim. Eu só consigo pulsos de 25.6us, o que dá em torno de 50 "passos" no movimento dos servos, quando tento setar o Timer0 para 192, o que daria pulsos de 12.5us e dobraria a resolução, os servos ficam chiando e não funcionam.
Alguém aqui no fórum pode me ajudar?
Segue um trecho do código em CCS.
[code:1:454d2f8279]#include <16f877a.h>
#use delay(clock=20000000)
#fuses xt, put, nowdt, nolvp, noprotect, nobrownout
#int_timer0
void timer_int()
{
pulso++;
if(pulso >= 800) //800 * 25,6us ~= 20ms
{
pulso = 0;
output_high(PIN_D0);
output_high(PIN_D1);
output_high(PIN_D3);
}
if (pulso>=servox+40) //40 * 25,6us ~= 1ms para o servo em 0º
output_low(PIN_D0); //a variável servox de 0~50 com ~=1,2ms para servo em 90º
if (pulso>=servoy+40)
output_low(PIN_D1);
if (pulso>=servop+40)
output_low(PIN_D3);
set_timer0(128+get_timer0());
}
void main()
{
setup_timer_0 (RTCC_DIV_1|RTCC_INTERNAL );
enable_interrupts(INT_TIMER0);
set_timer0(128);
while(1)
{
...
}
}[/code:1:454d2f8279]
Dúvida em acionamento de vários servos com PIC
- andre_michetti
- membro
- Mensagens: 371
- Registrado em: Qua Abr 01, 2009 11:51 pm
- Localização: sorocaba, Sp
cara a primeira coisa " meio errada " que vi no seu codigo e que vc ta usando a configuração de cristal abaixo de 4mhz e usando um cristal de 20mhz.... sofri muito com isso essa semana... huahuahuha... o pic nao funcionava ... quando mudei de HS para XT o pic funcionou....
XT abaixo de 4mhz
HS acima de 4mhz
XT abaixo de 4mhz
HS acima de 4mhz
panecopterx-450,belt-cp,lama v4
- andre_michetti
- membro
- Mensagens: 371
- Registrado em: Qua Abr 01, 2009 11:51 pm
- Localização: sorocaba, Sp