バッテリ延命機のついでに 作った。 PIC−12F675
壊れたLED ランプの再生などのため
某メーカーの壊れたLED100W電球型のLEDランプが数個あったので調べたら14V程度で
動作することが判明、
太陽光発電の12Vで 4個 点灯させ無線室の照明にする。
固定なので細かな制御はしていない。 コンデンサーが小さいせいか少々明かりがふらつく。
また、日照りと曇りでは明るさが違う それもまた よろし。
よく調べたら、明かりのふらつきは 充電コントローラーのパルス充電の仕業であった。
バッテリから直接接続したらふらつきは無くなった。
並列だと大量に電流が必要と判断。
よって2個直列=28V 以上 で 2列とする。
最大電流は1A を想定す。
強弱切り替え用
************ 最も重要な点 ***************
なんと言ってもコイル L1 の容量と FETのかねあい、
とパルス幅 である。 (3日かかって見つけた。機密情報!?)
当方は100V17A MOS FET と 1mmφで巻いたある100uH
(LCメータ F=100kHzでの計測: 43材より高い周波数用と思う。)
コア材は詳細不明。 パルス幅は
2015/05/18
その後の実験の末 やはり基本周波数を他できる限り高くすることによって効率は
良くなるので プログラムはON時間はdelay us(2)程度とし、OFF時間での調整を
した。 4MHzの発振で10KHz程度になった。 20MHzの発振だと70KHzもで持って行けるが
照度を数段階に押しボタンで変更可能としたら1/2程度となる。
プログラムの作り込みの問題だ。(未熟なのです。)
12F683のPWMを使うと最高だが、回路をいじるのは面倒なので4MHzクロックで
20KHz程度にした(オシロ測定)プログラムの途中にいろいろ書き足すと周波数は
どんどん落ちていくが、実用上は問題にはならなかった。
ちょっと高い電圧が必要なときには役に立つ回路である。
特にパルス幅はFETが熱くなったり、コイルが熱くなったりの繰り返しで
いやになるが、最も重要な条件なので アマチュアの場合 あり合わせの
材料での制作になるので 苦労するところだが、また暇つぶしの材料にも成る。
まー 製品にするわけではないのでじっくり楽しんでください。
以上の条件でコイルが50℃程度に成る。
トラブル
ブレッドボードで組み立てたときは発信は起きなかったが基板に組んだら
すごい発信をして FET 1個を燃やした。
発信防止用抵抗は20Ωから試験したが結局100Ω必要になった。
モニターLEDに抵抗が入っていない?
「 手抜きだ!!」
いや、電気などいくらでもある。 余裕じゃ!!
PICの番号間違い
pulup
こんなに簡単な回路で動くのですね!!
#include <pic.h>
#include <htc.h> // delay用に必要
#define _XTAL_FREQ 4000000 // delay用に必要(クロック4MHzを指定)
// メモリを保護しない(UNPROTECT):外部リセット信号は使用せずにデジタル入力(GP3)ピンとする(MCLRDIS)
// 電源電圧降下常時監視機能ON(BOREN):電源ONから72ms後にプログラムを開始する(PWRTEN)
// ウオッチドックタイマ無し:内部クロック4MHz使用する(INTIO)
__CONFIG(UNPROTECT & MCLRDIS & BOREN & PWRTEN & WDTDIS & INTIO) ;
// メインの処理
void main()
{
CMCON = 0x07 ; // コンパレータは使用しない
ANSEL = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる)
TRISIO = 0b00001000 ; // ピンは全て出力に割当てる(GP3は入力のみとなる)
GPIO = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
while (1)
{
int a=1;
GPIO0=1; //モニターランプ点灯
while(a==1)
{
GPIO0=1;
GPIO2=1;
__delay_us(10);
GPIO=0;
__delay_us(2); //以下のプログラムは待ち時間に組み込まれる馬鹿に成らん時間だ。
if(GPIO3==0){a=2;//ボタンが押されたらa 数値変更し下に移行
__delay_ms(300); //4MHzクロックだと結構な時間になるディレイは{ }の中に入れないといけない。
//チャタリング防止だがこんなに待ち時間を入れるとなんだかわからなくなる。
}
while(a==2)
{
GPIO0=1;
GPIO2=1;
__delay_us(13);
GPIO=0;
__delay_us(2);
if(GPIO3==0){a=3;
__delay_ms(300);
}
}
while(a==3)
{
GPIO0=1;
GPIO2=1;
__delay_us(16);
GPIO=0;
__delay_us(2);
if(GPIO3==0){a=1;
__delay_ms(300);
}
}
}
}
}
2015/05/19
応用でキャンプ用のランタン制作。
単三4本で15V用LEDを点灯させる。
こんなこともできます。
ちょっと高い電圧が必要になったとき
貴重な回路です。