« 2010年1月24日 - 2010年1月30日 | トップページ | 2010年2月14日 - 2010年2月20日 »

2010年1月31日 - 2010年2月6日の1件の記事

2010年2月 6日 (土)

3端子レギュレーターの復讐

XC6202でビート音が出る(2/1/10)
 関西に用事があって3日ほど家を空けていた。前にも書いたが、完全な電子工作依存症にかかっていて、帰宅すると取るものもとりあえず、PCルームにこもる。ブレッドボードと沢山の電子部品、工具に囲まれると不思議に気分が落ち着いてしまう。困ったものだ。

 SDカードを使ったリニアPCMプレーヤーの第三版(3号機)は、出かける直前に1台目が完成している。早速2台目の製作にかかる。ハンダ付けだけなので作業が早い。ほどなく実装が終了した。ケースを作るのを待ちきれず、1台目のケースを使ってテストする。

A2062701

 SDカードを入れて試聴する。何事もなく音が出た。おやあ、無音時にビートが入る。ブレッドボード上のプレーヤーでたまに発生するクォーン(600hzくらいか)という連続音である。大きい音で聞いているときは気にならないが、音が小さくなるとはっきり聞こえる。

 しかも始動時にSDカードをアクセスするとき、小さな「キュルキュル」というデジタルノイズまで音になって聞こえる。これはまずい。売り物ではないが(差し上げた方は気を遣って部品代を下さった)、これでは、人さまに差し上げるわけにはいかない。

 あわててトラブルシューティングを開始した。1台目と変えたところは、秋月で最近売り出した3.3V用の3端子レギュレーター(XC6202)だけである。原因は、これしか考えられない。これまでのTA48M33Fの半額なので量産用に買い込んだ。

 プレーヤーの消費電流は、50mA程度のはずである。電源が不安定になってオペアンプあたりが発振(微量の)しているのだろうか。しかし、このXC6202 は、150mAまで出力できるはずで、この程度で電源が不安定になるのは理解できない。

 念のため、もういちどプレーヤーの消費電流を測る。なんと前のパラレルLCDよりさらに少ない35mAしか流れていない。ミニLCDは、通常のLCDより消費電流が少なく、インターフェースもI2Cなので電流が流れないのだろう。

 レギュレーターが悪いとは思えないので、原因究明のため、ブレッドボード上のプレーヤーに、XC6202を持ち込んだ。うはあ、この新しい3端子レギュレーターXC6202は、ブレッドボード上でも、はっきりしたビート音が出る。Xa2062697

 そういえば、ブレッドボードではテストしていない。前のレギュレーターTA48M33Fに戻す。ビート音は消えた。TA48M33Fは、ブレッドボードでは、電池容量が少なくなったり、配線の具合でたまに出ることがあるが、この時は完全に消えている。

 XC6202の最大出力電流は、150mAである。余裕のはずである。しかし現実には500mAまで出力できるこれまでのTA48M33Fでは発生せず、XC6202ではビート音が出る。

 原因はともかく実機のレギュレーターを前のものに戻すことにする。DIP部品は、例のサンハヤトの特殊ハンダでも取り外しは難しい。ピンを殆ど失う形でやっとのことで取り外し、元のTA48M33Fに換装する。祈る気持ちで電源を入れる。これでビート音が出たら最悪の事態だ。

 ああ、良かった。完全にビート音は消えた。勿論、SDカードのアクセス音もしない。胸を撫で下ろす。やれやれ。これまでの半額だと言うので喜び勇んで買った3端子レギュレーターXC6202は無駄になったけれど、とりあえずは現状復帰した。

 どうも、がた老AVR研究所は、3端子レギュレーターと相性が悪い。研究所の最初の犠牲者は、入力と出力を間違えられて淡い煙とともに往生したレギュレーターだったし、半田ごての熱で始めて壊した半導体も7805だった。今度も10ヶ近く買った3.3V用のレギュレーターが無駄になりそうな気配である。これまでの復讐をされているのかもしれない。

PWMの分解能(2/3/10)
 レギュレーター騒ぎが一段落して、関西に行く前に書き込んだChaNさんの掲示板を覗いて見て驚いた。私の留守の間に、当研究所のリニアPCMプレーヤーのことがいくつか話題になっていて、なかにはMega328のフューズビットの問い合わせまで入っている。

 その後、ご本人は当ブログに書いたあった設定を見つけられたようだが、今度はこの設定では危ないというコメントが入っている。実はこの問題のHighバイトのビット5(SPIEN  SPI動作許可/不許可)は、AVRSPやAVRISPのようなシリアルライターでフューズビットを書いている限り、ここに1を書いても0を書いても関係ない。

 データシートには、このビットは、シリアルプログラミングでは設定できないと明記してあり(パラレルで書くときしか設定できない)、AVRSPではどちらになっているか表示もされない。

 掲示板にすぐコメントを上げようと思ったが、少し考えて止めた。というのは、問題は既に解決し、日も経っていることもあるが、以前の掲示板に余計なコメントを上げてしまったという反省があったからである。

 当研究所のブログは、どこのサイトから飛んできたかが記録されていて見ることが出来る。先日見るともなく、それを見ていたらChaNさんの掲示板からのアクセスが目立ったので、久しぶりに覗いてみた。そのときのことである。

 ChaNさんが最近公開した8ピンAVRのSDカードプレーヤーの音質に関して、当ブログのリニアPCMのことが引き合いに出されていた。ChaNさんのわずか8ピンのAVRプレーヤーの音質向上について、よせばいいのに議論に加わり「止めた方が良い」みたいなコメントを出してしまったのだ。

 コメントを出した後、すぐ後悔する。趣味でやっている電子工作に、投資対効果も無駄もそもそも有り得ない。自分のやりたいことをやるのが趣味なのだから、こういう価値基準こそ意味がない。

 私の場合は、一種の職業病である。この前も書いたが、目的と手段を混同することを異常に恐れる。常に自分が何をやりたいか(目的)を確認しながら、作業(手段)をしていないと落ち着かない。趣味の電子工作でも、この癖が抜け切れない。

 何かプロジェクトを起こす時は、必ず目的を決める。その目的に向かって何が必要かを考え、その解決策をあれこれ考える。8ピンAVRのプレーヤーを作った人が、「もっと良い音を聞きたい」と悩んでいるなら、ついMP3デコーダーチップを使うことを勧めてしまう。

 ChaNさんのプレーヤーの真髄は、あの8ピンのAVRだけでSDカードを読み、8ビットながらステレオで音を出してしまうところにある。LPFも何もついていないのでそれなりの注意は必要だが配線が極めて簡単なので、初心者にもとっつきやすい。

 最近、公開された版では、何とモノーラルながら16ビットPCMを再生してしまう。配線図を見たら、5~10KΩの抵抗でゲインを落とし、上位バイトの1/256の下位データを追加している。ま、固いことを言えばきりがない。半固定抵抗かなにかにして音を聞きながら、適当に調整すれば、というところだろう。いや参った。この遊び感覚はプロ中のプロにして始めて出来る技である。

 それにしても、いったいPWMの分解能と本来の忠実度とはどういう関係にあるのだろうか。サンプリング周波数が44.1khzだとしてリニアPCMのような16ビット分のPWMをだすためには、22.7μs(44.1khzのサンプリング期間)のあいだに65535段階(16ビット)のパルス幅を制御する必要があり、このとき必要なクロックは3Ghzに達する。そんな馬鹿なことはどこでもしていない。

 8ビットPWMだけでデジタル的に分解能を8ビット以上にあげる方法は、ウェブではここのサイトが実験しているが、16ビットを謳うPWMの実装例は見つけられない。このあたりを分かり易く解説してくれるサイトも見つけることが出来ない。

 そもそもリニアPCMのサンプリング値自体が量子化ノイズを含んでおり、サンプリング周波数近くになってくると、たとえ16ビットで精密な値を得たとしても、元の波形が復元できるわけではない。何をもって分解能とするか、リニアPCMのサンプリング値ではなく、原波形に戻って解析する必要がある。とすると、やはり時間軸ではなく、周波数軸(正弦波の集合)から分解能を考える必要があるようだ。

 やはり、昔勉強した周波数軸からのサンプリング理論を理解しないと、最近のDA変換のしくみは理解できない。直感では無理である。1ビットDACなどの内部はリニアPCMの入力を盛大なオーバーサンプリングで一旦波形を滑らかにしたあとPDMのパルス列にしているはずだ。いやこれも時間軸からの見方だな。勉強することがまた増えてしまった。
 (TDMの実装は、ここのサイトが詳細でわかりやすい)

アナログとデジタルの電源分離で解決したが(2/4/10)
 リニアPCMプレーヤーのビートの問題は、元の3端子レギュレーターTA48M33Fに戻して事なきを得た。しかし、本来の問題が解決したわけではない。出力電流が150mAあるというので採用したXC6202だったが、30mA程度の出力で電源レギュレーションか何かの原因でオペアンプあたりを発振させてしまった。

 しかし、プレーヤー量産に備えて沢山買ってある。こいつだけが悪いわけではない。前のTA48M33Fもブレッドボードで、たまにビートがでることもある。謎である。真の原因を探るため、色々実験してみた。

 まず、オペアンプの発振を疑って、ボルテージフォロワーを普通の1.5倍程度の反転増幅器に変えて見たり、出力にコンデンサー(0.1μF)と抵抗(20オーム)の直列で構成される発振止めのZobelフィルターを入れてみる。全く変化なし。うーむ、発振ではないのか。

 次はレギュレーターだ。レギュレーターの両側のコンデンサーを色々かえて試してみる。データシートの指定では、このXC6202は両側に1μFをつけろとある。これを100μFにする。指定外の方がビート音は少し小さくなった。電解コンデンサーや積層セラミック、タンタルと種類も換えてみる。これは全く変化がない。

Xa2062694

 今度は、電源からのノイズ混入を疑って22μHのインダクターと100μFのコンデンサーでデカップリング回路を作りオペアンプやDACの電源に入れる。これも関係がなかった。

 本来は、デジタルの電源と、アナログの電源は独立させるべきである。ここで以前、FPGA基板を動かす時に買った可変出力の3端子レギュレーターLM317を思い出した。こいつは確か2Vくらいからの定電圧を作ることが出来る。しかも1.5Aまで出力を取り出せる。

 アナログ電源を供給する電源のリファレンスとしては申し分がない。早速、部品箱からとりだしブレッドボードで3.3Vを出す回路を組み上げる。分圧抵抗を2kと、3.7kにする。オペアンプの電源を、この余裕たっぷりのLM317から供給した。これでオペアンプは発振しようがないはずだ。

 ありゃりゃあ、ビート音が消えない。これはどうしたことだ。デジタル部はXC6202である。電源レギュレーションによるオペアンプの発振(微量の)という仮説はもろくも崩れた。それならというので、LM317で全体の電源を供給する。

 驚いたことに、かすかなビートが残るのだ。TA48M33Fでは全く聞き取れなかったビートが明らかにしている。XC6202が容量不足だと言っていたが、何のことはない1.5Aを供給できるレギュレーターでもビートが発生した。

 わけがわからなくなってきた。デジタル部からのノイズが廻っているのだ。これはレギュレーターの容量不足ではない。しかしレギュレーターによって出たり出なかったりする。万策尽きて投げ出そうと思った時、ふと気がついた。DACの電源である。考えてみたら、DACは立派なアナログディバイスである。オペアンプだけでなく、ここも電源を独立させなければ意味がない。

Xa2062695

 DACのBU9480Fだけを独立した電源LM317から供給する。おおお、これだ。ビートはぴたりと止まった。今度は、逆にXC6202でオペアンプとDACの電源を供給する。これも全くビート音はしない。デジタル部のノイズがDACのアナログ基準電源にまわってビートが出ていることに間違いないようだ。

 しかし、何故、XC6202や、LM317で共通に電源供給するとビートが発生し、TA48M33だと共通にしてもビートが消えるのかがわからない。謎が残る。どなたか解明できる方はおられるだろうか。

| | コメント (18) | トラックバック (0)

« 2010年1月24日 - 2010年1月30日 | トップページ | 2010年2月14日 - 2010年2月20日 »