http://obrazki.elektroda.net/87_1280514204_thumb.jpg Witam W tym poście chcę zaprezentować projekt, który zbudowałem w oparciu o procesor firmy Microchip PIC16F676. Jego zadaniem jest odmierzanie określonego czasu (jednego z dwóch do wyboru) i sygnalizowanie początku i końca jego odmierzania dźwiękiem buzera. Potrzebą dla zbudowania tego urządzenia były kłopoty mojej Żony z porannym mierzeniem temperatury: nigdy nie była pewna, czy trzymała termometr odpowiednio długo. Stąd pomysł zbudowania układu, który będzie spełniał następujące funkcje: :arrow: powtarzalny pomiar czasu w każdych warunkach (np. w kompletnej ciemności) i niezależnie od stanu osoby obsługującej (można być zaspanym, albo nawet przysnąć na czas pomiaru) :arrow: maksymalnie prosta obsługa (tylko jeden przycisk) :arrow: poręczność (możliwie małe wymiary i masa) :arrow: praktyczna bezobsługowość (czasomierz działa już półtora roku bez wymiany baterii i żadnych napraw, przy codziennym użytkowaniu) Można oczywiście postawić pytanie: dlaczego mikrokontroler? Dlaczego nie użyć nieśmiertelnego NE555, albo jakichś układów CMOS? Odpowiedzią są podane wyżej założenia: żaden inny układ nie mógłby ich spełnić. Konstrukcję czasomierza przedstawiają zdjęcia. http://obrazki.elektroda.net/39_1280514504_thumb.jpg http://obrazki.elektroda.net/30_1280514504_thumb.jpg http://obrazki.elektroda.net/88_1280514504_thumb.jpg Płytkę wykonywałem metoda termotransferu (w jednym rogu podtrawiła mi się nieco, stąd zworka drutem; druga zworka jest zamierzona). Ułożenie elementów SMD było określone przez położenie elementów przewlekanych, a tu elementem którego położenie było najważniejsze, był przycisk. Koszt całości - nie więcej niż 15 zł, przy czym kupowałem jedynie przycisk, buzer i obudowę - resztę miałem. O doborze elementów: :arrow: mikrokontroler: jest w w wersji DIL, gdyż nie miałem podstawki do programowania układów w obudowach SMD, a nie chciałem się bawić w programowanie w układzie - poza tym w obudowie była wystarczająca ilość miejsca, no i na koniec - akurat taki miałem. :arrow: buzer: tu kierowałem się tylko niskim napięciem zasilania i małymi wymiarami (szczególnie wysokością). Wybrałem więc ten model, bez generatora, co akurat nie jest żadnym problemem, gdyż wszystko załatwia mikrokontroler. :arrow: przycisk: najistotniejszy element czasomierza, gdyż musiał być odporny mechanicznie, możliwy do użytkowania bez stosowania nakładek, posiadać wyraźny skok i wymagać stosunkowo dużej siły do włączenia (zabezpieczenie przed przypadkowym wciśnięciem). Mój wybór padł na przycisk firmy Mec - multimec 3A. :arrow: obudowa: niezbyt duża, by wygodnie mieściła się w damskiej dłoni - tu najlepiej sprawdziła się obudowa Z-47 :arrow: zasilanie: bateria litowa CR2032. Reszta elementów - wybrane z posiadanych zapasów. Konstrukcja: Schemat układu przedstawia rysunek poniżej. http://obrazki.elektroda.net/60_1280514782_thumb.png Jest to schemat ostatecznej wersji, choć płytka jest od wersji wcześniejszej, stąd niektóre elementy są przylutowane do ścieżek a nie do padów (żółte elektrolity). Działanie układu jest następujące: po włączeniu zasilania kontroler wchodzi w stan sleep i pozostaje w nim do momentu gdy na wejściu RA2/AN2/COUT/T0CKI/INT skonfigurowanym jako wejście przerwania zewnętrznego (nóżka 11) nie pojawi się stan niski. Po wciśnięciu przycisku mikrokontroler najpierw sprawdza stan baterii (zrealizowane za pomocą układu monitorowania napięcia i resetu IC2 - TCM809R). Jeżeli napięcie baterii jest zbyt niskie (stan niski na wyjściu IC2), mikrokontroler generuje dwa długie dźwięki i przechodzi w stan sleep. Gdy napięcie zasilania jest w normie, mikrokontroler sprawdza położenie przełącznika wyboru czasu (jest możliwość odmierzania 3 lub 5 min), generuje trzy krótkie dźwięki i zaczyna odmierzać wybrany czas. Po skończeniu odmierzania znów generowane są trzy krótkie dźwięki i przechodzi w stan uśpienia. Mikrokontroler rozpoczyna pracę w momencie zwalniania przycisku SW1 i podczas wykonywania programu (odmierzania czasu) blokuje możliwość ponownego wyzwolenia i restartu programu - jest to możliwe dopiero po przejściu w stan uśpienia. Szczegółowy diagram działania programu - poniżej. http://obrazki.elektroda.net/98_1280514943_thumb.gif Poniżej także program mikrokontrolera - w tym miejscu podziękowania dla mojego kolegi Sylwestra Stryjka za napisanie programu. Czasomierz w trybie sleep pobiera 8 uA przy wybranym czasie 3 min (78 uA przy wybranym czasie 5 min - to skutek połączenia z masą wewnętrznego rezystora podciągającego), 0,5 mA w czasie odliczania czasu i maksymalnie chwilowo 10 mA podczas piszczenia. Jak wspomniałem na początku, układ działa już półtora roku na jednej baterii przy dość intensywnym, codziennym użytkowaniu (Żona stwierdziła, że będzie mierzyła temperaturę przez 6 min, więc odmierza dwa razy czas 3 min).