Ir ao conteúdo
  • Cadastre-se

PWM no PIC


luizmodesto

Posts recomendados

E ae galera!!!!

eu estou com um probleminha e espero que me ajudem.....

estou usando o mudulo PWM do Pic16f628a e estou regulando ele para 5hz sendo que o valor do PR2 sempre tá maior do que 255(no decimal) ae o registrador nao pega o valor......e estou com um cristal de 4Mhz, o ideal é que eu tivesse um cristal de baixa frequência, mais é muito difícil acha-los. então fiz as minhas contas em cima deles, e o prescaler do tmr2 ja tá em 16...

peço a ajuda de vocês para me darem essa luz!

obrigado

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Um PWM nessa frequência é mais fácil fazer usando registros comuns como timers incrementados a cada 19608uS que multiplicado por 255 = 5s.

No 8051 é fácil usando o timer de 16bit auto-recarregável e incrementando um registrador até que ele atinja o valor de comparação com outro registrador, resetando assim uma saída.

Pra explicar direito só fazendo mesmo a rotina, mas estou sem tempo.

Link para o comentário
Compartilhar em outros sites

Um PWM nessa frequência é mais fácil fazer usando registros comuns como timers incrementados a cada 19608uS que multiplicado por 255 = 5s.

No 8051 é fácil usando o timer de 16bit auto-recarregável e incrementando um registrador até que ele atinja o valor de comparação com outro registrador, resetando assim uma saída.

Pra explicar direito só fazendo mesmo a rotina, mas estou sem tempo.

Beleza eu entendi, só não entendi como eu faria isso pro pwm do pic, porque ele usa o timer2, e pra ajustar o pr2 eu uso a seguinte formula

PR2=[Fosc/(4Fpwm.Prescaler do TMR2)]-1

Fosc=Frequencia do oscilador externo

Fpwm=Frequencia do PWM

bem agora eu estou usando um cristal de 32768Hz(desses que você acha em relogios despertadores de camelô)

e pelas contas que fiz aplicando um prescaler de 16 eu tenho um PR2=101,4(sendo que arredondo para 100 pois não dá para botar os 101,4 no registrador).

só que fiz isso e eu tive um problema com a frequencia a saida estava uma forma de onda muito estranha, ai eu projetei outro oscilador com uma Fpwm=100kHz e com um oscilador externo de 4Mhz. ai ficou tudo beleza, não sei aonde no programa eu fiz algo errado, estarei postando aqui o programa para dar uma olhada.

sou muito grato pela ajuda!!!

até breve!!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Veja se isto pode te ajudar.

1-Um registro deve conter tempo do ciclo ativo do PWM de 0 a 255. chamaremos de TPWM.

2---Inicie um contador num registro qualquer com valor 0. Este será o contador de 0 a 255 (5 segundos). Chamaremos de ContPWM. Neste momento coloque um Bit em 1, que será o BitPWM.

3---Faça um timer de 19608uS, que é o ciclo mínimo do PWM.

4---Compare o valor ContPWM com TPWM.

se for igual, faça o BitPWM=0

se não for igual, mantenha em 1.

5--- Copie o BitPWM para a saída e...

aqui você cria rotinas que pode alterar o valor do TPWM que pode ser teclas ou o valor de uma porta.;

espere o fim do timer de 19608uS

6---Incremente o ContPWM e compare com 255, para 8 bits. 128 para 7, ou 64 para 6bits...

7---Se for diferente de 255, retorne a linha 3.

8---Se for igual, retorne para a linha 2.

Dentro dessa rotina já fiz até 8 canais PWM de 6bits com frequência de 200Hz com o 8051.

O valor do TPWM pode ser alterado via interrupção, que deve ter um tratamento bem rápido para não influir nos tempos acima.

Isto é apenas a ideia genérica para qualquer Micro barato que não disponha de PWM...

Link para o comentário
Compartilhar em outros sites

Veja se isto pode te ajudar.

1-Um registro deve conter tempo do ciclo ativo do PWM de 0 a 255. chamaremos de TPWM.

2---Inicie um contador num registro qualquer com valor 0. Este será o contador de 0 a 255 (5 segundos). Chamaremos de ContPWM. Neste momento coloque um Bit em 1, que será o BitPWM.

3---Faça um timer de 19608uS, que é o ciclo mínimo do PWM.

4---Compare o valor ContPWM com TPWM.

se for igual, faça o BitPWM=0

se não for igual, mantenha em 1.

5--- Copie o BitPWM para a saída e...

aqui você cria rotinas que pode alterar o valor do TPWM que pode ser teclas ou o valor de uma porta.;

espere o fim do timer de 19608uS

6---Incremente o ContPWM e compare com 255, para 8 bits. 128 para 7, ou 64 para 6bits...

7---Se for diferente de 255, retorne a linha 3.

8---Se for igual, retorne para a linha 2.

Dentro dessa rotina já fiz até 8 canais PWM de 6bits com frequência de 200Hz com o 8051.

O valor do TPWM pode ser alterado via interrupção, que deve ter um tratamento bem rápido para não influir nos tempos acima.

Isto é apenas a ideia genérica para qualquer Micro barato que não disponha de PWM...

Caramba!!!!

muito boa mesmo a ideia que você colocou ai!!!

eu fiz de outro jeito, mais depois tentarei assim....

Bem... eu usei o cristal e 32kHz mesmo.....e dei uma conferida nas formulas e zerei o CPCON,OSCF pra deixar o oscilador interno dele a 37Khz...nao sei se foi isso que ajudou mais eu consegui os 5Hz e tambem a minha matriz de contatos tava com mal contato (_(

Mais muito obrigado pela ajuda!!!!

pude me direcionar melhor em minhas pesquisas!!! e me familiarizar melhor com essa familia de microcontroladores!!!

Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!