Página 1 de 1

Geração de Senoide com PWM

MensagemEnviado: 05 Nov 2013 21:45
por Iran
Fiz um circuitinho digital com portas lógicas e flip flops capaz de gerar sinais pwm com:

Ton Toff Vm (Valor Médio)
8 2 8/10 = 0.8
7 3 7/10 = 0.7
6 4 6/10 = 0.6
5 5 5/10 = 0.5
4 6 4/10 = 0.4
3 7 3/10 = 0.3
2 8 2/10 = 0.2

Os valores de Ton e Toff são buscados em duas tabelas (memória) de 12 posições cada.

Os valores colocados na tabela geram sinais com valor médio 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3 e de volta ao início.

Fazendo assim estou gerando um onda triangular ?

Quais as componentes espectrais desse sinal triangular ?

Que tipo de filtro deveria usar para obter a triangular?

Se fosse gerar uma senoidal quantos e quais valores deveriam estar nas tabelas?

De quantos bits é esse pwm?

Grato.

Re: Geração de Senoide com PWM

MensagemEnviado: 07 Nov 2013 10:48
por RobL
Começando pelo fim:
Você tem 7 valores, portanto quase 2^3 = 8 . Seria equivalente a 3 bits (como não chega a oito mais próximo de 3 bits).
Para saber se sua onda é triangular, seu valor médio (dos pulsos retangulares pwm) tem que crescer de forma constante até um máximo e retornar da mesma forma decrescente. Se crescer numa razão constante e não cair da mesma forma (voltar bruscamente) é um dente de serra.
Quanto ao filtro, qualquer RC em função da sua frequência. O que importa é a razão acima ditada pelo seu pwm.
Quanto a senoide, a pergunta ficou muito aberta. Você pode gerar uma "senoide" grotesca até com seus 3 bits. Mas tendo uma onda triangular, dá para ajustar um filtro analógico para se aproximar de uma senoide. Para uma boa senoide, só depende de sua resolução. Tem várias tabelas na net, mas não sei se quer criar uma senoide com seus poucos recursos.

Re: Geração de Senoide com PWM

MensagemEnviado: 07 Nov 2013 12:07
por leco
Oi Iran. Não sei a aplicação... mas e um oscilador duplo t não serviria para onda senoidal? Uma outra saída seria um micro(mais simples que portas e flip-flpos...). Com um pwm de 8 bits "genérico" da para fazer praticamente a forma de onda quer vc quiser, o problema pode ser a frequência máxima dela... para reproduzir mensagens de áudio da certo. Coloque mais dados para que possamos ajudar. Abraço!

Re: Geração de Senoide com PWM

MensagemEnviado: 07 Nov 2013 12:26
por brasilma
Olá Iran,

Joguei no excel e os valores estão ok para onda triangular.

Deve usar um filtro calculado de acordo com a frequência da onda para juntar os pontos (filtro ativo com o AO).

Quanto mais pontos para gerar a onda (principalmente para o formato senoide) é melhor, com um pouco de eletrônica você consegue gerar a senóide a partir da triangular.

Já gerei formas de onda complexas assim utilizando valores programados em uma eprom, e fica bom.

Abraços.

Re: Geração de Senoide com PWM

MensagemEnviado: 07 Nov 2013 15:23
por MOR_AL
Iran escreveu:Fiz um circuitinho digital com portas lógicas e flip flops capaz de gerar sinais pwm com:

......

Fazendo assim estou gerando um onda triangular ?
Quais as componentes espectrais desse sinal triangular ?
Que tipo de filtro deveria usar para obter a triangular?
Se fosse gerar uma senoidal quantos e quais valores deveriam estar nas tabelas?
De quantos bits é esse pwm?
Grato.


Para te responder informe do seguinte:
1 - A frequência do seu sinal é fixa ou variável?
a) Se fixa, qual o valor?
b) Se variável, qual a faixa?
2 - Você quer fazer uma onda periódica senoidal a partir de uma onda periódica triangular?
3 - Você quer fazer uma onda periódica senoidal, podendo partir de onda qualquer, ou é necessário, também, a onda triangular?

Se a onda fosse triangular sem descontinuidades, pesquise sobre "Série de Fourier" de ondas triangulares. Lá você encontra a amplitude relativa das componentes harmônicas em relação à onda fundamental. Ela só possui harmônicos ímpares.
x(t) = (8A/pi*pi) * [ sen(pi*t) - (1/9)sen(3pi*t) + (1/25)sen(5pi*t) - (1/49)sen(7pi*t) +...]
A = amplitude da onda triangular (varia de -A até A, sem nível cc).
Para formar os outros termos, basta:
a) Ir alternando o sinal.
b) O fator multiplicativo é o inverso de valor IMPAR elevado ao quadrado.
c) O ângulo é I*pi*t, onde I é ímpar e igual ao ímpar do item b.

Com uma onda triangular formada por poucos pontos, os coeficientes (valores que multiplicam o seno (sen)) da fórmula, aumentam e aparecem também componentes PARES.
MOR_AL

Re: Geração de Senoide com PWM

MensagemEnviado: 08 Nov 2013 12:10
por Iran
Grato a todos por Responder.

leco: Não tenho nenhuma aplicação especifica, apenas quero fazer o que brasilma fez, gerar formas de onda diversas usando pwm e por processo
puramente digital (eletronica digital). Quero sintetizar esse circuito em fpga

RobL: Entendi tudo que vc disse. Realmente a senoide seria grotesca só com esses 3 bits, mas esse é só um modelo, pretendo aumentar o número de bits.
Se dividir o período total do sinal pwm em 100 partes poderia gerar valores médios entre 98/100 e 2/100 (0.97 a 0.02) em passos de 0.01volts.
Para calcular a tabela acho que farei assim: Manter o pwm em 50/100 (zero da senoide) por um numero inteiro de ciclos até a senoide aumentar 0.01 volts
aí aumento o valor médio para 51/100 por um número inteiro de ciclos ate a senoide aumentar mais 0.01 volts.... Nesse, caso segundo seu cálculos meu pwm seria de 7 bits.

MOR_AL: Quando perguntei: Quais as componentes espectrais desse sinal triangular ?

Na verdade queria perguntar: Quais as componentes espectrais desse sinal PWM ?

Identifico pelo menos duas frequencias nesse sinal, no exemplo dado, a frequencia correspondente ao periodo de completar o ciclo
( 0.2, 0.3, 0.4, 0.5,....,0.3 e de volta ao início) e uma frequencia 12 vezes maior correspondente a cada pulso pwm. Existem outras ? Claro.

Mas a pergunta errada me fez pensar em outra coisa. Segundo Fourier uma forma de onda periódica qualquer (exceto senoidal que seria ela própria)
pode ser decomposta numa soma infinita de funções senoidais. Então se a tabela correponde a uma triangular eu teria várias componentes senoidais que formam a triangular,
entao o filtro teria de deixar passar a fundamental mais algumas componentes para compor a triangular. Mas se a tabela corresponde a uma senoide ? Nào sei se fui claro.

Respondendo as tuas perguntas

1 - A frequência do seu sinal é fixa ou variável?

Inicialmente Fixa.

2) Se fixa, qual o valor?

Tenho um sinal de clock na placa onde vou sintetizar o circuito (ALTERA DE2) de 50MHz. Se o circuito conseguir responder a essa frequencia vou usa-la
senao vou dividir essa frequencia ate um valor que possa ser usado.

Re: Geração de Senoide com PWM

MensagemEnviado: 08 Nov 2013 15:01
por MOR_AL
Iran escreveu:Grato a todos por Responder.
...

MOR_AL: Quando perguntei: Quais as componentes espectrais desse sinal triangular ?

Na verdade queria perguntar: Quais as componentes espectrais desse sinal PWM ?
Da onda puramente triangular, já respondi. Harmônicos ímpares e suas amplitudes também.
Quando você "monta" a onda triangular ou qualquer outra onda periódica, vão aparecer as frequências da sua taxa e harmônicas. Taxa é o número de amostras dentro de um ciclo, multiplicada pela frequência fundamental do sinal que você quer compor. Isso se as amostras possuem um período constante dentro da onda a compor. Caso não sejam constantes, aí só uma análise mais aprofundada. Usar a equação da série de Fourier.

Identifico pelo menos duas frequencias nesse sinal, no exemplo dado, a frequencia correspondente ao periodo de completar o ciclo
( 0.2, 0.3, 0.4, 0.5,....,0.3 e de volta ao início) e uma frequencia 12 vezes maior correspondente a cada pulso pwm. Existem outras ? Claro.
Como afirmei.
Se você quer construir uma frequência F1 e para isso usa períodos Tamostragem = 1/NF1, onde N é inteiro, então seu espectro terá F1 e KNF1, onde k é inteiro (k = 1, 2, 3, ...). Talvez apareçam apenas k ímpar ou k par, não me lembro mais.


Mas a pergunta errada me fez pensar em outra coisa. Segundo Fourier uma forma de onda periódica qualquer (exceto senoidal que seria ela própria)
pode ser decomposta numa soma infinita de funções senoidais. Então se a tabela correponde a uma triangular eu teria várias componentes senoidais que formam a triangular,
entao o filtro teria de deixar passar a fundamental mais algumas componentes para compor a triangular. Mas se a tabela corresponde a uma senoide ? Nào sei se fui claro.
Você deve colocar um filtro para passar apenas a fundamental (F1).
Respondendo as tuas perguntas

1 - A frequência do seu sinal é fixa ou variável?

Inicialmente Fixa.
Ok!

2) Se fixa, qual o valor?

Tenho um sinal de clock na placa onde vou sintetizar o circuito (ALTERA DE2) de 50MHz. Se o circuito conseguir responder a essa frequencia vou usa-la
senao vou dividir essa frequencia ate um valor que possa ser usado.
Não entendi.
Afinal, você quer fazer uma senóide com uma frequência F1 e tem um sinal de clock F2, em que F2 é muito maior que F1. É isso?

Se você quiser fazer uma senóide em um mC, então sugiro que divida a senóide em N partes. N inteiro. Ex 40.
Use a expressão y = sen(2*pi*F1*t), onde:
t = n/N.
No exemplo você terá 40 pontos com períodos T = 1/N.
n = o ; t1 = 0
n = 1; t2 = 1/N
n = 2; t3 = 2/N
...
n = N = 40 (no exemplo); t(n+1) = 39/N
Aplique em uma porta (8bits) o valor calculado de y. Nessa porta coloque uma rede resistiva R-2R. Na saída você coloca um capacitor para "adoçar) os degraus.

Outra forma de fazer é usando pulsos variáveis dentro do período da senóide. Mas nesse caso você não vai saber de antemão quais frequências estarão envolvidas. Terá que usar um programa de PC para lhe fornecer as frequências e a amplitude relativa.

Outra forma é usar um pequeno kit com AD9850, vendido no Ebay.
MOR_AL

Re: Geração de Senoide com PWM

MensagemEnviado: 15 Dez 2013 12:27
por Andre_Cruz
Iran,

Li o assunto do post e sei que você quer gerar onda senoidal com PWM, existe algum motivo especial para usar o PWM ?
Como você disse que esta implementando em um FPGA já pensou na possibilidade de implementar um conversor DA paralelo tipo R2R ?
É apenas uma sugestão eu conheço muito pouco de FPGA.

Abraço