前回の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%くらい長くすることができるかなと思います。そのうちちょうど良い三端子レギュレーターを手に入れたら手を加えてみようと思います。
コメントを残す