FAQ | Points | Add... | Recent posts | Search | Register | Log in


Czasomierz na mikrokontrolerze PIC16F676


[ + ] [ - ]
Post new topic  Reply to topic      Main Page -> Forum Index -> DIY Structures -> Czasomierz na mikrokontrolerze PIC16F676
Author
Message
Alfax
Poziom 18
Poziom 18


Joined: 20 Aug 2005
Posts: 489
Location: Warszawa

Post#1 Post from the author of the topic 30 Jul 2010 20:00   

Czasomierz na mikrokontrolerze PIC16F676


Czasomierz na mikrokontrolerze PIC16F676

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.

Czasomierz na mikrokontrolerze PIC16F676 Czasomierz na mikrokontrolerze PIC16F676 Czasomierz na mikrokontrolerze PIC16F676

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.

Czasomierz na mikrokontrolerze PIC16F676

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.

Czasomierz na mikrokontrolerze PIC16F676

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).



czas_01.zip
 Description:
 n/a

Download
 Filename:  czas_01.zip
 Contents:  
 Filesize:  571 Bytes
 Punkty:  0

Back to top
   
dymbol1992
Poziom 16
Poziom 16


Joined: 09 Jul 2007
Posts: 290
Location: Rzędowice

Post#2 30 Jul 2010 23:12   

Re: Czasomierz na mikrokontrolerze PIC16F676


Projekt bardzo fajny, a przede wszystkim prostota wykonania. Analogowa zajęło by to o wiele więcej miejsca i nie było by takie bezproblemowe. San PIC mógł też być w smd moim zdaniem. Tylko nurtuje mnie jedna rzecz, codzienne mierzenie temperatury? po co? dlaczego? jeżeli oczywiście można wiedzieć.
Back to top
   
Urgon
Poziom 22
Poziom 22


Joined: 27 Aug 2008
Posts: 2412
Location: Lublin

Post#3 31 Jul 2010 00:07   

Re: Czasomierz na mikrokontrolerze PIC16F676


AVE...

Na 99% chodzi o naturalną metodę planowania rodziny, pewnie w wydaniu brytyjskim(najnowsza moda w KRK jest właśnie na tą odmianę). Skąd wiem? Powiedzmy, że przez prawie dwa lata akademickie to mi wykładano...

Sam układ ciekawy i całkiem pomysłowy. Jedna uwaga: dlaczego użyłeś dodatkowego układu sprawdzania baterii? Nie lepiej użyć wbudowanego ADC do pomiaru napięcia? Możesz też zmienić typ mikrokontrolera na któryś z PICów w technologii NanoWatt XLP, na przykład 16F1823(na razie raczej nie do kupienia u nas) albo PIC24F04KA200...
Back to top
   
Google

Google Adsense


Post# 31 Jul 2010 00:07   





Back to top
   
tamam
Poziom 13
Poziom 13


Joined: 04 Apr 2004
Posts: 112

Post#4 31 Jul 2010 07:20   

Re: Czasomierz na mikrokontrolerze PIC16F676


Piszesz, że sprawdzasz stan baterii, a na płytce drukowanej wyjście "czujnika" Reset_bar nie jest podłączone do kontrolera (pin13 nie jest przylutowany).
A cały układ niezły. Szczególnie ten jeden przycisk do sterowania. Gratuluję wytrwałości (to raczej Twojej żonie).
Back to top
   
abator
Poziom 8
Poziom 8


Joined: 18 Jun 2010
Posts: 29
Location: opole

Post#5 31 Jul 2010 08:12   

Re: Czasomierz na mikrokontrolerze PIC16F676


Układ bardzo prosty i i praktyczny ale czy nie było by lepiej przełącznik ze zmianą odmierzanego czasy umieścić gdzieś na zewnątrz obudowy?
Back to top
   
Urgon
Poziom 22
Poziom 22


Joined: 27 Aug 2008
Posts: 2412
Location: Lublin

Post#6 31 Jul 2010 08:40   

Re: Czasomierz na mikrokontrolerze PIC16F676


AVE...

Trzaby przerobić procedurę, by nie zmieniało czasu, gdy przełącznik zostanie przełączony przypadkiem. Ponadto trzaby brać pod uwagę wytrzymałość i sposób użytkowania. W warunkach porankowo-łóżkowych możnaby przypadkiem nacisnąć na przełącznik i go wyłamać z płytki...
Back to top
   
Google

Google Adsense


Post# 31 Jul 2010 08:40   





Back to top
   
Alfax
Poziom 18
Poziom 18


Joined: 20 Aug 2005
Posts: 489
Location: Warszawa

Post#7 Post from the author of the topic 31 Jul 2010 10:58   

Re: Czasomierz na mikrokontrolerze PIC16F676


Witam

:arrow: do kolegi Urgon: tak jest, poranny pomiar temperatury właśnie w tym celu. Owszem, wymaga to nieco wytrwałości, ale po czasie wchodzi w nawyk.
Do pomiaru napięcia baterii nie używałem wewnętrznego ADC, gdyż miałem kłopot z napisaniem programu (to moje początki, jeśli chodzi o mikrokontrolery - nigdy nie jest za późno się uczyć :D ). Co prawda ostatecznie program napisał mój kolega, ale tak już zostało. A PIC16F676 akurat miałem.
:arrow: do kolegi tamam: gratuluję spostrzegawczości :D Generalnie na etapie projektu przewidywałem ten pomiar i nawet (jak widać) odpowiednie elementy są na płytce, jednak zrezygnowałem z niego, gdyż okazało się, że mikrokontroler pracuje poprawnie nawet przy niższym napięciu niż napięcie czujnika.
:arrow: do kolegi abator: ten czasomierz to jest układ do jednego zastosowania i tak naprawdę, po ustaleniu właściwego czasu żaden przełącznik nie byłby potrzebny. Ja jednak dodałem go, by mieć rezerwę możliwości, na wszelki wypadek. Dlatego jest wewnątrz obudowy, a przez cały czas używania nie było potrzeby używania go.
Back to top
   
Urgon
Poziom 22
Poziom 22


Joined: 27 Aug 2008
Posts: 2412
Location: Lublin

Post#8 31 Jul 2010 11:25   

Re: Czasomierz na mikrokontrolerze PIC16F676


AVE...

Pisałeś w C, Basicu czy w Assemblerze?
BTW, wiesz, że ta metoda nie jest zbyt skuteczna(wbrew temu, co nam kłamliwie sugerują)?
W razie problemów z programowaniem PICów, to się polecam na przyszłość...
Back to top
   
~~~pio~~~
Poziom 11
Poziom 11


Joined: 14 Aug 2007
Posts: 60
Location: Gorlice

Post#9 02 Aug 2010 11:30   

Re: Czasomierz na mikrokontrolerze PIC16F676


Gdzie kupiłeś tą obudowę? bo Z-47 jest dużo wyższa może ja przerobiłeś, ciekaw jestem bo właśnie taka jest mi potrzebna.
Back to top
   
Google

Google Adsense


Post# 02 Aug 2010 11:30   





Back to top
   
Alfax
Poziom 18
Poziom 18


Joined: 20 Aug 2005
Posts: 489
Location: Warszawa

Post#10 Post from the author of the topic 02 Aug 2010 12:47   

Re: Czasomierz na mikrokontrolerze PIC16F676


~~~pio~~~ wrote:
Gdzie kupiłeś tą obudowę? bo Z-47 jest dużo wyższa może ja przerobiłeś, ciekaw jestem bo właśnie taka jest mi potrzebna.

Obudowę kupiłem w sklepie elektronicznym w Warszawie, ale ona jest bardzo popularna i wiele sklepów z częściami ma ją w swojej ofercie (internetowych i "zwykłych"). Nie przerabiałem tej obudowy, ona ma właśnie takie wymiary: 20X40X50 mm.
Pozdrawiam
Back to top
   
Post new topic  Reply to topic   [ + ] [ - ]    Main Page -> Forum Index -> DIY Structures -> Czasomierz na mikrokontrolerze PIC16F676
Statement for Wykop Statement for Facebook Statement for Delicious Statement for Digg Statement for Google Statement for Twitter Statement for Blip
Page 1 of 1
Similar topics
Jaki czasomierz??? (2)
Miernik napięcia i prądu na PIC16F676, do zasilacza warszt. (6)
Woltomierz cyfrowy na pic16f676. (9)
Czasomierz od 5 do 30 minut (1)
Czasomierz (stoper) LED (14)
Czasomierz dla systemu Windows (38)

Page generation time: 0.147 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed