Posts etiquetados ‘vu meter’

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 6 visualizaciones diferentes que muestran gráficamente la señal de audio estéreo que ingresa a través de dos entradas analógicas del PIC.
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.

Datasheet PIC16F877A

El diagrama esquemático del vúmetro estéreo se observa en la siguiente imagen:

(click para ampliar)

Lista de Componentes
1 Microcontrolador PIC16F877A
1 Display LCD 16×2 con controlador Hitachi HD44780 o compatible
1 Cristal de Cuarzo 20MHz
2 Capacitores Cerámicos 27pF 50V
2 Capacitores Electrolíticos 1uF 63V
2 Diodos Rectificadores 1N4001
1 Trimpot horizontal multivuelta 10K
1 Resistencia 10KΩ 0.25W
1 Resistencia 4K7Ω 0.25W
2 Resistencias 330KΩ 0.25W
1 Pulsador N.A. o Push-Button N.A.

El código fuente del firmware del microcontrolador está escrito en el lenguaje PICBasic. Puede ser compilado sin ningún inconveniente utilizando la última versión del compilador PICBasic Pro Trial Version 3.0.7.1 y cargar el firmware en el PIC16F877A utilizando el programador PICKit 3 v3.01.

#CONFIG
        __config _HS_OSC & _WDT_OFF & _CP_OFF & _BOREN_OFF & _LVP_OFF

#ENDCONFIG

' *******************************************************************************
DEFINE OSC 20     ' Oscillator 20 MHz
' *******************************************************************************
ADCON1 = 00000000      ' Set all PORTA and PORTE as analog
PAUSE 500              ' Time to initiation of the LCD
DEFINE LCD_DREG PORTB  ' LCD data PORT B ships
DEFINE LCD_DBIT 4      ' LCD uses less than 0 or greater Bit 4
DEFINE LCD_RSREG PORTB ' LCD RS in the PORTB
DEFINE LCD_RSBIT 0     ' LCD RS PORTB.0
DEFINE LCD_EREG PORTB  ' LCD E in the PORTB
DEFINE LCD_EBIT 1      ' LCD E PORTB.1
DEFINE LCD_BITS 4      ' LCD using 4 or 8 bits for data
DEFINE LCD_LINES 2     ' Number of lines lcd
' *******************************************************************************
DEFINE ADC_BITS 8      ' Result of 8 or 10-bit ADC
DEFINE ADC_CLOCK 3     ' Set clock
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds
' *******************************************************************************
CHANNEL var BYTE             ' Variable name
LINE    VAR BYTE             ' Variable name
COUNTER VAR BYTE             ' Variable name
REST    VAR BYTE             ' Variable name
Mark1   VAR BIT              ' Variable name
Mark2  var BYTE              ' Variable name
pushbutton    Var PORTB.2    ' button in the PORTB.2
TRISA =  %11111111
TRISB =  %00000100
TRISC =  %00000000

' *******************************************************************************
LCDOUT 254,64,1,2,5,5,5,5,2,1                      ' position CGRAM 0
LCDOUT 254,72,24,4,26,2,2,26,4,24                  ' 1 position CGRAM
LCDOUT $FE,1                                       ' Clear screen
' *******************************************************************************
GRAF1 :
Mark2 = 1
LCDOUT 254,64 , 0, 16, 16 , 16, 16 , 16, 16 , 0 ' 0 position CGRAM
LCDOUT 254,72 , 0, 24, 24 , 24, 24, 24 , 24, 0  ' 1 position CGRAM
LCDOUT 254,80 , 0, 28, 28 , 28, 28, 28 , 28, 0  ' CGRAM Position 2
LCDOUT 254,88 , 0, 30, 30 , 30, 30, 30 , 30, 0  ' 3 position CGRAM
LCDOUT 254,96 , 0, 31, 31 , 31, 31, 31 , 31, 0  ' 4 position CGRAM
PAUSE 300
GOTO BAR
' *******************************************************************************
GRAF2 :
Mark2 = 2
LCDOUT 254,64 , 0, 24, 24 , 24, 24, 24 , 24, 0 ' 0 position CGRAM
LCDOUT 254,72 , 0, 24, 24 , 24, 24, 24 , 24, 0 ' 1 position CGRAM
LCDOUT 254,80 , 0, 27, 27 , 27, 27, 27 , 27, 0 ' CGRAM Position 2
LCDOUT 254,88 , 0, 27, 27 , 27, 27, 27 , 27, 0 ' 3 position CGRAM
LCDOUT 254,96 , 0, 27, 27 , 27, 27, 27 , 27, 0 ' 4 position CGRAM
PAUSE 300
GOTO BAR
' *******************************************************************************
GRAF3 :
Mark2 = 3
LCDOUT 254,64 , 0, 0 , 0, 16, 16 , 0, 0 , 0 ' 0 position CGRAM
LCDOUT 254,72 , 0, 0 , 0, 24, 24 , 0, 0 , 0 ' 1 position CGRAM
LCDOUT 254,80 , 0, 0 , 0, 28, 28 , 0, 0 , 0 ' 2 Position CGRAM 
LCDOUT 254,88 , 0, 0 , 0, 30, 30 , 0, 0 , 0 ' 3 position CGRAM
LCDOUT 254,96 , 0, 0 , 0, 31, 31 , 0, 0 , 0 ' 4 position CGRAM
PAUSE 300
GOTO BAR
' *******************************************************************************
GRAF4 :
Mark2 = 4
LCDOUT 254,64 , 0, 16, 16 , 16, 16 , 16, 16 , 0 ' 0 position CGRAM
LCDOUT 254,72 , 0, 16, 16 , 16, 16 , 16, 16 , 0 ' 1 position CGRAM
LCDOUT 254,80 , 0, 20, 20, 20 , 20, 20 , 20, 0  ' 2 Position CGRAM  
LCDOUT 254,88 , 0, 20, 20, 20 , 20, 20 , 20, 0  ' 3 position CGRAM
LCDOUT 254,96 , 0, 21, 21 , 21, 21, 21 , 21, 0  ' 4 position CGRAM
PAUSE 300
GOTO BAR
' *******************************************************************************
GRAF5 :
Mark2 = 5
LCDOUT 254,64 , 0, 0 , 0, 4 , 0, 0 , 0, 0    ' 0 position CGRAM
LCDOUT 254,72 , 0, 0 , 4, 14 , 4, 0 , 0, 0   ' 1 Position CGRAM
LCDOUT 254,80 , 0, 0 , 14, 14 , 14, 0, 0, 0  ' 2 Position CGRAM 
LCDOUT 254,88 , 0, 4 , 14, 31 , 14, 4, 0, 0  ' 3 position CGRAM
LCDOUT 254,96 , 0, 14, 31, 31, 31 , 14, 0, 0 ' 4 position CGRAM
PAUSE 300
GOTO BAR
' *******************************************************************************
GRAF6 :
Mark2 = 6
LCDOUT 254,64,0,14,31,31,31,14,0,0           ' 0 position CGRAM
LCDOUT 254,72,0,14,31,31,31,14,0,0           ' 1 position CGRAM
LCDOUT 254,80,0,14,31,31,31,14,0,0           ' 2 Position CGRAM
LCDOUT 254,88,0,14,31,31,31,14,0,0           ' 3 position CGRAM
LCDOUT 254,96,0,0,0,31,0,0,0,0               ' 4 position CGRAM
PAUSE 300
' *******************************************************************************
BAR :
IF Mark1 = 1 THEN                             ' If true
LINE = $2: ADCIN 7, CHANNEL: Mark1 = 0        ' 1st line LCD shows L channel
ELSE                                          ' If it is not
LINE = $c0: ADCIN 6, CHANNEL: Mark1 = 1       ' 2nd Line LCD shows R channel
ENDIF 'End of the comparison
' *******************************************************************************
REST = ( CHANNEL // 5 )    ' Operation subtracted from the division
LCDOUT $FE,LINE            ' Start writing in the LCD
FOR COUNTER = 1 TO(CHANNEL/5) 'Count forward
LCDOUT 4                   ' 4 position CGRAM Print
NEXT COUNTER               ' Returns to COUNTER
IF REST = 1 THEN  LCDOUT 0 ' Print CGRAM position 0
IF REST = 2 THEN  LCDOUT 1 ' Print CGRAM Position 1
IF REST = 3 THEN  LCDOUT 2 ' Prints 2 position CGRAM
IF REST = 4 THEN  LCDOUT 3 ' 3 position CGRAM Print
LCDOUT 20, 20 , 20         ' Clearing 3 characters
' *******************************************************************************
IF (pushbutton = 1) and (Mark2 = 6) THEN GRAF1   '1 ° Viewing 
IF (pushbutton = 1) and (Mark2 = 1) THEN GRAF2   '2 ° Viewing
IF (pushbutton = 1) and (Mark2 = 2) THEN GRAF3   '3 ° Viewing 
IF (pushbutton = 1) and (Mark2 = 3) THEN GRAF4   '4 ° Viewing 
IF (pushbutton = 1) and (Mark2 = 4) THEN GRAF5   '5 ° Viewing 
IF (pushbutton = 1) and (Mark2 = 5) THEN GRAF6   '6 ° Viewing 
' *******************************************************************************
GOTO BAR
END

PICBasic Pro Trial Version 3.0.7.1 [incluye MPASM v8.90, Microcode Studio 5 (MCSX) para PBP v3, PBP 3.0.7.1]
Tamaño: 123.1MB
SHA1 Hash: C449786CFE50B26EB6818F9C35E10C718C36F6AD
Descarga

PICKit 3 v3.01
Tamaño: 8.4MB
SHA1 Hash: 34600B01B759F65DF993E1FA6408B4B3B3BA4AC9
Descarga

Además también se encuentra disponible para descargar el firmware ya compilado, listo para cargar en el microcontrolador.

VuMeter v1.0 HEX
Tamaño: 2KB
SHA1 Hash: 9D1F393C4EA3B561377988757898DAE7
Descarga