Mobile PIC Writer

last up date 2003/07/30

Mobile PIC Writer !?

PIC で デコデコ!?

デコデコは、昇圧型DC-DCコンバータの事を指しています。 原理さえ知れば意外と簡単に好きな電圧が作れます。 VPPの様に余り電流を必要としない場合は便利に使えます。 ただしリブルが多いのでアナログ回路に使わない方がいいですね。

昇圧型DC-DCコンバータ

昇圧型DC-DCの基本回路は、下図ようになります。

DCDC Circuit
昇圧型DC-DCコンバータ原理図

インダクタ/ダイオード/スイッチ素子/コンデンサで構成されます。

動作原理

簡単に言うとスイッチをON/OFFさせる事により入力より高い電圧が取り出せます。
まずSW1をONにすると
[電源] - [L1] - [SW1] - [GND] と言うループで電流が流れます。
SW1の抵抗を0ΩとすればA点は0Vになりますので、ダイオードD1はOFFします。 この時負荷側は、C1から供給されます。
次にSW1をOFFにすると
L1の両端に逆起電力が発生します。これにより高い電圧がA点に発生します。 この時ダイオードD1はONしますので
[電源] - [L1] - [D1] - [C1] - [GND] と
[電源] - [L1] - [D1] - [負荷] - [GND] の2経路で電流が流れます。

これを繰り返す事により高い電圧を発生します。

制御

高い電圧が発生しても一定の電圧にはなりません。 実験で作った回路を無制御で動作させると30V位まで発生しました。 どの様に制御するかは下図の通り。

DCDC Circuit
昇圧型DC-DCコンバータ原理図2

出力をフィードバックしてSW1のON/OFFのタイミングを制御して電圧を安定化させます。 SW1のON/OFFは、PWM, PFM または PWM と PFMを組み合わせて制御します。 市販のDC-DC用ICは、この部分が心臓部です。効率で90%超える物有るみたいです。

この部分をPICで処理しよう言う事です。

制御部の必要な機能は、

  • 電圧比較器
  • PWM or PFM

の2点だけです。 PIC16F628 なら コンパレータと PWM があります。 ので何とかなるでしょう。

テスト回路

5Vから13±0.5V 5mA の昇圧型DC-DCコンバータを作る事にします。 PICライターのVPP電圧には十分と思われますので。

初期の設計では、20MHzのクロックを使う予定でした。 が結局内部発振の約4MHzが元発振なりましたのでPWMの基本発振が2kHz(4kHz)なっています。

PIC DCDC Circuit
PIC DCDC テスト回路

スイッチング素子は、NチャネルMOS-FETを使用します。 東芝製 2SK2961(2SK2962). ON抵抗が少なくDC-DCには適しています。

ダイオードは、ショットキーバリアダイオードを使用します。 日本インター 11DQ04 . VFが小さくスイッチングスピードも良いです。

インダクタは、47uH 300mA程度のものを使用します。

コンデンサは、10uF 25V程度のものを使用します。 大きくすると安定度が増しますが立ち上がりが遅くなります。 お金に余裕があればOSコンなどの低ERSのもを使用したいです。

220k/27k/10kの抵抗は、分圧してコンパレータの入力に入れます。 この電圧を検査します。

::

そうそうDC-DC回路用の電源スイッチ用としてPチャネルMOS-FETを使用します。 東芝製 2SJ377(2SJ439) です。

保護用に100mA用のポリスイッチ(ヒューズの代わり)に入れています。 13V出力がショートした時インダクタの焼損を防ぐためです。

ソフトウェア

紆余曲折を経て今の格好になっています。 電圧監視がコンパレータなので基準電圧より高いか低いかしか判りませんので次のようになっています。

  • 初めに1度パルスを出して電圧を上げます。
  • 次のタイミングで電圧を検査して基準より高いか低いかを調べます。
  • その結果でパルス幅を設定し直して次のパルス出力を待ちます。

またこの処理は、他の処理と並列に動作しないと行けないので割り込み処理で行っています。

割り込み処理として約4kHz(250uS)毎です。 しかも電圧比較とパルス出力が交互処理されるので約2kHzがDC-DCの基本周波数となりかなり低いです。 動作としては、PFMで動来ます。

プログラムの詳細な解説はしません。 やってる事は単純なのでソースそのものを見てください。 PWM/コンパレータ/リファレンスの使い方を覚えれば簡単でしょう。 上の制御部分が面倒なだけです。

現在の方法が最適な制御がどうか判りません。 何せハード屋の私が作ったプログラムですから。

結 果

満足できる結果になっています。

無負荷時で12.92V 1.5kΩの抵抗負荷を付けて 12.78V

一応予定通りの出力です。

追加

一部指摘を受けました。 テスト回路の『PWM 4kHzMaxPulse Width40%』では、ピーク10A以上流れると。

その通りですね。

現在の動作としては『PFM/PWM 2kHz Pulse Width 1us~10us』として制御しています。 ですので、通常制御でピーク10Aが流れる事はないです。 これでも、問題が無い訳ではないので再検討してみます。(時間掛かると思いますけど。)

またFETのゲートに直列抵抗を入れた方が良いとの指摘も。 これは、入れるか入れないか散々迷った挙げ句省いています。 次はちゃんと入れます。10Ω~100Ω位をPICの足とFETのゲート間に入れます。