====== ステレオレベルメータ(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]]