2017年05月26日

Open.Theremin@オーディオDACへの対応について

新設計の基板では遣い易い産業用のDACを導入する予定だが、ADATエンコーダーを搭載しないことを前提に使用を諦めたAudioDacを使ってDacHandlerの動作確認を行うことを思いついた。

WS001040.JPG

もちろん「動かないデバイス」を掛けあわせた結果の不確定要素が増えるので厳密な意味では試験と言えないかもしれないが、遊んでいる基板をダメ元で試すには絶好の機会だろう。

DacHandlerはマイクロコントローラから出力されたバースト信号をレジスタに溜め込んで、オーディオクロックの作法で出力する仕組み。 内部にはカウンタを装備していて、リファレンスクロックからSCKやWCK(ワードクロック)を生成する。

WS000973.JPG

AlesisのADATエンコーダーにSCKは不要だが、DacHandler側にとりあえず出力ピンを確保していたのが正解だった。 DacHandlerからROHMへ出力する信号はDATA01/SCK/WCKの3ラインで、本来ROHMに接続していたラインを断ち切って、代替する端子を接続する。

rhomHandler.png

パターンを起こすとこんな感じになる。

WS001039.JPG

WS001038.JPG

WS001037.JPG

これらの手当を行いつつ、まずは確実に動作が保証されている出口Teensy搭載のDAC0/DAC1から音声出力を試みることになる。

analogWrite(A20,(int)temp3_val);

現状をまとめると、、、

1)オシレーターの発振と差分のセンシングは確認できている。
2)オシレーターのVariCapの駆動を確認。
3)音声出力は出口が全て塞がれている状態故に確認できず。

といった情況で、少なくとも立ち上がり時の「ピポパ音」が再生されるだけでも、随分と気が休まるのだが。

追記:

検討作業の過程でソフト上のADATへのデータ送信フォーマットをチェックしていたら、24bitデータを加工無しの状態で32bitレジスタに送っているのを発見してしまった。

temp6_val = (((temp2_val - (2048 * vol_mod)) & 0x1ffffff) ^ (0x1000000))

つまり、データフォーマット上は右詰めとなっているのだが、設定上は左詰めのつもりだったのがかなりのマヌケ。

一番簡単な対応策は、ADATエンコーダー側の設定を右詰めに変えるだけで良いのだが、再生ユニットに搭載する予定のAlesis製DACは左詰め仕様。故にこの選択肢は無い。

左詰めへの対応はデータをレジスタに送る前に8bit左にシフトするだけ。

まず、出力レジスタを追加して、、、

uint32_t ADAT01;
uint32_t ADAT02;
uint32_t ADAT03;
uint32_t ADAT04;
uint32_t ADAT05;
uint32_t ADAT06;
uint32_t ADAT07;
// uint32_t ADAT08;

データを左にシフトしたものを格納。

ADAT01 = ((temp7_val << 8));
ADAT02 = ((temp8_val << 8));
ADAT03 = ((temp9_val << 8));
ADAT04 = ((temp10_val << 8));
ADAT05 = ((temp11_val << 8));
ADAT06 = ((temp12_val << 8));
ADAT07 = ((temp5_val << 8));

結果を出力ルーチンに送る。

writeValue03(ADAT01);
writeValue04(ADAT02);
writeValue05(ADAT03);
writeValue06(ADAT04);
writeValue07(ADAR05);
writeValue08(ADAT06);
writeValue09(ADAT07);


逆に、ROHM等のAudio系のDACは8bit右ズラしで送信することになる。

DAC16_L = ((temp5_val >> 8)) & 0xffff;
DAC16_R = ((temp6_val >> 8)) & 0xffff;


いろいろ考えてはいるのだけれど、やたらと穴だらけな計画に反省することしきり。
posted by Yasuski at 10:32| AudioElectronics

ADAT@トラブルポイントの洗い出し・その2

挙動が一部怪しいものの、全チャンネルの送信を確認した。

18423827_1479672428729877_4727965427404270454_n.jpg

音声レベルが極端に低い4/8CHはオペアンプが破壊された可能性が高いが、すでに極性を間違えて一個潰しているのがトホホ。

バッテリー駆動の場合、±12Vのスイッチング電源のグランドが浮いて仕舞って、オペアンプに妙な電圧がかかる危険性を確認。ひとまずAC駆動で実験を継続することにした。

音声の不具合はSMDの実装ミスが原因で、これで全8CHの送信が可能となった。問題は入力ゲインのマッチングだが、エレキギターは6db以上の増幅が必要。テルミンは直接入力でOKだった。 ギター用のポートにはバッファーを追加したい。

入力端子は汎用性を考えて、#1/#2/#3chにモノラルフォン、#4/#5chにミニステレオ、残りの#6/#7/#8chにHirose6pコネクターというラインアップにまとめた。 

完成後、早速ライヴ用の機材として投入することにした。 HFBRによる長距離伝送の実験には失敗したものの、T.C.のADで悩まされていた同期外れの問題が解消されたことが大きな収穫だ。 所謂カタログスペック的に優れたところは無いものの、コンベンショナルなアナログ電源を採用することで、対ノイズ特性を向上させていることも、安定した性能を確保できた原因だろう。

実際に運用してみて感じたのは、ロック外れによる妙なスパイクノイズが無くなったことで、Pacarana/DSPの処理限界からくるパッツン系とは異質な音声の断絶を気にすることなく、クリアな音質で楽器の音声をハンドリングできている。 オーディオクロックの基準発振源にそこそこのクラスの製品を奢った御利益だろう。 

ライヴ終了後に回路を精査したところ、ADATエンコーダーのHFBR回路周りに設計ミスを発見した。 ドライバーの配列を、本来は送信ユニットと並列接続すべきところを

WS001032.JPG

直列接続していたのが問題で、

WS001036.JPG

これでは十分なドライヴ電流を得ることが出来ない。

posted by Yasuski at 07:07| ADAT

2017年05月25日

Open.Theremin@アンテナの試作

テルミン用アンテナの試作品2種。 

IMG_6980.JPG

GFRP製ガイシのサイズが異る。

IMG_6981.JPG

ロッドは何れもチタンパイプ。 Pitchアンテナは組み立て式。 パイプは、今まで使っていたものと同ロットにも係わらず内径が0.5ミリも小さく、ハットフランジの固定に手間取ってしまった。 最終的にはルーターで内径を広げて解決。

IMG_6978.JPG

端子はSMA。 アンテナロッドとの接続は、アンテナ側に立てたピンをオスメス変換コネクターで受けている。 固定には耐衝撃性瞬間接着剤を使用。

IMG_6982.JPG

華奢な雰囲気でもネジ止めでガッチリと固定できる。 アンテナのマスが小さいので強度は問題ない。

IMG_6983.JPG

前回試作したBNCコネクタのアンテナは、クリップオンっぽい固定方法が甘く、テルミンには向かなかった。 そのうえ、ケース側の加工が大変と良いとこなし。
posted by Yasuski at 21:05| open.Theremin

2017年05月08日

ADAT@トラブルポイントの洗い出し・その1

昨晩、オーディオクロックが正常に動作していることを確認できたので、ADATエンコーダーチップ周りのクロックを調査した。

image.jpg

まず、ADCからのオーディオデータはソレらしいものが出力されていることを確認。

image.jpg

ワードクロックも問題なく供給されている。

image.jpg

次に、ADATエンコーダーからの出力を観察すると、複雑に変調された波形を確認できた。

image.jpg

試しに、Fireface800に接続してみたところ、、、

image.jpg

何故か問題なく認識された!!

ただ、Fireface側でクロックソースの選択をオートモードにした場合、ロック外れの不具合が頻発したので、ステイブルな運用が行えるかどうかは微妙なところだ。

posted by Yasuski at 14:23| ADAT

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その8

先程からトラブルの発生原因を探るために回路を要素に分解して検討を行っているが、デジタルシステムの大元となるオーディオクロックに関しては、ADAT/Open.Theremin共に問題は無かった。

手持ちの測定器はオシロスコープ機能が怪しく、代わりの判断材料として健在なスペアナで周波数を測定した。まず27MHZに原振動のピークを確認した後、分周した周波数をチェックした。 PLL-ICによるオーディオクロックの切り替えも問題なく行えていた。

気になっていたADATのリセット端子の極性も、アクティヴ・ローで正解。端子も"H"レベルに振れている。 分周に関しても、FPGA/汎用LOGIC共に正常に動作している。

ADATエンコーダーに関しては、経験が無いので動作の確認方法がわからないが、出力端子のスペクトルを観測する方法を試してみるが、多分後段に追加したバッファーあたりに齟齬がありそうな気がする。

Open.Thereminは、実績の無いROHM製DACの接続が怪しいので、コードを単純化した検証機構を製作して、不具合を洗い出す方向で検討している。

ここからは、プログラムの確認の記録。 今回新たに仕込んだオシレーターの読み取り機構は、正常に動作している模様。

Screen Shot 2017-05-07 at 10.48.57 PM.png

オーディオクロックが正常に動作しているために、フラッグも正常に立っている。

VariCapの可変幅が気になっていたが、3VFSの制御電圧で必要十分だった。

Screen Shot 2017-05-07 at 1.31.57 AM.png
posted by Yasuski at 05:47| open.Theremin

2017年05月07日

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その7

Flagの挙動を検討した結果、オーディオクロックが怪しいとの結論に達した。

怪しいといえば、まだ精査していないクロック周りの回路を眺めると、CMOSのクロックソースが3ステート仕様なことに気付く。 購入時にデータシートを探し損なったことを思い出して一般的なルールを検索した結果、端子が"L"でスリープ状態になることが判った。 情けないことに、回路は"L"にプルダウンされている。

端子を”H"レベルに繋ぎ直し、シリアル監視の仕込み無しでテルミンを起動したところ、ヴォリュームと連動する目玉LEDの点滅を確認した。 クロックソースが正常化されたおかげで、少なくともVolumeAnt側は制御データを吐き出せるようになった。

一方、懸案だった電源周りの不具合だが、電圧を落とした結果、発熱は最小に抑えることが出来た。 異常な消費電流は、Teensyが徐々に破壊されていく過程の現象だったかもしれないが、これで放熱の問題を考える必要はなくなった。 ちなみに、2セルの稼働時間は3時間強と、実用上も十分な容量を確保できている。

今晩は、これからADAT送信機を完成させる予定。
posted by Yasuski at 21:57| open.Theremin

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その6

VariCapを使ったチューニング機構の実験を行った。

IMG_6934.JPG

問題の多いFlag判定回路をスキップして、ロータリーエンコーダーが直接DACの制御電圧にアクセス出来るようにプログラムを変更し、アナログ回路の実効性を試した。 

反応のないVolume側のオシレーターは、チップ交換を含めた対策を行ったが、効果はなし。 試しに、Lの断線を検査したところ、なんとSMDの接触面が基板から浮いている不具合を発見。 これが、不良の原因だった。

オシレーターのレンジ調整は、VolumeANTのVariCap側に追加していた10pFを取り除いて解決しているが、差分を詰めるためにリファレンス側オシレーターの時定数を再設定する必要がある。

以上で、アナログ回路の問題はほぼ解消できたが、昨日の事故でTeensy3.6が死亡していることが判った。 

実験の結果、VariCapの使用が今後の選択肢に入ったが、温度安定度など判らないポイントが多いので、今後の実証試験で実用性を試すことになる。

ソフトウエア面は、スイッチ・制御機構は正常に動作してものの、周波数検知回路や音声再生部門の動作確認は未了だ。
posted by Yasuski at 15:51| open.Theremin

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その5

電源が死ぬまでオシレーターの発振をチェックしていたが、Volume側のVariCap駆動オシレーターの発振周波数が他のオシレーターと比較して、異常に低いことを確認。

WS001030.JPG

原因は不明だが、コンデンサーの値が狂っている可能性があるので、怪し気なポイントのチップコンを取り除きつつ、配線をチェックする予定。

他の不安要因として、アンテナを繋いだVariCap駆動オシレーターの波形が汚いことが判明。 こちらも原因は不明だが、パッシヴ系のオシレーターにアンテナを繋いだ場合の波形は綺麗。

VariCap駆動側はリファレンスとして使用することになるだろう。
posted by Yasuski at 03:12| open.Theremin

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その4

Open.Theremin内装の5VのレギュレーターICが3度めのご逝去。

多分放熱が追いつかないのが原因なので、ひとまずは大きすぎるドロップダウン電圧に対処するため、専用電源の低電圧化を行った。

が、これでもアウトな場合はレギュレーターの規格に対して消費電流が大きすぎることになる。

ご逝去とともに、外部入力が直結する現象を観測した。 5V系IC群の全滅はこれが原因。

一方、ADAT送信機用のLiFe二次電池の実装を行った。 現在、これの充電中。 明日は、電源を繋いで、通信試験を行う予定だが、まずは直結できるTOSLINK側で成果を試すことになる。
posted by Yasuski at 03:02| open.Theremin

2017年05月06日

Open.ThereminOnTeensy@トラブルポイントの洗い出し・その3

VolumeFlagの稼働を確認した。

Screen Shot 2017-05-06 at 12.03.01 PM.png

備忘録:

(tempTuneB_val | 0x7000) は、MCP製DAC専用のConfigデータをヘッダーに追加する呪文で、この処理を行わないとDACは正常に動作しない。
posted by Yasuski at 12:07| open.Theremin