====== スピーカのインピーダンス測定アダプタ ====== ===== 概要 ===== スピーカーのインピーダンスは、Ω(オーム)という単位で表示されています。 インピーダンスとは、回路に交流電流を流した際に生じる抵抗(交流抵抗)のことで、スピーカー・ユニットのようにコイルを持つ回路に交流電流(音の信号)を流した際に生ずる抵抗値を表します。 またコイルの抵抗値は、周波数が高い方が大きくなります。 つまり、実際のスピーカのインピーダンスが、常に8Ωあるいは16Ωというわけではありません。周波数によってかなり変化し、そのインピーダンスは一定ではありません。 そこで周波数によって、どれくらい変化するかを測定するアダプタを製作してみました。 ===== 動作原理 ===== そう難しい原理ではありません。 オームの法則で求めることが出来ます。 オームの法則では、電圧を V 、電流を I 、抵抗を R とすると、次のように表されます。 V=R×I I=V÷R R=V÷I ですから、今回のようにインピーダンス(つまりR)を求めるには、Rに加わる電圧VとRを流れる電流Iが分かれば良いということになります。 電圧計と電流計があれば手っ取り早いのですが、電流計が無くても、電圧計が2台と既知の抵抗(例えば、50Ω)があれば求めることが出来ます。 図Bで説明します。 既知の抵抗R1の両端の電位差(V1-V2)をR1で割るとR1を流れる電流Iが求まります。 次にV2をIで割るとR2を求めることが出来ます。 {{:imgpaste:202004:htmikan-20200429-194133.png}} ===== 回路図 ===== 発振器は手持ちの既製品を使いました。これは出力インピーダンスが600Ωと高いので、LM386でインピーダンス変換しました。もしも発振器の出力インピーダンスが低いのであれば、この部分は必要ありません。 {{:imgpaste:202004:htmikan-20200429-194157.png}} ===== ソースコード ===== //********************************************************************** /*   『インピーダンスメーター』 */ //********************************************************************** unsigned int measurement(unsigned short channel) { unsigned int ad, max, min; unsigned char cnt; // max = 0; min = 1024; for (cnt = 0; cnt < 100; cnt++) { ad = Adc_Read(channel); max = max < ad ? ad : max; min = min > ad ? ad : min; Delay_us(100); } ad = max - min; return (ad); } //********************************************************************** void main() { unsigned char buf[8], cnt; double V1, V2, R; // OSCCON = 0b01110000; // クロックは8Mhz CMCON = 0b00000111; // コンパレータは使用しない。 // A/D変換を使用する。 ANSEL = 0b00001100; // ポートを初期化する。 TRISA = 0b00111110; TRISB = 0b00001111; OPTION_REG.F7 = 0; // LCDを初期化する。 Lcd_Custom_Config(&PORTB,4,5,6,7,&PORTA,0,7,6); Lcd_Custom_Cmd(LCD_CURSOR_OFF); Lcd_Custom_Cmd(LCD_CLEAR); // while (1) { //V1の測定と表示 V1 = 0.0; for (cnt = 0; cnt < 100; cnt++) { V1 += measurement(2); } V1 = (V1 * 4.8828125) / 100.0; WordToStr((unsigned int)V1, buf); Lcd_Custom_Out(1, 1, buf); Lcd_Custom_Out(1, 6, "mV"); //V2の測定と表示 V2 = 0.0; for (cnt = 0; cnt < 100; cnt++) { V2 += measurement(3); } V2 = (V2 * 4.8828125) / 100.0; WordToStr((unsigned int)V2, buf); Lcd_Custom_Out(1, 9, buf); Lcd_Custom_Out(1, 14, "mV"); //インピーダンスの計算と表示 R = V2 / ((V1 - V2) / 51.0); R = R * 1000.0; WordToStr((unsigned int)R, buf); Lcd_Custom_Out(2, 1, buf); buf[0] = 'm'; buf[1] = 0xF4; buf[2] = 0x00; Lcd_Custom_Out(2, 6, buf); // Delay_ms(500); } } //********************************************************************** ===== 動作確認 ===== {{:imgpaste:202004:htmikan-20200429-200914.png?500}} LM386のアンプ部です。 写真では、1番ピンと8番ピンを接続して、増幅率を200倍にしていますが、外して20倍でも十分です。 {{:imgpaste:202004:htmikan-20200429-200932.png?500}} PIC16F88周辺です。 {{:imgpaste:202004:htmikan-20200429-200943.png?500}} 手持ちの4Ωのスピーかを測定しました。 {{:imgpaste:202004:htmikan-20200429-200956.png?500}} 左上:10Hzの時に約3.9Ωです。 右上:100Hzの時に約4.6Ωです。 左下:1kHzの時に約4.0Ωです。 右下:10kHzの時に約6.9Ωです。 {{:imgpaste:202004:htmikan-20200429-201007.png}}{{:imgpaste:202004:htmikan-20200429-201010.png}} {{:imgpaste:202004:htmikan-20200429-201013.png}}{{:imgpaste:202004:htmikan-20200429-201020.png}} 手持ちの20Ωのスピーかを測定しました。 {{:imgpaste:202004:htmikan-20200429-201027.png?500}} 左上:10Hzの時に約16.0Ωです。 右上:100Hzの時に約16.4Ωです。 左下:1kHzの時に約17.3Ωです。 右下:10kHzの時に約29.3Ωです。 {{:imgpaste:202004:htmikan-20200429-201047.png}}{{:imgpaste:202004:htmikan-20200429-201050.png}} {{:imgpaste:202004:htmikan-20200429-201055.png}}{{:imgpaste:202004:htmikan-20200429-201059.png}} 手持ちの8Ωのセメント抵抗を測定しました。 {{:imgpaste:202004:htmikan-20200429-201113.png?500}} 左上:10Hzの時に約7.5Ωです。 右上:100Hzの時に約7.7Ωです。 左下:1kHzの時に約7.8Ωです。 右下:10kHzの時に約7.8Ωです。 {{:imgpaste:202004:htmikan-20200429-201901.png}}{{:imgpaste:202004:htmikan-20200429-201905.png}} {{:imgpaste:202004:htmikan-20200429-201912.png}}{{:imgpaste:202004:htmikan-20200429-201917.png}} このページは稲崎様の閉鎖した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]]