====== ステレオレベルメータ(LCD) ======
===== 概要 =====
以前に10点LEDの簡易レベルメータを作成しましたが、今回はステレオに対応し、表示はLCD(16文字2行)を使用しました。
===== 動作原理 =====
<信号を増幅する>
* 入力される信号(交流:AC)をトランジスタで増幅(約5倍)します。
* この時、コレクタ電圧は、約2.5Vを中心に±と振幅します。
<信号の大きさを求める>
* PICのA/D変換機能を利用して、増幅されたRチャンネルとLチャンネルの信号を各々100回取り込みます。
* その間の最大値と最小値を求めます。
* そして最大値と最小値の差より信号の大きさを求めます。
<信号の大きさをLCDにバー表示する>
* 求めたRチャンネルおよびLチャンネルの信号を16段階に階調します。
* LCDの1行目にRチャンネル、2行目にLチャンネルをバー表示します。
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200429-173728.png}}
===== ソースコード =====
//**********************************************************************
/*
<ステレオレベルメーター(16点)>
*/
//**********************************************************************
unsigned int adR, adL;
void measurement()
{
unsigned int maxR, minR, maxL, minL;
unsigned char cnt;
//
maxR = 0;
minR = 1024;
maxL = 0;
minL = 1024;
for (cnt = 0; cnt < 100; cnt++) {
adR = Adc_Read(1);
adL = Adc_Read(2);
maxR = maxR < adR ? adR : maxR;
minR = minR > adR ? adR : minR;
maxL = maxL < adL ? adL : maxL;
minL = minL > adL ? adL : minL;
}
adR = maxR - minR;
adL = maxL - minL;
}
//**********************************************************************
void main()
{
unsigned char buf[10], cnt, tmpR, tmpL;
//
OSCCON = 0b01110000; // クロックは8Mhz
CMCON = 0b00000111; // コンパレータは使用しない。
ANSEL = 0b00000110; // AD1,2を使用する。
TRISA = 0b00111110;
TRISB = 0b00001111;
//
Lcd_Custom_Config(&PORTB, 4, 5, 6, 7, &PORTA, 0, 7, 6);
Lcd_Custom_Cmd(LCD_CURSOR_OFF);
Lcd_Custom_Out(1, 1, "LevelMeterV2 ");
Lcd_Custom_Out(2, 1, " JF3SFB 2007.12");
Delay_ms(1000);
Lcd_Custom_Cmd(LCD_CLEAR);
//
while (1) {
measurement();
//
tmpR = adR / 54;
tmpL = adL / 54;
for (cnt = 0; cnt < 16; cnt++) {
if (tmpR > cnt)
Lcd_Custom_Chr(1, cnt + 1, 0xFF);
else
Lcd_Custom_Chr(1, cnt + 1, ' ');
//
if (tmpL > cnt)
Lcd_Custom_Chr(2, cnt + 1, 0xFF);
else
Lcd_Custom_Chr(2, cnt + 1, ' ');
}
}
}
//**********************************************************************
===== 動作確認 =====
いつものブレッドボードで動作確認しました。
{{:imgpaste:202004:htmikan-20200429-173842.png?500}}
PICとLCD周りの配線です。制御信号は7本だけです。
{{:imgpaste:202004:htmikan-20200429-173854.png?500}}
トランジスタによるアンプ周りの配線です。
{{:imgpaste:202004:htmikan-20200429-173906.png?500}}
実際にMDウォークマンから信号を入力してみました。
{{:imgpaste:202004:htmikan-20200429-173917.png?500}}
このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby:picdic:picdic|詳細]]
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.[[elechobby:picdic:picdic|Details]]