步驟1:設計RTC
我不喜歡我的第一個設計,因為電池只能使用大約十天,所以我希望設計可以使用更長的時間。
:電池不能使用很長時間的原因是,我必須持續保持AtMega328(Arduino)的電源以保持軟件實時時鐘運行。因此,我需要能夠使AtMega328進入睡眠狀態或將其關閉。
我的朋友給我發送了一些RTC(實時時鐘)模塊:
http://www.ebay.co.uk/ITM/Arduino的I2C纖巧-RTC-DS1307-的實時時鐘模塊,AT24C32板上-AVR-MCU-PIC-/221176522620 PT = UK_BOI_Electrical_Components_Supplies_ET&哈希= item337f25e77c搜索結果HTTP://WWW。 ebay.com/itm/I2C-Tiny-RTC-DS1307-實時時鐘模塊AT24C32-AVR-MCU-PIC-DIY-/231037403500?pt = LH_DefaultDomain_0&hash = item35cae7016c
這些均隨附具有電池備用功能的RTC和EEPROM也很有幫助。
問題:因此,我對這些模塊感到擔心。請注意,電池是LIR2032,它是可充電電池。我懷疑它有充電電路。好吧,我找到了一個原理圖并決定繪制自己的示意圖(參見圖片)。它確實具有充電電路,并且會給18650電池帶來額外的負擔。
解決方案:因此,對于此模塊,如果卸下R5,D1,R4和R6并跨接一個跳線, R6并用CR2032更換電池,這將消除電池充電。這就是我所做的(參見圖片)。
在此應用程序中,CR2032應該可以使用大約十年,因此我對此沒有任何問題。
警告: AdaFruit的一個舊庫,用于其數據記錄器RTCLib。有一個名為DS1307.pde的草圖可以設置時間。現在,它在第一次運行時效果很好,但是沒有設置時間。有一個更新的版本,其示例效果更好:
https://github.com/jcw/rtclib
下載zip,解壓縮,將其從rtclib-master重命名為rtclib并將其復制到您的Arduino庫目錄。
TechnoSpeak I2C:從技術上講,它應該是I(平方)C或表示集成電路間的IIC。基本上,這是一個“標準”串行接口,需要兩個信號SCL,SDA和接地。 SDA是從0V切換到5V的數據信號,數據按順序(串行)傳輸。由于只有兩個級別,并且無法確定速度,因此無法確定一個數據的結束位置和下一個數據的開始位置。這就是SCL(時鐘)信號的輸入。這告訴接收設備一位在哪里結束,下一位在哪里開始。
I2C的一個優點是可以將多個設備連接到相同的兩個信號。在這種情況下,DS1307(RTC)和24C32(EEPROM)都連接到SCL和SDA線上。為了告訴您正在交談的設備,每種設備類型都有一個唯一的地址。
DS1307的地址為0x68。 24C32地址為0x50。
Arduino通過“ wire”庫支持I2C。
順便說一句,這意味著在同一兩行上不能有多個相同的設備類型。例如,您不能有兩個24C32。
步驟2:設計Solar Boost
問題:所以RTC模塊需要5Vdc,我希望它能與18650電池一起工作,電池的電壓從4.2Vdc降至大約2Vdc。
解決方案:有一些滿足需求的小Solar Boost模塊:
http://www.ebay.com/itm/370828387683?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
我不知道為什么他們稱他們為Solar Boost。基本上,它們采用1-5Vdc的DC電壓并將其轉換為5Vdc電壓。
現在有許多可用的版本。我想大多數都適用于該應用程序。
我取消了USB連接器的焊接,因為不需要它。 (見圖)。如圖所示,兩個外部USB引腳分別為接地和5V。
步驟3:設計ShowerMonitor2 PCB
所以自然是極客,我決定制作自己的帶有Arduino的ShowerMonitor2 PCB。 (參見圖片)此PCB將Solar Boost和Tiny RTC連接在一起,并顯示“星期幾”和“淋浴”狀態。
問題:我想用一個按鈕打開電源, Arduino保持開機狀態,直到顯示星期幾和淋浴狀態為止,并且還可以通過另一個按鈕切換淋浴狀態。然后關閉PCB的電源。
解決方案:下一張圖片是電源電路的框圖。
TechoSpeak:連接至PCB并連接至Solar Boost的地面(在此Solar Boost上,PS-和GND輸出連接在一起,以便可以將其中任何一個連接到PCB)。
要打開Arduino PCB,請按Start按鈕。這會將正的電池電壓傳遞給Solar Boost,后者啟動并向PCB提供5Vdc。 Arduino草圖將D3拉高,從而導通BS170 FET。這允許電流流過,從而將大部分電池電壓施加到Solar Boost。因此,可以釋放啟動開關。
在短暫的延遲后,用戶可以看到白天和淋浴狀態,Arduino將D3設置為低電平,這會關閉FET并斷開與Solar Boost的電源,從而斷開與PCB的電源。
電源摘要:因此,大多數情況下,Arduino均未供電。 TinyRTC擁有自己的電池來保持正確的時間。 EEPROM存儲一些淋浴信息,不需要電源。大多數情況下,18650電池的耗電量可忽略不計。按下開始按鈕時,Solar Boost由18650供電,Arduino讀取RTC,在星期幾點亮,并在適當時點亮Shower LED。大約五秒鐘后,Arduino斷開電池并自動關機。
TechnoSpeak: EEPROM代表電可擦可編程只讀存儲器。這意味著我們可以在其中存儲信息。該信息將保持通電或斷電狀態。因此,下次使用電源時,我們可以讀取之前存儲的信息。不需要電池。
注意:我添加了一個標有“ Prog”的兩針插頭。如果連接了跳線,這將為Arduino持續供電,以便用戶可以將草圖加載到Arduino并在需要時進行故障排除。
好的,所以我制作了PCB并將其塞滿。我在一周中的幾天內安裝了不同顏色的LED,因此區分一天和另一天比較容易。 (我的視力不是最大)
問題:對于TinyRTC庫部分,我概述了電路板的物理尺寸。不幸的是,當我試圖縮小PCB尺寸時,我忘記了這一點,因此“開始”按鈕位于Tiny RTC板的下面。這是當我累了并且沒有徹底檢查時會發生的事情。
問題2:嗯,TinyRTC的底部是電池。有了母頭,我以為可以清除AtMega328,但沒有清除。
解決方案:我從朋友那里抽了些長根母頭(見圖)。我將引腳彎曲成“ S”形,這樣TinyRTC板就更高了并且遠離“開始”按鈕。
問題3:很好,但是當我把它掛在
解決方案2:如果您看一下TinyRTC模塊,它有兩個連接器。一個是七個針腳,另一個是五個針腳,但五個信號以相同的順序重復。無論如何,我只使用其中的四個。好吧,我決定拆下母頭,在另一側安裝五針公頭,然后將它們焊接進去。它工作得很好,并且更容易到達“開始”按鈕。
附帶了鷹頭文件
零件清單:
1個微小的RTC_DS1307和AT24C32模塊
http://www.ebay.com/itm/I2C-Tiny-RTC-DS1307-Real-Time-Clock-模塊-AT24C32-AVR板載-MCU-PIC-DIY-/231037403500?pt = LH_DefaultDomain_0&hash = item35cae7016c
1 Solar Boost 1-5Vdc to 5Vdc output
http://www.ebay.com/itm/370828387683?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
1 18650電池
1 18650電池座
1淋浴監視器2 PCB(可以用Eagle Cadsoft文件制成)
1 ATmega328P微處理器
1 28針IC插座
6公頭針
2觸覺SPST開關
2電容器0.1uFd
2電容器22pFd
1圓柱晶體8MHz
8 LED 3MM(多種顏色)
1 BS170 FET
2電阻10K
8電阻1.5K
1 JST2.0連接器組(公/母)
廢線
Sprap p lastic
大多數零件都可以從Digikey和其他電子產品商店獲得。
步驟4:Arduino軟件
問題::標準引導加載的AtMega328P不適用于8MHz晶振。需要其他引導加載程序。
解決方案:我基本上使用此過程來加載正確的引導加載程序:
http://arduino.cc/zh/Tutorial/ArduinoISP
步驟6:我選擇了:帶Promega的Arduino Pro或Pro Mini(3.3V,8 MHz)作為我在AtMega328P上想要的引導負載。
警告:在“工具”》“面板”菜單下加載草圖時,必須選擇帶有ATmega328的 Arduino Pro或Pro Mini(3.3V,8 MHz)
我在AtMega328上貼了一個標簽,以幫助使我想起我正在使用什么。
TinyRTC模塊使用DS1307 IC作為實時時鐘。對于Arduino,您需要一個庫。有很多,但我選擇了這個:
https://github.com/jcw/rtclib
首先,必須在TinyRTC模塊中設置正確的時間/日期。確保已安裝CR2032電池。
在Prog上放一個兩腳跳線。
運行我的SetRTC草圖。打開串行監視器以確保正確設置。
現在加載ShowerMonitor2草圖。
刪除兩針跳線。
草圖摘要:
設置:將電源設置為高,以使SolarBoost保持打開狀態。
循環 ::讀取存儲在24C32-EEPROM中的數據。
讀取RTC。以獲得正確的時間/日期。
打開正確的星期幾LED。
弄清楚淋浴LED是否應打開。
檢查是否按了Shift。
切換淋浴并發送到EEPROM。
大約五秒鐘后,關閉電源,然后關閉Solar Boost和Arduino。
步驟5:使用淋浴監控器2
所以我很懶,我用雙面膠帶將電池和PCB粘在一塊塑料上。我鉆了幾個孔,用一根電線將其掛在釘子上。
步驟:因此,Shower Monitor2通常處于關閉狀態。
按住開始鍵按鈕。 Solar Boost上的電源LED將點亮,然后一周中的某一天LED將點亮。釋放開始按鈕。如果淋浴LED亮起,則是淋浴時間。
淋浴監控器將在大約四秒鐘后關閉。
更改淋浴日期::如果要更改淋浴日期,按住“開始”按鈕,直到獲得日間LED,然后按住Shift按鈕,直到“淋浴” LED發生切換。
故障排除::如果沒有LED亮起,則(希望)電池。替換為已充電的18650。
如果星期幾關閉,請加載setRTC草圖以設置時間,然后重新加載ShowerMonitor2草圖。
-
監控器
+關注
關注
1文章
323瀏覽量
27351 -
Arduino
+關注
關注
188文章
6491瀏覽量
190103
發布評論請先 登錄
高性能電壓監控器詳解—-- 第一部分

比較電壓和處理器監控解決方案:分立式電壓監控器和看門狗ICs

將設計移植到LP3470A低lq電壓監控器,以改善電源監控

評論