電源から決めた電流をひっぱるモジュールを作りたい。電源回路や電池の評価に使う。 世の中には電子負荷とか充放電試験装置とかあるにはあるんだけど、プログラム可能なステップ数やサンプリングレートが限られてたり、制御範囲が所望の範囲じゃなかったりってことで、こういう場合は自分で作ってしまおう。ちな、成功する保証はない。
目次
- シンク回路確認 シンク回路が動くのかどうか確認していく
- AVR128DB28のArduino化 まずこんな感じではんだブリッジを作る。
- 基準電圧選択機能の確認 まずは基準電圧が狙い通りできているか。ボルテージフォロアの出力が4つの基準電圧なのでそれを測定してみる。
- MUX確認 Arduino化したAVR128DB28にコードを書いて動きを確認する。GPIOでMUX_A0, MUX_A1, MUX_ENを操作するだけ、、、まあそれだけじゃちとさみしいのでLEDも点滅させてみる。
- DAC確認 こちらもArduino化したAVR128DB28にコードを書いて動きを確認する。MUXは2.048V出力設定で固定とする。そして、MCP4921を制御してみるって訳だ。
Arduino IDEでこんな感じで設定して、最後に「ブートローダを書き込む」 んで、はんだブリッジを変更する。
んで、Arduino IDEからBlinkを書き込んでみる。
と、ちゃんとLEDが点滅する。(めんどくさいので動画無し)
| 測定点 | 電圧 |
| V1 | 2.049V |
| V2 | 205.4mV |
| V3 | 20.4mV |
| V4 | 2.8mV |
TMUX1104の真理値表はこんなん
| EN | A1 | A0 | Selected Input Connected To Drain (D) Pin |
| 0 | X | X | All channels are off |
| 1 | 0 | 0 | S1 |
| 1 | 0 | 1 | S2 |
| 1 | 1 | 0 | S3 |
| 1 | 1 | 1 | S4 |
| TMUX1104 | ノード |
| S1 | V_1 |
| S2 | V_3 |
| S3 | V_2 |
| S4 | V_4 |
tmux1104ctrl.inoで、こんな感じになる(本当は高速に動かしてオシロでってのがスジなんだけど、うちのオシロのオフセットがひどいんでテスターのロギング機能使うことにした)
横軸サンプリング(1S/s、、、あ、ってことは秒ってことか)、縦軸電圧(対数スケール)。
まあ、ちゃんと選択できてるね。
Microchipのデータシートによると、
ってことで、これをSPIで送るだけなんだけど、ここで、問題が、、、普通にやっても当初仕様の250kS/sはどうあがいても達成できない。くそう、Geminiと相談してAVR128DB28って決めたのに、実際に工夫無くやると全くダメ。んで、クリスタルを32MHzに付け替えて(オーバークロックだけど、このコアは32MHzは余裕でいけるらしい)、bootloaderも32MHz crystal (overclocked)にして再書き込みして、コードも絶妙に調整して、、、なんとか100kS/s。こういうことあるから余裕のある設計が必要よね( ˘ω˘ ; )
mcp4921ctrl.inoんで、こうなる
0, 1/2, 1=(2.048V ideal)の3相を30us周期で動いているから10us/S=100kS/s。

































