製作モジュール一覧

ラベル Dual-OTA-VCA の投稿を表示しています。 すべての投稿を表示
ラベル Dual-OTA-VCA の投稿を表示しています。 すべての投稿を表示

2020年4月27日月曜日

ERK01: Dual OTA VCAをEurorack化完了

フロントパネルを取り付けて、ラックにマウントしました。DUAL_OTA_VCAは2ch仕様ですが、パネルのサイズがでかくなるので1chのみ使っています。




インターフェイスを外だしすると操作性は格段によくなりますね。

AnalogDiscovery2のWavegenのch1をVCO、ch2をLFOとして音出しテストしました。



ch1の100hzののこぎり波をch2の5Hzののこぎり波で振幅変調しています。100kHz付近までのこぎり波の倍音が出ています。

AnalogDiscovery2はDACも14bit/100MHz(sps)が2系統搭載されているので、波形発生器としても非常に優秀です。

自作の機器を組み合わせれば同じことができますが、コンパクトな筐体がありがたすぎます。つまみがないのでリアルタイムな演奏には不向きですが、Waveformsでかなり凝った波形も生成できるので、あたかもNI ReaktorやMAX/MSPのように使えるフィジカル・デバイスだと思います。

メモ:


今回作ったパネルは、一番上のPOTとラックのレールが干渉します。設計時にレール分の幅を考慮する必要あり。

パネルのサイズが若干大きい。パネル外形の高さ、幅はレールの寸法より1~2mm程度小さくしておいたほうが良さそう。

2020年4月20日月曜日

ERK01: Dual OTA VCAをEurorack化する

ERK01に最初に搭載するモジュールとしてプリント基板を焼いていたDual OTA VCAをはんだ付けしました。

フロントパネルに基板を垂直に取り付ける方法は、いろいろ悩んだ末、秋月で売っているキューブ型のスペーサーを使う方向でやってみることにしました。



↑このような感じでフロントパネルに取り付ける予定。


動作確認は最初、自作した測定器を使いましたが、AnalogDiscovery2に置き換えるとにコンパクトに動作確認できました。

自作の測定器によるテスト




ch1:出力波形 ch2:モジュレーション波形

1kHzの正弦波を入力して低周波数のノコギリ波で振幅変調しています。

使った機材


AnalogDiscovery2によるテスト






電源は±5Vとし、1kHzの正弦波を入力して100Hzの三角波で振幅変調しています。

要件にマッチすればAnalogDiscovery2は強力な測定器だと思います。

メモ:


Dual_OTA_VCAはリニア変調

Arduino LFOは時定数がでかすぎてバイアス電圧調整の反応が鈍い

2018年6月24日日曜日

Dual OTA VCA プリント基板をはんだ付けしました。

この間焼いてもらったプリント基板に部品をはんだ付けしました。

部品の準備

部品面

ハンダ面

はんだ付けにかかった時間は、部品のフォーミングや簡単なテスト(電源系のチェックと出音の確認)を含めて3時間程度で済みました。ユニバーサル基板のときは12時間程度かかったのでありがたいことです。

時間の短縮はもとより、はんだ付け作業に取り掛かるのが気楽になるのが大きい(^q^/

ハンダ面は小瓶タイプのフラックス洗浄剤「HAKKO No.001-01」を付属のブラシで塗りたくって綿棒で拭き取りましたが、フラックスが取りきれません。スプレータイプのを買おうかなあ。


2018年4月4日水曜日

Dual OTA VCA プリント基板をPCBgogoで焼いてもらいました。

KIK01で使っているDual OTA VCAのプリント基板を焼いてもらいました。

Dual OTA VCAは自作の回路の中では規模が大きくユニバーサル基板ではんだ付けするのはなかなか大変です。純粋なアナログ回路で他でも使うことがありそうなので、様子見も兼ねて発注しました。

PCBgogoの中の人にGoogle+でフォローしていただいていてるので発注先はPCBgogoにしました。

発注


10cm×10cmまでは製造費が同じようなので、基板サイズと枚数(10枚)だけ指定して、他はデフォルトの設定で自動見積もりしました。

あとはガーバーデータをアップロードして配送先を登録するんですが、配送先の登録フォームの挙動がよくわからず、意外と手間取りました(^q^;

製作費は\1,200で、配送料、Paypalの手数料など合計\2,745でした。割引クーポンもあったようですが今回は気が付かず未使用です。

ユニバーサル基板ではんだ付けすると、実働4時間/日で3日ぐらいかかるので時給を最低賃金あたりの\850とすると

\850×12時間=\10,200

となるのでうまく行けば1枚でも十分元がとれそうな感じです(^q^/

Board Design


Dual OTA VCAはユニバーサル基板ではんだ付けするためにEagleで基板図を作っていたので、シルクパターンを見やすいように修正して、裏面をベタGNDにしました。(Eagle 8.7.1)

修正後RatsnestとDRC checkは再度行いました。DRC ruleはデフォルトのままです。

ベタGNDの作成方法は「EAGLEの使い方 パターン図編」を参考にしました。

Eagleからガーバーデータを出力


プリント基板の発注は初めてなので(自分で焼いたこともない)Web上の記事を参考におっかなびっくりです(^q^;

EagleのBoardウィンドウから[File]-[CAM Processor..]を選択。[CAM Processor] Dialogが開くので、[CAM jobs]でgerb274x.camを選択し、出力しました。


次に同じようにDrillデータを


excellon.camを指定して出力しました。これらをまとめてrarで圧縮して入稿しました。(入稿と言ってもブラウザでアップロードするだけです)

プリント基板到着


2018年3月28日入金で、3月30日発送、到着は4月2日でした。



段ボール箱に収められていて、中の梱包もしっかりしています。

表面

裏面

元はユニバーサル基板で組んでいた回路ですが、プリント基板にするとなかなか立派な感じがします。

ユニバーサル基板でテストしたときのテスト表を使って端子間の導通/絶縁を一通りチェックしましたが、問題はありませんでした。←あたりまえか(^q^;

ベタGNDは、無駄に浮いてる島があったりして気持ちが悪いですが、これはわたくしが作ったデータのせいです(^q^;

はんだ付けしてKIK01に使っているユニバーサル基板で組んでいるものと差し替えてテストしてみたいと思います。

2017年9月18日月曜日

KIK01 作戦検討その2

AD8402 Wien Bridge DCODual OTA VCAを組み合わせて音出ししてみた。


前半は振幅と周波数のエンベロープをいじって、中盤は音域を高くしてスネア・タムっぽくしたもの、後半は過大入力をいれてOverDriveしている。

ジャンル的には、Techno → Psy Trance → Hard Styleっぽいかんじでしょうか(^q^?

キックマシン KIK01 Nucleo(mbed)でプロトタイピング」ですべて内部演算をしていたものと比べて出音は丸い感じになってるかな?

XSplitで録音/録画して、YouTubeにあげているのでわかりにくかもしれません。

KIK01 Proto04の構成



消費電流
NucleoF446 + AD8402 Wien Bridge DCO: 100mA~120mA
Dual OTA VCA: ±17mA

NucleoF446はまあまあいい量の電力を食いよりますね。

mbed repository:
https://os.mbed.com/users/ryood/code/KIK01_Proto04/ Revision:23

サンプリングレートの問題


今回は元になる波形はWien Bridgeからアナログ的に出力していて音声出力のためのサンプリングレートではないが、一定の周期で波形の周波数と振幅を更新しているのでその周期の問題です。


WaveSpectraでスペクトルを見たものだが、32,000Hzあたりにピークが出ている。これは上記サンプリング周期によるデジタル的な歪だと思う。直接音にしなくても、離散処理するとこんなとこにまで影響が現れる。

処理のタイミングを計測

ch1:D8 ch2:D9

ch1は一回のタイマ割り込み処理の最初と最後でH/L、ch2はAD8402 Wien Bridge DCOにSPI送信する最初と最後でH/Lさせている。AD8402 Wien Bridge DCOは2回送信しているので間に細い線で分割されている。

周期は31usで、逆数をとって約32,258Hz。

タイマ割り込み一回分の処理時間は16.3us、SPI通信で11.7us(カーソルで測定)とほとんどがSPI通信に食われている。エンベロープを対数カーブにする浮動小数点演算や内蔵DACからの出力はch1とch2のHの時間の差分で行っていて、処理が重そうなわりにほとんど消費していない。

ch1の間隔を見るとまだ余裕がありそうだが、これ以上処理の間隔を縮めると処理が追いつかず、入力系の処理ができなくなる。入力系の処理はMCP3008と遅~いSPI通信を行っている。

PSoC 5LPはCortex-M3でFPUが載っていないが、SPI通信はNucleoをmbedで使うよりも高速なので使ってみる手はあるかも。

または、Nucleoをmbedではなくネイティブ環境でやってみる。←かなりめんどくさい(@@;

でもまあ、32,000Hzは可聴帯域外だし、高速化できたとしてもエイリアスの出る周波数が高くなるだけで消えるわけではないので、とりあえずは一旦妥協する方向で。

Dual OTA VCAのエンベロープ波形の発振



上図はDual OTA VCAの回路の一部で、R8とC3で1次LPFを構成してエンベロープ波形を滑らかにしている。ところが、R8を0Ω側に回し切ると発振してしまう。

抵抗値を少し上げる(正常

ch1:エンベロープ入力 ch2:エンベロープLPF通過後

抵抗値ほぼ0Ω(発振)

ch1:エンベロープ入力 ch2:エンベロープLPF通過後

拡大(発振波形)

R8を0ΩにするとIC3Aのボルテージフォロアの出力をIC4Aの非反転入力(インピーダンス高)に直接つないでいることになり、GNDに落としているC8がもろに容量性負荷というやつになっていると思う。

発振しないようにするには、固定抵抗でゲタをはかすべきだと思うが、トリムPOTをちょっとだけプラス側に回しておけば大丈夫なので、今後気をつけることにする。←もう少し理論的なことも調べる。

KIK01の第二次作戦



図の下半分あたりは、AD8402 Wien Bridge DCOとDual OTA DCAで構成できた。

キック音源としては、Attackでかすかにシャンシャンいう音を混ぜたい。サンプリング音源と混ぜてもいいが、アナログシンセではノイズ・ジェネレーターを使っていることが多いので試しにやってみたい。

ホワイトノイズを発生させて、フィルターを通してピンクノイズやブルーノイズにしてみる。ノイズ系はシーケンサーから制御するのは振幅変調のみ。フィルターはSVFを考えていて、カットオフ周波数やレゾナンスのパラメータは普通のPOTで手で設定する。フィルターにエンベロープをかけても面白いかも知れないので後で差し替えられるようにしておく。

NucleoF446は、SPIが3系統付いていてSPI制御はしやすいが、DACは2個しかない。

NucleoF303は、DACが3系統使えるがSPIが1系統しかなく、演算速度も若干遅い。

痛し痒し(@@;

サイン波出力部分の改良案


Wien Bridgeは周波数が高くなると出力振幅が小さくなるので、周波数が高くなると振幅が大きくなるように補正してVCAにエンベロープを出力するようにして、ようすを見てみる。

プログラム上でexp()関数を使ってエンベロープ波形をアナログチックにしているが、Digital Filterのプログラムを書いてIIRを通して違いを見てみる。Digitalフィルターのパラメータはプログラム上で計算するのは大変なので、いくつか用意しておいて切り替えられるようにする。

メモ:


現状でもエンベロープ設定用にPOTx16を使っているが、ノイズジェネレーターのエンベロープ波形を設定するとなるとさらに8個ぐらいは必要そう。

POTをズラッと並べた方がパラメータいじりは楽だが、コンパクトにしたい気もするなぁ・・・

2017年8月30日水曜日

Dual OTA VCA はんだ付け完了

ブロック図

回路図

基板図

部品面

ハンダ面

Github:
https://github.com/ryood/Dual_OTA_VCA

出力チェック


PCM5102Aファンクションジェネレータで50HzのSin波を出力してWaveInに入力し、Nucleo F446の内蔵DACからエンベロープ波形を出力してEnvelopeInに入力して、VCAからの出力の様子を見てみた。

電源電圧: +5.00V / -5.03V


WaveIn (PCM5102Aファンクションジェネレータから)

ch1:WaveIn ch2:VCAからの出力

EnvelopeIn (Nucleo F446から)

ch1:EnvelopeIn ch2:VCAからの出力

電圧→電流変換前

Nucleo F446の出力をレベル調整し、LPFを通した後の電圧波形


ch1:電圧→電流変換前 ch2:VCAからの出力

2ch同時


Aチャンネルと、Bチャンネルに同じ波形を入力し、エンベロープ波形のレベル補正とLPFのかかり具合を同じ程度にして両チャンネル出力してみた。

調整後のエンベロープ波形

ch1:ChannelA ch2:ChannnelB

出力波形

ch1:ChannelA ch2:ChannnelB

ChannelBのほうが出力レベルが高く、歪んでいる。

※今気づいたがエンベロープの方は両チャンネル合わせたが、WaveInの方のレベルは合わせていなかった(^q^;

音出し


Sin波にVCAでエンベロープをかけるとTR-808っぽい波形になるので録音してみた。


エンベロープ波形とサイン波のゼロ・クロス点が合っていないのでときどきブチブチ言っています。

Driveの方は、WaveInの入力レベルを上げて歪ませています。

2017年8月24日木曜日

Dual OTA VCA 基板設計

回路図

基板図

部品並べ

今回は、ICの下の隙間にV+のラインとV-のラインを通してGND線は外側に巡らすようにしてみた。

まだもう少し配線の手間を減らせるように粘れるかもしれないが、デバイスの配置と配線の具合が絡んでいて、どっちがはんだ付けが楽かなど悩みだすとキリがない。

こういう正解があるのかないのかわからないけど、ゴールはある程度決まっている問題はAIの方がつようそうなんだが。

ちまちま配線を考えるのも楽しいと言えば楽しいし、ユニバーサル基板のはんだ付けの脳内シミュレーションになるので、これはこれでいいのかもしれない。

ぼちぼちはんだ付けしていきます。

2017年8月20日日曜日

Dual OTA VCA 2chでテスト


※2chでテストと言っても2ch(掲示板)でテストしたわけではないです。

回路図

ブレッドボード配線図

ブレッドボード配線図の通りAとBの入力をつないで、音声波形、エンベロープ波形とも同じ波形を入力した。

入力インピーダンス10kΩ程度の電圧入力なのでこういうことをしてもほぼほぼ問題ないと思う。

電源電圧 +5.0V / -4.97V

音声入力: PCM5102Aファンクションジェネレータ(100Hz/Sine 両電源波形)
エンベロープ入力: Nucleo F446の内蔵DACからの出力(4Hz/Saw/+3.3p-p 片電源波形)

出力

ch1:OUTPUT B ch2:OUTPUT A

トリムPOTをまわして、AとBでLPFのかかり方や入力レベルを変えている。

入力

ch1:音声入力 ch2:エンベロープ入力

音声入力に単電源波形を入れてみる


音声入力の方はACカップリングして、単電源波形を入れても動作するようにしている。AD9833_FGで単電源波形のSIN波を生成して入力してみた。


ch1:音声入力A ch2:出力A

NJM13600のBIAS入力の電流はどこに向かって流れるか?


データシートに載っている等価回路



左下のAMP BIAS INPUTがBIAS入力で、Tr2のベース・エミッタ間の電圧降下が約0.6V、D1(またはTr1、Tr3のベース・エミッタ間)の電圧降下が約0.6Vで[V-]に向かって流れるようだ。

したがって、AMP BIAS INPUTの電位は[V-]+1.2V程度になると思う。

前回、AMP BIAS INPUTの電位を測定した。


ch1の縦軸は200mV/Divで22.0divシフトしているので、中央が-4.4V。電位は中央からマス目2個半~3個(500mV~600mV)ぐらい上なので、約-3.9V~-3.8V程度。

電源電圧は+5V/-4.97Vだったので、[V-]は-4.97V。

[V-] + 1.2V = -4.97V + 1.2V = -3.74V

なのでこれぐらいの電位になっているんだと思う。

つまり、AMP BIAS INに入力した電流は、ダイオード2個分を挟んで[V-]に向かって流れていることになる。