Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Gabriel-Kun

Filtros com Microcontrolador (PIC)

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Não sei se 'On the Fly' ele vai fazer algo.

Na frequencia que citei,da para fazer um eco,inverter,acelerar ,diminuir (Pitch).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo

Com Pic não é possivel.

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

Pelo Menos, nehum da familia 16f e 18f tem essa capacidade, agora, outros eu não sei...

Abraços.

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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.

    Compartilhar este post


    Link para o post
    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.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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...

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Achei um outro projeto utilizando um PIC16F4550

    voce nos pediu a linha 16F,esse pic do link que postou é da linha 18F que pode rodar a 48MHz...

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    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.

    Compartilhar este post


    Link para o post
    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.

    • Curtir 1

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    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

    Editado por aphawk

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×