Licznik z rejestratorem na karcie SD

Pomysł na ten projekt podsunął mi kolega. Poprosił o analizę problemu zliczania klientów wchodzących do sklepu.

Zaproponowałem taki projekt:

– kontaktoron reagujący na otwarcie drzwi lub tor optyczny,

– rejestracja zdarzeń w pliku na karcie SD,

– rejestracja kazdego zdarzenia wraz z godziną – uzycie RTC

– zasilanie całości z baterii – dzięki temu będzie mniej przewodów.

W czasie opracowywania doszły dodatkowe uwagi:

– ostrzezenie o słabej baterii,

– alarm otwartych drzwi (dla wersji z kontaktronem – po minucie sygnał dźwiekowy).

W efekcie powyzszych założeń i ustaleń powstało takie oto urządzenie.

Licznik kontaktronowy

Wykonane zostały trzy egzemplarze. Są właściwie identyczne – różnią się mało istotnymi szczególami (np. jeden nie ma wlutowanych goldpinów do podłaczenia programatora, inny kolor diod).

W urzadzeniu wykorzystałem gotowy moduł kart micro SD i gotowy moduł RTC z układem DS3231. Oszczedza to nieco pracy a koszt przy tak małej liczbie egzemplarzy jest własciwie zaden. Zarówno moduł karty jak i zegara ma podciągnięte linie danych do Vcc rezystorami 10K – zatem brak ich na schemacie (dla karty SD nie jest to konieczne).

Jako mikrokontroler jest uzyta Atmega328P – dysponuje na tyle dużą ilością pamięci Flash i Ram, ze bez problemu obsługuje system plików FAT. (wykorzystałem FatFS).

Na płytce jest jeszcze buzer piezo wraz ze zworką, która można go odłączyć całkowicie.

Jest też układ do pomiaru napięcia baterii. Wykorzystywany jest w tym celu przetwornik ADC wraz z wewnętrznym źródłem odnisienia 1,1V. Układ pomiarowy składa sie z dzielnika napięcia (2:1) oraz tranzystora, który go załącza (w tej roli BC547). Dzielnik jest załączany do masy na czas pomiaru, aby nie pobierał prądu kiedy nie jest potrzebny. Przypominam, ze układ jest zasilany z baterii.

schemat Powyżej prezentuję schemat.

 

Układ projektowany jest do zasilania z dwoch baterii AA. Zatem wymagało to podejścia minimalizującego pobór prądu. W oczekiwaniu na zdarzenie procesor jest w trybie Power Down i wybudzany jest przerwaniem (Pin change interrupt). W tym stanie cały układ pobiera 160-170uA. Szczegółowy pomiar wykazuje, że około 95% z tego jest pobieranych mniej wiecej po równo przez kartę SD i układ DS3231. Problemem jest realizacja wejścia kontaktronu. Jest ono podciągnięte do zasilania przez rezystor 10k. Przy zastosowaniu kontaktronu normalnie otwartego (większość dostępnych) dochodzi ok. 0,3mA. Sumarycznie wychodzi zatem niecałe 0,5mA. Praktyczny test wykaże na ile realnie wystarczy komplet baterii, zakładam, ze będzie to co najmniej kilka tygodni.

W programie, napisanym w C, wykorzystałem biblioteki FatFS. Wykonałem w nich dwie przeróbki – do obsługi karty SD wykorzystałem sprzętowy interfejs SPI. Druga zmiana – data modyfikacji pliku pobierana jest z układu Ds3231 – co jest zupełnie logicznym rozwiązaniem, wziąwszy pod uwagę dostepność aktualnego czasu. Zegar jest ustawiany przy pomocy specjalnego pliku konfiguracyjnego, który nalezy umieścić na karcie pamięci.

W czasie komunikacji z kartą uSD zegar procesora wynosi 8MHz – w pozostałym czasie zegar jest zwalniany do 1MHz (bit CKDIV8). Źródło – oscylator wewnętrzny RC.

Do wpisu załaczam instrukcję obslugi urzadzenia – są tam szczegóły dotyczace konfiguracji.

Załaczam także próbkę logu. Zawiera on godzinę zdarzenia, temperaturę otoczenia(układ DS3231 posiada wbudowany niezły termometr), co 10. pomiar zawiera również pomierzone napięcie baterii.

Układ posiada alarm otwartych drzwi (sygnał dźwiękowy po minucie). Posiada alarm rozładowanych baterii.

Cały czas trwają testy układu, zapewne nie obędzie się bez drobnych poprawek kodu.

Udostępniam projekt płytki i schemat w KiCadzie. Nie będzie tym razem kodu. Dodatkowo instrukcja i próbka logu.

LOG

Płytka i schemat

Instrukcja

Ten wpis został opublikowany w kategorii Bez kategorii, Projekty. Dodaj zakładkę do bezpośredniego odnośnika.

2 odpowiedzi na „Licznik z rejestratorem na karcie SD

  1. Michał pisze:

    Ciekawy projekt ale malo praktyczny z uwagi ze kasy fiskalne liczą paragony. Ale gratuluje pomysłu 😉

    • Limonit pisze:

      Kasa nie drukuje paragonów każdemu wchodzącemu. Co do praktyczności – z tego co wiem są tego typu systemy produkowane komercyjnie, zatem jakiś popyt jest. Pomysł niestety nie był mój.

Możliwość komentowania jest wyłączona.