Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Afinador de guitarra automático baseado em Arduino

Componentes e suprimentos

Arduino UNO
× 1

Aplicativos e serviços online

Simulink

Sobre este projeto


Uma das coisas mais importantes ao tocar guitarra é ter certeza de que o instrumento está afinado. Mesmo o melhor guitarrista não soará bem com uma guitarra desafinada. Afinar guitarras à mão usando um afinador padrão sempre foi comum, mas um afinador automático torna as coisas muito mais fáceis e divertidas! Este projeto baseado em Arduino ajustará sua guitarra para você.

Aqui está um vídeo mostrando o projeto em ação:https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Visão geral

A figura acima mostra uma visão geral do afinador automático de guitarra.
  • O botão de pressão é usado para selecionar a corda a ser afinada
  • Um display de seis LEDs é usado para indicar qual string foi selecionada
  • A pinça conectada ao motor é usada para girar a cravelha até que a corda esteja afinada.

As entradas e saídas são controladas pelos quatro circuitos mencionados acima:um circuito de entrada digital para o botão de pressão, um circuito de entrada de áudio analógico para a guitarra, um circuito de saída digital para o display de LED e um circuito motorizado para o pino de afinação garra. Esses quatro circuitos interagem com um Arduino Due, que está executando um algoritmo desenvolvido com o Simulink.





Circuito de entrada de áudio


A guitarra é conectada ao afinador por meio de um cabo de guitarra padrão. A extremidade de um cabo de guitarra possui duas conexões, chamadas de ponta e manga. Uma extremidade do cabo será conectada a um conector de entrada, que possui condutores para a ponta e a luva. Soldei os fios nesses terminais para conectar a ponta e a luva ao circuito de entrada de áudio.

Eu recomendaria usar um amplificador operacional TL972 para este circuito. É um amplificador rail-a-rail de baixíssimo ruído que pode operar com tensões de alimentação muito baixas.

Pinça de ajuste motorizada

Eu não poderia usar qualquer motor DC para este projeto. Eu precisava de um motoredutor com baixa velocidade e alto torque. O motor que usei tem velocidade de 6 RPM e torque máximo de 613 onças. Ele tem uma faixa de tensão de 3-12 V, então usei uma bateria de 9 V como fonte de alimentação.

No eixo do motor, montei um mecanismo de aperto simples usando um cubo de grampo, quatro parafusos e um pouco de fita.

Software

Usei o Simulink e seu pacote de suporte para Arduino para desenvolver o algoritmo do sintonizador. Simulink é um ambiente de diagrama de blocos usado para desenvolver algoritmos e modelar sistemas dinâmicos. O pacote de suporte me permite ler e gravar nos pinos do Arduino usando blocos Simulink. Usando os recursos de modo externo do software, posso simular um algoritmo no Arduino com geração automática de código e parâmetros de ajuste enquanto a simulação está em execução, sem ter que recompilar qualquer código. Posso então implantar o algoritmo no hardware para execução autônoma. O modelo que criei é mostrado abaixo.

O modo externo permite o uso de blocos de escopo para monitorar partes do algoritmo enquanto ele está sendo executado no hardware. Isso é especialmente útil para monitorar a entrada digital do botão e a entrada analógica da guitarra. No escopo do botão, podemos ver que a entrada muda de 0 para 1 quando o botão é pressionado.

Eu quero que essa mudança de 0 a 1 acione uma mudança na corda selecionada. Isso é conhecido como um gatilho crescente. Eu criei um gráfico Stateflow chamado “Select String” que tem seis estados, um para cada string, e muda de um estado para o próximo com base nesta entrada crescente do acionador. Aqui está uma visão mais detalhada do gráfico Stateflow.

Ao entrar em cada estado, o pino do LED para a string correspondente é definido como alto. Ao sair de cada estado, o pino é definido como baixo. Escolhi a corda E grave, a mais grave das seis cordas, como padrão. Quando eu ligo o sintonizador pela primeira vez, ele iniciará neste estado padrão.

Existem sete saídas no gráfico Stateflow:uma para o LED para cada uma das seis strings e uma chamada “periodRange”, que discutirei mais tarde. As seis saídas de LED vão direto para os blocos de saída digital do Arduino para ligar ou desligar o LED apropriado.

Agora vamos dar uma olhada na parte de processamento de áudio do modelo. O sinal da guitarra chega através do bloco de entrada analógica. Eu defino o tempo de amostragem do bloco em 0,0002 segundos para uma taxa de amostragem de 5 kHz. Quando toquei a guitarra e abri o bloco de escopo de áudio, fui capaz de ver uma forma de onda como a que está abaixo.

O bloco do osciloscópio me ajudou a ajustar o potenciômetro no circuito de áudio para alterar o ganho da entrada. O ganho deve ser definido o mais alto possível, sem que o pico da forma de onda atinja o valor máximo de 1023. Isso permitirá a leitura mais precisa do sinal.

Quando a guitarra não é tocada, o sinal de entrada deve ser uma linha reta em algum lugar entre 500 e 700. No meu caso, era por volta de 550. É importante saber este valor porque o sintonizador deve processar o áudio apenas quando houver uma nota sendo jogado. Eu escolhi um valor de 575, logo acima desta linha plana, para ser meu limite. O áudio será processado apenas quando o sinal estiver acima deste valor limite. Como o Simulink me permite ajustar os parâmetros durante a execução de uma simulação, fui capaz de definir facilmente meu valor limite.

Quando uma única nota é tocada em uma guitarra, a forma de onda gerada é periódica. O período da forma de onda corresponde a um determinado tom musical. O algoritmo de afinação estima a altura da corda determinando o período da forma de onda. Eu escrevi uma função MATLAB que realiza essa estimativa de pitch e a incluí em meu modelo Simulink usando o bloco de funções MATLAB. Para determinar se a corda está afinada, a função MATLAB precisa de uma entrada indicando qual intervalo de períodos é considerado afinado para cada corda. Esta é a saída “periodRange” do gráfico Stateflow. A função determina se o tom da corda está muito alto, muito baixo ou afinado com base na faixa de período e gera saídas para o motor de acordo.

As saídas da função MATLAB são os três pinos que controlam o motor. Essas saídas vão direto para os blocos de saída digital do Arduino.

Depois de garantir que tudo estava certo com meu algoritmo, fui capaz de implantá-lo no hardware para que pudesse funcionar de forma autônoma, sem estar conectado ao PC e independente do Simulink.

Agora posso afinar minha guitarra automaticamente!

Todos os arquivos necessários para este projeto estão disponíveis aqui:

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Esquemas

O circuito para o botão de pressão é uma chave simples com um resistor pull-down. O circuito de exibição de LED envolve 6 LEDs e um resistor limitador de corrente. Usei o pino de entrada analógica ‘A0’ no Arduino para ler o sinal de áudio vindo da guitarra. O Arduino Due lê tensões entre 0 V e 3,3 V. O sinal vindo da guitarra, no entanto, é muito baixo em amplitude e oscila em torno de 0 V, o que significa que contém algumas tensões negativas que o Arduino não consegue ler. Para corrigir isso, o circuito de entrada precisa amplificar o sinal e adicionar um deslocamento DC. O circuito também precisa fornecer um filtro passa-baixa para eliminar os componentes de alta frequência do sinal. Qualquer sinal amostrado não deve conter frequências acima da metade da taxa de amostragem. Como o sintonizador faz a amostragem do áudio a uma taxa de 5 kHz, meu circuito elimina frequências acima de 2,5 kHz. Montei o circuito conforme mostrado abaixo. Eu controlei a pinça de ajuste motorizada usando três pinos de saída digital do Arduino conectado a um chip ponte H L293D . Esse chip nos permite girar o motor em qualquer direção ou pará-lo com base nos estados desses três pinos. Um dos pinos é chamado de pino de habilitação e o motor só girará quando o pino de habilitação estiver definido como alto. Os outros dois pinos determinam a direção do motor. Eu conectei o circuito conforme mostrado abaixo.

Processo de manufatura

  1. Guitarra elétrica
  2. Spork
  3. Titanium
  4. Biocerâmica
  5. Castanholas
  6. Cole
  7. Tópico
  8. Acetileno
  9. Amianto
  10. Lata