collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: VU Meter Decente  (Lida 5226 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
VU Meter Decente
« em: 18 de Dezembro de 2015, 10:55 »
 >:( Ando a tentar fazer um Audio VU Meter mas está difícil, o objectivo é usar um destes microfones:



Mas não consigo obter uma sensibilidade de jeito, já testei uns quantos circuitos (com transistor ou com um LM386) mas não sei porquê o resultado não é lá grande coisa, a leitura que faço num Arduino é muito constante, só sons maiores que fazem a diferença.

Queria usar isto para acender uns leds conforme o som ambiente, mesmo até quando as pessoas falam, alguém já fez algo parecido e que esteja a funcionar bem e que possa partilhar o esquema de amplificar o sinal do microfone?

P.S.: Não estou a pedir que façam uma pesquisa no Google por mim (pois já fiz e já testei alguns), só a partilha de um esquema que tenham de facto usado e que possam mostrar.
« Última modificação: 18 de Dezembro de 2015, 10:58 por almamater »

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: VU Meter Decente
« Responder #1 em: 18 de Dezembro de 2015, 11:59 »
Tens ligado na polaridade correta?
Se estás a usar o ADC do Arduino, qual o intervalo de amostragem?

Sendo o ADC relativamente lento não deve ter sensibilidade às frequencias mais altas, talvez fosse melhor fazer um detetor de pico: metes um diodo e um condensador à saída do circuito de amplificação, com uma resistência de bleed grandota para que se não houver sinal o valor no condensador vá caíndo. Em vez de fazer as contas ia experimentando valores até ficar visualmente agradável.
O circuito seria algo do género: http://circuitswiring.com/single-transistor-half-wave-peak-detector-circuit/ (procurei no google images, não validei os valores usados).



Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: VU Meter Decente
« Responder #2 em: 18 de Dezembro de 2015, 12:08 »
Sim liguei o micro na polaridade correcta, medi com um multimetro e a resistência de um pino é 0.00 e portanto será esse o GND. O intervalo já testei com 200ms, 500ms e mesmo 1000ms e fazer um ciclo de X amostras e depois apresentar a média..

O esquema da imagem parece-me bem, até porque já tinha visto um parecido com uma resistência de 1M, vou testar a ver o que devolve.

Obrigado.
« Última modificação: 18 de Dezembro de 2015, 12:12 por almamater »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: VU Meter Decente
« Responder #3 em: 18 de Dezembro de 2015, 14:17 »
Esse tipo de micro (piezoelétrico) tem grande rendimento, basta uma resistência de 10k aproximadamente ao micro + um condensador de desacoplamento DC + divisor de saída; o máximo que pode ser aplicado é um transístor para aumentar o ganho.
Na amostragem após a conversão ADC e processamento, deve levar também um arrasto para o gráfico de saída não ser repentino tornando-se impercetível a sua visão.

Já agora apresento um pequeno circuito que não passou da breadboard sem drivers, esse arrasto foi aplicado para suprimir as psicadélicas :P


Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: VU Meter Decente
« Responder #4 em: 18 de Dezembro de 2015, 15:15 »
Ena nice project dropes ;)

Em tempos comrpei uma cena no ebay, um kit de VU Meter, e encontrei agora o esquema daquilo, que por acaso funcionava mesmo bem:



parece que é mais ou menos como dizem.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: VU Meter Decente
« Responder #5 em: 18 de Dezembro de 2015, 15:29 »
Obrigado :)
Era para sair um KIT mas não passou disto, 2 semanas só a fazer um AGC por software...

Sim, o circuito é esse mesmo, apenas precisas de colocar um divisor resistivo no "output C3" porque a impedância do ADC  é alta e não irias ter grandes leituras, o calculo para estas resistências deve ser feito para se ter uma tensão média, exe: gama=2.5V valor de entrada=1.25V
Logo na saída de C3 deves ter 1.25V em estado de repouso.

No calculo após a conversão ADC, deve ser subtraída a onda negativa, neste caso: captura - (1024/2) (10bits).

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: VU Meter Decente
« Responder #6 em: 18 de Dezembro de 2015, 16:15 »
Para um VU, 8 bits de adc chega e sobra, pode correr o clock do ADC acima do "limite" dos 15.xKhz.
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: VU Meter Decente
« Responder #7 em: 19 de Dezembro de 2015, 18:30 »
Antes de fazer com o transistor usei um LM386:





Os resultados obtidos até nem estão mal, mas preciso que me digam se estão bem, não há assim uma grande variação mas penso que já dá para trabalhar com estes valores:

MIN 139
MAX 871
SILÊNCIO 499-506


Sorry pela música, foi a 1ª que me apareceu no youtube :)

Como podem reparar, é preciso a música estar muito alta para haver uma variação grande, é normal?

Código usado:
Código: [Seleccione]
int maximum=0; //declare and initialize maximum as zero
int minimum=1023; //declare and initialize minimum as 1023
int track=0; //variable to keep track
void setup()
{
  Serial.begin(9600); //set baud rate
}
void loop()
{
  //record the highest value recieved on A5
  if (analogRead(5)>maximum) maximum=analogRead(A5);
  //record the lowest value recieved on A5
  if (analogRead(5)<minimum) minimum=analogRead(A5);
Serial.println(analogRead(5));
delay(300);
track++;//increase track by 1 after every iteration

  //display both the maximum and minimum value after 5 second
  //track is used to determine the time interval it takes for
  //the program to display the maximum and minimum values
  //e.g. here i use 1000 so as to display the min and max values
  //after every 5 second
  if (track==5000)
  {
    Serial.print("Maximum:\t");
    Serial.println(maximum);
    Serial.print("Minimum:\t");
    Serial.println(minimum);
    track=0; //set back track to zero
  }
}
Usei isto sem alterar quase nada do original, só mesmo para apresentar o valor lido no momento

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: VU Meter Decente
« Responder #8 em: 19 de Dezembro de 2015, 19:08 »
Sempre podes aumentar o ganho colocando um condensador do pino 1 ao 8 do LM386.
Estás a ligar a saída (pino5) directamente ao arduino?!

Altera o R3 (22k) para 4.7k primeiro, esse valor é demasiado alto.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: VU Meter Decente
« Responder #9 em: 19 de Dezembro de 2015, 19:12 »
Olá,

sim estou a ligar exatamente como o esquema e depois o Output (pino 5) diretamente no A5 do Arduino, não é suposto ser assim?

Vou testar colocar o condensador e mudar a resistência.
Já mudei, os resultados agora parece que são mais sensíveis, as variações são maiores e mais sensível ao som, leituras em silêncio andam a flutuar por estes valores:
Código: [Seleccione]
492
492
499
494
484
549
493
513
512
525
499
518
495
506
« Última modificação: 19 de Dezembro de 2015, 19:21 por almamater »

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: VU Meter Decente
« Responder #10 em: 19 de Dezembro de 2015, 21:39 »
Acho que assim já me entendo :) os valores parecem porreiros, vou experimentar com os LEDs