- zliczanie impulsów w zakresie 0…49999,
- czterocyfrowy, czytelny wyświetlacz LED,
- możliwość zapamiętywania wskazań podczas zaniku zasilania,
- dwa wejścia impulsów, reagujące na zwarcie i rozwarcie,
- wybór reakcji na wejścia: inkrementacja i dekrementacja lub enkoder z wyjściem kwadraturowym,
- wybór trybu: zliczanie w pętli lub sygnalizacja przepełnienia,
- możliwość reakcji na zbocze opadające lub narastające albo odwrócenie działania podłączonego enkodera,
- sygnalizacja zliczenia sygnałem dźwiękowym z możliwością wyłączenia,
- maksymalna częstotliwość zliczania: 100 Hz w trybie góra/dół lub 40 Hz w trybie obsługi enkodera,
- zasilanie napięciem stałym 9…24 V, pobór prądu do 70 mA.
Licznik impulsów może mieć wiele zastosowań. Odliczanie liczby osób znajdujących się w pomieszczeniu, odmierzanie pozycji taśmy magnetofonowej lub pomiar liczby przedmiotów wsypywanych do pudełka to tylko niektóre z nich. Każde z tych zastosowań wymaga pewnych specyficznych funkcji, takich jak możliwość wyboru aktywnego zbocza, uaktywnienie pamięci, praca w pętli lub z przepełnieniem i nie tylko. Układ oferujący takie możliwości może zastąpić wiele innych rozwiązań. Kompaktowa budowa czyni go łatwym do wbudowania w już istniejące urządzenie, a czytelny wyświetlacz LED jest doskonale widoczny z daleka. Liczba możliwych do uzyskania konfiguracji pracy otwiera drogę do wielu aplikacji!
Budowa i działanie
Schemat ideowy głównej płytki omawianego układu znajduje się na rysunku 1. Najważniejszym podzespołem sterujacym jego pracą jest mikrokontroler typu ATmega88PA-PU z 8-bitowym rdzeniem AVR. Ma wystarczającą liczbę konfigurowalnych wyprowadzeń, więc nie zachodzi potrzeba stosowania dodatkowych układów pośredniczących. Nie realizuje zadań krytycznych czasowo, wobec czego częstotliwość zegara jest ustalona przez wbudowany układ oscylatora RC z kilkuprocentowym błędem. Rezystor R15 podciąga wejście zerujące do dodatniego potencjału zasilania, co zmniejsza ryzyko samoczynnego zerowania się układu wywołanego ładunkami elektrostatycznymi gromadzącymi się na tym wejściu.
Wskazania są wyświetlane na czterocyfrowym, siedmiosegmentowym wyświetlaczu LED. Anody poszczególnych cyfr są załączane przez tranzystory bipolarne typu BC556, zaś katody segmentów są zasilane wprost z wyjść mikrokontrolera. Rezystory 330 Ω, ograniczające prąd segmentów, wymuszają przepływ prądu o natężeniu około 10 mA. W ten sposób świecą się one dostatecznie jasno, zaś katody wyświetlacza mogą być obsługiwane przez mikrokontroler. Sam wyświetlacz jest umieszczony na odrębnej płytce, umieszczonej pod kątem 90° w stosunku do płytki głównej. Jej schemat ideowy można zobaczyć na rysunku 2. Poza złączem J1, takim samym jak na płytce głównej, nie zawiera żadnych elementów, przez co jej wymiary są możliwie małe.
Wracając do płytki głównej - można na niej znaleźć pięć zworek JP1…JP5, które umożliwiają wybór różnych trybów pracy układu. Cztery pierwsze są sprzęgnięte z wejściami mikrokontrolera, wymuszając odpowiednie stany logiczne na jego wyprowadzeniach, zaś JP5 umożliwia pracę sygnalizatorowi dźwiękowemu BUZ1. Element ten jest załączany przez nasycający się tranzystor T1, a jego funkcją jest powiadomienie użytkownika o poprawnym zliczeniu - w górę bądź w dół.
Skoro o zliczaniu mowa, to służą do tego trzy wejścia z zaciskami śrubowymi. Zwarcie wyprowadzeń złącza J2 zeruje układ w dowolnym momencie. J3 i J4 umożliwiają zwiększanie i zmniejszanie bieżącej wartości, jak również można do nich podłączyć enkoder z wyjściem kwadraturowym. Wejściowe obwody RC, złożone z kondensatorów o pojemności 100 nF i rezystorów 330 Ω, mają za zadanie wyeliminować większość zakłóceń związanych z przełączaniem styków. Rezystory podciągające o wartości 10 kΩ uzupełniają te wbudowane w mikrokontroler, przez co układ jest bardziej odporny na zakłócenia indukujące się w przewodach łączących elementy stykowe z płytką.
Całość uzupełnia prosty stabilizator liniowy napięcia dodatniego (US2), który dostarcza napięcia o wartości około 5 V dla mikrokontrolera. Do detekcji zaniku napięcia zasilającego, który może rozpocząć zapis bieżącej wartości do pamięci, został użyty rezystor R24. Wysoki stan logiczny odczytywany przez mikrokontroler oznacza, że zasilanie jest obecne - wysoka rezystancja R24 ogranicza prąd diod wbudowanych w mikrokontroler do wartości nie większej niż 2 mA. Kondensator C8 magazynuje energię konieczną do pracy układu w czasie zapisywania. Dioda D1 doładowuje C8 w momencie prawidłowej pracy układu, ale zapobiega podtrzymaniu przezeń napięcia na wejściu wykrywającym zanik zasilania po jego odłączeniu. Rolą rezystora R23 jest wyeliminowanie wpływu prądu upływu diody D1 na pracę tego prostego obwodu. Bez niego znikomo mały prąd wsteczny diody D1 może wywołać wysoki stan logiczny na wejściu mikrokontrolera, co z oczywistych względów uniemożliwiłoby poprawnej zarejestrowanie momentu odłączenia napięcia zasilającego układ.
Montaż i uruchomienie
Układ został zmontowany na dwóch jednostronnych płytkach drukowanych. Płytka główna ma wymiary 62×60 mm, a płytka wyświetlacza 62×22 mm - mają tę samą szerokość. Ich schematy pokazane są na rysunku 3 i rysunku 4. W odległości 3 mm od krawędzi płytki głównej znalazły się cztery otwory montażowe, każdy o średnicy 3,2 mm. Na płytce wyświetlacza jest aż sześć takich otworów, leżących w odległości 3 mm od krawędzi bocznych i dolnych oraz w połowie wysokości tej niewielkiej płytki.
Montaż płytki głównej proponuję rozpocząć od elementów o najmniejszej wysokości obudowy, czyli rezystorów, diod i jednej zworki z cienkiego drutu, której miejsce jest pod układem US1. Pod mikrokontroler proponuję zastosować podstawkę, aby ułatwić jego programowanie oraz wymianę w razie uszkodzenia. Płytka wyświetlacza zawiera jedynie dwa podzespoły: wyświetlacz DISP1 i kątowe złącze J1 typu goldpin. Po przylutowaniu obu tych podzespołów (złącze należy wlutować od tyłu płytki) można połączyć płytkę wyświetlacza z płytką główną: drugą część złącza kątowego należy włożyć od góry płytki głównej, ustawić na odpowiedniej wysokości i przylutować od spodu tejże płytki. Uzyskujemy gotowy, zwarty moduł, widoczny na fotografii 1.
Na etapie uruchamiania konieczne jest zaprogramowanie pamięci Flash mikrokontrolera dostarczonym wsadem oraz zmiana jego bitów zabezpieczających. Oto ich nowe wartości:
Low Fuse = 0xE2
High Fuse = 0xDC
Szczegóły są widoczne na rysunku 5, który zawiera widok okna konfiguracji tychże bitów z programu BitBurner. W ten sposób zostanie wyłączony preskaler sygnału zegarowego oraz włączy się Brown-Out Detector, który wprowadzi mikrokontroler w stan zerowania, jeżeli jego napięcie zasilające spadnie poniżej 4,3 V. To znacznie zmniejsza ryzyko zawieszenia się układu podczas uruchamiania.
Poprawnie zaprogramowany układ jest gotowy do działania po podłączeniu zasilania do zacisków złącza J5. Napięcie zasilające powinno pochodzić z przedziału 9…24 V. Dolna granica wynika z konieczności zapewnienia prawidłowych warunków pracy dla liniowego stabilizatora napięcia, a górna z ograniczenia dopuszczalnego napięcia odkładającego się na kondensatorze C8 oraz strat mocy w stabilizatorze. Jeżeli napięcie będzie przekraczało 15 V, do stabilizatora warto przykręcić niewielki radiator, aby ułatwić odprowadzanie z niego ciepła. Można go wtedy wlutować na nieco dłuższych wyprowadzeniach, aby dało się go lekko wygiąć w prawą stronę, by jego metalowa wkładka wystawała poza obrys kondensatora C8. Maksymalny pobór prądu wynosi około 70 mA (zmierzone przy napięciu 12 V), zaś chwilowy jest zależny od aktualnej zawartości wyświetlacza.
Eksploatacja
Poprawnie zaprogramowany układ jest gotowy do działania po włączeniu zasilania. Zworkami JP1…JP5 należy dostosować sposób jego pracy do wymagań zgodnie z tabelą 1. Wejścia UP i DOWN służą do podłączenia przycisków lub enkodera, zgodnie ze schematem z rysunku 6.
W układzie są wbudowane rezystory podciągające, więc jakiekolwiek dodatkowe elementy (poza przewodami) nie są potrzebne. Zaciski numer 1 we wszystkich złączach śrubowych są połączone z masą układu (GND).
Maksymalna częstotliwość zliczania przy pracy w trybie UP/DOWN wynosi 100 Hz, a w trybie ENCODER 40 Hz. Wynika to z ustawionych empirycznie przerw, jakie układ odlicza po każdym zliczeniu. Enkodery, zwłaszcza mechaniczne, mogą wykazywać drgania styków jeszcze przez kilkanaście milisekund po przełączeniu, dlatego wydłużono czas oczekiwania po nadejściu impulsu. W przypadku przełączników mechanicznych ten czas jest krótszy, z reguły wynosi kilka milisekund.
Układ ma czterocyfrowy wyświetlacz siedmiosegmentowy, a jego pojemność wynosi 49999. Gdzie zatem jest wskazywana najstarsza cyfra dziesiątek tysięcy? Jest ona zakodowana w położeniu kropki dziesiętnej pomiędzy cyframi - fotografia 2. Pozycja najbardziej na prawo oznacza 10000, druga od prawej 20000, druga od lewej 30000 i najbardziej na lewo 40000. Pozostałe cztery młodsze pozycje są wyświetlane w postaci zwykłych cyfr. Wartości mniejsze od 10000 są wyświetlane bez żadnych kropek.
Układ może pracować zarówno w pętli, czyli po osiągnięciu wartości 49999 następnym krokiem po inkrementacji będzie 0000. Działa to też w drugą stronę - po dekrementacji, kiedy na wyświetlaczu jest 0000, pokaże się 49999. Ale można też sygnalizować przepełnienie licznika, czyli po 49999 układ pokaże stosowny komunikat w postaci napisu OvF na wyświetlaczu - fotografia 3.
Wyzerowanie wskazań licznika jest możliwe w dwojaki sposób. Jednym z nich jest wyłączenie zasilania, o ile układ nie ma aktywowanej pamięci zworką JP1. Drugą metodą jest zwarcie na chwilę wejścia ZERO, które natychmiast i bezwarunkowo przywróci układ do wartości 0000.
Odnośnie funkcji zapamiętywania, wymagany jest mały komentarz dotyczący źródła zasilania. Otóż układ dokonuje zapisu w momencie wykrycia zaniku napięcia zasilającego. Wyłączany jest wtedy wyświetlacz dla zaoszczędzenia energii zgromadzonej w kondensatorze C8, układ zapisuje 2-bajtowe słowo do pamięci EEPROM i wstrzymuje jakiekolwiek dalsze działanie aż do przywrócenia zasilania. Jeżeli nastąpi ono przed całkowitym rozładowaniem C8, układ wróci do normalnej pracy. Dlatego konieczny jest szybki zanik napięcia zasilającego układ, aby ta funkcja zadziałała poprawnie. Jeżeli jego wartość będzie opadała powoli, wówczas energia zgromadzona w C8 może być niewystarczająca do zrealizowania poprawnego zapisu, kiedy układ wykryje, że nadszedł już właściwy moment. Najlepiej, aby odłączanie zachodziło za pomocą mechanicznych styków lub szybkiego klucza tranzystorowego, bez dodatkowych pojemności filtrujących włączonych już za nim.
Michał Kurzela, EP
- R1…R4, R19: 2,2 kΩ
- R5…R14, R20…R22: 330 Ω
- R15…R18, R23, R24: 10 kΩ
- C1: 220 μF 25 V
- C2…C7, C9: 100 nF MKT
- C8: 1000 μF 25 V
- D1: 1N5819
- T1…T5: BC556
- US1: ATmega88PA-PU (DIP28)
- US2: 7805 (TO220)
- J1: goldpin męski kątowy 2,54 mm 14 pinów
- J1…J5: ARK2/500
- JP1…JP5: goldpin męski prosty 2,54 mm 2 piny + zworka
- SG1: PIEZO GEN 5 V
- Jedna podstawka DIP28 wąska
- DISP1: AF5643FS