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?
Odpowiedzi:
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:
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.
źródło
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:
źródło
SLEEP_MODE_PWR_SAVE
, z włączonym tylko zegarem asynchronicznym, pobrał około 2 µA.Zastanów się nad użyciem „Adafruit TPL5110 Power Timer”
https://learn.adafruit.com/adafruit-tpl5110-power-timer-breakout/overview
źródło
możesz użyć wyłącznika czasowego. Możesz go kupić w serwisie eBay za około 5 euro. używam tego
https://www.ebay.com/itm/CN101-DC-12V-16A-Digital-LCD-Power-Programmable-Timer-Time-Relay-Switch-New/401190616827?hash=item5d68d2fefb:g:K3sAAOSwNRdX3ggT
Próbowałem również ds3231, ale arduino jest w trybie gotowości i zużywa energię. to najlepsze rozwiązanie, jakie znalazłem
źródło