Handmades

Fórum Geral => Microchip PIC => Tópico iniciado por: Dexter em 07 de Agosto de 2012, as 20:25:20



Título: Proposta de um afinador
Enviado por: Dexter em 07 de Agosto de 2012, as 20:25:20
Hoje eu comprei um microcontrolador para iniciar um projeto de um afinador de guitarra (talvez outros intrumentos).

Basicamente haverá seis LEDs (para cada corda) ou sete (para escala cromática), um LED para corda abaixo da afinação, um LED para corda afinada e um LED para corda acima da afinação.
Um dos leds de notaS deve ascender se a corda tocada estiver produzindo uma certa faixa de frequência, como esquematizado no exemplo abaixo:

Para ascender o LED de nota "F", a frequência da corda deve estar entre "limite inferior" e "limite superior".

Nota "E"         freq. f1

limite inferior de "F"   (f1+f2)/2
Nota "F"         freq. f2
limite superior de "F"   (f2+f3)/2

Nota "G"         freq. f3

O objetivo deste projeto é incorporá-lo em um mini amp à bateria.

O microcontrolador é um PIC16F630 que custou a exorbitante quantia de R$5,50 e que eu acho que dá conta do recado.

Tenho nenhuma experiência como guitarrista, por isso afino o instrumento de acordo com os valores padrão do afinador que possuo. A idéia original do projeto seria fazer a mesma coisa (1ª corda "E", 2ª corda "B", ...) no entanto, sei que tem músicos que afinam os intrumentos em escala diferente para produzir um som desejado (drop "D", por exemplo) por isso pensei em afinação com escala cromática. Algo parecido com o Micro Crunch da Orange.

Alguém tem sugestões, críticas, comentários? Considerando que o projeto deve priorizar a simplicidade.

PS.: desconcidere os termos técnicos incorretos se houver algum.


Título: Re: Proposta de um afinador
Enviado por: JoaoVarios em 07 de Agosto de 2012, as 20:54:20
Dexter, você já deu uma olhada no tópico Afinador Diy (http://www.handmades.com.br/forum/index.php?topic=3447.0)? Pode ser que tenha alguma utilidade.


Título: Re: Proposta de um afinador
Enviado por: Dexter em 07 de Agosto de 2012, as 21:07:08
JoaoVarios,

A ideia é algo parecido com este afinador, diga-se de passagem vocês estão avançados em relação ao projeto, agradeço pela dica, mas penso em algo que fique em torno de R$12,00 e que pode ser adaptado a um setup de pedais ou amp, e que tenha baixo consumo.

Vou estudar este projeto e referenciá-lo para o propósito que estou tentando apresentar.

Muito obrigado pela contribuição.


Título: Re: Proposta de um afinador
Enviado por: Adiel em 07 de Agosto de 2012, as 21:27:10
Dexter, parabéns pela iniciativa!  Confesso que eu não faria uma montagem dessas, se não por puro aprendizado, pois há bons afinadores muito baratos no mercado, atualmente.    (brav)


Título: Re: Proposta de um afinador
Enviado por: felfoldi em 07 de Agosto de 2012, as 22:10:08
Já trabalha com microcontroladores?  Vai ser uma boa pra treinar a utilização da entrada analógica do PIC. Ah, e cuidado pra não meter 9V (como na maioria dos pedais) no PIC, senão pode dar adeus ao bichinho.


Título: Re: Proposta de um afinador
Enviado por: Dexter em 07 de Agosto de 2012, as 23:06:38
Sim felfoldi, trabalho com a linha AVR mas para facilitar para o pessoal procurei o mais barato uC da Microchip pois podem ser mais facilmente encontrados.

Na verdade vou utilizar o contador externo, pois o sinal de entrada será transformado em digital antes de chegar no uC, a quantidade de pulsos desta entrada será avaliada a cada 1 ou 0,5 s, como precisarei de no máximo 10 leds devo conectá-los em forma de matriz nos pinos do uC, sendo necessários 7 pinos (3X3, +1). Você está certo, a alimentação é de 9v, mas antes de passar pelo regulador de tensão (5v).

Adiel,

Andei pesquisando e você está correto, achei afinadores por R$14,00 (sem o cálculo do frete), este projeto tem o objetivo de ser incorporado em outro equipamento, no meu caso um mini amp. Posso demorar a conclusão por questão de disponibilidade de tempo, pois acho que a complexidade não seja o ponto crítico.

Valeu, pessoal


Título: Re: Proposta de um afinador
Enviado por: gugarn em 08 de Agosto de 2012, as 09:46:44
Parabéns pela iniciativa.
Eu já construí um afinador automático usando o Matlab (ele afinava a corda de um protótipo de guitarra sozinho). Fiz isso para uma disciplina do doutorado.

O que aprendi com esse trabalho foi que para o afinador ter uma boa resposta você deve considerar a vibração das harmônicas. Ou seja, digamos que estamos interessados em afinar o LÁ (220hz). Quando você tocar na guitarra, e em tempo real calcular o fft (fast fourrier transform), em alguns momentos a frequência fundamental (A frequência de maior magnitude) vai soar como sendo 220hz, ora 110hz, e outras vezes 440hz. Ou seja, dependendo do momento da vibração, da força aplicada, posição da palheta, a fundamental muda um pouco e é isso que causa a instabilidade na maioria dos afinadores. Assim sendo quando implementei o meu fiz uma tabela onde toda nota tem associada todas as frequências que representam aquela nota. Algo do tipo:

A --> 55Hz/110Hz/220Hz/440Hz/880Hz

E a cada interação do calculo do fft verificava o erro em relação ao valor mais próximo, ou seja, se naquele momento a fundamental estava sendo 60Hz nesse caso o erro era de apenas 5hz e não de 160 como seria se comparasse com 220hz. Isso deixou o afinador super estável. Algo como o gStrings para Android que também é muito bom.

Abraços!



Título: Re: Proposta de um afinador
Enviado por: Barech em 08 de Agosto de 2012, as 11:39:13
Boa sorte no seu preojeto cara


Título: Re: Proposta de um afinador
Enviado por: Marcos Câmara em 08 de Agosto de 2012, as 16:02:02
Parabéns pela iniciativa.
Eu já construí um afinador automático usando o Matlab (ele afinava a corda de um protótipo de guitarra sozinho). Fiz isso para uma disciplina do doutorado.

O que aprendi com esse trabalho foi que para o afinador ter uma boa resposta você deve considerar a vibração das harmônicas. Ou seja, digamos que estamos interessados em afinar o LÁ (220hz). Quando você tocar na guitarra, e em tempo real calcular o fft (fast fourrier transform), em alguns momentos a frequência fundamental (A frequência de maior magnitude) vai soar como sendo 220hz, ora 110hz, e outras vezes 440hz. Ou seja, dependendo do momento da vibração, da força aplicada, posição da palheta, a fundamental muda um pouco e é isso que causa a instabilidade na maioria dos afinadores. Assim sendo quando implementei o meu fiz uma tabela onde toda nota tem associada todas as frequências que representam aquela nota. Algo do tipo:

A --> 55Hz/110Hz/220Hz/440Hz/880Hz

E a cada interação do calculo do fft verificava o erro em relação ao valor mais próximo, ou seja, se naquele momento a fundamental estava sendo 60Hz nesse caso o erro era de apenas 5hz e não de 160 como seria se comparasse com 220hz. Isso deixou o afinador super estável. Algo como o gStrings para Android que também é muito bom.

Abraços!



Gugarn,

abandonei o projeto abaixo justamente pela instabilidade. Você conhece esse projeto?

http://www.handmades.com.br/forum/index.php?topic=3447.0


Título: Re: Proposta de um afinador
Enviado por: Lamer em 08 de Agosto de 2012, as 17:12:12
Gugarn, você chegou a publicar este trabalho em algum lugar, se possível gostaria de ler este trabalho, sempre soube que o Matilab é uma ferramenta fabulosa, e tenho sempre a curiosidade de conhecê-lo mais.

Tenho um amigo que usa o Matilab para medir a vibração através de imagens, é fantástico o resultado.

Abraço!


Título: Re: Proposta de um afinador
Enviado por: gugarn em 08 de Agosto de 2012, as 17:30:35
Foi um trabalho de uma disciplina, não foi para publicação. Mas no fim gerei um artigo para a disciplina.
O trabalho ainda tinha o reconhecimento via comando de voz _. Foi um sucesso quando apresentei! Isso foi para uma disciplina chamada Redes Neurais e por isso o trabalho usou essa ferramenta. No entanto para o caso de um afinador embarcado em um PIC o melhor mesmo é implementar o FFT padrão mesmo o qual já tem implementação muito conhecida.

[DOWNLOAD]
http://www.dca.ufrn.br/~guga/downloads/artigo-final-AfinadorNeural.pdf

Agora a afinação foi só uma parte do trabalho e no artigo eu não entro em detalhes da lógica de programação. Mas eu tenho aqui se der uma fuçada eu encontro!

Citar
Gugarn,

abandonei o projeto abaixo justamente pela instabilidade. Você conhece esse projeto?

http://www.handmades.com.br/forum/index.php?topic=3447.0

Não conheço!! Vou dar uma sacada!


Título: Re: Proposta de um afinador
Enviado por: Lamer em 08 de Agosto de 2012, as 17:39:00
Vou lê-lo com mais calma.. muito obrigado!

Abraço.


Título: Re: Proposta de um afinador
Enviado por: Dexter em 08 de Agosto de 2012, as 17:42:12
Obrigado pela dica Gugarn, realmente a existência de harmônicos deve ser considerada. Pelo que eu entendo deste fenômeno a amplitude do 2º harmônico é menor que a amplitude da fundamental, a do 3º menor que a do 2º e assim por diante. Já no projeto a frequência analisada deve ser saturada para se ter algo próximo de um sinal digital, logo teremos uma frequência com uma grande quantidade de harmônicos (teoricamente tendendo a infinito), mas é apropriada para a utilização nesse caso. Eu estaria certo em meu raciocínio ou eu deixei de considerar alguma coisa? Considerando que a região da frequência a ser analisada pelo uC será a borda de descida ou de subida.

A propósito, gostei de ver seu trabalho, a figura tem alguns neurônios ou é impressão minha? Parabéns.

Marcos Câmara, acredito que uma discussão sobre os problemas do projeto possa render boas soluções pois temos membros neste fórum com conhecimentos dos mais diversos, se você encontrou dificuldades para a construção do afinador então o seu relato é muito importante, um pouco de experiência pode ser melhor que muita teoria.

Lamer, apesar do comentário não ter sido endereçado a mim, tenho necessidade de usar o Matlab e você ficaria surpreso pela quantidade de ferramentas que este software possui, são muitas funções e algumas de altíssima complexidade!!

Valeu!


Título: Re: Proposta de um afinador
Enviado por: gugarn em 09 de Agosto de 2012, as 00:34:43
Dexter,

São neurônios sim. Era para um trabalho de redes neurais. As redes neurais são uma ferramenta matemática muito interessante quando não se tem um modelo matemático bem definido para um problema.

Sobre o que tinha falado das harmonicas, Na verdade eu posso ter me expressado mal. A frequencia fundamental por definição é a frequência de maior magnitude. A minha observação é que normalmente o cálculo de frequência é feito de maneira janelada. Ou seja, a cada X amostras (Que tem que ser um numero em potencia de 2 para o caso de FFT) o cálculo é realizado e verificado a fundamental. No entanto, entre janelas distintas isso pode variar. Por exemplo, durante o ataque à corda as frequência mais altas daquela nota soam como fundamental e a medida que a corda vai diminuindo sua vibração outras frequências que antes eram harmônicas, tornam-se fundamental naquela janela! ;)

Então o algoritmo tem que prever o salto de fundamentais para que fique bem estável! Eu tenho um código no matlab disso. Se alguém tiver interesse posso repassar, funciona como um afinador que identifica automaticamente a nota e mostra o erro para ficar perfeitamente afinado.


Título: Re: Proposta de um afinador
Enviado por: Dexter em 09 de Agosto de 2012, as 19:11:55
Gurgarn, sobre a questão dos harmônicos, pelo que você já observou em seu trabalho é que a instabilidade ocorre depois de algum tempo ao se tocar uma corda, ou seja, em um período inicial prevalece a fundamental, depois os harmônicos interferem de maneira prejudicial (para o afinador) provocando a instabilidade. Você, com a experiência em seu projeto, acha que a análise somente deste período inicial seria suficiente para contornar o problema com os harmônicos?

-----
Caminhando com o projeto! Já realizei algumas rotinas no projeto, ainda falta um bocado até chegar em um ponto de realizar testes práticos, mesmo com variáveis difíceis de isolar espero chegar à um resultado viável.

Continuo aguardando sugestões e comentários.


Título: Re: Proposta de um afinador
Enviado por: Dexter em 30 de Agosto de 2012, as 17:59:45
Pelo visto acho que estou sozinho nesta caminhada, mas tudo bem, hoje terminei uma versão de software que pode resultar a conclusão da programação. Fiz um gerador de onda quadrada com frequência variante para testar o afinador, parece-me que está respondendo de maneira coerente, vou montar alguns circuitos conversores (senoide/quadrada) e verificar o comportamento.


Título: Re: Proposta de um afinador
Enviado por: basque em 30 de Agosto de 2012, as 18:47:56
Interessante sua proposta


Título: Re: Proposta de um afinador
Enviado por: Lamer em 31 de Agosto de 2012, as 14:52:18
Gostaria até de ajudar... mas ainda não sei programar microcontroladores... e vibração é uma matéria na qual estou ralando para poder compreender, pois trata-se de um assunto complexo, neste caso o Gugarn é um dos que pode te ajudar, eu ainda estou "dando os primeiros passos" neste assunto!

Abraço!


Título: Re: Proposta de um afinador
Enviado por: Dexter em 01 de Setembro de 2012, as 19:47:35
Falha na entrada de sinal.

Utilizei um LM339, AOP comparador, como conversor senóide/quadrada, o comportamento não foi o esperado, vou tentar o circuito utilizado no afinador do outro tópico e outras configurações.

Creio que agora vou demorar a apresentar resultados devido a redução de carga horária de ócio.

Até mais


Título: Re: Proposta de um afinador
Enviado por: gugarn em 02 de Setembro de 2012, as 10:46:25
Dexter,

Pode ser uma estratégia a identificação da nota apenas no início da vibração e depois realizando filtros para isolar apenas uma região próxima a essa frequência para as próximas iterações. Só que isso vai dificultar muito a implementação do código, pois a implementação de filtros digitais exige um bom conhecimento em matemática e além disso precisa de técnicas para identificar o ciclo de vibração de uma corda, algo como um gate para identificar o inicio de um ciclo. Acho que não precisa disso tudo. Fazendo apenas a tabela de equivalência como falei em posts anteriores, é suficiente.

Qual sua estratégia para identificação da fundamental?

abraços,


Título: Re: Proposta de um afinador
Enviado por: Dexter em 02 de Setembro de 2012, as 16:42:06
Gugarn,

Não estou fazendo identificação da fundamental, já fiz algumas pesquisas que comprovam o que você disse anteriormente, em um dado momento a amplitude de uma ou mais harmônicas podem ser superior a fundamental, isso implica no uso de um uC veloz com ADC e razoável memória RAM, um ($$$) Atmega ou um DSP por exemplo, para que seja possível a avaliação do sinal no domínio da frequência, no entanto, vi um vídeo de demonstração do afinador Gemmick que usa um PIC16F84!! A conversão do sinal Analógico/Digital é só para verificar a quantidade de períodos em um tempo ou o tempo gasto em um período. No vídeo que eu vi, pude observar que o circuito possuía boa estabilidade considerando a capacidade do PIC.

Sei que estou sendo teimoso em insistir no desenvolvimento deste circuito sem uso de filtros digitais e FFT, o que me motiva é que quase todos os afinadores (DIY) que vi operam de modo semelhante. Quanto ao programa, ele está em estágio final, só é necessário corrigir a frequência das notas em decorrência de atraso do processamento interno do uC.  Não descarto a possibilidade de temporizar a verificação do sinal no(s) primeiro(s) segundo(s), porém quando eu toco um corda da guitarra no afinador ele apresenta um resultado muito confuso e indefinido, há grande chance de ser em decorrência de harmônicos, e arrisco um forte palpite em ruídos visto que o circuito ainda está em uma protoboard, mas vou verificar o comportamento com outros circuitos de entrada.

Valeu!


Título: Re: Proposta de um afinador
Enviado por: Albuquerque em 03 de Setembro de 2012, as 13:04:22
Achei esse daqui bastante interessante por usar componentes de fácil localização e baratos.

http://siliconchip.com.au/cms/A_110736/article.html

O artigo só se pode ler se tiver um registro (PAGO diga-se de passagem) na Silicon Chip. Mas se clicar na imagem do diagrama em blocos ela vai abrir uma janela que você pode ir passando as fotos e ver o esquema entre outros posts, até mesmo o desenho da placa pronta. Tá bem "mastigadinho".


Título: Re: Proposta de um afinador
Enviado por: Dexter em 03 de Setembro de 2012, as 16:27:53
Achei esse daqui bastante interessante por usar componentes de fácil localização e baratos.

http://siliconchip.com.au/cms/A_110736/article.html

O artigo só se pode ler se tiver um registro (PAGO diga-se de passagem) na Silicon Chip. Mas se clicar na imagem do diagrama em blocos ela vai abrir uma janela que você pode ir passando as fotos e ver o esquema entre outros posts, até mesmo o desenho da placa pronta. Tá bem "mastigadinho".

Se eu entendi bem esse circuito utiliza a ressonância entre nota no sintetizador e a frequência da corda tocada. Não há uma avaliação direta do sinal de entrada.


Título: Re: Proposta de um afinador
Enviado por: GrAmorin em 03 de Setembro de 2012, as 23:36:23
http://siliconchip.com.au/cms/A_110736/article.html

O artigo só se pode ler se tiver um registro (PAGO diga-se de passagem) na Silicon Chip. ...
Este é o projeto que esta na EPE Magazine de junho de 2010.  :)
Em outra ediçao, a de novembro de 2002 tem outro afinador.
Servem para referencia.  ;)


Título: Re: Proposta de um afinador
Enviado por: visioncb em 03 de Setembro de 2012, as 23:41:08
Seria legal fazer não com display LCD, mas com um simples display de led de 7 segmentos com vários leds em volta formando um circulo, assim como os afinadores da Planet Waves, acho muito prático dessa forma

Estou estudando engenharia eletronica, porém não sei como poderia ajudar nesse projeto


Título: Re: Proposta de um afinador
Enviado por: gugarn em 04 de Setembro de 2012, as 01:04:23
Dexter,

Sem FFT realmente fica bem complicado. Não vejo problemas em implementar uma FFT em um PIC16F84.
Se ficar lento vc vai ajustando o tamanho do buffer. O mais importante num calculo de um FFT, nesse caso, é a amostragem que tem que ser 2 vezes a maior frequência do sinal.
COmo as notas de guitarra não chegram a 10khz vc amostra com 20khz que é suficiente e o PIC dá conta!

Tem um projeto super bem documentado em que tem uma implementação do FFT para um 16F84. Dei uma olhada e me pareceu bem legal:

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

Dá uma olhada e estou aqui para ajudar, caso necessite!

Abraoços.



Título: Re: Proposta de um afinador
Enviado por: Lamer em 04 de Setembro de 2012, as 17:47:58
Conhecer um pouco de processamento e análise de sinais faz a diferença nessas horas :'( :'( :'(

Eu chego lá... >:(

Para ser sincero do post do gugarn eu só entendo o porquê de usar uma taxa de 20khz para frequências de até 10khz, pois está relacionado com o Teorema de Nyquist, e evita o efeito de Aliasing. Fora isto eu já não sei!  :D :D

Abraço!


Título: Re: Proposta de um afinador
Enviado por: Dexter em 21 de Setembro de 2012, as 20:46:15
Fiz novos testes com um circuito baseado em saturação por transistor, a primeira parte do teste funcionou relativamente bem aplicando-se um sinal de 5V em uma frequência variando entre 66 e 1K Hertz na entrada, o funcionamento era previsível pois esta tensão saturaria com certeza o transistor. A segunda etapa aplicando-se a mesma frequência variante a 0,5V o circuito ficou instável, existe a possibilidade da instabilidade ter ocorrido por causa da alta impedância da fonte do sinal. Preciso encontrar ainda um circuito de entrada que converta de forma satisfatória o sinal da guitarra em quadrada.

Lembrando que estou trabalhando em uma protoboard e não posso descartar variáveis desconhecidas. Os próximos circuitos devem prever melhorias para saturação e um filtro de sinal.

visioncb,

a melhor forma de se estudar algo é ter uma motivação especial para estudar, gosto de eletrônica e microcontroladores, por isso escolhi este projeto para desenvolver e tive que estudar assuntos que envolvem o projeto. Imagino que eu não saiba sobre este assunto muito mais que você. Se você ainda não viu sobre microcontroladores pesquise na net, baixe programas para programá-los e simulá-los você verá que é algo tão prazeroso ver um pequeno projeto funcionando quanto o ouvir som "daquele" pedal que você mesmo fez.

Sugestões: PIC começando com programação em "C" e passando posteriormente para assembler, a gravação deles PODE SER trabalhosa; Atmega8 programação em "C" e "C++", cabo de impressora com 3 ou 4 resistores é o suficiente para fazer um gravador; Complicando um pouco mais existe o lendário 8051 (ou AT89S8252) programado em assembler e que pode ser gravado com o mesmo cabo do Atmega8.

Também sou estudante de engenharia e a primeira coisa que se deve neste curso é "aprender à aprender", um engenheiro deve aprender o tempo inteiro.

Lamer,

de fato a análise de sinal envolve uma extensa teoria, conseguir diferenciar um gráfico (domínio do tempo) de um espectro (domínio da frequência) e entender o que cada um significa pode ajudar a compreender algumas coisas, claro que isso é só uma pequena parte da teoria sobre o assunto.

Gugarn,

gostei muito do projeto sugerido, mas o autor está usando um PIC18F4550!!!

Valeu pelas contribuições!


SimplePortal 2.3.3 © 2008-2010, SimplePortal