トドお父さん通信 -21ページ目

トドお父さん通信

北部九州在住 高BMI中高年のオタク趣味の活動記録

Technoblogyさんの最近のプロジェクト、Sound Lab - a Simple Analogue Synthesiser

GitHubでEagleで設計された回路図と基板データをKiCADにインポートしたところまででした。

 

Kicadにインポートした直後がこの状態です。

DRC (デザインルールチェック) をかけるとウォーニングとエラーがガバりんちょとでました。

ウォーニングは、やはりfootprintがEAGLEのものでKiCADでは見つからないというものが

ほとんどでしたが、エラーはやはり消さないといけませんね。

 

エラーも見てみると、基板の端からシルク線がはみ出したりしているのが多いので、修正可能

でした。D6の反対付けLEDの穴のように、穴がPADを削っているというようなエラーは、設計

者の考え方ですので、そのままにしておきます。(穴を小さくする手もありますが……)

 

 

回路図も、下記のようになっています。回路図を修正したら、ネットリストを作成して、

基板データにインポートする作戦で行きたいと思います。

なにしろfootprintがないので、既存のfootprintはそのままで、新規の物だけ基板に追加

する技を使わないといけません。

 

オリジナルのWP-20の回路図は、ここから参照しました。

WP-20 Mini-Synth

回路図のPart1は、こちら

 

Part2はこちらになります。

 

フロントパネルのレイアウトのオリジナルはこちら

でも、こちらの方がオシャレですね。

 electro-music.com

いろいろと調査して、製作に関する情報を集めます。さきほどのelectro-music.comさんの

情報によると、ステップシーケンサというものにつなげば、音階を出せるらしいです。

 

そのためには、今の回路には入っていないVCO発振回路を電圧で制御するCV_IN端子と音の発生を

開始するためのGATE_IN端子を付けないといけないようです。それとアンプにつなぐためのOUT端子

ですね。この辺を修正しないといけないようです。(4P のPHコネクタ CN1にはつないであるが…)

 

下記のように、追加・修正をしました。

まずは、CV_IN端子の追加。 CV_IN端子とGATE端子がないと、シーケンサをつなげられません。

 

他の修正点としては、オーディオ出力のカップリングコンデンサC21の位置を元回路通りに修正。

地味ですが、音質を保つには結構重要な修正点です。

最後に、9V電源のACアダプタ入力回路にLDOレギュレータを入れる修正。

 

そのまま、電源のDC9VをつなぐときはLDOを実装せずにJP5ジャンパーを半田ブリッジして

使いますが、低雑音にしたい場合は、8Vの低損失レギュレータIC31を実装します。

8V動作では、ノイズ発生のための倍電源回路出力は、18V → 16Vになりますが、問題ないでしょう。

 

最後にLFO(Low Frequency Oscilator)の回路。

LM324 OPアンプが1個余っていたので、1/2V(4.5V)生成用にバッファに使うことにしました。

 

またLTSPICEでシミュレーションし、発振周波数が2.5Hz~1kHzくらいで高すぎたので、

R52を330 →1kΩに変更して高いほうを抑え、C8を2uF → 20uFに変更して低い方を下げました。

この結果、LFOの制御周波数は設計上、0.25Hz ~ 50Hzになりました。これで問題ないでしょう。

 

また、シミュレーションの時に気になる挙動がありました。

周波数が低くなるほど、発振開始が遅れるのです。0.25Hz(4秒周期)だと26秒、50Hzだと

130mS。シミュレーションの発振挙動の再現は難しいと思いますので、実機でも確認しますね。

 

もと回路がCMOS インバータを使って発振波形を得ていたのに比べて、ONsemi のLM324の

データシートを参考にしたというこの発振回路、再現性がよく三角波も得られるので良いですね。

初段のOPアンプは、C8のキャパシタとP12の抵抗値で反転増幅の積分回路になっています。

2段目はシュミットトリガのコンパレータとして動作しているようですね。1/2V㏄ ±0.5Vで

正/負にトリップします。1段目も反転、2段目も反転ですから、360°回ってマルチバイブレータ

として、積分回路の時定数とシュミット電圧で積分回路が± 切り替わり往復動作するわけです。

 

3個目のOPアンプは、39k/10k=3.9倍のゲインで、1段目の三角波を増幅した三角波を得ています。

シミュレーションで動作が分かりますね。

 

と、ここまで説明して、さきほどのON時の発振開始がおくれるわけが分かりました。

初段の積分回路は、2段目のシュミットトリガ回路の出力の初期電圧は1/2Vccなので、オフセット

電圧が出ないと積分回路の出力がシュミット電圧の±0.5Vに達するまで時間がかかるわけです。

 

これは、昔のオペアンプ LM324はオフセット電圧もシミュレーションモデルより大きいので、

たぶんシミュレーションより短い時間で、発振は開始すると思われます。

 

ONSE

 

ここまでの修正を追加した回路図が下記になります。

赤字がついているのが修正部です。

 

閑話休題:図面枠を入れるために、前の回路図から図面枠の入った回路図にコピペしたときに

部品番号のリファレンスが初期化されてしまう現象が発生して困りました。

 

この解決策としては、ペーストする際 右クリックして出たメニューの「特殊な貼り付け」を選択

次に出るメニューの2番目、重複があっても、既存のリファレンス指定子を保持する
を選んでから、ペーストしてください。これで、数日悩みました    
 
ここまでの説明、まるで仕事のようですね。 あくまでも無給の趣味ですからねキリッ

 

さて、回路図ができたら、基板設計に戻ります。

KiCADインポートでのエラー・ウォーニングが出まくりながらの修正を行ったので、冷や汗ダラダラ

流しながらの作業でしたが、なんとかできました。

 

仕上げに、表面と裏面のベタパターン(パネル)間にビアを打ちまくります。

これで、GNDのインピーダンスを下げて、電流ノイズを少しでも減らします。

 

ロゴも付けてかわいく化粧し、いよいよファイナルアンサーです!

 

裏面も、シルクを確認します。

 

ここまで検討してJLCPCBに基板を手配しましたが、基板5枚で1400円、送料1300円で

合計 2700円ほどでした。レジストは白にしました。

 

基板と部品が来たら、また報告しますね。

 

お疲れ様でした!

おもちゃ病院の修理用にATTINY202/402を使い始めて、はや数ヶ月。

TINY402プロジェクトの開発にいつも参考にさせて頂いているTechnoblogyさんが、

いつもと趣向を変えて、アナログ・シンセサイザーのプロジェクトを紹介しています。

 

 

1980年代の、アナログ全盛時代のシンセサイザです。

当時のWP-20というシンセサイザをベースにしているとのことです。

 

 

これは、面白そうですね。

 

作ってみたくなりました。

部品の入手とか、基板の手配とか、現実的にちょっと調べてみますね。

Githubに上っている、Eagleの基板データはダウンロードして、KiCADにインポートしました。

 

 

これから、検討しますね。

部品入手がキモの様です。

KiCADにインポートしたので、手に入らない部品は変更が必要にんるかもですね。

面白そうです。

 

それでは、おやすみなさい

みなさんこんばんは。トドお父さんです。

 

今回は、I2C Scanner のATTINY85からATTINY402への移植です。

ちなみにこちらが、ATTINY85での前回の記事です。

[Part3 完成です] ATTINY85でMicro I2C Scannerを作りました!

 

ラジオペンチさんのブログ記事を参考に、ATMEL STUDIOで、ATITINY85に書き直し、

 

① 最上列(8データ分)を表示せず、代わりに最下列(8データ分)がゴミデータを表示するバグ
② I2Cアドレスが78h(SSD1366の場合)と偶数8bit表示になっている。これを7bit表示3Chに修正する
対策を行いました。
 
今回は、価格が安価なため、おもちゃ病院の修理用に使いはじめた、ATTINY202/402への移植を
行いましたので、記事としてポストしますね。
 
つつじが丘おもちゃ病院の大泉さんが、おもちゃ修理用のオルゴール基板として、ATTINY402の
サポートを始めたのがこの記事です。
 
その後、色々な機能を入れてバージョンアップされ、こちらが最新版になっています。
 

WAVファイルを音声HEXファイルに変換して、音声再生(Sound Player)をするだけなら、容量の

小さいATTINY202でもOKですが、オルゴール対応では音符ファイルをCPUのメモリに書き込む必要

がありますので、最低でも4kB入ったATTINY402が必要で、欲を言えば16kBのATTINY1614が望ま

しいと思います。

 

このように、つつじが丘おもちゃ病院の大泉さんが、音声再生用のCPUとして、ATTINY1614を

始めとするNew ATTINY系列を使い始めたので、自分も対応せざるを得なくなったというのが実情

です。

というわけで、New ATTINY事始めとして、8ピンのATTINY202を使い始めたのが、この記事です。

ATtiny402はメモリが4kBあるだけで、他は同じです。最近は402を良く使うようになりました。

[Part1] ATTINY202への書き込みとプログラムをやっています!

 

レガシーのATTINY85等と、New ATTINY 0/1/2との違いは、

① 書き込みが、3線のAVR ISPから、1線のUPDIになった。

② プログラムの書法が、ポートアクセスがSTM32ライクな構造体になったのを始め、大幅に変わった。

③ まだ、よくわかってません (爆)

 

開発環境は、おなじATMEL STUDIOが使えるからいいですが、書き込み機はAVRISP MK2が使えない

ので、UPDI Serialというものを自分で作りました。

[Part2] ATTINY202への書き込みとプログラムをやっています!

 

8ピンのATTINY202/402はピン数が少ないので、UPDIプログラム用のPA0端子をGPIOで

使いたいときは、FUSEを書き換えてUPDI → GPIOに設定しますが、今回は必要ないですね。

 

閑話休題:前回のATTINY85のプログラムをATTINY402に書き換えたプログラムをここに置きます。

ここからは、置き換える手順を説明しますね~。

 

SS1306とTiny402接続の回路図も置いておきますね。

SSD1306のSDAとSCLはPA1とPA2に、I2C scan用のssdaとssclは、PA6とPA7に接続します。

 

1. ターゲットDeviceの切り替え

 I2C Scanner_t85を

  CAVR Studioの上のメニューで Project → I2C scanner propertyを選択して開きます。

change deviceボタンを押して、デバイスを選びます。

 
ATTINY402を選んで、OKします。これでターゲットデバイスがTiny402に変更されましたね。
 
次に、2.プログラムの変更です。
変更するのは、まず grobal.h
ここをこんな風に修正しました。New ATTINYのポートアクセス書法に合わせます。
 
 
次に、port.h を編集します。
Tiny85では、こんな感じです。
 
これも、Tiny402のポートアクセス書法に合わせます。
 
I2C.cpp は一部を変更します。
 
bitclr()を書き換えます。
 
I2C.hもポート書法を書き換えます。Tiny85の記述から、
 
Tiny402での書法に書き換えます。
 
最後に、main.cppの書き換えです。元のTiny85から、
 
Tiny402でのClock設定 SYSCLK_Init()を入れます。
クロックを内部クロックに設定し、1/4分周します。FUSEで内部クロックを16MHzに設定すると
4MHzになりますね。
I2C.cppと同様、bitclr()もTiny402での書法に書き換えます。
以上で、プログラムの修正は終了です。
Build → Rebuild Solusionでコンパイルしてくださいね。エラーが出なければOKです。
出力指定をReleaseか、Debugで指定したフォルダにelfファイルとHexファイルが出力されます。
 
3. 次はデバイスへの書き込みです。エラーがなければ、出力されるHexファイルを使います。
こちらのポストを参考にしてください。
 
クロックを20MHz→16MHz変更のFUSE書き込みは、AVRDUDESSのAdditional command argsに
-U fuse2:w:0x01:m を入れるだけでOKです。(さらに4分周してクロックは4MHzにしています)
 
さぁ、書き込みができましたよ。
Tiny85の時と同様に、SSD1306 OLED表示機にアドレスが表示されればOKです!
ここでは、HV対応のUPDIプログラマを使いました。
 
次は、基板に部品を実装してI2C検出ガジェットをつくらんば、いけませんね。