Como fazer dois PWM no 877A

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Como fazer dois PWM no 877A

Mensagempor Adauto sampaio » 23 Mar 2007 13:36

Boa tarde pessoal. To com uma duvida cruel. Preciso fazer dois PWM com o F877A, de forma que seja um em "contrafase" do outro. Explico melhor: quando um está em nivel alto, o outro está em baixo, e assim por diante. Faze-los funcionar não foi problema, só to me matando pra conseguir esse sincronismo. É para o projeto de uma fonte chaveada em half bridge. Agradeço a quem puder dar uma força, to precisando mesmo.
Mais uma coisa, a linguagem é ASM, obrigado. :lol: :lol:
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Re: Como fazer dois PWM no 877A

Mensagempor Renie » 23 Mar 2007 13:50

Olá Adauto,

Pelo que descreveu, não precisaria nem de 2 PWM, bastaria usar um PWM
(ainda economizaria um pino do PIC) e colocar um transistor e uns 2 resistores para inverter o sinal.
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Re: Como fazer dois PWM no 877A

Mensagempor Adauto sampaio » 23 Mar 2007 14:00

Grande Renie, como vai, blz. É que já vi um equipamento que funciona desse jeito, usando os dois pwm nessa configuração, e queria entender (e fazer igual, é claro) o funcionamento dele. Ao ligar, a fonte apresenta um soft start, até estabilizar a tensão, ai então libera o resto do circuito. O problema maior tá em fazer esse bendito ajuste por soft, vc tem alguma idéia? Muito obrigado pela atenção!!!





Renie escreveu:Olá Adauto,

Pelo que descreveu, não precisaria nem de 2 PWM, bastaria usar um PWM
(ainda economizaria um pino do PIC) e colocar um transistor e uns 2 resistores para inverter o sinal.
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Re: Como fazer dois PWM no 877A

Mensagempor andre_luis » 23 Mar 2007 14:22

Precisariamos conhecer a topologia do circuito a ser chaveado por esse controle...Voce saberia identificar ?
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor mastk » 23 Mar 2007 14:25

Cuidado com o dead time da ponte, hein, é bom dar um tempo desligando a ponte antes de aciona-la inversamente, o transistores demoram mais pra "deligar" do que pra "ligar". dependo é besteira mas...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor Adauto sampaio » 23 Mar 2007 14:35

Andre_teprom, é um circuito push pull, meia ponte, com dois mosfets de acionamento. Mastk, o dead time já está previsto no projeto, algo em torno de 1uS. Só o que me falta é saber como fazer a "defasagem" (eita) do sinal do PWM1 com o 2. Voces tem alguma idéia de como fazer isso? Ah, antes que me esqueça, o cristal é 20MHz.
Abraços!!!




mastk escreveu:Cuidado com o dead time da ponte, hein, é bom dar um tempo desligando a ponte antes de aciona-la inversamente, o transistores demoram mais pra "deligar" do que pra "ligar". dependo é besteira mas...
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor andre_luis » 23 Mar 2007 15:43

Se é push-pull, e ambos os Mosfet ( /BJT ) sao canalN ( /NPN ) voce nao precisa inverter os sinais.

Sendo esse o caso ( que é o mais usual ), o dead time fica subntendido, se seu duty-cicle for inferior ao 50%. Voce estaria se preocupando com algo desnecessário. O que o mastk quiz dizer, creio que fosse exatamente isso : A defasagem é o proprio dead-time.


+++
Editado pela última vez por andre_luis em 23 Mar 2007 15:56, em um total de 1 vez.
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Adauto sampaio » 23 Mar 2007 15:54

Sim, ambos os fets são canal N, mas eu precisaria de dois sinais para excita-los: quando o PWM1 estiver no nivel alto, o PWM2 estará no nivel baixo, e vice-versa. Como vou ajustar o duty para um máximo de 49% para cada pwm, o dead time já entra automaticamente. Estes sinais serão aplicados posteriormente em um driver IR2010, e depois aos fets. Só não estou conseguindo imaginar uma solução para ligar ora um, ora outro, nunca os dois ao mesmo tempo (senão KABUMM!!!). Obrigado por tentar me ajudar, se tiver alguma outra idéia, agradeceria muito.

Abraços!!!

andre_teprom escreveu:Se é push-pull, e ambos os Mosfet ( /BJT ) sao canalN ( /NPN ) voce nao precisa inverter os sinais.

Sendo esse o caso ( que é o mais usual ), o dead time fica subntendido, se seu duty-cicle for inferior ao 50%. Voce estaria se preocupando com algo desnecessário.

+++
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor andre_luis » 23 Mar 2007 16:01

Entendi...sua dúvida nao é conceitual, mas operacional.
Voce quer saber como implementar isso no PIC.

Bom, se for usando o CCS, há uma série de funcoes que manipulam o módulo de PWM, pelo menos na versao 3.249.
O modo como usei, foi o seguinte :

1) Utilizei o Timer0 para gerar interrupcoes fixas em 120Hz.
2) Dentro da interrupção, acionei o módulo, pelo comando set-duty, se nao me engano.

Em cada ciclo, voce terá de alternar entre o módulo CCP 1 ou 2

É bem simples....
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Adauto sampaio » 23 Mar 2007 16:18

A idéia é exatamente essa, mas infelizmente não programo em C (mas to aprendendo devagar), somente em ASM.
Bom, deixa eu ver se entendi. A cada interrupção, vc aciona ora o pwm 1, ora o pwm2? Os registradores PR2, CCPxL e CCPxCON não precisam ser alterados, a não ser que se deseje mudar o duty?

Abraços!

andre_teprom escreveu:Entendi...sua dúvida nao é conceitual, mas operacional.
Voce quer saber como implementar isso no PIC.

Bom, se for usando o CCS, há uma série de funcoes que manipulam o módulo de PWM, pelo menos na versao 3.249.
O modo como usei, foi o seguinte :

1) Utilizei o Timer0 para gerar interrupcoes fixas em 120Hz.
2) Dentro da interrupção, acionei o módulo, pelo comando set-duty, se nao me engano.

Em cada ciclo, voce terá de alternar entre o módulo CCP 1 ou 2

É bem simples....
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor fabim » 23 Mar 2007 16:49

http://www.mikroe.com/en/projects/download/dualpwm.zip

da uma olhada no asm que vai junto..

Fiz uma adaptação pra C e pascal..

Facim

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Adauto sampaio » 23 Mar 2007 17:27

Blz Fabim. Pelo que entendi, a idéia original é parecida com o que o nosso colega Andre_teprom falou. Vou "desmembrar" o código pra entender melhor. Vou tentar implementar a idéia, e depois subir a frequencia até 20Khz. Valeu.

Abraços!!!

fabim escreveu:http://www.mikroe.com/en/projects/download/dualpwm.zip

da uma olhada no asm que vai junto..

Fiz uma adaptação pra C e pascal..

Facim

Fabim
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor andre_luis » 26 Mar 2007 09:53

Pessoal,

Aproveitando carona no tópico, eu gostaria de pedir uma favor para voces; pois preciso saber se meu compilador está com problemas. Trata-se de algo que nunca precisei usar, mas...

É o seguinte : Quando tento executar o comando :

setup_power_pwm(PWM_CLOCK_DIV_4 | PWM_FREE_RUN | PWM_DEAD_CLOCK_DIV_4,1,10000,1000,0,1,0);

Dá a mensagem undefined identifier --setup_power_pwm, porém eu copiei este exemplo do HELP do CCS. E na descrição do comando, não aparecem restriçoes para este comando.

Alguem poderia testar ?

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor fabim » 26 Mar 2007 12:28

rsrs.. tem um pobreminha, que eu observei que todos os maleditos compiladores tem. nos include de funções muitas vezes ele serve tipo para 877 ou >... pra um 628 etc, num funfa nem que a vaca tussa

abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor andre_luis » 26 Mar 2007 14:55

Poisé....só que estou usando o 16F877.
Eu tentei compilar um programa de teste no 18F ( num dispositivo com CCP ) e também deu esse erro.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x