Arduino dusch Monitor 2 (1 / 5 steg)
Steg 1: Design RTC
Jag gillade inte min första design som batterierna skulle endast senast om tio dagar, så jag ville ha en design som skulle hålla längre.
Technobabble: Anledningen till batterierna inte varade länge är att jag var tvungen att hålla makten på AtMega328 (Arduino) kontinuerligt för att hålla programvaran realtidsklockan kör. Så behöver jag för att kunna sätta AtMega328 för att sova eller stänga av den.
Min vän skickade mig några av dessa RTC (realtidsklocka) moduler:
http://www.ebay.co.uk/ITM/Arduino-I2C-Tiny-RTC-DS1307-Real-Time-Clock-module-AT24C32-Board-AVR-MCU-pic-/221176522620?PT=UK_BOI_Electrical_Components_Supplies_ET&hash=item337f25e77c
http://www.ebay.com/ITM/I2C-Tiny-RTC-DS1307-Real-Time-Clock-module-AT24C32-Board-for-AVR-MCU-pic-DIY-/231037403500?PT=LH_DefaultDomain_0&hash=item35cae7016c
Dessa kommer med en RTC med batteribackup och en EEPROM som hjälper också.
Problem: Så har jag en oro över dessa moduler. Observera att batteriet är en LIR2032 som är ett laddningsbart batteri. Jag misstänker att den har en laddningskretsen. Tja, jag hittade en schematisk och beslutade att dra min egen (se bild). Den har en laddningskretsen och det skulle lägga en ytterligare belastning på 18650 batteri.
Lösning: Så för modulen, kommer att om du tar bort R5, D1, R4 och R6 och sätta en bygel över R6 och byta ut batteriet med en CR2032, detta eliminera den batteriladdning. Så det är vad jag (se bild).
I denna ansökan ska CR2032 senast om tio år så jag har inga problem med det.
Varning: Jag var med en gammal bibliotek från AdaFruit för deras datalogger kallas RTCLib. Det fanns en skiss som kallas DS1307.pde som vill ställa in tiden. Nu detta fungerade bra första gången det kördes men då det inte skulle ställa in tiden. Det finns en uppdaterad version med ett exempel som fungerar bättre:
https://github.com/JCW/rtclib
Ladda ner zip, packa upp den, döp om den från rtclib-master till rtclib och kopiera den till katalogen Arduino bibliotek.
TechnoSpeak I2C: Tekniskt sett bör man I(squared) C eller IIC som står för Inter-Integrated krets. I grunden är det en "standard" seriellt gränssnitt som kräver två signaler SCL, SDA och marken. SDA är data signalen växlar från 0V till 5V med data går över i sekvens (seriellt). Eftersom det finns bara två nivåer och hastigheten är inte fastställt, finns det inget sätt att avgöra där en bit av data slutar och nästa börjar. Det är där SCL (klocka) signalen kommer in. Detta säger den mottagande enheten var en bit slutar och nästa börjar.
En fördel till I2C är att flera enheter kan kopplas till samma två signaler. I detta fall är DS1307 (RTC) och 24C 32 (EEPROM) båda kopplade till raderna SCL och SDA. För att berätta vilken enhet du pratar med varje enhet har typ en unik adress.
DS1307 adressen är 0x68. 24C 32 adressen är 0x50.
Arduino stöder I2C med "tråd" biblioteket.
Förresten, vad detta betyder är att du inte kan ha mer än en av samma enhetstyp på samma två rader. T.ex. kan inte du ha två 24C32s.