RTC DS3231 控制Arduino定時開關
定時開關的作用是在不需要使用的時候斷電,就可以完全節省電力,在戶外的時候十分好用。
論文已經發表,open access, 有興趣可以參考。但請不要跟我要程式。最下面有簡單程式說明
RTC DS3231部分電路
透過DS3231的中斷來啟動P mosfet,開始供電,任務結束,Arduino清除DS3231的flag, DS3231的INT (pin3)就會回到floating,關閉P mosfet。
簡單程式說明 (只有四步驟)
我習慣使用的RTC library: Rtc_by_Makuna Arduino IDE可以搜尋安裝
可以參考 DS3231_Alarms 這一個範例研讀一下
以下挑選我用到的功能說明
設定時間
紀錄編譯的時間
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
以下是設定DS3231時間為編譯時間
if (now < compiled)
{
Serial.println("RTC is older than compile time! (Updating DateTime)");
Rtc.SetDateTime(compiled);
}
設定pin3的模式,啟動alarm2(我使用的模式)
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeAlarmTwo);
這裡可以順帶說明一下,通常可以選用的設定都是定義在*.h內,也就是RtcDS3231.h
這個檔案是在, .. Documents\Arduino\libraries\Rtc_by_Makuna\src 目錄下,你可以搜尋 DS3231SquareWavePin_ModeAlarmTwo,就會知道還有哪些mode可以選用,至於為何有這些可以選,就要去看DS3231的datasheet了
設定Alarm2
DS3231AlarmTwo alarm2(
0,
0,
0,
DS3231AlarmTwoControl_OncePerMinute);
Rtc.SetAlarmTwo(alarm2);
至於Alarm2除了DS3231AlarmTwoControl_OncePerMinute外還有甚麼可以選,一樣去看 RtcDS3231.h,原理詳見datasheet
設定完之後,DS3231就會在00秒的時候產生中斷,把pin3=LOW,打開P MOS。這裡要注意,他就會一直維持LOW,除非我們把DS3231的 alarm清除,所以程式最後需要加上這個指令去清除alarm,pin 3就會floating了
Rtc.LatchAlarmsTriggeredFlags();