SOARISTO工房 Logo

ペガソス計画(13) - 週刊「ファランクスを作る」

 前回の続きです。

 またも、電装系です。

#「週刊」といいつつ、「月刊」になっていますが。0xF9C7

CIWS Tiny Phalanx, Arduino Serial Interface

 前々回に、シリアルインタフェースを作製しましたが、思うところあって、作り直しました。

 左側が弐号機で、右側が参号機です。

CIWS Tiny Phalanx, Arduino Serial Interface

 弐号機では、秋月の「FT232RQ USBシリアル変換モジュールキット」に、「アナログ・マルチプレクサ/デマルチプレクサ」(TC4053BP)を組み合わせ、1ポートしかない「ArbotiX-M Robocontroller」(Arduino ATmega644P)のシリアルポートを、切り替えられるようにしました。

 PCから「ArbotiX-M」にブログラムを書き込んでいる時には、PC ⇔ ArbotiX-MのTX/RX信号をアクティブにし、「ArbotiX-M」がTFTディスプレイ(gen4-uLCD-70D-SB)と通信したい時には、ArbotiX-M ⇔ TFTディスプレイのTX/RX信号をアクティブにするようにしました。

 参号機では、さらに、PCからTFTディスプレイにもプログラムを書き込んだり、microSDカードにファイルを転送したりできるよう、「ArbotiX-M」がTFTディスプレイと通信していない時には、PC ⇔ TFTディスプレイのTX/RX信号をアクティブにするようにしました。

 このため、「アナログ・マルチプレクサ/デマルチプレクサ」を、2つ組み合わせています。

 なお、「ArbotiX-M Robocontroller」のシリアルインタフェースの回路と、TFTディスプレイ(gen4-uLCD-70D-SB)のシリアルインタフェースの回路とは、微妙にRESET信号の使い方が異なっています。
(RESETのトリガとして、「ArbotiX-M」は「#RTS」信号を、TFTディスプレイは「#DTR」信号を使用)

 「ArbotiX-M」側は、そのまま「FT232RQ USBシリアル変換モジュールキット」を使っても良かったのですが、TFTディスプレイ側のものと合わせるため、新たに、2つの「FT231X USBシリアル変換モジュール」を使うことにしました。

#「FT2232D USBシリアル2ch変換モジュール」を使えば、2つのFT231Xモジュールを1つにまとめることができますが、モジュールサイズが40pinもあり、他の回路を含めると、B基板に収まらなくなるため、あえてFT231Xモジュールを2つ使うことにしました。

CIWS Tiny Phalanx, Arduino Serial Interface

 基板の裏面です。

 微妙に複雑になっています。

CIWS Tiny Phalanx, Arduino Serial Interface

 こちらは、TFTディスプレイに与えるRESET信号を生成する回路です。

 「SOT-23変換基板」の上に載っているのは、TOSHIBAの1ゲートロジックIC、「TC7S08F」です。その名のとおり、SC-74Aパッケージの中に、ANDゲートが1つ入っています。

 PCがTFTディスプレイを制御下に置いている時には、PCからRESETが掛けられるようにし、「ArbotiX-M」がPC(または外部)からRESETされた時には、TFTディスプレイもRESETされるようにしています。
(ANDゲートを、負論理のORゲートとして使用)

 このチップは、6pinパッケージにおける5pin相当の位置の足が空いているため、ここを上手く使って、パスコンとなる、2012サイズの積層セラミックコンデンサ(0.1uF)を載せています。

CIWS Tiny Phalanx, Arduino Serial Interface

 こちらは、シリアルポートの信号電圧を変換する回路です。

 「ArbotiX-M Robocontroller」の信号電圧は+5V、「nVIDIA Jetson TX2」の信号電圧は+3.3Vとなっていることから、「4ビット双方向ロジックレベル変換モジュール BSS138使用」を使って、信号電圧を降圧/昇圧しています。

 TX/RX信号に加え、#RTS信号と#CTS信号も電圧変換し、都合、モジュールに載っている4ch分を、すべて使い切っています。

 #RTS信号と#CTS信号を使うのは、「ArbotiX-M」と「Jetson TX2」との間で、ハードウェアハンドシェイクをさせようとしているためです。

 「Jetson TX2」が「ArbotiX-M」に話し掛けている時は、「ArbotiX-M」はTFTディスプレイに対して通信せず、「Jetson TX2」も、「ArbotiX-M」がTFTディスプレイに話し掛けている時は、「ArbotiX-M」に対して通信しないようにします。
(基本は、「Jetson TX2」がマスタで、「ArbotiX-M」がスレーブ)

CIWS Tiny Phalanx, Arduino Serial Interface

 こちらは、高輝度LEDをPWM制御するための回路です。

 「SOT-23変換基板」を改造したものを使って、SC-59パッケージのMOSFET(2SJ168)を、DIP化しています。

 その横にあるのは、MOSFETをスイッチングするためのデジタルトランジスタ(RN1201)です。

 一般的には、「ローサイドスイッチ」にすれば、LEDのスイッチングに要するデジタルトランジスタ(またはMOSFET)は1段で済みますが、どうもLEDのGND(相当)が他の回路のGNDから“浮く”ので、これが電気屋としては気持ち悪いのです。

 前々回に記述したとおり、NPN型のデジタルトランジスタに、PchのMOSFETを組み合わせた2段構成とし、「ハイサイドスイッチ」にすることにより、LEDのGNDを他の回路と共通化しています。

CIWS Tiny Phalanx, Arduino Audio Interface

 TFTディスプレイ(gen4-uLCD-70D-SB)との、接続インタフェースです。

 前々回に記載したとおり、コントローラとの接続は、第三世代の「Picaso」では、ピンヘッダでしたが、第四世代の「Diablo16」では、FFCケーブルに変更されています。

 このFFCケーブルを終端するため、「FFC変換基板」で、DIP化します。

 また、第四世代の「Diablo16」では、オーディオインタフェースが削除されてしまっていますが、音声信号(Audio-OUT)としては、FFCケーブルに出てきています。

 せっかくなので、オーディオ出力もできるようにしてみました。

CIWS Tiny Phalanx, Arduino Audio Interface TPA6205A1DRBR

 こちらは、4D Systemsが公開している、「Diablo16」向けのオーディオインタフェースです。

 リファレンス回路では、Texas InstrumentsのD級アンプ、「TPA6205A1DRBR」が使われています。

 仕様書を見ると、+3.3V駆動で、インピーダンス8Ωのスピーカを使うと、0.7W程度の出力のようです。

 デスクトップ上に設置する「Tiny Phalanx」に組み込むためには、もう少し出力を大きくしたいところです。

CIWS Tiny Phalanx, Arduino Audio Interface

 都合が良いことに、秋月から、同じTexas InstrumentsのD級アンプ、「TPA2006」を使ったアンプキットが発売されています。

 この「TPA2006使用 超小型D級アンプキット」は、+5V駆動で、インピーダンス8Ωのスピーカを使うと、1.45Wの出力が得られます。

 ネットの情報によると、チップ周辺に接続するインダクタやコンデンサなどの特性を吟味することにより、高級オーディオに匹敵するぐらいの音質が得られるとか。

 果たして、こんな小さなモジュールで、そんな高音質が得られるのかどうか・・・。

 モノは試しに、ということで、後述の電子部品が海外から届くまで、少し時間があったため、ブレッドボード上で、いろいろと実験してみました。

 まずは、「TPA2006D1」のリファレンス回路のとおり、スピーカ出力側に、ローパスフィルタ(カットオフ周波数:27kHz)を入れてみました。

 つぎに、アンプ入力側の利得を調整しました。

 秋月の「TPA2006」のアンプキットの利得は、3倍(約9.5dB、300kΩ/100kΩ)となっています。一方、「Diablo16」向けアンプの利得は、10倍(20dB、68kΩ/6.8kΩ)となっていました。

 この利得(20dB)に合わせるため、秋月のアンプキットの基板上に実装されている抵抗(とコンデンサ)をバイパスし、外部に30kΩの抵抗(と4.7uFのコンデンサ)を入れたところ・・・、

 音が歪んでしまいました。0xF999

 「Diablo16」向けアンプの動作電圧は+3.3V、今回の秋月のアンプキットの動作電圧は+5Vであることから、電圧を上げた分、利得を下げることにし、6.6倍(約16.4dB、43kΩ)にしたところ、音が歪むことは無くなりました。
(TFTディスプレイから、22.05kHz/16bitのサンブルデータを最大音量(音量:127)で出力させ、インピーダンス8Ωのスピーカにて確認)

 この段階で、音の歪みは無くなったものの、「ブーン」というハムノイズが酷い状態でした。とても「高級オーディオに匹敵する」とは言えない音質です。

 そこで、「Diablo16」向けアンプのリファレンス回路のとおり、4段のラダーフィルタを入れてみましたが、状況は変わらず。

 秋月のアンプキット用に、独立して用意したスイッチング電源(LXDC55使用DCDCコンバータキット)が悪いのかと思い、別の+5V電源(スイッチングではなく、レギュレータ)に換えてみましたが、状況は変わらず・・・。0xF9D0

 この酷いハムノイズが、どこから来るものなのか、考えあぐねていましたが、まずは切り分け。

 試しに、Audio-ENABLEをHighにし、Audio-OUTをLow(無信号)状態にしてみたところ、スピーカからハムノイズが出ないことが分かりました。すなわち、アンプキット用のスイッチング電源からのノイズではなく、Audio-OUTからの音声信号そのものにノイズが乗っているということです。

 そこで、「Diablo16」向けアンプのリファレンス回路に倣い、秋月のアンプキットに入力する音声信号の直前に、ロジックICを入れてみることにしました。

 このロジックIC(ANDゲート)は、A入力・B入力とも同じ信号(Audio-OUT)が接続され、単なるドライバ(バッファ)としてしか機能していませんが、その電源には、インダクタとコンデンサが接続されています。

 すなわち、リファレンス回路では、このロジックICを、「ラインノイズフィルタ」として機能させているのです。(大して驚くべきことでもありませんが)

CIWS Tiny Phalanx, Arduino Audio Interface

 こちらは、「Diablo16」向けアンプのリファレンス回路で指定されている、Texas Instrumentsの1ゲートロジックIC、「SN74LVC1G08DBVR」です。

 前述の、TOSHIBAの「TC7S08F」も、ANDゲートなので、同じ働きをしてくれると思いますが、こちらのオーディオインタフェース基板は、「TPA2006D1」にあわせ、Texas Instrumentsのチップで統一したかったため、わざわざ海外から取り寄せました。(10日ほどで到着)

 このチップも、6pinパッケージにおける5pin相当の位置の足が空いているため、ラインノイズフィルタとなる、2012サイズのフェライトビーズ(インピーダンス600Ω)を載せています。(あわせて、GND間に4.7uFのコンデンサも入れています)

 期待しながら、サンブルデータを再生したところ・・・、

 効果てきめんでした。0xF9CF

 酷いハムノイズがすっきりと消え、小さなスピーカでも、しっかりとした音量で再生してくれるようになりました。(良かったヨカッタ)

CIWS Tiny Phalanx, Arduino Audio Interface

 基板の裏面です。

 電子部品の配置を熟考し、ワイヤ配線を可能な限り少なくするようにしました。

 あわせて、アナログ系とデジタル系のGNDを、完全にアイソレートしています。

 さらに、アナログ系のGNDと+5Vは、アンプキット用のスイッチング電源を起点として、“一筆書き”のように配線にしてあり、途中で不要な分岐をしないようにしています。

 配線を考えるのは、パズルを解いているようで、面白いです。0xF9C6

CIWS Tiny Phalanx, Arduino Audio Interface

 と、いうことで、「ArbotiX-M Robocontroller」に、TFTディスプレイと、これまで作製したシリアルインタフェース、オーディオインタフェースを接続して、動作確認。

CIWS Tiny Phalanx, Arduino Audio Interface

 これまでに作製した回路たち。

 あとは実装を待つばかり。

(つづく)

Trackback(0)

Trackback URL: https://www.soaristo.org/mt/mt-tb.cgi/1240

Post Comment