VUメータ(デジタル処理+アナログ表示)
概要
VUメーター(VU Meter)は、元々、音響機器に於いて音量感(volume unit)を指示するための測定器だそうです。
【開発当時の規定】
インピーダンス600Ωの回路において1khzの正弦派を加えて1mWの電力を消費したときに0VUとする。
VUメーターの指示範囲は-20から+3で単位はdBである。信号が発生してから針が既定値に達するまでの時間は300msecである。
今回は、信号をPICでデジタル処理し、針式メータで表示させてみました。
動作原理
出来るだけハードウエアは単純にし、ソフトウエアで処理をしました。
- 入力信号を、先ずはトランジスタで10倍に増幅します。
- 次にダイオードを2個使って倍電圧整流します。
- 整流された電圧をPICのA/D変換機能で取り込みます。
- 1msec間隔で300回データを取り込んでその平均を求めます。
- その結果を10ビットのD/A(ラダー方式)でアナログ電圧に変換します。
- この電圧をオペアンプのボルテージフォロアでインピーダンス変換し、針式メータを振らせます。
回路図
ソースコード
- VUmeter.c
//********************************************************************** void main() { static unsigned int ad, cnt; static unsigned long adLong; // CMCON = 0b00000111; ANSEL = 0b00000100; TRISA = 0b00111100; TRISB = 0b00000000; OSCCON = 0b01110000; while (1) { PORTA.F1 = ~PORTA.F1; adLong = 0; for (cnt = 0; cnt < 300; cnt++) { ad = Adc_Read(2); adLong += ad; Delay_us(1000); } ad = adLong / 300; PORTB = ad; PORTA.F6 = (ad & 0b0100000000) == 1 ? 1 : 0; PORTA.F7 = (ad & 0b1000000000) == 1 ? 1 : 0; } } //**********************************************************************






