電池2本で動作する機器の電源を考えてみました。
HT7750Aは回路が簡単で効率がよいのですが、負電源が必要な時は、さらに電圧インバータを外付けする
必要があります。
HT7750Aは電圧を調整出来ず、電圧安定度も良くありません。
また、HT7750Aのリップルノイズは、どういう訳か取りにくく、苦労します。
今回はPICマイコンを使い、一度に±5Vを出力する電源を考えてみました。
電源は単3電池2本とします。
ここではニッケル水素電池2本を想定し、2.4Vを定格電圧とします。
勿論、アルカリ電池も使えるように使用電圧範囲を2V〜3Vとします。
アルカリ電池2本でも3Vあるのは新しい時だけで、平均的な電圧は、やはり2.4V程度です。
+側負荷電流を25mA、−側負荷電流を5mAとします。
最近のCPUやOPアンプは消費電流が少ないので、これくらいで十分です。
さらに大きな電流を必要とする場合は、電池の持ちを考えた場合、電池の本数を4本〜6本にした方が良いと思います。
効率は使用電圧範囲で60%以上とします。
PICマイコンを使用した小電力の電源ということで、効率を上げにくいと考え、目標を甘くしました。
回路図をクリックすると拡大表示されます。
拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。
制御はPIC12F1822マイコンで基準電圧と出力電圧を比較し、PWM制御します。
PIC12F1822は安価で高機能であるため最近使い始めました。
アナログコンパレータとハードウエアPWM機能は12F683にも有ったのですが、今回は内部基準電圧と
ハーフブリッジ出力回路を新たに使う事が出来ました。
PWM周期は50KHz固定で、デューティーは0〜50%に制御されます。
+側出力で制御していますが、トランス二次側の+側、−側の巻き数比が1:1ですので正側出力電圧と負側出力電圧は、ほぼ
同じになります。
ただし、負側の電流は正側の電流より小さくします。
尚、MCLRピンは入力ピンに設定し、内部でプルアップされています。
このピンをグラウンドに短絡するとCPUは出力を遮断してスリープします。
スイッチ素子を選択するには苦労しました。
仮に電池の電圧が2Vとすると入力電流は電圧比で負荷電流の2.5倍、デューティーが40%と仮定するとピーク値は
2.5倍、効率の逆数で1.5倍、合計10倍程度の電流が流れます。
負荷側の合計電流が30mAとすると入力スイッチには300mAのピーク電流が流れます。
従ってスイッチ素子は1A以上流せるものが必要となります。
トランジスタはベース駆動が大変であり、蓄積時間でオフが遅れるのでMOSFETを使いたいのですが、電源電圧が低い為、
確実にオンさせる事が大変です。
一般に売られているMOSFETはゲートスレッショルド電圧が2V程度なので電源電圧は3V以上は必要です。
ゲートスレッショルド電圧が1V程度のものが欲しいのですが、なかなか見つかりません。
やっと2SK2493が入手できたので、これを使うことにしました。
ただし、2SK2493はドレイン耐圧が16Vと低く、注意する必要があります。
今回は巻き線の一次側にダイオードとツェナーダイオードの直列回路を入れ、素子の保護とノイズの低減を兼ねています。
以前、電池4本で2SK2231を駆動した時は電源電圧も高く、素子のゲート容量も小さかったのでCPUで
直接駆動したのですが、2SK2493のゲート容量は2SK2231の3倍程度あり、電源電圧も低いのでトランジスタで
ゲートをドライブしました。
PIC12F1822にはハーフブリッジ用の出力回路があるので、これを利用しました。
ただし、ハイサイド側はPNPですのでポートの出力は反転する設定とします。
(ローサイド側のポート出力は非反転)
トランスは手持ちのフェライト#43材のトロイダルコア(FT−50#43)にUEW線を巻いて作りました。
本当はギャップが入れられるEIコアの方が望ましいかもしれません。
まず0.26mmのUEWで二次巻き線を40回・40回のバイファイラ巻きにします。
その上に0.6mmのUEWを12回巻き、一次巻き線とします。
ここで、巻き始め、巻き終わりを明確に認識しておく必要があります。
巻き始め、巻き終わりというのは作業の順序ではなく、巻く方向の相対的な基準です。
回路図では巻き線に黒点の着いた方が巻き始めです。
相対的な関係ですので、黒点の位置は巻き線の逆側でもよく、一次側を逆にしたら二次側も逆にすれば良いです。
二次巻き線は2組あるので(バイファイラ巻き)一方の巻き始めと他方の巻き始めを結んでセンタータップとします。
トランスの製作は経験に基づいた感覚的ものですが、立派に?動作しています。
それでもコアのAL値等の若干の知識とLメータ程度は必要です。
フライバックコンバータの設計手順を書いた書籍も探せばあると思いますので、興味のある人は参考にしてください。
コアの寸法が小さすぎると飽和しやすくなりますし、線が巻けなくなります。
コアが大きすぎると自分自身を励磁するエネルギーが大きくなるので効率が下がります。
ソフトウエアはMikroCで作成しました。
短い簡単なプログラムですが、レジスタの設定ヶ所が結構多く、作成後、慎重に見直します。
毎回言いますが、MikroCはコンフィギュレーションをファイルに書けないので、プロジェクトに設定するのですが、
誤操作で消してしまうことがあります。
従って、コメントとして残しておきます。
デホルトのままで良いところも書いておくと良いと思います。
今回のソースファイルを下に示します。
レジスタの設定を沢山行うので面倒ですが、あとは基準電圧と出力電圧を比較してPWMのデューティーを上げたり下げたり
しているだけです。
ポートRA3端子を接地するとCPUは出力を遮断してスリープするようになっています。
PWMの周期は20uS(50KHz)固定です。
MOSFETの出力はデューティー0〜50%に変化します。(パルス幅で0〜10uS)
ただし、ハーフブリッジの出力のハイサイド、ローサイドの立ち上がりに0.5uSのディレーを入れている関係で、ゲート
駆動パルスが、この分、やせ細ります。
これを見越して、PWMの設定はパルス幅で0.5uS〜10.5uSとしています。
/////////////////////////////////////////////// // 3Vから±5V電源 swreg2.c // // 2012/01/24 PIC12F1822 MikroC Ver4.60 // /////////////////////////////////////////////// // CLOCK 8MHz // Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON, // MCLR Pin OFF, Code Protection OFF, Data Protection OFF, // Brown-out Reset OFF, Clock Out OFF, Int/Ext Switchover OFF, // Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, Pll OFF // Stack Of/Uf Reset ON, Brown-out Reset 1.9V, LVP OFF unsigned char duty; void main(){ OSCCON = 0x72; //内部 8MHz OPTION_REG = 0xf; //タイマー0関連ダミー ANSELA = 0x2; //AN1 FVRCON = 0x84; //VREF=1.024V LATA = 0x4; //driver OFF TRISA = 0x3a; //RA2,RA0 = OUTPUT CM1CON0 = 0x84; //Comparator Enable,higher speed,hysteresis disabled CM1CON1 = 0x20; //FIX VOLTAGE Reference WPUA = 0x38; //PULL UP WDTCON = 0xf; //ウオッチドッグ128mS asm CLRWDT; //WDT CLR CCP1CON = 0x8e; //PWM ACTIVE L PWM1CON = 1; //DELAY PR2 = 39; //(39+1) x 0.5u = 20uS duty = 1; //デューティー1からスタート CCPR1L = duty; //デューティーをセット T2CON = 0x4; //T2 ON プリスケーラー無し while(1){ asm CLRWDT; //WDT CLR if(CM1CON0.B6){ //出力電圧が低い時 if(duty < 21) duty++; //デューティーを上げる } else { //出力電圧が高い時 if(duty > 1) duty--; //デューティーを下げる } CCPR1L = duty; //デューティーをセット Delay_us(40); //40uS待つ if(!PORTA.B3){ LATA = 0x4; //FET OFF break; //遮断信号で終了 } } TRISA = 0xf; //ALL INPUT T2CON = 0; WDTCON = 0; asm SLEEP; //スリープ asm NOP; }
いきなり、電池を電源としてはいけません。
必ず、電圧、電流を設定出来る定電圧電源に接続します。
結線間違いやソフトのバグでFETがオンのままになってしまう場合があります。
トランスの巻き始め、巻き終わりを間違えても過大電流が流れます。
写真は今回、試作した回路です。
試行錯誤の結果、若干、不要な部品が付いています。
右側の抵抗2本はダミーの負荷です。
+側に200Ωの負荷抵抗(実測199Ω)を接続し、−側に1KΩ(実測992Ω)を接続し、入力電圧を変化させて
特性をプロットしました。
この抵抗値を定格負荷とします。
出力電圧の安定度は良好で、効率は70%程度です。
最初に定めた目標を十分満たしています。
PIC12F1822の最低動作電圧は1.8Vですが、CPU自体はもう少し低い電圧でも動作するようです。
ただし、電源として安心使えるのは1.8V以上でしょう。
電源電圧が3.2Vを越えると若干、効率が落ちますが3.6Vでも十分使えます。
上記の表の内、負荷を一定に保ったまま、入力電圧を変化させた場合の入力電流の変化をグラフにしてみました。
入力電圧が下がった場合、負荷に一定の電力を供給するためには入力電流を増やさなければなりません。
最低動作電圧付近で入力電流は最大となります。
この電流は平均値ですので素子のピーク値は2.5倍程度になります。
素晴らしい電圧安定度です。
出力電圧は可変抵抗器で調整出来ます。
グラフは見やすいように符号を反転していますので、実際には−の電圧です。
こちらも問題ない安定度です。
効率は使用範囲で70%程度です。
実際の使用では保護回路等を付加するので65%程度になると思います。
微妙に不規則なのは測定誤差の影響があると思います。
最初定めた動作条件では好結果が得られましたが、多少の余裕が必要と思い、負荷を若干重くしてみました。
+側の負荷抵抗は実測148Ω、−側の負荷抵抗は実測738Ωです。
結果は良好で、まだ多少の余裕がありそうですが、これ以上の重い負荷は試していません。
負荷が重くなった分、入力電流は増えています。
定格負荷の時と殆ど同じ良好な特性です。
グラフは見やすいように符号を反転していますので、実際には−の電圧です。
こちらの特性も定格負荷のときと殆ど同じです。
効率は使用範囲で70%程度です。
定格負荷の時との差は計測誤差程度です。
負荷が軽くなった時、出力電圧が上昇しないか心配になります。
負荷を解放して出力電圧を測定してみましたが全く問題有りません。
負荷解放でも電圧は安定しています。
こちらも問題ありません。
写真は入力電圧2.41V、定格負荷のときの2SK2493のドレイン電圧です。
入力電圧の約2倍の電圧に、8V程度のスパイク電圧が乗っています。
ツェナーダイオードでスパイクを押さえているので8V程度で済んでいますが、対策しなければ10数Vになります。
もう少しツェナー電圧を下げれば、スパイクが、さらに小さくなりそうですが、電源電圧が上がった時、導通してしまうので、
あまり下げられません。
実は3V以上で若干、効率が下がっているのはツェナー電圧が低すぎて、FETオフ時に電流が流れ始め、損失が発生
している為と推測しました。
デューティーが絶えず変化しているので波形が乱れていますが、写真のLレベルの区間でFETがオンしています。
写真は入力電圧2.41V定格負荷の時の+側出力端子のノイズ波形です。
0.1VP−P程度あるので、アナログ回路の電源としてはもう1段LCフィルターが必要と思われます。
周波数が固定ですのでHT7750A等よりは対策しやすいと思います。
ノイズは実装の仕方でも変わってくるので、しっかりしたプリント基板を作れば条件は良くなると思います。
逆にブレッドボード等では悲惨な結果になるかもしれません。
試作回路はユニバーサル基板で、条件は良くはないのですが、グランドラインは1mmのスズメッキ線を使っています。
とにかく、しっかり作ることです。
回路中でCPUの電源にLCフィルタが入っていますが、これは必須で、無い場合、ノイズで誤動作します。