Página 1 de 1

Filtro Digital

MensagemEnviado: 26 Jun 2019 19:04
por Guri
Olha eu aqui de novo 8)

Estou fazendo um novo projetinho (Camara de reverber) e estou me deparando com um probleminha de ruido (a frequencia é conhecida +/- 30hz).
Estou utilizando um STM32F103 e o sinal de audio estou fazendo por PWM com Frq em 100Khz.

Funciona tudo direitinho...

O que eu quero saber é uma DICA de como eu posso fazer um filtro rejeita faixa, ou seja preciso implementar um filtro Passa baixa e um Passa altas e criar uma janela para bloquear esse TUF lascado.

Alías será que é possível implementar esse tipo de Filtro nesse ARM?

Obrigado

Re: Filtro Digital

MensagemEnviado: 27 Jun 2019 08:48
por eletroinf
Se é uma frequência fixa, tu precisa é de um notch, certo?
Da uma olhada nesse site:
http://digitalfilter.com/
eles disponibilizam um programinha para calcular os coeficientes, assim como esse site:
http://www.iowahills.com/

Re: Filtro Digital

MensagemEnviado: 27 Jun 2019 10:51
por pamv
Guri, esse 30 Hz é produzido no teu circuito analógico após o pwm?

Re: Filtro Digital

MensagemEnviado: 27 Jun 2019 21:03
por Guri
Obrigado Eletroinfo, vou analisar suas dicas.

Palm, (A Saída do audio é via um DAC i2s...Na saída do DAC eu uso um filtrinho ant alising bem simples.) esse ruido ou TUFF é gerado quando inicio o gatilho de leitura de uma tecla/botão...no meu caso como o botão esta ligando ou desligando diretamente um sinal de audio, eu poderia simplesmente mandar o valor de volume máximo para o circuito (tudo esta em software, nada em hardware) o valor de máximo volume e minimo volume para fazer o MUTE do mesmo.


Mas isso implica em ruidos maiores sobre os sinal de audio, Então eu criei uma rotina que inicia de 0 até o limite máximo do volume de saida, controlando assim o sinal de audio de saida desde o 0 até o máximo e o mesmo inversamente para desligar o volume...melhorou muito o resultado final, mas ainda ficou um TUFFi que aparece no audio. Eu percebi que o problema aparece quando eu vario com maior velocidade do ponto 0 até o máximo, caso a velocidade do atack seja menor o ruido desaparece, mas se o atack for mais rápido aparece o TUFFI...

Dai eu pensei em utilizar um filtro Rejeita Faixa, para justamente atenuar esse TUFFi lascado...

No meu caso estou utilizando como sinal de audio uma onda senoidal e antes que alguém sugira eu pegar/iniciar o atack do volume na fase 0 da onda, eu já estou fazendo isso e mesmo assim o maledito do TUFFi ainda continua, se bem que menor, mas ainda esta lá e eu quero eliminar esse treco do audio...

Obrigado

Re: Filtro Digital

MensagemEnviado: 27 Jun 2019 21:20
por pamv
Guri escreveu:Obrigado Eletroinfo, vou analisar suas dicas.

Palm, (A Saída do audio é via um DAC i2s...Na saída do DAC eu uso um filtrinho ant alising bem simples.) esse ruido ou TUFF é gerado quando inicio o gatilho de leitura de uma tecla/botão...no meu caso como o botão esta ligando ou desligando diretamente um sinal de audio, eu poderia simplesmente mandar o valor de volume máximo para o circuito (tudo esta em software, nada em hardware) o valor de máximo volume e minimo volume para fazer o MUTE do mesmo.


Mas isso implica em ruidos maiores sobre os sinal de audio, Então eu criei uma rotina que inicia de 0 até o limite máximo do volume de saida, controlando assim o sinal de audio de saida desde o 0 até o máximo e o mesmo inversamente para desligar o volume...melhorou muito o resultado final, mas ainda ficou um TUFFi que aparece no audio. Eu percebi que o problema aparece quando eu vario com maior velocidade do ponto 0 até o máximo, caso a velocidade do atack seja menor o ruido desaparece, mas se o atack for mais rápido aparece o TUFFI...

Dai eu pensei em utilizar um filtro Rejeita Faixa, para justamente atenuar esse TUFFi lascado...

No meu caso estou utilizando como sinal de audio uma onda senoidal e antes que alguém sugira eu pegar/iniciar o atack do volume na fase 0 da onda, eu já estou fazendo isso e mesmo assim o maledito do TUFFi ainda continua, se bem que menor, mas ainda esta lá e eu quero eliminar esse treco do audio...

Obrigado


Eu entendi que você usava PWM e não o DAC. Independente disso, parece mais fácil para mim fazer filtro analógico no lugar de adicionar um filtro digital no processo e depois descobrir outra distorçao após a saída de áudo devido ao aparato analógico. Mas eu estou escaldado do forum e a pergunta foi apenas por curiosidade, Obrigado por responder. Olhando no google eu vi que o compilador que você usa tem um tutorial sobre filtros digitais que pode somar aos links do eletroinf
https://www.mikroe.com/ebooks/digital-f ... iir-filter

Re: Filtro Digital

MensagemEnviado: 27 Jun 2019 22:30
por Guri
Isso mesmo palm.

Eu estou lendo e tentando colocar em prática todas as dicas, inclusive do mikroc.

Se bem, que eu acho que o caminho possa ser um filtro para eliminar esse "ruido", derrepente pode não ser bem o uso de um filtro que solucione ou solucione, mas outra ideias são bem vindas.

O importante é saber como resolver...Eu até pensei em colocar um filtro comum na saída, ainda não testei...Mas eu quero ver se consigo resolver aprendendo a idealizar um filtro digital para esse fim...

De qualquer forma sou grato a todos, muito obrigado

Re: Filtro Digital

MensagemEnviado: 28 Jun 2019 23:56
por andre_luis
estou me deparando com um probleminha de ruido (a frequencia é conhecida +/- 30hz)


Dependendo do quão (in)exato seja a frequencia desse ruido, é possivel matar com uma abordagem bastante simples, como o caso classico na eliminação de frequencia de rede 60Hz que é precisa, onde é usando uma taxa de amostragem multiplo inteiro da frequencia a ser eliminada, de modo que no final das contas o batimento de uma cancela a outra, desse modo:

Filtro.png


Já fiz isso no caso de um sinal de ECG, onde o pulso esperado variava na faixa de 0,5 Hz a 4 Hz e a taxa de amostragem escolhida foi 240 Hz, multiplo de 60 Hz, e desse modo matamos o ruido da rede na etapa de leitura do sinal.

No seu caso, os ranges sao bastante diferentes, admito que não deu pra analisar se haveria algum impedimento para usar essa tecnica, mas, se ao invez de 100KHz, voce escolhesse por exemplo um multiplo de 30Hz ( 122,88KHz = 30 x 212) talvez - considerando alguma margem de erro do Timer - o batimento seria na ordem de talvez poucos Hertz, algo imperceptivel, ou eliminavel atravez de um passa-baixa bem baixo.

A proposito, curiosamente com a frequencia de 100Kz que voce usou, fazendo o calculo inverso, daria 24Hz, que subtraindo de 60Hz dá 34Hz...será que isso faz algum sentido ? Consegue medir exatamente essa frequencia do ruido ?

Enfim, não está claro se isso pode resolver seu problema, mas vale tentar...