Página 1 de 1

PWM 50KHz com resolução de 100 pnts.

MensagemEnviado: 12 Mar 2010 08:48
por denis neves
Olá,
estou querendo fazer um PWM com o 16F877A que tenha 50KHz e 100 pontos de resolução para variação do duty-cicle para acionamento de motor dc. Tentei usar o módulo PWM do próprio uC mas ele só chega aos 19KHz por causa do TIMER A !!!... :cry:

Voces saberiam como fazer esse PWM de 50KHz com 100 pnts de resolução por software ???

Ah...estou usando o CCS...

Muito obrigado,

Denis.

MensagemEnviado: 12 Mar 2010 10:53
por MOR_AL
Denis.
Se a sua frequência for de 50kHz, o período será de 20us.
Se dentro deste período você desejar 100 possibilidades de Ton, então cada variação será de:
20us / 100 = 0,2us.
Em 0,2us você deverá calcular e setar o novo valor do seu Ton do PWM. Em ASM já seria impossível, pois com um xtal de 20MHz já possui um período de instrução de 0,2us. Em outra linguagem de programação, nem se fala.
Tente aumentar o período T = 1 / f.
MOR_AL

MensagemEnviado: 12 Mar 2010 15:51
por renatokodaira
Como o amigo Moral disse, por software fica dificil. Mas usando o modulo PWM e clock de 20MHz, tente setar o registrador PR2 com valor 99 (decimal), o prescaler do Timer2 em 1, os bits 4 e 5 do CCP1CON em zero. Com essa configuracao seu PWM vai funcionar com 50kHz e ao variar o valor de CCPR1L de 0 a 100, voce consegue variar o duty cycle em passos de 1%.

Com clock de 4MHz, o PR2 precisa ter valor 19, mas voce soh consegue 80 passos de variacao (0 a 20 no CCPR1L e mais 0 a 3 nos bits do CCP1CON)

MensagemEnviado: 12 Mar 2010 16:23
por MOR_AL
renatokodaira escreveu:Como o amigo Moral disse ... Mas usando o modulo PWM e clock de 20MHz, tente setar o registrador PR2 com valor 99 (decimal), o prescaler do Timer2 em 1, os bits 4 e 5 do CCP1CON em zero. Com essa configuracao seu PWM vai funcionar com 50kHz e ao variar o valor de CCPR1L de 0 a 100, voce consegue variar o duty cycle em passos de 1%.
...


É isso aí!
A taxa de atualização não precisa ser de 0,2us. Nem seu motor poderia responder. Uma taxa de atualização (de Ton) em cerca de 1ms é bem rápida para a inércia do motor. Logo, teria tempo mais que suficiente.
Em tempo:
Você poderia baixar um pouco esta frequência (50kc/s), aí não precisaria usar o PIC no limite.
Outro detalhe é que à medida que o Ton diminui, o torque não diminui proporcionalmente. Se a tensão cai à metade (Ton = T/2), a corrente também. A potência no motor cai à 1/4 da moninal.
MOR_AL

MensagemEnviado: 13 Mar 2010 00:50
por jorgeluiz
tambem nao entendi o porque de usar uma frequencia tao alta. Se for indispensavel, faça com 555. Muito mais simples.

MensagemEnviado: 15 Mar 2010 21:22
por denis neves
Olá a todos,

em primeiro lugar muito obrigado pelas respostas...fico muito grato !!!

Renatokodaira um amigo meu fez exatamente o que vc propôs!!!...ficou redondinhooo !!!...a frequencia de 50KHz é conforme as especificações que estão no datasheet do motor, por isso resolvi usar o que o motor pede !!!...eu preciso de 100 pnts de resolução (no minimo) pq eu quero partir o motor beeeeeeeeemmmmmmmmmmm de vagar !!!...no meu caso os 555 não daria certo pois faço leituras de dados externos com o PIC e, dependendo como for, mexo no PWM do motor!!!...(controle digital).

Agradeço a todos mais uma vez pela ajuda preciosa !!!

Estou à disposição no que precisar,

Denis.

PWM duvidas

MensagemEnviado: 15 Mar 2010 22:57
por BolhaDigital
Oi galera,

é o seguinte:

Eu estou querendo gerar uma frequencia de 22.050 +/- isso, tô utilizando um cristal de 20mhz num pic877A, e também tô usando o modulo PWM do pic.
Eu quero utilizar a resolução de 8 bits e assim eu dava um clear nos bits CPx e y salvo engano...Como eu vou reproduzir um sinal de audio necessido desta frequencia, ok, assim sendo eu teria que por a interrupção do tmr2 ativa...será que eu acertei?


MInha dúvida é: Só explicando mais um pouquinho, eu quero utilizar o modulo pwm como se fosse um conversor D/A...minha dúvida é: será que eu posso jogar valores de 0 a 255 no buffer relativo ao pwm que o mesmo irá me gerar/preencher corretamente o duty cicle da coisa?

Muito obrigado,

NOTA: ainda vou fazer os testes, tá, eu só tô colhendo o maximo de informação antes de iniciar os testes...

MensagemEnviado: 17 Mar 2010 17:28
por wandersonrainer
Aproveitando o tópico, gostaria de saber se é possível implementar um sinal PWM de 3MHz com o PIC16F877A utilizando um cristal oscilador de 20MHz.
Alguém já o fez com uma frequência dessa magnitude?

MensagemEnviado: 17 Mar 2010 18:36
por fabim
Olha eu tenho um inversor de frequencia, para motores mono.
Eu uso um 16F876 com cristal de 20mhz, to com um pwm de 3.255mhz e resolução de 1.5 bit.

Da sim, é muito simples isto..

MensagemEnviado: 17 Mar 2010 18:54
por proex
fabim escreveu:Olha eu tenho um inversor de frequencia, para motores mono.
Eu uso um 16F876 com cristal de 20mhz, to com um pwm de 3.255mhz e resolução de 1.5 bit.

Da sim, é muito simples isto..


Mas 1.5 bit corresponde a 2,75 graus de relação I/Seno*V. O ideal é 2,48 que é um numero divisivel por 3. Assim o motor nao dá tranco na partida.

Se em vez de 3.255mhz vc programar o PIC para gerar 3.737288mhz vc conseguirá 1,78 bit de resolução. Dividindo isso por 5,47, que é a relaçao ideal, vc consegue chegar a uma senoide de 480 graus da tangente que passa pelo ponto de disparo.

.

MensagemEnviado: 17 Mar 2010 18:58
por proex
wandersonrainer escreveu:Aproveitando o tópico, gostaria de saber se é possível implementar um sinal PWM de 3MHz com o PIC16F877A utilizando um cristal oscilador de 20MHz.
Alguém já o fez com uma frequência dessa magnitude?



Que magnitude, 3Mhz ou 20Mhz?

.

MensagemEnviado: 17 Mar 2010 19:05
por fabim
proex escreveu:
fabim escreveu:Olha eu tenho um inversor de frequencia, para motores mono.
Eu uso um 16F876 com cristal de 20mhz, to com um pwm de 3.255mhz e resolução de 1.5 bit.

Da sim, é muito simples isto..


Mas 1.5 bit corresponde a 2,75 graus de relação I/Seno*V. O ideal é 2,48 que é um numero divisivel por 3. Assim o motor nao dá tranco na partida.

Se em vez de 3.255mhz vc programar o PIC para gerar 3.737288mhz vc conseguirá 1,78 bit de resolução. Dividindo isso por 5,47, que é a relaçao ideal, vc consegue chegar a uma senoide de 480 graus da tangente que passa pelo ponto de disparo.

.


Putz, por isso deu pau aqui então sempre na partida. froid.. Bom agora ja foi não vou fazer recall nem a pau.

MensagemEnviado: 17 Mar 2010 19:13
por jeanfernandes
Se for pra fazer o pic falar... ehehehehehehe

vai na cika e compra por 0,99 dolar, um chip da APLUS. Da pra fazer por ADPCM fica meia boca, mas eh melhor que o sinal do pics ......

Se for pra motor , ai ve a ideia do Pirex/Fabim.