DC-DCコンバータテスト回路の資料
モノリシックパワー(MPS)社製ブーストコンバータIC「MP3120」試運転
に出てきたDC-DCコンバータテスト回路。
これを紹介したのかどうかの記憶が曖昧・・・
あらためてメモを置いておきます。
回路図は↑に記しましたが再掲。
使用したマイコンはATmega88。
16MHzで動かしています。
電源は12V。
三端子で内部回路用の5Vを作っています。
マイナス出力のDC-DCコンバータもチェックできるように
してありますので、オペアンプ回路は±5Vで動かしています。
さて問題はプログラム。
アセンブラで書いています。
参考にしていただけますかどうか・・・
includeファイルは無しで、1本のプログラムです。
空行も入れてざっと4700行。 デカい!
bin→10進変換やbin→文字変換あたりのルーチンが
あれこれ使えるかと思うのですが・・・もう昔話ですなぁ。
割り込みと関係するwordデータ、これをアクセスしている
ところには「CLI ~ SEI」がたんまりと入っています。
こんなパラメータを内蔵EEPROMに保存しています。
Mode +/- (0:+ 1:-): 0
Power Start (Volt): 0.70 V
Power End (Volt): 2.00 V
Power Step (Volt):0.10 V
Power I Limit (Amp):1.00 A
Load Start (Amp): 0.00 A
Load End (Amp): 0.30 A
Load Step (Amp): 0.01 A
Load V Limit (Volt): 2.50 V
Wait Time :0.25sec
V,A Unit TX 0:x 1:on: 0
Index skip 0:x 1:on: 1
PWM Power 5V (PWM): 339
PWM CC +1.0A (PWM): 966
PWM CC -1.0A (PWM): 970
Pwr(A) 1.0A (A/D): 515
Load(V) +5V (A/D): 517
Load(V) -5V (A/D): 517
最後の6つは、PWMによるD/A出力(コンバータへ供給する
電圧と定電流源の電流設定)とA/Dでの電流、電圧入力の
キャリブレーション値です。
計測を始めると、こんなデータがシリアルで出てきます。
# Supply : 0.70V 2.00V Step:0.10V Limit:1.00A
# Current:+0.00A +0.30A Step:0.01A Limit:2.50V
0.80 0.01 0.00 3.75
0.80 0.05 0.01 3.75
0.80 0.10 0.02 3.75
0.80 0.17 0.03 3.76
0.80 0.23 0.04 3.76
0.80 0.30 0.05 3.76
0.80 0.49 0.06 3.75
0.80 0.61 0.07 3.71
0.80 0.75 0.08 3.69
0.80 0.14 0.09 0.05 *
0.90 0.01 0.00 3.75
0.90 0.05 0.01 3.75
:
左から、供給電源電圧、電源電流、
出力負荷電流(定電流)、出力電圧。
トランジスタ技術 2011年1月号 に掲載してもらった
スイッチド・キャパシタIC(負電源出力)の特性調査に
この回路を使いました。
掲載されたのは測定したグラフだけで、この試験回路と
その説明は省かれていました。
※2011年のダウンロードサービス にもありません。
投稿原稿には含んでいたはずなんだけど・・・
なにせ、アセンブラ。
割り込み処理の「頭」の記述はこんな具合。
;***** 送信完了割り込み処理 *****
; [13 UDR Empty]ベクトルより飛んでくる
TXEINT:
PUSH AL
PUSH AH
PUSH ZL
PUSH ZH
PUSH SREG_SAVE ;現ステータスデータをセーブ
IN SREG_SAVE,SREG ;ステータス レジスタ 退避
;* 送信データ数チェック
LDS AL,TX_CNT ;データ数
TST AL
BRNE TXEINT1 ;あればスキップ
:
「AVRマイコンのレジスタ名と違うやん」っと思われた
人は、エラい!
レジスタ名にAL、AH、ZL、ZHを使っているのは
「過去の遺産」を使うため。
AVRマイコン特有の「番号で記すレジスタ名」がイヤだからと、
ソースの先頭でこんな「ずっこ」をやっています。
.def AL = R16
.def AH = R17
.def BL = R18
.def BH = R19
:
.def XL = R26
.def XH = R27
.def YL = R28
.def YH = R29
.def ZL = R30
.def ZH = R31
こうすることで、8080やZ80、さらに8086やV30で作っていた
ルーチンに「近づける」のです。
R16以降のレジスタは8bit値の直接代入ができますんで、
便利なんです。
割り込みでのSREGを保存している「SREG_SAVE」も、
固定的なレジスタに割り付けています。
.def SREG_SAVE = R15 ;ステータスレジスタ退避用
どのレジスタを使おうかという悩みがありません。
※Arduino-UNOの初体験 が2012年12月です。
この制御プログラムもArduinoをベースにして
書き直せば良いんでしょうが、けっこうめんどう。
今のままでも動いてるし・・・。
最近のコメント