Włącz Arduino z zegarem co 24 godziny


9

Obecnie pracuję nad projektem Arduino, który wysyła mi ładowanie akumulatora samochodowego raz dziennie za pośrednictwem ESP8266. Zimą nie prowadzę samochodu i chciałbym zostać poinformowany, gdy akumulator spadnie powyżej wartości krytycznej, aby móc go naładować i zapobiec uszkodzeniom.

Dlatego efektywność energetyczna jest ważna dla projektu, dlatego nie rozładowuje samego akumulatora. Dużo czytałem o trybie uśpienia, skutecznych regulatorach opadania itp. Wszystkie one mają wspólną cechę, że regulator napięcia zawsze działa, czego nie chcę.

Szukam czegoś w rodzaju „obwodu włącznika czasowego”. Powinien odliczać 24 godziny, a następnie włączyć przekaźnik lub MOSFET, który łączy regulator napięcia z zasilaniem, a tym samym włącza Arduino i ESP8266. Po zakończeniu transmisji Arduino resetuje zegar, który odłącza regulator napięcia od zasilania i tak dalej. Oczywiście obwód timera powinien zużywać tylko bardzo mało energii.

Czy ktoś zna taki obwód? Szukałem AliExpress z wszystkimi odmianami słów, które przyszły mi do głowy, bez powodzenia. A może układ scalony, którego można (łatwo) użyć do stworzenia takiego obwodu?


1
Nie wszystkie regulatory napięcia są takie same. Niektórzy używają tylko kilku mikro-wzmacniaczy.
Gerben,

Myślenie po wyjęciu z pudełka ... Czy nie wystarczy standardowy wyłącznik czasowy ?
user31208,

Odpowiedzi:


5

Jednym podejściem byłoby zastosowanie modułu DS3231 (Precision Real Time Clock). Takie moduły sprzedają w serwisie eBay za mniej niż 1 USD. Szukać ds3231 arduino.

Zazwyczaj moduły te mają sześciopinowe złącze, z pinami oznaczonymi jako 32K, SQW, SCL, SDA, VCC i GND. Jak zaznaczono w specyfikacji DS3231, pin INT / SQW jest używany albo do wyjścia fali prostokątnej, albo do wyjścia przerwania. Na stronie 13 specyfikacji, w sekcji Rejestr kontroli, napisano:

Bit 2: Kontrola przerwań (INTCN). Ten bit steruje sygnałem INT / SQW. Gdy bit INTCN jest ustawiony na wartość logiczną 0, fala wyprowadzana jest na pin INT / SQW. Gdy bit INTCN jest ustawiony na logikę 1, wówczas dopasowanie rejestrów utrzymujących czas do jednego z rejestrów alarmowych aktywuje wyjście INT / SQW (jeśli alarm jest również włączony).

Na początku uruchomiłbyś szkic, aby skonfigurować DS3231: włączyć codzienny alarm, włączyć przerwanie zamiast fali prostokątnej, ustawić aktualny czas itp. Następnie załadować program operacyjny, który odczytuje napięcie akumulatora samochodowego za każdym razem, gdy się uruchamia i działa odpowiednio.

Pin DS3231 INT / SQW byłby podłączony do bramki mosfetu z kanałem P, który przełącza zasilanie 12V na Arduino. P-fet włącza się, gdy włącza się styk wyjściowy alarmu otwartego spustu INT / SQW. Program operacyjny wykonuje swoją działalność, a następnie usuwa flagę przerwania DS3231, aby wyłączyć zasilanie, aż do następnego alarmu. (W celu debugowania ustaw krótsze odstępy czasu niż jeden dzień; na przykład raz na minutę, jak opisano w Tabeli 2, Bity maski alarmowej, na stronie 12 specyfikacji).

Zazwyczaj DS3231 pobiera 0,84 μA przy zasilaniu z baterii 3,3 V lub 1 μA z 5 V. Patrz Charakterystyka elektryczna, strona 3 specyfikacji.


1
Bramka P-fet prawdopodobnie powinna zostać wyciągnięta do +12 przez coś w rodzaju rezystora 1 megohm; inaczej byłby skutecznie otwarty, gdy pin INT / SQW jest wyłączony, i mógłby unosić się na dowolnych poziomach
James Waldby - jwpat7,

3

Sam zegar lub obwód czasowy musiałby pobierać trochę prądu. Jakikolwiek z pico-power czipów AVR pobiera bardzo mało prądu w trybie uśpienia - w dziesiątych mikroamperach dla 328, jeśli dobrze pamiętam. Uśpienie AVR przy najmniejszym bieżącym losowaniu wymaga prawie wszystkiego, z wyjątkiem wyłącznika czasowego watchdoga, a maksymalny okres WDT wynosi 8 sekund. Biblioteka taka jak Narcoleptic poradzi sobie z dłuższymi okresami. To, co musisz zrobić, to zapewnić znacznie bardziej wydajny zasilacz regulowany niż ten wbudowany w płytkę Arduino (jeśli tego właśnie będziesz używać). Po wykonaniu tej czynności obciążenie akumulatora samochodu Arduino powinno być mikroskopijne.

Jednym z możliwych rozwiązań zapewniających wydajne zasilanie jest szereg baterii alkalicznych, powiedzmy 3 szeregowo, dla wyjścia 4,5 (świeżego) razy 2 lub więcej takich ciągów równolegle, podłączonych bezpośrednio do magistrali 5 V.

Nie wykonałem budżetowania mocy, aby poznać pojemność, której potrzebujesz, i czy potrzebujesz komórek D, czy możesz zrobić praktyczny zestaw z mniejszych, powiedzmy AA, ale jest to sposób na osiągnięcie zerowego obciążenia akumulatora samochodowego (dyskontowanie wymagań czujnika napięcia akumulatora samochodowego). Możesz chcieć uwzględnić stan baterii Arduino w codziennym raporcie lub, za cenę kilku alkalicznych, możesz tak przeprojektować baterię Arduino, że monitorowanie jej stanie się niepotrzebne.

Kilka punktów danych sugeruje, że osobna bateria to realne podejście:

  • Pojedynczy alkaliczny 9v uruchamia wykrywacz dymu przez ponad rok, w tym przeziębienie na nieogrzewanym strychu (z mojego własnego doświadczenia), a alkaliczne 9v nie są znane ze swojej pojemności.
  • Mój cyfrowy termostat obniżający temperaturę działał przez kilka lat na 2 ogniwach AA, zanim a) zginęły, i b) zorientowałem się i zacząłem je zmieniać co roku. :)

Mam ATmega48 (bardzo podobny do 328P), który działa od kilku ogniw AA od czerwca 2012 r. Nie śpi przez nieco ponad 4 minuty dziennie, śpiąc przez resztę czasu. Do tej pory nie zmieniłem baterii.
Edgar Bonet,

To imponujący czas pracy - dzięki za dodatkowy punkt danych, @EdgarBonet! Spodziewałem się, że śpiące Arduino i zestaw baterii alkalicznych mogą być systemem „ustaw i zapomnij”, ale bez obliczenia zużycia energii nie sądziłem, że będzie on działał tak dobrze. @DirkPitt, istnieje kilka rzeczywistych danych pomocniczych.
JRobert,

To nie jest pełne Arduino: nie mogłem zejść poniżej ~ 40 mA przy moim Uno, podczas gdy nagi ATmega SLEEP_MODE_PWR_SAVE, z włączonym tylko zegarem asynchronicznym, pobrał około 2 µA.
Edgar Bonet,


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.