« 英単語クイズで悩む | トップページ | 研究者の「捏造」に悩む »

2014年3月30日 (日)

スピーカーのインピーダンスで悩む

インピーダンスというのは電気抵抗みたいなことだが、実はこれがなかなか奥が深くて、例えば交流100Vではボルトとアンペアを掛け算しても必ずしもワットにはならないというふうに、影の部分があったりする。

「影の部分」というのはつまりインピーダンスというが複素数なので、その実数部と虚数部の振る舞いによっていろいろなことが起こったり起こらなかったりする。例えば高音域ではインピーダンスの虚数部が大きなって、見かけ上の抵抗値が上がり、パワーが入らなくなったり、とか。

そういうことがいろんな周波数帯ごとに起こるので、スピーカーと箱との相性とかがこの「スピーカーの複素インピーダンス」を測定することによっていろいろ見えてくるのっではないのかな? とおもったのが学生の頃で、当時は自作の発振器とシンクロスコープを駆使して自宅でいろいろとオタッキーな作業を行っていたわけだ。

で、最近気がついたのだが、今ならPCに信号を取り込んでそのデータを数値解析もできるし、基準となる信号も手作りで制作することもできる、ちょっとやってみようかな? と思いついたものの、実際にはなかなか時間がかかってしまって、という話。御用とお急ぎの方はスキップするが吉。

Spimpgif

これが基本的なアイディアで、何の事はない、連続的に周波数を変えていくような信号(スイープ信号)を作って、その出力にスピーカーと直列に抵抗を入れて、その抵抗の両端の電圧と、スピーカー両端の電圧を比較することによって、スピーカーの複素インピーダンスを算出しようという心積もり。

学生の頃は抵抗として0.5Ωとかいう小さな値にしてスピーカのアース側につなぎ、その両端の電圧というよりもその抵抗を流れる電流を測定するような考えだったのだが、今回は図に示しているようにPCのLINE入力部から回路の二箇所の電圧を取り込み、その2つの信号の差分を取ることによって抵抗Rの両端の電圧を測定する。だから、抵抗値は数Ω以上あってもよい。大体スピーカーの定格インピーダンスである4Ω、8Ω、16Ωの近辺の値であればなんでもよい。

でもまぁ、これを実際にやるとすると、ケーブルをどうするとか、オーディオ装置とPCの位置が離れていてつなげないとか、片手間でやっているものだからなかなか進まなかったわけです。

でも、図のアンプとしてPCに接続しているパワード・スピーカーを使う。パワードスピーカーはたいてい片方のスピーカーにアンプを内蔵させていて、そこからケーブルを伸ばしてもう片方のスピーカーを駆動しているから、その部分を拝借して、つまり、駆動される側のスピーカーに相当する部分に図の抵抗+スピーカをつないでしまおう、という手抜き作戦。

スイープ信号の方は、愛用の音声編集ソフトAudacityで、10Hz~20000Hzを10秒間、一定振幅でスイープするような信号をWAV形式作ってこれをVLCというフリーソフトで再生する。

再生するのと同じPCでLINEARITY入力から図の2つの信号をこれまたAudacityで取り込んだのがこの図だ。

Wavauda

まだ差分を取る前なので、図の上の信号がR+SP、下がSPになっている。スピーカーが公称16Ωで抵抗値が5Ωだからこんなものかな、と思う。振幅が一定のはずがこんな形になっているのはパワードスピーカーの実力ということなんだろう。この図ではスイープ信号の初めからを表示させているので、信号が10~20000Hzのスイープであることを考慮するとだいたいの周波数特性が知れる。

取得したデータのスペクトルを見てみるとこんなふうになっている。

Wavspectrum1_2

100Hzにピークって、なんだか変だ、う~ん?じゃぁ、元々のスイープは?

Wavspectrum0

うむう? 3dB/Octでだらだら下がり? まぁ振幅一定でスイープとは言っても、それぞれの周波数が専有する時間が一定ではないわけだから、こうなってしまうのかな?スペクトルの取り方にも依存するかもしれないし。

まぁ、こういう環境ではこういうものだ、ということにしておこうか。

さて、ここからはコンピュータの仕事だ。perlやawkを駆使して、まずは取得したWAVファイルを数値テキスト化する。数値テキストにしてしまうと、EXCELに読み込ませて読み取った波形を観測できたりする。あ、波形を見るだけならもちろんAudacityでできるわけだが。

さて、数値テキストをどう料理するかというと、まず、基準となる抵抗Rの両端の信号のゼロクロス点を検出して、ゼロクロス点の間隔から周波数を検出し、その周波数に適合するサイン波とコサイン波をスピーカ両端の信号に掛け算することによってその位相、つまり複素インピーダンスを算出する。

まず、周波数検出をしてみたのがこのグラフだ。図の横軸はゼロクロスの通番、縦軸はゼロクロスから算出した周波数。
Phase5s
これで見ると、ゼロクロスから周波数をうまく抽出出来ているのは50Hz~14KHzくらいだろうか。

このデータをさらに処理して複素インピーダンスを算出したものが下の図だ。

Phase5si
公称16Ωにしては算出したインピーダンスどうも高めだし、実数部がマイナスになったりするのもおかしい。インピーダンス図で線が太いゲジゲジ眉毛のようになっている部分は340Hz以上の部分で、ゼロクロス-周波数図のゲジゲジ部分に対応している。

一応の結果は出してみたものの、ちょっと結果は受け入れがたいなぁ、というところだ。

まぁ、思い当たる事はいろいろとあって、まず波形を子細に調べてみると、妙に歪んでいる部分があったり、高域ではサンプリングによる歪があったりするので本当なら全域にわたってサンプリング関数を重畳してから振幅を測定しなければいけなかったんだろうとか、連続した周波数で」スイープしたのではスイープ歪とでもいうべき時間軸方向の歪がでそうだとか、そもそも信号を採集するときに手違いでLINE入力が出力部に漏れだしていたのではないか?そのために100Hzあたりのピークが出たのではないだろうか、とか。

で、まずは信号採集環境から変えていこうかと。スイープ信号の方はCDに焼いてもいいし、USBに入れてもいいのでなんとでもなるのだが、ポータブルな機器でステレオ信号を記録できるものがなかなかなくて、ほぼ近いものがあるのだがLINE入力がないとか。う~ンと唸っているとUSBオーディオデバイスが目についた。そうか、これをノートPCに接続すればウチのオーディオ装置のところで信号を採集できる。

Ua3fxmini9

で、これを使って採集したデータがこれ。これはモロにウチの再生系の特性が出ていて、見事なドンシャリ感がちょっと恥ずかしいのだが、人間の耳は周波数特性を自動補正するので、まぁこんなもんでしょ。

Ua3fxswpwav

これをゼロクロス検出するとこんなふうになる。

Ua3fxswpzx
このデータを見ていると、高域の乱れ具合になにか法則性があるようで、ここはさらなる悩みどころ。このデータから複素インピーーダンスを測定するとこんな感じ。やはりゼロクロスの乱れをモロに被ってインピーダンスも高域が乱れている。

Ua3fxswpimp

こんなふうにインピーダンスが高めに出てしまうのは、やはり何か間違いがあるのかもしれない。

スピーカーは普通、定電圧駆動されるので、本当に知りたいのは複素インピーダンスの逆数である複素アドミッタンスなのだが、データを見ていると高域でインピーダンスが原点近くに寄ってしかも乱れているので、アドミッタンスを計算してグラフにしても大暴れしてしまう。

そのあたりをもうちょっと何とかしたいものだなぁ、と思う2014年の春。

|

« 英単語クイズで悩む | トップページ | 研究者の「捏造」に悩む »

家庭電化」カテゴリの記事

コメント

こんなことやってくれるフリーソフト、ってありませんでしたっけ?

どこかで見かけた気がするんですが・・・・・・

投稿: Cello | 2014年3月31日 (月) 10時13分

Simpesというのがほとんど私の同じことを考えているような感じなんですが、実際に使ってみるとキャリブレーションを本当にやってうrのかなぁ?とか。

でもそれっぽい出力は出してくれますね。複素平面表示にはしてくれないんだけれども。

私が狙っているのは信号を出す部分と独立して解析するものなので、ちょっと方向が違うっていう感じではあります。

投稿: PicksClicks | 2014年3月31日 (月) 23時06分

コメントを書く



(ウェブ上には掲載しません)




« 英単語クイズで悩む | トップページ | 研究者の「捏造」に悩む »