PICで+12Vから+5Vを作る
USB充電用にPIC12F683内蔵のコンパレーターを使って12V→5Vのステップダウン型DC-DCコンバーター(Buck Converter)を作りました。定格出力は1.5Aとしています。回路は下図のとおり。出力電圧のリップルは回路図のC6次第ですので低ESR(0.1Ω以下)の電解コンデンサーか固体電解コンデンサーがお勧めです。
PIC12F683のプログラムです。
#pragma config FCMEN=OFF, IESO=OFF, BOREN=ON, CPD=OFF, CP=OFF, MCLRE=OFF, PWRTE=ON, WDTE=OFF, FOSC=INTOSCIO #include#include #include #define _XTAL_FREQ 2000000 #define CM_REF 0x0c // comparator reference = Vdd/24*12=2.5V int main(int argc, char** argv) { int i; OSCCON = 0x50; //OSC setup: intosc, 2MHz ANSEL = 0x02; //GPIO setup: GP1=CIN-(VSense) TRISIO = 0x02; //GPIO setup: GP2:Cout T1CON = 0x01; //Timer1 setup: 1:1 prescale, T1 on // comparator setup CMCON0 = 0x05; //Output enable, non-inv, Internal Reference CMCON1 = 0x03; //T1G, CMSYNC on VRCON = 0xa0; //CVRef on, low range, Vdd/24*0=0v for(i=0;i<=CM_REF;i++){ //soft start __delay_ms(5); VRCON=0xa0+i; } while(1){ } return (EXIT_SUCCESS); }
出力電圧の1/2をPIC内蔵のコンパレーターに入れ、コンパレーターの出力をTimer1のクロック(1/4OSC=500KHz)でサンプリングし、2.5Vを超えていればMOSFETをOff、下回っていればOnします。コンパレーターの出力をそのまま使うとノイズ等の影響で非常に短い周期でFETがON/OFFしてしまう場合があるため、クロックで叩いています。このため最小周期は250KHzになります。
これらはPIC内蔵のコンパレーターとD-FFだけで行われ、ソフトウェアによる処理は不要です。よってPICはI/Oの初期設定終了後は何もしていません。I/Oポートも4本余っていますので、好みに合わせて他の処理をさせると良いと思います。PWMモジュールもA/Dも使わず、コンパレーターとD-FFさえ入っていればいいので、より安価な12F609/12F615なども使えます。出力にパワーLEDと抵抗を直列に接続してコンパレーター入力端子に抵抗の電圧を接続すれば、1.5Aまでの定電流回路としても使えます。
電源投入直後はソフトスタートのためにコンパレーターのしきい値を0Vから2.5Vまで5msおきに0.208Vずつ上げています。LTSPICEによるシミュレーションは下図になります。コンパレーターしきい値のV4はPWLモードにして5msごとに電圧を変化させています。
出力に3.9Ωの抵抗を接続した実測値は下図。ほぼシミュレーション通りです。コンデンサーC6は固体電解コンデンサー(0.027Ω)を、コイルL1は太陽誘電NRS6045T-100(直流重畳3.1A/温度上昇2.4A)を使用しました。3.9Ω接続時(出力1.25A)の変換効率は約81%でした。MOSFET、ショットキーダイオード、コイルがそれなりに(合計最大1.5W程度)発熱します。MOSFETのタブがドレイン端子ですので、ここに銅板を放熱板として半田付けして、それにダイオードとコイルを直付けして放熱するのが良いと思います。