Entrar    Registrar

Filtro Digital

Software e Hardware para uC STM

Moderadores: aluis-rcastro, 51

  • Autor
    Mensagem

Filtro Digital

Mensagempor Guri » 26 Jun 2019 19:04

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
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 273
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Filtro Digital

Mensagempor eletroinf » 27 Jun 2019 08:48

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/
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 781
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Filtro Digital

Mensagempor pamv » 27 Jun 2019 10:51

Guri, esse 30 Hz é produzido no teu circuito analógico após o pwm?
pamv
Word
 
Mensagens: 833
Registrado em: 20 Jun 2016 21:47

Re: Filtro Digital

Mensagempor Guri » 27 Jun 2019 21:03

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
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 273
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Filtro Digital

Mensagempor pamv » 27 Jun 2019 21:20

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
pamv
Word
 
Mensagens: 833
Registrado em: 20 Jun 2016 21:47

Re: Filtro Digital

Mensagempor Guri » 27 Jun 2019 22:30

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
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 273
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Filtro Digital

Mensagempor aluis-rcastro » 28 Jun 2019 23:56

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...
Você não está autorizado a ver ou baixar esse anexo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
aluis-rcastro
Dword
 
Mensagens: 5311
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Voltar para STMicroelectronics

Quem está online

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

cron