目次

スピーカのインピーダンス測定アダプタ

概要

スピーカーのインピーダンスは、Ω(オーム)という単位で表示されています。
インピーダンスとは、回路に交流電流を流した際に生じる抵抗(交流抵抗)のことで、スピーカー・ユニットのようにコイルを持つ回路に交流電流(音の信号)を流した際に生ずる抵抗値を表します。

またコイルの抵抗値は、周波数が高い方が大きくなります。
つまり、実際のスピーカのインピーダンスが、常に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を求めることが出来ます。

回路図

発振器は手持ちの既製品を使いました。これは出力インピーダンスが600Ωと高いので、LM386でインピーダンス変換しました。もしも発振器の出力インピーダンスが低いのであれば、この部分は必要ありません。

ソースコード

ImpedanceMeter.c
//********************************************************************** 
/*
  『インピーダンスメーター』 
*/
//********************************************************************** 
 
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);
	}
}
 
//**********************************************************************

動作確認

LM386のアンプ部です。
写真では、1番ピンと8番ピンを接続して、増幅率を200倍にしていますが、外して20倍でも十分です。

PIC16F88周辺です。

手持ちの4Ωのスピーかを測定しました。

左上:10Hzの時に約3.9Ωです。
右上:100Hzの時に約4.6Ωです。
左下:1kHzの時に約4.0Ωです。
右下:10kHzの時に約6.9Ωです。

手持ちの20Ωのスピーかを測定しました。

左上:10Hzの時に約16.0Ωです。
右上:100Hzの時に約16.4Ωです。
左下:1kHzの時に約17.3Ωです。
右下:10kHzの時に約29.3Ωです。

手持ちの8Ωのセメント抵抗を測定しました。

左上:10Hzの時に約7.5Ωです。
右上:100Hzの時に約7.7Ωです。
左下:1kHzの時に約7.8Ωです。
右下:10kHzの時に約7.8Ωです。

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details