Ir ao conteúdo

PWM para servo


0m4r

Posts recomendados

Postado

Alguém saberia me indicar o erro no código abaixo?

O compilador é o MikroC e o pic um 16F877.

int servo = 800;
int CCPR1L_temp = 0;
int cnt;
void duty_calc()
{ CCPR1L_temp = servo-(256*cnt);
if(cnt<=2&&cnt>=1)
{
if(CCPR1L_temp<=0)
{
CCPR1L=0;
}
if(CCPR1L_temp>=256)
{
CCPR1L=0xff;
}
if(CCPR1L_temp>0&&CCPR1L_temp<256)
{
CCPR1L = CCPR1L_temp;
PORTB =~PORTB;
}
}
if(cnt>2&&cnt<25)
{
CCPR1L=0;
}
if(cnt==0)
{
CCPR1L = 255;
}
if(cnt >= 24)
{
cnt=0;
CCPR1L_temp = servo;
CCPR1L=0xff;
}

}
void interrupt()
{
if (PIR1.TMR2IF) {
PIR1.TMR2IF = 0; // clears TMR2IF
TMR2 = 0;
cnt++ ; // increment counter
}
}
void main()
{
INTCON = 0xC0;
TRISB = 0;
PORTB = 0;
CCP1CON = 0b00111100;
CCP2CON = 0b00111100;
T2CON = 0b00000111;
TRISC = 0;
PR2 = 255;
PIE1 = 0b00000010;
while(1)
{
duty_calc();
}
}

O servo que estou querendo controlar precisa de um pwm com periodo de 20ms e duty de 1 a 2ms.

Acontece que o pic nao gera essa periodo de pwm, então pensei em gerar um pwm com uma frequencia maior e manipular o duty para q fique com um sinal próximo do que preciso, o qeu acontece é que no simulador ele está mandando apenas o duty 100% ou 0%.

Se alguém tiver uma ideia pra ajudar será bem vinda!

Agradecido!

Postado

Cara não poderia usar um laço simples?

while(1)

{

portb.rb0 = 1; // pino rb0 vai para alto

delay_ms(1);

portb.rb0 = 0; // pino rb0 vai para baixa

delay_ms(19);

}

testa qualquer coisa faz uma variavel ai você troca os valores dentro do parenteses

  • 2 semanas depois...
Postado

Estou simulando no proteus sim, até pensei nessa hipótese, vou gravar então e ver qq acontece no osciloscópio!

obrigado!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!