ビルジポンプコントローラー
2004-NOV.

これはプレジャーボートなどの電動ビルジポンプを自動的にオン・オフするために作りました。
12Vモーターのポンプ用で起動時瞬間8A程度,回転安定時4A程度まで使えます。
電子スイッチに使った部品(FET)は30Aで壊れるので起動電流の大きなモーターには 使えませんが、FETを大型の放熱板に付ければ、起動時20A,連続電流10A程度まで 使えるようになり、モーターではない通常負荷なら連続でも20Aの負荷に耐えます。
このコントローラーは12V専用です。 24Vをつなぐと壊れます。
写真1:バッテリ電圧検出回路以外は完成したコントローラー。 負荷にファンモーターを使い 間欠タイマーをチェック中。 負荷に12V35W(約3A消費)のハロゲンライトを 付けても、FETの放熱板から発熱は感じられませんでした。 <使用法> スイッチは中立付き。上向きは、放すと跳ね戻り,下向きは、入ったままになる物を使いました。 強制モードスイッチを上側に保持した状態でこのコントローラーの電源を入れるとポンプが 回ります。 スイッチから指を放して、中立になるとポンプは止まります。 ポンプ 動作中はLED2が点灯します。 スイッチが中立に戻ると待機モードになります。 間欠モードスイッチを下向きに倒した状態でこのコントローラーの電源が入ると、ポンプが 1分間動作、3分間停止の間欠動作を繰り返します。 このモードではLED4が点灯します。 水センサーを接続している場合で、水が 検知されるとLED3が点灯しますがポンプは間欠動作です。 スイッチを中立にすると待機モードになります。 待機モードスイッチが中立の状態でこのコントローラーの電源が入ると、ポンプは働きません。 ただし、このコントローラーに水センサーを接続している場合で、水が感知されて いるとポンプが動作します。 このモードではLED3が点灯します。 この状態からスイッチを下向きに倒すと間欠モードになります。 ・スイッチが中立の状態から一回上に押し上げると現在の間欠動作時間を、点灯する LEDの数で示します。 再度押し上げる毎に間欠動作の時間が変わります。 スイッチを下に倒せば間欠動作になり、先ずポンプが1分間動作します。 スイッチが中立のまま放っておくと5秒後に待機モードに戻ります。 @1分動作、3分停止の繰り返し。 LED1だけが点灯(初期状態) A1分動作、7分停止の繰り返し。 LED1と2が点灯 B1分動作、15分停止の繰り返し。 LED1〜3が点灯 C1分動作、30分停止の繰り返し。 LED1〜4が点灯 ・12Vのバッテリーをこのコントローラーの電源として使う事を想定し、バッテリーの電圧を 検知し11V以下になると待機モード間欠モードで警告音(ピー)を発生します。 ・このコントローラーの動作電圧を維持できる限り、スイッチを上側に保持して電源を投入する 方法でポンプを強制的に回し続ける事ができますが、コントローラーの動作電圧が維持できな い場合はバッテリーにポンプを回す容量が残っていてもポンプは回りません。 実際に作り或いは使われる方は、上記の事や回路の特性を理解してお使いください。 回路や機能が正常に動作せず死亡しても、ウェブマスターは一切責任を持ちません。 以下回路の説明 <回路図> 水滴センサは2本線の先に、0.01μFのセラミックコンデンサーをハンダ付けした物。

<部品> AT90S2313 CPU 1個 10MHzセラロック 発振子 1個 2SJ471 FET 1個 スイッチ(片側トグル) 中立付き 1個 0.01μF パスコン 数個 10KΩ抵抗 PU 数個
<プログラム関連> TIMER1割り込みの部分を簡単に説明します。AVRのソースが読める人はすぐに理解できます。 CPUクロックは10MHzで、これをタイマー1により10000クロックサイクル毎に割り込みを 発生させる(10000クロックサイクル=1ミリ秒) ・割り込み初期化(メインルーチン内) タイマー1のクロックソースを「CPUクロック」とし,「クロックの分周なし」に設定 タイマー1の16ビットレジスタに$D8F0(=65536−10000)をセット SRAM上の1mS,10mS,100mS,1秒,1分の変数(60分時計)をゼロクリア タイマー1のオーバーフロー割り込みイネーブル →D8F0から1万クロック分カウントアップすると(1ミリ秒後に)最初の割り込みが発生する
割り込みサービスルーチン内で割り込み回数を計数し、割り込みを継続させる ・割り込みルーチン 割り込みタイマーの停止 SRAM上の1mS,10mS,100mS,1秒,1分の変数(60分時計)を更新する タイマー1の16ビットレジスタに$D8C1(=65536−10000−47)をセット 割り込みタイマーの再開 reti →割り込みルーチン自身が実行されるのに47クロックサイクル分時間が経過するので、次は 9953クロック分カウントすれば、1ミリ秒の間隔の割り込みが継続して発生する
メインプロシージャでは、用途に応じたSRAM上の時計の桁を盗み取る ・例えば、LEDを0.5秒点灯,0.5秒消灯するプロシジャなら… 100mSの桁をレジスタに取り出す 5と比較 0〜4ならLED消灯、5以上ならLED点灯 この処理を繰り返す <注意点> メインプロシージャでは、割り込みを禁止したり、タイマー1の値を変えたり、SRAM上の 時計に書き込んだり、他の割り込みを設定しなければ、どんな処理でも支障なく実行され且つ 時計は狂いません。 ただし確度はCPUのクロックに依存しますし10MHzクロックでは 1命令実行すると10分の1マイクロ秒経過する事を頭に置いてください。 割り込みを停止する場合は、割り込みを禁止する前にシステムレジスタの「TCCR1B」に ゼロを書き込み、タイマーを停止させないといけません。 これを忘れるとタイマーは走りっ ぱなしなのでオーバーフローしたら割り込みは掛かりませんが、保持されていますから次に割り 込みを許可した瞬間、意図しない割り込みが発生します。
<実際のプログラムでは> ビルジポンプ用プログラムはTIMER1割り込が作り出す時計の分の桁を参照し、 間欠動作させています。 SRAMの時計の「分(0〜59)」を8ビットレジスタに取り出し、MSBの… 1分動作/3分停止 2ビットが00ならポンプ動作、00以外(01/10/11)なら停止 1分動作/7分停止 3ビットが000なら動作、001〜111なら停止 1分動作/15分停止 4ビットが0000なら動作、0001〜1111なら停止 1分動作/30分停止 5ビットを比較します。 だから正確には、31分停止です。 ・上の条件から、ポンプを動作させるときはFET1のポートを1に、停止はFET1の ポートを0にするだけですからオンかオフは一瞬で処理が終わります。 ・次に入力ポートを検査しスイッチの状態が変えられたか、水検知、電圧低下検出を判定 してそれぞれの処理をします。 ・圧電ブザーのビープ音は1ミリ秒刻みの割り込みは使えないため、200μ秒のNOP タイマーをメインルーチンで作り、BUZZポートを200μ秒毎に0と1に768回 繰り返して発生しています。そのためビープ音を鳴動中は他の処理ができず、水検知や スイッチ切り替え時の動作が若干遅れます。 ・スイッチの状態が変えられるまで、上の3つを無限に繰り返しますからポンプのオン/ オフではFET1ポートに度々同じ値が出力されている事になります。
<資料> 回路図(上のと同じ) ソースコード(テキストファイルなのでDL名前をつけて保存可) HEXファイル
top トップへ