Miesięczne archiwum: Sierpień 2014

Arduino jako zabezpieczenie przed zbyt głębokim rozładowaniem akumulatora

Ostatnio zaistniała u mnie potrzeba zbudowania urządzenia które zapobiegnie zbyt głębokiemu rozładowaniu akumulatora. Założenia są dość proste – cykliczny monitoring napięcia i odcięcie odbiorników w momencie, gdy napięcie spadnie poniżej zadanego progu. Ponadto sygnalizacja dźwiękowa o zbyt niskim napięciu i bardzo ważne: optymalizacja zużycia prądu przez samo urządzenie. Na allegro można znaleźć wiele takich urządzeń, począwszy od bardzo prymitywnych jak przekaźnik z rezystorem, po „pudełeczka” z niewiadomą zawartością. Szkoda, że mało który produkt ma podane zużycie prądu. Z racji, że na elektronice nie znam się na tyle by zbudować takie urządzenie z wykorzystaniem podstawowych elementów jak np. tranzystory itp., postanowiłem oprzeć swoje rozwiązanie na Arduino Pro Mini, a dokładniej na klonie z eBaya. Budowę własnego zabezpieczenia zacząłem od wyszukania informacji jak zmierzyć napięcie przy użyciu Arduino – wyjście jest bardzo proste, wystarczy dzielnik napięć z rezystorów i podpięcie tego pod pin ADC – skorzystałem z przykładu na stronie https://www.udemy.com/blog/arduino-voltmeter/. Wybrałem największe rezystancje jakie miałem w zapasie żeby maksymalnie zmniejszyć prąd. Następnym krokiem było wyszukanie przekaźnika o maksymalnie małym poborze prądu przez cewkę – przekaźnik który dostałem po podłączeniu przez rezystor pobiera około 30mA (bez rezystora przeszło 60mA) (pobór prądu z poszczególnych elementów sumarycznie okazał się mniejszy, pewnie jest na to jakieś wyjaśnienie…). Ostatni krok to optymalizacja samego Arduino – poszczególne elementy można usypiać, ale jest z tym trochę zabawy, skorzystałem z bardzo prostej w użyciu biblioteki którą używa się prawie jak zwykłego „delay()” z tą różnicą, że w trakcie czekania duża część układu śpi. Mój układ w trakcie spania, z wyłączonym przekaźnikiem, zużywał 5.7mA. Muszę dodać, iż w celu oszczędności również dioda Power z Arduino została usunięta. Wspomniana biblioteka jest dostępna tutaj https://code.google.com/p/narcoleptic/. Problemy jakie napotkałem: zużycie prądu przez przekaźnik i błąd pomiaru napięcia*. Pomysły mam takie by przekaźnik zastąpić tranzystorem MOSFET, ale chcę najpierw dokładniej poznać maksymalne obciążenia jakiemu będzie poddawany akumulator. Błąd pomiaru napięcia wynika z wahań napięcia zasilania Arduino, zastosowany stabilizator (12V -> 5V) ma duży zapas mocy, jednak włączenie przekaźnika i wyłączenie można zauważyć w wartościach mierzonego napięcia. Pomysł jest taki by zrobić osobne źródło które będzie napięciem referencyjnym – myślałem o zwykłym stabilizatorze na 3.3V, bez żadnych innych obciążeń, który będzie na kolejnym pinie dawał wzorcowe napięcie. Na tę chwilę próbuję skorzystać z referencyjnego 1.1V ze sposobu opisanego tutaj: http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/ Przechodząc do rzeczy, całość działa następująco: po uruchomieniu sygnał dźwiękowy – wiadomo, że działa; następnie pomiar napięcia i jeśli powyżej 10.70V to odpalamy przekaźnik i śpimy przez następne 5 minut, po 5 minutach kolejna kontrola; gdy napięcie będzie zbyt niskie „pikamy” kilka razy, odłączamy odbiorniki i śpimy przez 5 minut; następnie znów pikamy albo uruchamiamy przekaźnik jeśli sytuacja się poprawiła. Kod źródłowy i fotki (w finalnej wersji jest inny rezystor przed przekaźnikiem i Arduino nie ma jednej diody):
Aktualizacja: *) problem z pomiarem wyglądał tak, że po włączeniu przekaźnika wartość mierzonego napięcia by zaniżona. Po wielu próbach diagnozy odkryłem, że winowajcą był źle dobrany bezpiecznik. Początkowe zabezpiecznie 100mA okazało się za małe, stąd spadek napięcia. Większy bezpiecznik i zastosowanie wewnętrznego napięcia referencyjnego 1.1V daje świetne rezultaty – pomiar z Arduino zgadza się prawie idealnie z pomiarem z multimetru.

Fotografie ukończonego układu:
Zabezpieczenie akumulatora góra

Zabezpieczenie akumulatora dół

 

AKTUALIZACJA: popełniłem tu błąd karygodny, a mianowicie przekaźnik zasilam z pinu mikrokontrolera – NIE WOLNO TAK! Jeszcze wszystko działa i ma się dobrze, może ten rezystor mnie uratował, ale należy to poprawić i tak nie robić!

Opublikowano Arduino, Atmega, embedded | 2 komentarze