スピーカーのインピーダンスで悩む
「影の部分」というのはつまりインピーダンスというが複素数なので、その実数部と虚数部の振る舞いによっていろいろなことが起こったり起こらなかったりする。例えば高音域ではインピーダンスの虚数部が大きなって、見かけ上の抵抗値が上がり、パワーが入らなくなったり、とか。
そういうことがいろんな周波数帯ごとに起こるので、スピーカーと箱との相性とかがこの「スピーカーの複素インピーダンス」を測定することによっていろいろ見えてくるのっではないのかな? とおもったのが学生の頃で、当時は自作の発振器とシンクロスコープを駆使して自宅でいろいろとオタッキーな作業を行っていたわけだ。
で、最近気がついたのだが、今ならPCに信号を取り込んでそのデータを数値解析もできるし、基準となる信号も手作りで制作することもできる、ちょっとやってみようかな? と思いついたものの、実際にはなかなか時間がかかってしまって、という話。御用とお急ぎの方はスキップするが吉。
これが基本的なアイディアで、何の事はない、連続的に周波数を変えていくような信号(スイープ信号)を作って、その出力にスピーカーと直列に抵抗を入れて、その抵抗の両端の電圧と、スピーカー両端の電圧を比較することによって、スピーカーの複素インピーダンスを算出しようという心積もり。
学生の頃は抵抗として0.5Ωとかいう小さな値にしてスピーカのアース側につなぎ、その両端の電圧というよりもその抵抗を流れる電流を測定するような考えだったのだが、今回は図に示しているようにPCのLINE入力部から回路の二箇所の電圧を取り込み、その2つの信号の差分を取ることによって抵抗Rの両端の電圧を測定する。だから、抵抗値は数Ω以上あってもよい。大体スピーカーの定格インピーダンスである4Ω、8Ω、16Ωの近辺の値であればなんでもよい。
でもまぁ、これを実際にやるとすると、ケーブルをどうするとか、オーディオ装置とPCの位置が離れていてつなげないとか、片手間でやっているものだからなかなか進まなかったわけです。
でも、図のアンプとしてPCに接続しているパワード・スピーカーを使う。パワードスピーカーはたいてい片方のスピーカーにアンプを内蔵させていて、そこからケーブルを伸ばしてもう片方のスピーカーを駆動しているから、その部分を拝借して、つまり、駆動される側のスピーカーに相当する部分に図の抵抗+スピーカをつないでしまおう、という手抜き作戦。
スイープ信号の方は、愛用の音声編集ソフトAudacityで、10Hz~20000Hzを10秒間、一定振幅でスイープするような信号をWAV形式作ってこれをVLCというフリーソフトで再生する。
再生するのと同じPCでLINEARITY入力から図の2つの信号をこれまたAudacityで取り込んだのがこの図だ。
まだ差分を取る前なので、図の上の信号がR+SP、下がSPになっている。スピーカーが公称16Ωで抵抗値が5Ωだからこんなものかな、と思う。振幅が一定のはずがこんな形になっているのはパワードスピーカーの実力ということなんだろう。この図ではスイープ信号の初めからを表示させているので、信号が10~20000Hzのスイープであることを考慮するとだいたいの周波数特性が知れる。
取得したデータのスペクトルを見てみるとこんなふうになっている。
100Hzにピークって、なんだか変だ、う~ん?じゃぁ、元々のスイープは?
うむう? 3dB/Octでだらだら下がり? まぁ振幅一定でスイープとは言っても、それぞれの周波数が専有する時間が一定ではないわけだから、こうなってしまうのかな?スペクトルの取り方にも依存するかもしれないし。
まぁ、こういう環境ではこういうものだ、ということにしておこうか。
さて、ここからはコンピュータの仕事だ。perlやawkを駆使して、まずは取得したWAVファイルを数値テキスト化する。数値テキストにしてしまうと、EXCELに読み込ませて読み取った波形を観測できたりする。あ、波形を見るだけならもちろんAudacityでできるわけだが。
さて、数値テキストをどう料理するかというと、まず、基準となる抵抗Rの両端の信号のゼロクロス点を検出して、ゼロクロス点の間隔から周波数を検出し、その周波数に適合するサイン波とコサイン波をスピーカ両端の信号に掛け算することによってその位相、つまり複素インピーダンスを算出する。
まず、周波数検出をしてみたのがこのグラフだ。図の横軸はゼロクロスの通番、縦軸はゼロクロスから算出した周波数。
これで見ると、ゼロクロスから周波数をうまく抽出出来ているのは50Hz~14KHzくらいだろうか。
このデータをさらに処理して複素インピーダンスを算出したものが下の図だ。
公称16Ωにしては算出したインピーダンスどうも高めだし、実数部がマイナスになったりするのもおかしい。インピーダンス図で線が太いゲジゲジ眉毛のようになっている部分は340Hz以上の部分で、ゼロクロス-周波数図のゲジゲジ部分に対応している。
一応の結果は出してみたものの、ちょっと結果は受け入れがたいなぁ、というところだ。
まぁ、思い当たる事はいろいろとあって、まず波形を子細に調べてみると、妙に歪んでいる部分があったり、高域ではサンプリングによる歪があったりするので本当なら全域にわたってサンプリング関数を重畳してから振幅を測定しなければいけなかったんだろうとか、連続した周波数で」スイープしたのではスイープ歪とでもいうべき時間軸方向の歪がでそうだとか、そもそも信号を採集するときに手違いでLINE入力が出力部に漏れだしていたのではないか?そのために100Hzあたりのピークが出たのではないだろうか、とか。
で、まずは信号採集環境から変えていこうかと。スイープ信号の方はCDに焼いてもいいし、USBに入れてもいいのでなんとでもなるのだが、ポータブルな機器でステレオ信号を記録できるものがなかなかなくて、ほぼ近いものがあるのだがLINE入力がないとか。う~ンと唸っているとUSBオーディオデバイスが目についた。そうか、これをノートPCに接続すればウチのオーディオ装置のところで信号を採集できる。
で、これを使って採集したデータがこれ。これはモロにウチの再生系の特性が出ていて、見事なドンシャリ感がちょっと恥ずかしいのだが、人間の耳は周波数特性を自動補正するので、まぁこんなもんでしょ。
これをゼロクロス検出するとこんなふうになる。
このデータを見ていると、高域の乱れ具合になにか法則性があるようで、ここはさらなる悩みどころ。このデータから複素インピーーダンスを測定するとこんな感じ。やはりゼロクロスの乱れをモロに被ってインピーダンスも高域が乱れている。
こんなふうにインピーダンスが高めに出てしまうのは、やはり何か間違いがあるのかもしれない。
スピーカーは普通、定電圧駆動されるので、本当に知りたいのは複素インピーダンスの逆数である複素アドミッタンスなのだが、データを見ていると高域でインピーダンスが原点近くに寄ってしかも乱れているので、アドミッタンスを計算してグラフにしても大暴れしてしまう。
そのあたりをもうちょっと何とかしたいものだなぁ、と思う2014年の春。
最近のコメント