Página 1 de 2

PWM Duplo.

MensagemEnviado: 30 Mai 2007 09:34
por Pask
Caros amigos estou precisando de sua ajuda novamente. Estou desenvolvendo uma aplicação com o PIC para gerar um sinal retangular para controle PWM sem utilizar o módulo PWM interno do PIC. Fazer isto é relativamente simples. O problema é que eu preciso gerar duas formas de onda retangulares defasadas de 180° aproximadamente com 60 Hz de freqüência cada uma. A dificuldade está em gerar as duas formas de onda simultaneamente nessas condições! Eu preciso gerar ambas as formas de onda com um ciclo ativo variando de 30%, 40%, 50% e 60%.
Eu estou utilizando um botão no pino RB0 para variar o ciclo ativo a cada toque e as formas de onda estão sendo retiradas respectivamente nos pinos RB1 e RB2. Se fosse para gerar um única forma de onda, eu já teria feito. O problema está em gerar as duas simultaneamente.
DETALHE: Não posso utilizar outro CI. Somente o PIC!
Estou programando em C. Se alguém tiver uma idéia que possa me ajudar, agradeceria bastante.

Pask

Re: PWM Duplo.

MensagemEnviado: 30 Mai 2007 09:51
por andre_luis
Voce nao mencionou o deadtime. Se isso nao for problema, porque simplesmente nao inverte o sinal ?
E sem usar o PWM interno, voce vai consumir muito processamento para isso.

+++

MensagemEnviado: 30 Mai 2007 11:18
por Pask
Sim amigo, a inversão do sinal é exatamente o que eu estou tentando fazer. Preciso que o pino RB1 produza uma forma de onda retangular como expliquei antes e que o pino RB2 produza a mesma forma de onda invertida. A dificuldade está em gerar as duas formas de onda simultaneamente, entende?

MensagemEnviado: 30 Mai 2007 12:08
por phophollety
Por que não usa simplesmente uma porta not ou um transitor?!

MensagemEnviado: 30 Mai 2007 12:15
por fabim
quando é necessario simultaniedade em dois pinos.

EX RB1 E RB2
ASM
MOVLW PortB
XORLW B'00000010'
movwf portb
gasta tempoH
agora inverte a logica
MOVLW PORTB
XORLW B'00000100'
MOVWF Portb
gasta tempoL.

Este comando XOR ou OR. pega a logica que a porta esta modifica apenas os pinos que precisa e devolve sem influenciar nos outros" se não me engano é XOR. to cum fome num da pra pensar direito.rs
Mais a lógica é essa

Abraços

Fabim

MensagemEnviado: 30 Mai 2007 12:17
por Renie
OLá Pask,

Não entendí a dificuldade!

Se você está fazendo o PWM por soft, basta no momento que você
define o pino RB1 em alto ou baixo, fazer o inverso para o pino RB2.

MensagemEnviado: 30 Mai 2007 12:24
por phophollety
A menos que essa diferença de uSegundos seja problemática só setar a porta..

MensagemEnviado: 30 Mai 2007 13:14
por Pask
Caros amigos, realmente cheguei à conclusão que a geração do sinal PWM - neste caso em particular - via soft é um tanto quanto complexa. Estou trabalhando com o PIC16F628A que só possui um módulo PWM interno. Agora, vou adquirir o PIC16F876A de 28 pinos que possui dois módulos PWM independentes internos. Assim, através da ferramenta embutida pelo fabricante será mais fácil atingir o meu objetivo. Futuramente, conto a vocês o que se sucedeu. Obrigado por enquanto...

Pask.

MensagemEnviado: 30 Mai 2007 14:04
por Adauto sampaio
Boa tarde Pask. Se a quantidade de pinos puder ser menor, vc pode usar o PIC16F684. Tem dois PWMs, onde vc pode usar juntos, separados (half bridge) e ponte completa (con 4 fets), só configurar no soft. Também to tentando um PWM half-bridge com o 873A usando os dois módulos CCP e não acertei ainda. Espero ter ajudado.
Abraços!!!

MensagemEnviado: 30 Mai 2007 21:57
por Renie
Olá Pask,

Se você consegue gerar PWM por sof, fazer em 2 pinos do mesmo port em níveis invertidos é super simples.

Pense apenas em um pino, você terá um contador para nível alto e outro
para o nivel baixo, sabendo com qual nível você inicializa o ciclo, quando o
contador estourar você apenas inverte o nível do pino e passa para o
outro contador.

Digamos que você começa no nível alto, então começa com RB1 = 1 e
RB2 = 0, todas as vezes que for inverter, basta apenas fazer um XOR do valor b"00000110" com o portb que inverterá ambos os pinos ao mesmo
tempo.

MensagemEnviado: 01 Jun 2007 09:54
por Pask
Amigos, gerar a forma de onda retangular é fácil via soft. Na verdade, o que eu fiz foi gerar duas formas de onda: uma saíndo no pino RB1 e outra no pino RB2. O motivo de eu estar aqui é devido a um probleminha que surgiu. As formas de onda têm que ter freq. de 60Hz cada uma e estarem defasadas uma da outra de uns 8 milissegundos, mas, sendo geradas ao mesmo tempo! A minha dificuldade está em manter esta freq. e fazer a defasagem entre elas. Estou programando em C e se alguém tiver uma dica, agradeceria muito.

MensagemEnviado: 01 Jun 2007 10:16
por fabim
neste caso em questão..
os 180° defasados nada mais é que dois sinais pwm sendo um pra nivel 1 quando o outro estiver em zero..

Acho que vc não esta se expressando muito bem sobre a sua idéia.

De uma breve introdução do circuito que vc vai usar isso. as vezes entender do avesso é mais facil. Diz TRAIz pra Frenti.

Fabim

MensagemEnviado: 01 Jun 2007 11:20
por Pask
É isso mesmo Fabim, é uma defasagem de 180° entre elas. Estou tentando desenvolver uma aplicação para um no-break experimental. Quero acionar o inversor com o PIC. Vc poderia me ajudar agora?

MensagemEnviado: 01 Jun 2007 11:35
por fabim
bom num serve pra nobeak esta idéia...

fabim

MensagemEnviado: 01 Jun 2007 12:52
por Pask
Quero deixar claro que este projeto também prevê o uso do ajuste de ciclo ativo da onda. Qual seria então a boa idéia para no-break?