ソーラー充電器、DC−DC昇圧制御機の後は 自動でDC−AC と商用電源との切り替えを
どうしても行わなくてならない。
DC-ACには 11.5Vにバッテリの電圧が降下した場合切断される装置は付属しているが
そこまで電圧が落ちるとバッテリの寿命にも影響しかけない。
何せ、10年もだましだまし使い続けている。 小生の目の黒いうちには買い換える予算も
財務省からの許可などもまったく望みはない。
よって バッテリ電圧 12.3V 以上降下した場合は 強制的に商用電源に切り替えることとした。
ソーラ充電制御機の1台を 改造することにした。
注意点
電源の切り替えは 双方 2 線 同時に切り替えなくてはならない SSR(ソリッドステートリレー)だと
1線 だけなので NG とし ノートPC および 照明程度(半田こても)
せいぜい 100W 小型リレーで十分。(125V 1A)とした。
市販のコントローラーの電圧表示と実際の
バッテリーの電圧がかなり相違があった。
0.5v前後 実際のバッテリーの電圧を計測して
プログラムは微調整した。
NPN とPNPで若干負荷のかけ方が
違います。
1815は C にリレー E は グランドです。
リレーは33mAです。
ソースは下にあります。
初期値は商用電源とし、バッテリー電圧が
13.3Vに成ったら インバータ始動し
12.3V以下になったら商用電源に切り替える。
大事なバッテリーを十分保護する。
小生はサーバーならびに室内照明 半田ごて
をバッテリで稼動しています。
何といっても、サーバーは24時間運用であるため
遊びに出かけたとき サーバよりバッテリーの
ほうが心配なのです。
/***********************************************************************
/*インバータ起動電圧が12.4V だとインバータ接続と同時に電圧が下がり、リレーが断続
し安定しない。
/*13.3Vまでバッテリの電圧が上がった時点でインバータ起動がよい。
***********************************************************************/
#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) ;
// アナログ値の入力処理
unsigned int adconv()
{
int i;
unsigned int temp;
GODONE = 1 ; // PICにアナログ値読取り開始を指示
while(GODONE) ; // PICが読取り完了するまで待つ
temp = ADRESH ; // PICは読取った値をADRESHとADRESLのレジスターにセットする
temp = ( temp << 8 ) | ADRESL ; // 10ビットの分解能力です.
return temp ;
}
// メインの処理
void main()
{
unsigned int num ;
CMCON = 0x07 ; // コンパレータは使用しない
ANSEL = 0b00011000 ; // アナログはGPIO4(AN3)を使用し、残りをすべてデジタルI/Oに割当4、5ビット目がANピンの指定
TRISIO = 0b00010000 ; // AN3だけ入力その他のピンは出力に割当てる
GPIO = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
ADCON0 = 0b10001101 ; // アナログ変換情報設定
__delay_us(20) ; // アナログ変換情報が設定されるまでとりあえず待つ
int a=0;
while(1) {
//num = adconv() ; // 3番ピン(AN3)から電圧を読み込む"GPIO4"
GPIO=0b0000001; //初期値は商用電源
num = adconv() ;
__delay_ms(2000);
if (num>890){a=1;} //13V以上になったらDCAC起動へ
while (a==1) //13V以上ならDC-AC 起動ソーラー
//12.4V以下になったら 商用電源に
{
num = adconv() ;
if (num<840){a=0;} // 12.4V検地したらループを抜ける
GPIO=0b00000101;
__delay_ms(500); //GP0点滅 DC電源時
GPIO=0b00000100;
__delay_ms(1000);
}
}
}
2014/05/18以前の掲載分動作不安定で変更しました。
やはり バッテリーがある程度充電された状態で インバータ始動しないと 起動と同時に電圧降下
商用電源復帰への繰り返しで (擬似 発振状態) になるため。
PIC-12F675
くたばるまで 拾ってきた大事なバッテリーを使い切るために。
電圧計測は電流を小生のようにケチると誤動作するので
コンデンサーを入れしょう。
1/3 程度の電圧になるよう分圧します。 後はテスターを見ながら
ソフトで調整です。
メールで依頼してください。
プログラム済みのpIC−12F675が必要な方へ