Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

themeleon

Som no arduino

Mensagens Recomendadas

themeleon

Boas noites.

Eu gostava de fazer passar som pelo arduino.

Apesar de novato na matéria, eu já li várias coisas e cheguei à conclusão q vou precisar de converter sinal analógico em digital, e depois fazer o inverso.

O arduino tem portas analógicas que podem ser usadas como input do audio (8bit de entrada), e portas pwm que podem ser usadas como output de audio (10bit saida) - fazendo assim o conversor de analógico para digital.

Com um divisor de voltagem, posso transformar a onda de som em valores de 0V a 5V, sendo 2.5V o valor central (assim consigo obter a onda por inteiro, pois o som analógico em audio vem junto com valores negativos q não consigo ler na porta analógica).

Ok, até aqui tudo bem, agora eu tento fazer isto:

void setup() {
}
void loop() {
 analogWrite(9,analogRead(0));
}

E sai um barulho infernal dos phones!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

A porta de entrada tem 10 bits...

A porta de saida e um pwm de 8 bits, ou se fizeres as coisas por ti de 16 bits com o Timer1.

PWM nao e analogico e digital... para transformar esse digital em analogico, regra geral precisas de mais qualquer coisa a frente...

Dito isto, depois tens tambem o tempo de processamento do Arduino que te da cabo da amostragem e da frequencia...

Porque e que queres passar som por um dispositivo de 8 bits???


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
themeleon

Bem eu queria passar o som, não importava q fosse 8 bits, sendo q a minha ideia é transmitir o som que passa de um microphone, creio q 8bits de para os gastos.

Sabes dizer-me por favor o q deva estudar para q possa começar a trabalhar nisso?

--

Edit: Timer1 é tipo os timers do c# que ficam a correr em background?

--

Edit: Usei este esquema: http://wiki.openmusiclabs.com/wiki/PWMDAC funciona mas eu queria pegar nos valores digitais convertidos para os poder trabalhar, como os consigo obter?

Editado por themeleon

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
edsudani

Edit: Usei este esquema: http://wiki.openmusiclabs.com/wiki/PWMDAC funciona mas eu queria pegar nos valores digitais convertidos para os poder trabalhar, como os consigo obter?

Boa tarde.

Veja este link: http://www.newtoncbraga.com.br/index.php/artigos/54-dicas/1234..

tem um circuito completo, inclusive com o layout do circuito impresso. Poderás adaptá-lo ao teu propósito.

Se desejares detalhes para projeto, encontrarás muita informação útil na internet.

Edison

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
themeleon

Boa tarde.

Veja este link: http://www.newtoncbraga.com.br/index.php/artigos/54-dicas/1234..

tem um circuito completo, inclusive com o layout do circuito impresso. Poderás adaptá-lo ao teu propósito.

Se desejares detalhes para projeto, encontrarás muita informação útil na internet.

Edison

Estive a ver, o meu problema não é bem buscar os dados da analógica e apresentar na digital, mas sim conseguir com que possa usar som para fazer o mesmo :( E com som nao funciona do mesmo jeito

Editado por themeleon

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

O código apresentado nesse post é bastante mais complexo que o teu... E é provável que funcione já que é tudo feito por hardware.

Porque é que não usaste esse?

No entanto, o meu comentário mantém-se... Qual o propósito de fazer passar som pelo Arduino? Qualquer processamento extra que queiras fazer vai danificar a aquisição do sinal.

Não entendi o teu comentário. O que pretendes mesmo fazer?


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
edsudani

Estive a ver, o meu problema não é bem buscar os dados da analógica e apresentar na digital, mas sim conseguir com que possa usar som para fazer o mesmo :( E com som nao funciona do mesmo jeito

Funciona. O que tens a fazer é confeccionar um circuito pré amplificador de audio e um circuito seguidor de tensão que servirá de adaptador ou casador de impedâncias, isolando o estágio de entrada do estágio conversor.

Note que todo conversor A/D é na realidade um amostrador de grandezas elétricas. Ele 'pega' uma pequena amostra do sinal que varia em função do tempo e apresenta-o codificado na saída, dito de forma simples.

O sinal de audio (som) é um sinal analógico que varia sua amplitude em função do tempo.

É evidente que um projeto desse porte requer instrumental adequado, por exemplo gerador de audio e osciloscópio duplo traço.

Dificilmente encontrarás algo pronto para teu uso do jeito que tu queres.Tens que gastar os neurônios a pensar numa solução.

E como @bubulindo disse, distorções num projeto experimental são perfeitamente aceitáveis -- até que você encontre a solução definitiva.

Em tempo: aqui encontrarás informação útil p/ ajustar os níveis de entrada de audio no conversor A/D:

http://www.getulio.eng.br/meusalunos/sad/ADC0804.pdf

Não deixe de ler, pois obterás informação necessária p/ teu projeto. Essas informações ajudarão a controlar as distorções, veja os níveis apresentados no exemplo.

Edison

Editado por edsudani

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

Dito isto... quem escreveu aquele código no site, podia ter melhorado um pouco mais... o Arduino esconde e adiciona imenso ao processador. Reparo agora que quem escreveu aquilo não desactivou nada (explicitamente) e como tal, poderia ainda ter um pouco de melhoria de performance. Parar o timer0, por exemplo...

Nota também que no código que escreveste, tu não ligas puto ao que é escrito no site de onde tiraste as informações... metade da página refere frequência e tu não ligas a isso.


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.