雨降りセンサーの製作 Part3、受信機の省エネ電池版

前回のPart2で雨降りセンサーは完成しましたが、今回は受信機をコンセント版から電池版にしてみます。

Part2の雨降りセンサーの送信機は単3の電池二つで数年持つように設計されています。受信機はUSB充電アダプタでコンセントから電源を供給していました。

今回その受信機を単3電池三つで1年持つように改良します。

PICマイコンで消費電流をコントロールする

単純に受信機を動かしてしまうと無線モジュールで3mAくらいの電流を使ってしまいます。これを電池で動かすとなると700時間、持っても1ヶ月くらいで電池切れを起こしてしまいます。

そこで電力食いの無線モジュールを常時動かすのではなく、12秒に1回、0.8秒だけ動かして雨かどうかを確認せせることにします。

ここで使うのがPICマイコン(PIC12F683)です。

PICマイコンで無線モジュールのオンオフをコントロールします。PICマイコンを使うことで受信機を20uAで動かすことができます。12秒に1回、0.8秒だけ無線モジュールが動くのでその時だけ3mAの消費電流が必要になります。

無線モジュールをコンとローするためのPICマイコンのプログラム

#include <xc.h>
#include "stdbool.h"
#define _XTAL_FREQ 31000
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000UL)))

// CONFIG
#pragma config FOSC = INTOSCIO
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF      // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)

void main() {
    // GP3 input only
    // GP0,1,2,4,5 input and output

    OSCCON = 0b00001001;
    GPIO = 0b00000000; // output off //--543210
    TRISIO = 0b00001000;

    // GP0 is to turn on Radio module
    // GP1 is to turn on Alerm
    // GP3 is to check rain

    ANSEL = 0x00;
    ADCON0 = 0x00;
    while(1){
        GP0 = 1;
        __delay_ms(800);

        if(GP3 == 1){
            GP0 = 0;
            GP1 = 1;
            __delay_ms(30000);
            GP1 = 0;
        } else {
            GP0 = 0;
        }

        __delay_ms(12000);
    }
}

GP0で無線モジュールのオンオフをコントロールします。

まず最初に無線モジュールをオンにして雨かどうかをチェックできるようになるまで0.8秒待ちます。これを短くしてしまうと感度が悪くなります。

無線モジュールをオンにして0.8秒経過したら、GP0をオフにして無線モジュールをオフにします。 それからすぐにGP3で雨になったかどうかをチェックします。雨になった場合、GP1をオンにしてアラームを鳴らします。30秒後にアラームをオフにします。

それから12秒間無線モジュールをオフにします。

これを繰り返します。ちなみに雨になったときに送信機が1度だけ40秒間、雨になったという信号を発信します。

このプログラムをPICマイコンに書き込みます。

PICマイコンへの書き込みの仕方はMPLAB XとPICkit2でLEDを点滅させるに書いてあります。

電池版の受信機の回路図

旧版ではブザーはピーとなるだけでしたが、今回はメロディICを使って音楽を流すことにしました。

新たに必要な部品
三端子メロディIC It’s A Small World UM66T-68L (5個入) 150円
圧電スピーカー 30円
PIC12F683 130円

旧版のブザーは発振器が入った電子ブザーを使いましたが、今回は発振器が入っていない圧電スピーカーが必要になります。

電池版の受信機の実物

こんな感じになりました。ブレッドボード(ブレッドボード BB-801、200円)のスペースを無駄に使ってしまいました。がんばれば130円のミニブレッドボードに収まりそうな気がします。

3個で100円のタッパに受信機を入れます。
タッパに穴を開けて音が出るようにします。

以上で受信機の省エネ電池版の完成です!

単三電池を4つにして5Vを3.3Vにする三端子レギュレーターを使えば、受信機の稼働時間(1年くらい)を20%くらい長くすることができるかなと思います。そのうちちょうど良い三端子レギュレーターを手に入れたら手を加えてみようと思います。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください