Ir ao conteúdo
  • Cadastre-se

Filtros com Microcontrolador (PIC)


Gabriel-Kun

Posts recomendados

Boa Noite pessoal!!!

Gostaria de saber se é possível filtrar um sinal via software utilizando um microcontrolador, no meu caso um PIC 16F887A.

Estava querendo pegar um sinal de áudio colocar na entrada analógica do PIC e dividir esse sinal de áudio em várias bandas, tipo fazer um filtro passa baixa, um passa faixa e um passa alta. Como se fosse para fazer um analizador de espectro.

Tudo via software, utilizando linguagem C, que é o eu sei um pouco.

Será que isso é possivel? Sem complicar muito.

Agradeço desde já, pela ajuda!

Link para o comentário
Compartilhar em outros sites

A resolução do A/D não é suficiente, assim como sua capacidade de processamento.

Discordo, a resolução é mais que suficiente, prova disso é que o conversor do dsPIC também é de 10bits. Quanto a capacidade de processamento, concordo em termos.

Filtros digitais em geral é um assunto beem amplo e chato e pra piorar tem calculo demais envolvido, mas hoje é possível usar ferramentas para gerar os coeficientes automaticamente e apenas implementar o filtro via SW.

Estava querendo pegar um sinal de áudio colocar na entrada analógica do PIC e dividir esse sinal de áudio em várias bandas, tipo fazer um filtro passa baixa, um passa faixa e um passa alta. Como se fosse para fazer um analizador de espectro.

A parte do analisador de espectro da pra fazer, mas o algoritmo que vais utilizar não é um filtro digital mas sim uma Fast-Fourier-Transformer --> FFT, utilizando a máxima velocidade de conversão do PIC16 que é de 58KHz você consegue atender ao critério de Nyquist e amostrar toda a banda de áudio por outro lado não espere fazer mais que a FFT e enviar os dados pela serial e desenhar o gráfico em um PC...E outra como disseo colega VTRX, pra funcionar BEM vai ter que ser no ASM pelo menos a parte de amostragem e calculo da FFT, e mais a FFT funciona apenas em parte do sinal e nãoem uma música inteira por exemplo,pois para implementação do algoritmo é utilizada uma técnica chamada de "janelamento" (windowing) do sinal ou seja apenas uma parte do sinal é computada para efetuar a função de analise de espectro.

Com esse PIc só vai conseguir algo em 8 khz/8 Bits mono e utilizando ASM.

Se o intuito for fazer armazenamento e tratamento de áudio é só isso mesmo, e dúvido que todas as funções: reverb, pitch, filtros funcionem bem.

Tudo via software, utilizando linguagem C, que é o eu sei um pouco.

Será que isso é possivel? Sem complicar muito.

Esqueça o boi ralado, vai ter que morder o traseiro do boi primeiro, para fazer isso você vai precisar do ASM, vai precisar de cálculo (complicado sim e muito) e paciência pra entender, mas é pra isso que nós do forum estamos aqui.

Te interessa usar algo como o dsPIC? As possibilidades ja serão outras.

Abs.

Link para o comentário
Compartilhar em outros sites

Boa Noite

Desculpe pelo atraso choveu um pouco aqui e acabei ficando sem net.

O que estava interessado em fazer era um painel de LEDs como esse:

Mas não com 32 bandas, iria começar com umas 5 ou 10 bandas.

Quanto aos dsPIC seria interessante, nunca usei. Quais são as diferenças entre o dsPIC e o PIC?

E o ASM...é vou ter que comçar do zero, entendo um pouco, mas bem pouco mesmo. Comecei aprender o C no meu curso de Sistemas Elétricos, mais foi passado pouco também, ainda apanho em algumas coisas.

Link para o comentário
Compartilhar em outros sites

Mas não com 32 bandas, iria começar com umas 5 ou 10 bandas.

da pra fazer com PIC16 utilizando um algoritmo FFT nesse projeto é exatamente o que o autor faz, no seu caso pode ser até mais simples ja que com 5 bandas por exemplo ja lhe serviria pois o numero de pontos sera menor assim como o tamanho da tabela "twiddle" usada para calculo da FFT. Mas vai precisar do ASM.

Da uma olhadinha aqui é com PIC17 da pra (tentar) portar para PIC16:

http://www.piclist.com/techref/microchip/fft/picspect.htm

Esse código funciona, o autor fez modificações desse em cima do app-note da microchip. O que interessa ai é o uso dos arquivos fixed e fft.inc

A unica coisa que achei que poderia ser otimizado é no uso de uma tabela "twiddle" para evitar calculo de potência e multiplicação.

Abs.

Link para o comentário
Compartilhar em outros sites

Valeu!

Vou dar uma estudada nessa transformação de Fourier, me parece bem complicado. O professor do semetre retrasado estava ensinando sobre Séries de Fourier, mas não lembro de muita coisa, mas agora vi que acho que vou precisar.

Achei um outro projeto utilizando um PIC16F4550, um PIC bem melhor que o 16F877A creio eu. Ele fez o código todo em C, vou dar uma olhada neste e ver se condigo entender como são feito esses cálculos.

http://www.waitingforfriday.com/index.php/Real-Time_Audio_Spectrum_Analyser

Ficou bem interessante.

Para começar queria fazer um com LEDs tipo umas 10 ou 5 bandas com uns 10 LEDs de altura.

Mas vamos ver se consigo entender tudo...

Até mais...

Link para o comentário
Compartilhar em outros sites

Mas eu ainda quero fazer com o PIC 16F877A.

Só peguei este projeto para ter uma noção do FFT, como são feito os calculos, e porque o código fonte foi programado todo em C.

Estou tentado ver o projeto que o Felipe_Eletronic postou, mas está em ASM, e de ASM não entendo muito.

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
Discordo, a resolução é mais que suficiente, prova disso é que o conversor do dsPIC também é de 10bits. Quanto a capacidade de processamento, concordo em termos.

Filtros digitais em geral é um assunto beem amplo e chato e pra piorar tem calculo demais envolvido, mas hoje é possível usar ferramentas para gerar os coeficientes automaticamente e apenas implementar o filtro via SW.

A parte do analisador de espectro da pra fazer, mas o algoritmo que vais utilizar não é um filtro digital mas sim uma Fast-Fourier-Transformer --> FFT, utilizando a máxima velocidade de conversão do PIC16 que é de 58KHz você consegue atender ao critério de Nyquist e amostrar toda a banda de áudio por outro lado não espere fazer mais que a FFT e enviar os dados pela serial e desenhar o gráfico em um PC...E outra como disseo colega VTRX, pra funcionar BEM vai ter que ser no ASM pelo menos a parte de amostragem e calculo da FFT, e mais a FFT funciona apenas em parte do sinal e nãoem uma música inteira por exemplo,pois para implementação do algoritmo é utilizada uma técnica chamada de "janelamento" (windowing) do sinal ou seja apenas uma parte do sinal é computada para efetuar a função de analise de espectro.

Se o intuito for fazer armazenamento e tratamento de áudio é só isso mesmo, e dúvido que todas as funções: reverb, pitch, filtros funcionem bem.

Esqueça o boi ralado, vai ter que morder o traseiro do boi primeiro, para fazer isso você vai precisar do ASM, vai precisar de cálculo (complicado sim e muito) e paciência pra entender, mas é pra isso que nós do forum estamos aqui.

Te interessa usar algo como o dsPIC? As possibilidades ja serão outras.

Abs.

Felipe, sou aluno de engenharia eletrica. Estou tentando aprender sobre filtros digitais e processamento de sinais digitais em geral e vejo que voce possui dominio dessa area. Gostaria de pedir a voce uma indicacao de material bom para inicar meu aprendizado, pois no meu curso verei pouco essa disciplina, ja que o curso é voltado para eletrica de potencia.

Desde ja agradeco.

Link para o comentário
Compartilhar em outros sites

Mas eu ainda quero fazer com o PIC 16F877A.

Só peguei este projeto para ter uma noção do FFT, como são feito os calculos, e porque o código fonte foi programado todo em C.

Estou tentado ver o projeto que o Felipe_Eletronic postou, mas está em ASM, e de ASM não entendo muito.

Ao meu ver, não existe nenhuma razão para que você use o 16F877A em relação ao 18F4550. O preço do 4550 está atraente, eles são semelhantes fisicamente, e acho que o 4550 além de oferecer muito mais recursos, ainda terá uma sobrevida muito maior.

Eu também estou interessado no assunto desse tópico, não para o som em si, mas para desenvolver equipamentos capazes de fazer analise de efeito doppler. No minha profissão, oceanógrafo, tão importante quanto é saber a distancia entre as coisas, é saber qual é a velocidade vetorial do meio, seja ele aquático ou aéreo. E acho que FFT e o Doppler são a chave para começar a pensar em desenvolver equipamentos capazes disso.

Eu peguei com minha namorada (ultra nerd) um pdf que explica, segundo ela para iniciantes, o que é a FFT. Fica o link ai para se alguém tiver interesse. http://person.hst.aau.dk/enk/ST8/wavelet_tutotial.pdf

Abs.

Link para o comentário
Compartilhar em outros sites

Se você quer fazer via uC, você precisa ter ideia do que é necessário.

Aqui vai um link que disponibiliza o download de um livro (em inglês). Eu dei uma prévia estudada e achei bem didático e direto.

http://www.mikroe.com/products/view/268/digital-filter-design/

Lá tem o que você precisa para implementar os filtros. Note que ele dá a dica de como é a expressão do filtro e não o firmware. Este último é por sua conta.

Pelo que você postou, concluo que vai precisar estudar bastante para fazer tudo sem auxílio da net.

Acho que, no momento, esse estudo seria mais indicado para o seu aprendizado que para o projeto propriamente dito.

Caso você queira resolver o problema de modo mais rápido, aconselho a pesquisar por filtro passa-banda e filtro notch com operacionais. Na saída desses filtros teria que retificar e daí acionar os leds. Talvez precise de algum CI para discriminar o nível da tensão retificada e acionar os leds.

Serão necessários diversos CIs, mas resolve mais rápido.

MOR_AL

Link para o comentário
Compartilhar em outros sites

Cara....estou ficando com dó sua só de ler o que tão te passando prá voce estudar .... esse artigo sobre Wavelet foi a gota d'água ! :D

Vamos ser mais práticos ?

Aqui está o que voce quer, prontinho, já entregue em sua casa !

Nem compensa mais voce querer fazer isto, vai custar muito mais caro do que voce comprar !

Pode escolher :

32 bandas, cor azul : US$ 69,00

http://www.ebay.com/itm/32-32-LED-Audio-BLUE-digital-Level-Meter-Spectrum-displayer-amplifer-analyzer-/151070157835?pt=LH_DefaultDomain_0&hash=item232c7bac0b

24 bandas cor verde : US$ 31,69

http://www.ebay.com/itm/24-16-GREEN-LED-Audio-digital-Level-Meter-display-Spectrum-Analyzer-For-amplifer-/151070643845?pt=LH_DefaultDomain_0&hash=item232c831685

Eu mesmo já comprei algumas desse mesmo fornecedor, e o produto é muito legal.

Existe uma enorme diferença entre saber o que é uma FFT e implementar ela em um microcontrolador, pode acreditar....

Se voce quiser fazer um analisador de espectro bem simples, para iniciante mesmo, de 7 bandas ou de 14 bandas, eu fiz um utilizando um Arduíno qualquer, dois MAX7219, duas matrizes 8x8 e um ou dois CI's MSGEQ7, programado tudo em Basic mesmo, ideal para iniciante. Posso publicar o projetinho completo se tiver interesse.

Paulo

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...