Geração de Senoide com PWM

Linguagem descritiva de hardware

Moderadores: 51, guest2003

Geração de Senoide com PWM

Mensagempor Iran » 05 Nov 2013 21:45

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.
Avatar do usuário
Iran
Word
 
Mensagens: 558
Registrado em: 16 Out 2006 18:10
Localização: Imperatriz - MA

Re: Geração de Senoide com PWM

Mensagempor RobL » 07 Nov 2013 10:48

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.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Geração de Senoide com PWM

Mensagempor leco » 07 Nov 2013 12:07

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!
Editado pela última vez por leco em 07 Nov 2013 12:48, em um total de 1 vez.
Alô, é do Jogos Mortais? Eu quero indicar umas pessoas...
leco
Bit
 
Mensagens: 22
Registrado em: 02 Nov 2013 20:30

Re: Geração de Senoide com PWM

Mensagempor brasilma » 07 Nov 2013 12:26

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.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Geração de Senoide com PWM

Mensagempor MOR_AL » 07 Nov 2013 15:23

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
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: Geração de Senoide com PWM

Mensagempor Iran » 08 Nov 2013 12:10

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.
Avatar do usuário
Iran
Word
 
Mensagens: 558
Registrado em: 16 Out 2006 18:10
Localização: Imperatriz - MA

Re: Geração de Senoide com PWM

Mensagempor MOR_AL » 08 Nov 2013 15:01

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
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: Geração de Senoide com PWM

Mensagempor Andre_Cruz » 15 Dez 2013 12:27

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
--
Ter palavra é tudo !
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06


Voltar para Verilog, VHDL, SystemC ( PLAs, CPLDs, FPGAs, etc... )

Quem está online

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

cron

x