iPhone / iPadをオシロスコープやFFTアナライザとして使うアプリ「e-scope 3-in-1」というのを見つけた。内蔵マイクで音を拾ってスペクトルなどを表示してくれるアプリならたくさんあるけれど、これは外部インタフェースを作れば、外部から信号を直接入れられれる点が面白い。しかも、「自動測定オプション」を使えばアンプなどの周波数特性を測定できるようで、面白そうなので買ってみた。
ちなみに、e-scope 3-in-1の価格は240円。それに、自動測定オプションも240円。共に、2019年5月現在のお値段。
インタフェース作成
外部I/Fの作り方は、こちらに解説記事がある。
ユニバーサル基板で作ってもいいのだけれど、コネクタの足がユニバーサル基板のピッチと合わないため面倒だし、他のものを作るついでに基板を起こした。

裏は全面GND(表でもGND同士はつないでいる)。

回路は、メーカの解説記事と基本は同じ。抵抗の定数はできあがった後で実際に波形を見て調整した。36kΩの手持ちがなかったので、みっともないけど75kΩと68kΩをパラ(35.7kΩ)にして載せている。iPhone XRとiPad(2017モデルだったかな?)で試したが、どちらもこの定数で大丈夫みたい。もっとも、そもそもが(電圧の)精度は期待できるものでもない。その他、コンデンサ等は手持ち部品の都合。
オシロスコープ
まずは、オシロスコープとしての測定。

SGから1Vppの正弦波信号を入力して波形を観測。
50Hz

100Hz

1kHz

5kHz

10kHz

1kHz アッテネータ入

ここのまとめ
下は100HzはOK。50Hzではやや小さめに観測される。上は数kHzまでは割と良さそう。5kHzでは波形た多少いぴつになり、10kHzまで行くとだいぶ崩れてくる。まぁ、こんなものか。
アッテネータを入れると、電圧がやや大きめの波形になってしまう。抵抗値をもっと調整すればいいのだろうが、まぁ、これくらいで良しとしておく。アッテネータを入れた場合は入力信号をそれに合せて大きくすればよかったと、今さらながら反省。
FFTアナライザ
測定方法は上のオシロスコープの場合と同じ。1Vppの正弦波を入力する。
1kHz

20Hz~20kHzスイープ

ここのまとめ
スイープの結果がガタついているのは、測定が飛び飛びで行われるため。ここからも100Hz以下は感度が下がることがわかる。上は17kHz位までかな?
ちなみに、マイク入力でFFTアナライザを使ってみたのが、こちらの記事。
自動測定機能
さて、ここからが一番期待していた「自動測定」の機能。このアプリから信号を発生させ、それを被測定物を通して再びこのアプリで受けて特性を表示してくれるというもの。校正機能も付いている。詳細は、下記のメーカサイトで。
THD測定はややこしそうなのでとりあえず置いておき、簡単なCRローパスフィルタを測ってみる。

対象回路とシミュレーション
二種類試してみる。カットオフ周波数(fc)は約1.6kHzと、約3.4kHz。

失敗編
測定してみたところ、シミュレーションとは大きく異なる波形になった。ここはその失敗の記録。いろいろやって、もう少しマシな結果に持っていけた。失敗編を飛ばして先に進むなら、こちらをクリック⇒ なんとかなった編
iPhoneで測定
0.01µF + 4.7kΩ、カットオフ周波数は約3.4kHz。

あれ?おかしい。波形がLPFらしく下がっている点はいいのだけど、途中から逆に上がるのはなぜ?また、よく見ると、下落のカーブもずいぶんと急峻。CR一段のLPFでこんなに切れるわけがないと思うが。
iPadで測定
ひょっとしたら、iPhoneの問題?イヤフォン端子がないのでLightningコネクタ経由でつないでいる点が気になる。
ということで、iPadで同じ測定をしてみる(イヤフォン端子があるので)。

こちらでも、やはり、と言うか、残念ながらと言うか、同じ結果。
カットオフ周波数違いのもう一種類も測定して、二つ並べて表示してみた。

内部で信号が漏れている?
いろいろとやってみた結果わかったのは、iPhone / iPad内部で出力信号が入力側に漏れてクロストークを起こしているのではないだろうかということ。
まず、被測定物をつながずに、アダプタだけを付けた状態で測定してみる。

さらに、話をシンプルにするため、アダプタも付けずにコネクタだけを付けた状態でも測定してみる(外部マイク状態にするために抵抗だけをつける)。

測定結果。

このように、入力側に何もつないでいないにも関わらず、信号が測定されている(青がアダプタを接続、赤がアダプタなし)。周波数が高くなるほどレベルが高くなっている。LPFで下がっていたのが途中から反転して上がっているのはこれを拾ってしまっているのではなかろうか?
アダプタを付けた方がレベルが高いということは、ケーブル内でもクロストークを起こしているということか?
ちなみに、この状態で、信号を「ノイズ」にしてFFTアナライザで観測しても同様の結果が見られた。

このことから、「自動測定」ではなくてもこの現象は起きているとわかる。
外部SGを使って測定
内部で信号がクロストークを起こしているのなら、信号源は外部にすればいいのでは?つまり、iPhone / iPad側では信号は発生させずに、FFTアナライザ(ピーク保持)だけを使う。

直結
まずは、被測定物をつながずに、SGを測定入力端子と直結したもの。

100Hz~18kHz位までは大体フラット。波形のガタツキは、上にも書いたように、測定が飛び飛びのため。(SGの)スイープを繰り返すと飛び飛びが少しずつ埋まる。
fc: 3.4kHz

fc: 1.6kHz

ここのまとめ
信号源を外部にすれば、シミュレーションと概ね一致する結果が得られた(カーブの傾きも含めて)。これなら使えないことはないが、波形のガタツキを減らすために、何度もスイープしなければならず、時間がかかるのが難点。上の波形は、スイープ時間60秒で、三、四回繰り返したもの。最初からスイープ時間を長く(速度を遅く)する手もあるが、いずれにしても時間がかかる。
iPhone / iPadだけで周波数特性が測定できると「自動測定」に期待していたので、この結果は残念。改善してもられないだろうか?
なんとかなった編
信号の漏れに関してメーカのブログに書いたところ、アドバイスを頂けた。それを元に実験を繰り返し、ある程度は良い結果が得られるようになった。
クロストークの軽減方法
メーカからのアドバイスよれば、信号出力を「L,R位相反転」にすればクロストークを抑えられるだろうとのこと。なるほど、LRの信号を逆位相とすることで、周りに漏れる信号が互いに打ち消し合い、マイク側のラインには乗らなくなるということか。
「L,R位相反転」を選択すると赤くなる。この後、上にある「保存」を押すのを忘れないように。そうしないと有効にならない。

しかし、この逆相による漏洩軽減はケーブル内のでの話。上で実験したように、iPadのマイク端子に直接抵抗を付けただけの状態でも漏洩は観測されている。その点を改めて説明したところ、Rch(信号出力の使っていない方)とMic端子の間に2pFのコンデンサを入れるとクロストークを軽減できるとのアドバイスを実験結果と共に頂いた。コンデンサの容量は要調整。
そこで、こちらでも実験してみた。


LR逆相は確かに効果がある。試しに、コンデンサをLchに付けてみたり、容量を大きくしてみたりしたが、一番良いのはやはりRchに2pF。
モノラルの罠
上の実験はiPadで行ったもので、では今度はiPhoneでも確認、とやってみたところ、LR逆相にすると音が出ない。これもメーカにアドバイスを仰いだところ、コネクタの嵌合の問題でLRがショートしているのではないかとのこと。ショートしてしまっていれば信号が互いに打ち消されてしまうわけだ。Lightningコネクタから3.5mmジャックに変換するアダプタのせいかとメーカ純正品や3rd partyでも試してみたり、イヤフォンもApple純正品を使って音を聞いたりしてけど、結果は同じ。そう言うメカニカルは話ではなさそう。どうも、iPhone自体がモノラルで出力しているとしか思えない。
そう思って探してみたら、iOSの設定にあった。「一般」の「アクセシビリティ」の中に、「モノラルオーディオ」という項目。

これがONになっていたので、上のようにOFFにしたところ、ちゃんとステレオ出力されるようになった。
しかし、なぜこれがONになっていたのかは不明。存在すら知らなかったのに。何年か前にモノラルにできないかと思って探したことはある。そのときは見つからなくて、できないんだと思いこんでいた。
ともかく、これで、iPhoneでもLR逆相で出力できるようになった。せっかくなので、iPhoneでの正相/逆相の効果を測定してみた。ここではLightningコネクタだけ(プラグに抵抗を直結)の場合と、ケーブル(と自作アダプタ)を付けたものの両方を測定した(補正コンデンサは付けていない)。逆相の効果がよく分かる。

なお、この「モノラルオーディオ」の設定項目は、iPadにもあることも確認した。
補正コンデンサの効果
ここまで来たら、もうちょっと追い込みたくなって、補正コンデンサの容量による違いを見てみた。

「ケーブル逆相」はコンデンサなしの状態。その他は、RchとMic端子間にコンデンサを付けた状態。2pFと5pFはセラミックコンデンサ。10pFは積層セラミックコンデンサ。20pFは10pFのものを二本パラで。
この結果では、10pFが最も良い。もっと追い込むこともできるだろうけれど、劇的に改善するとは思えないので、一旦、ここで打ち止め。それに、ケーブルの引き回し方によっても影響を受けるようだし。


ネジ穴のパッドにハンダが乗ってしまい、みっともなくなってしまった…。
iPhoneでの測定
では、ようやく本題。
iPhoneを使ってCR LPFを測定。上のシミュレーションのカットオフ周波数(fc)は約1.6kHzと約3.4kHzの他に、約340Hzのものも測定した。

高域の方はクロストークの影響があるため誤差がある。概ね、-30dB位まではシミュレーション結果ともよく合っているようだ。
ちなみに、補正用のコンデンサがない場合が下の図で、高域はかなり怪しい。

やはり、補正コンデンサは付けるべき。
失敗編で、自動測定の結果の下落カーブが急峻すぎたのも、クロストーク問題の影響のようだ。この問題の影響がない範囲ではLPFの特性カーブもシミュレーションと(大体)合っている。
iPadでの測定
iPadでも、同様に測定する。
まずは、逆相と補正コンデンサ効果の確認から。

iPhoneよりもかなりいい。Lightning変換ケーブルを使っていないためかな?
続いて、CR LPFの測定。LR逆相、かつ、10pFの補正コンデンサを付けた状態で。

こちらは、iPhoneよりもクロストークが少ないだけあって、高域でもこの測定の範囲では割と良い結果になっている。
ここでのまとめ
- SG出力を「L,R逆位相」にすること。
- 高域の改善のために、補正コンデンサ10pF程度を付けた方が良い(コンデンサの値は接続ケーブルによる)。
- 高域では特性が悪化するため、使用範囲は-30dB程度までだと思ったほうが良さそう。iPadはもう少し小さいレベルまで大丈夫のようだ。
クロストークをより減らせる方法があれば知りたい。おそらく、iPhone / iPadの中で起きているものだろうから難しそうだけど。
その他の気づいた点
このアプリをバックグラウンドで走らせたままにしておくと、バッテリの消耗が激しい。アプリはちゃんと終了させるべし。
以下、改善要望。
- 測定中(アプリ起動中)は自動ロックしないで欲しい。
- 「Copy」での画像形式をJPEGではなくPNGにして欲しい(または、選択できるようにして欲しい)。
- 「ピーク保持」のグラフをもう少し明るい色にして欲しい(背景色に近いため見づらい)。
- 自動測定終了後、グラフを表示した後に「完了」を押すが、このときは自動測定の画面に戻って欲しい。現状では通常の測定画面に戻ってしまうので、自動測定を連続して行う際に手順が面倒。
- 自動測定結果のファイル名の修正ができるようにして欲しい。ファイル名を付け替えることはできるが、「一部間違えたのでそこだけ直したい」、ということが現状はできない(全部入力しなければならない)。
- 自動測定結果のファイルの順番をを並べ替えられるようにして欲しい。
- 自動測定結果のファイルの選択をまとめて解除する機能が欲しい。複数選択した後、一つずつ解除するのは面倒。
- このアプリからの写真へのアクセスが許可されていないときに、「Copy」を押したらその旨表示して欲しい。今は、カメラロールに保存しましたと表示されてしまう。
- バックグラウンド状態になったら測定をやめてもいいのでは?バッテリの消耗が激しいので。
また、上の本文中に書いたように、クロストーク(?)の問題を解決して欲しい。今は、入出力を接続した(クローズ)際の結果をリファレンスとして使っているが、これに加えて入出力をオープンにした際の結果もリファレンス2として考慮すれば可能?いや、ノイズフロアのレベルが高い状態なので、それより小さい信号の測定は無理か。やはり、クロストーク自体を抑え込まなければダメか?
以上。
コメント