El vúmetro es un dispositivo indicador en equipos de audio para mostrar el nivel de señal en unidades de volumen, también es llamado «indicador del volumen».
Consta de un instrumento de bobina móvil o galvanómetro con una balística (amortiguamiento) determinada, alimentado por medio de un rectificador de onda completa que se conecta a la línea de audio mediante una resistencia en serie. No necesita más fuente de energía para su funcionamiento que la señal de entrada. Esencialmente permite visualizar las variaciones de la tensión en la señal de audio, rectificándola y obteniendo el valor medio. Este se obtiene por la balística del instrumento usado, no por una integración capacitiva. Lo que exige que el galvanómetro de un vúmetro no sea fabricado igual que otros tipos de medidores eléctricos (como los amperímetros, voltímetros, etc.) para conformar el estándar SVI (Standard Volume Indicator).
El vúmetro no fue diseñado para medir explícitamente la tensión de la señal, sino para que los usuarios tuvieran una referencia u objetivo de 0 VU, identificado como el 100% o 0 decibelios, en telefonía y en la modulación de los transmisores de la época, por lo que no era muy importante que el dispositivo no fuera extremadamente lineal o preciso para bajos niveles. En efecto, la escala de -20 VU a +3 VU, con 0 VU al 70% de la escala, fue limitado por la tecnología de la época. La mitad superior de la escala solo cubre 6 dB, permitiendo ajustar con precisión solo los niveles alrededor de 0 VU.
Se ha reemplazado en muchos equipos el tradicional vúmetro de aguja por indicadores luminosos con LEDs. Además del nivel ponderado, algunos vúmetros digitales también muestran los picos o máximos. Como regla general, los niveles de grabación deben ser tales que no superen el área roja más allá de 0 VU, o solo en raras ocasiones. Si el volumen de grabación es demasiado alto, la calidad del sonido y respuesta en frecuencia es generalmente más pobre y los efectos de saturación y recorte pueden ser especialmente problemáticos para un sistema de grabación digital. Por el contrario si el nivel es demasiado bajo, los niveles de ruido serán altos en relación a la señal principal que se está grabando.
Actualmente, la mayoría de las computadoras utilizan pantallas LED o LCD para indicar el nivel de sonido, por otro lado, dan un aspecto colorido y dramático.
Este proyecto consta de una visualización con memoria de pico que muestra gráficamente la señal de audio estéreo que ingresa a través de dos entradas analógicas de nuestra placa Arduino.
Tiene múltiples aplicaciones, ya que podría ser un indicador de nivel de audio, control de nivel de líquido, voltímetro o amperímetro en una fuente de alimentación, indicador de temperatura, medición de una señal de RF, etc.
El diagrama esquemático del vúmetro estéreo se observa en la siguiente imagen:
Lista de Componentes
1 Display LCD 16×2 con controlador Hitachi HD44780 o compatible
2 Capacitores Electrolíticos 1uF 63V
2 Diodos Rectificadores 1N4001
1 Resistencia 3K3Ω 0.25W
1 Resistencia 220Ω 0.25W
2 Resistencias 330KΩ 0.25W
#include <LiquidCrystal.h>
#define IN_LEFT A4 // analog input for left channel
#define IN_RIGHT A5 // analog input for right channel
#define T_REFRESH 100
#define T_PEAKHOLD (3 * T_REFRESH)
LiquidCrystal lcd(7, // RS
8, // E
3, // DB4
4, // DB5
5, // DB6
6 // DB7
);
byte fill[6] = {0x20, 0x00, 0x01, 0x02, 0x03, 0xFF};
byte peak[7] = {0x20, 0x00, 0x04, 0x05, 0x06, 0x07, 0x20};
byte block[8][8]=
{
{0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
{0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C},
{0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E},
{0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
{0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04},
{0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02},
{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
};
int lmax[2];
int dly[2];
long lastT = 0;
void bar(int row, int lev) {
lcd.setCursor(0, row);
lcd.write(row ? 'R' : 'L');
for(int i = 1; i < 16; i++) {
int f = constrain(lev-i*5, 0, 5);
int p = constrain(lmax[row]-i*5, 0, 6);
if(f)
lcd.write(fill[f]);
else
lcd.write(peak[p]);
}
if(lev > lmax[row]) {
lmax[row] = lev;
dly[row] = -(T_PEAKHOLD) / T_REFRESH;
}
else {
if(dly[row] > 0)
lmax[row] -= dly[row];
if(lmax[row] < 0)
lmax[row] = 0;
else
dly[row]++;
}
}
void setup() {
byte fillbar[8] = {
B00000,
B01000,
B01100,
B01010,
B01001,
B01010,
B01100,
B01000
};
byte mark[8] = {
B00000,
B01010,
B10001,
B10101,
B10001,
B01010,
B00000,
B00000
};
lcd.begin(16, 2);
lcd.createChar(0, fillbar);
lcd.createChar(1, mark);
lcd.setCursor(3, 0);
lcd.print("JLM Sound");
lcd.setCursor(12, 0);
lcd.write(1);
for(int i = 0; i < 16; i++) {
lcd.setCursor(i, 1);
lcd.write((byte)0);
delay(125);
}
lcd.clear();
for(int j = 0; j < 8; j++)
lcd.createChar(j, block[j]);
}
void loop() {
if(millis() < lastT)
return;
lastT += T_REFRESH;
int anL = map(sqrt(analogRead(IN_LEFT)*16), 0, 128, 0, 80);
int anR = map(sqrt(analogRead(IN_RIGHT)*16), 0, 128, 0, 80);
bar(0, anL);
bar(1, anR);
}



hola hay forma de adaptarlo a un lcd 20×4 y que las dos primeras filas (0,1) queden limpias (para introducir un texto) y que el vumetro se muestre en las ultimas dos filas (2,3)? gracias