Bom dia!
Eu tenho um Arduino Duemilanove disponível no momento e achei que poderia tentar alguns projetos de interface de áudio. Estou apenas imaginando que tipo de frequência de amostragem posso obter usando uma única entrada analógica e aplicando alguns algoritmos simples no chip, depois relatando usando algumas saídas digitais ligadas a LEDs.
Eu gostaria de experimentar a ~ 44,1 kHz, se possível.
Para referência, a primeira coisa que quero tentar é um simples afinador de violão.
Respostas:
Eu não acho que você pode provar tão rápido em resolução máxima. O ATMega168 pode apenas amostrar a 15 ksps em sua resolução total.
Dito isto, você deve conseguir uma taxa de amostragem adequada para obter um afinador de violão em funcionamento. 44,1 kHz é provavelmente um pouco mais rápido do que você precisará, dado que o fundamental da corda E alta de uma guitarra é de cerca de 330 Hz.
fonte
http://arduino.cc/en/Reference/AnalogRead
Roubar.
fonte
Google para 'afinador de violão AVR', existem alguns projetos por aí que já fazem isso, e eles parecem capazes de fazê-lo sem muitos problemas com a velocidade do AVR.
fonte
Se você usar um comparador analógico (o interno no AVR ou o opamp externo) que transforma a entrada analógica em uma onda quadrada, poderá experimentar oscilações em velocidades muito mais altas. Embora isso não seja uma amostragem de áudio real, para a construção de um afinador de violão, muitas vezes é tudo o que você precisa, pois todo o seu código faria de qualquer maneira, seria contar zero cruzamentos por unidade de tempo.
fonte
Existem vários ADCs disponíveis em série, o I2S é o padrão do NXP baseado no I2C. Eles permitem que você puxe com facilidade o analógico, mesmo em velocidades muito mais altas. Este link leva você a uma parte do NXP projetada para áudio: UDA1361TS
Amostras grátis são seu amigo :)
fonte
Primeiro, para sua aplicação específica, você realmente só precisa de uma taxa de amostragem de aproximadamente 1 kHz, supondo que esteja sintonizando a frequência fundamental e não uma das parciais inarmônicas ...
De qualquer forma, quanto à taxa de amostragem máxima possível, o manual do Arduino diz:
Isso implicaria que a frequência de amostragem de 10 kHz é o máximo. Contudo. Você pode obter taxas de amostragem mais altas acessando os registros ADC diretamente . A página Processamento de áudio em tempo real do Arduino usa dois canais a 15 kHz, por exemplo. Portanto, o máximo de 10 kHz é apenas ao usar a função AnalogRead () integrada, porque possui muita sobrecarga.
O ADC é otimizado para melhor operação com uma velocidade de clock entre 50 kHz e 200 kHz:
Como uma conversão ADC leva 13 ciclos de relógio, isso seria uma taxa de amostragem de 4 kHz a 15 kHz. De acordo com o AVR120: Caracterização e calibração do ADC em um AVR :
Frequência de clock de 1 MHz = frequência de amostragem de 77 kHz, então esse é o máximo realista.
O tópico do fórum Leia Analógico Mais Rápido? tem mais sobre isso.
fonte
O conversor no chip funcionará para este aplicativo como outros já indicaram, mas você deve realmente usar um ADC externo. Isso poupará muitos problemas e liberará seu micro para amostragem em SPI ou I2C com taxas de dados muito mais altas, com menos ruído do relógio do micro e com maior precisão do que o uso do ADC interno. Se você quiser mais resolução e / ou uma taxa de dados mais alta, use algo como o LTC1867, que permitirá a amostragem em até 175kHz (embora você possa cronometrar da maneira mais rápida que desejar) e depois leia os dados de 24 bits em até 20 MHz por SPI. Veja o que um ADC real pode fazer? :) Com esse tipo de energia (e um DSP de 24 ou 32 bits), você pode compactar e armazenar seu áudio, filtrar, modular, reproduzir e reproduzir ... as possibilidades são infinitas.
fonte
Você está interessado em uma taxa de amostragem de 64K? Dê uma olhada aqui
Agora aumentado para 150 kHz, 10 bits, sem componentes adicionais!
Dê uma olhada lá
fonte