Prosty Timer


7.5
Ocena: None Średnia: 7.5 (2 głosujących)

Opisywane urządzenie jest prostym timerem mikroprocesorowym odliczającym czas w zakresie 1-99s (lub 1-99m po drobnej modyfikacji programu). Steruje on dowolnym odbiornikiem prądu przemiennego o maksymalnej mocy wyznaczonej jedynie przez zastosowany triak. Układ został zaprojektowany jako timer fotograficzny, przydatny w amatorskiej fotografii do włączania lampy powiększalnika na określony czas. Po modyfikacji programu może działać na przykład jako timer kuchenny itp. Do zasilania urządzenia zastosowano mini ładowarkę od telefonu komórkowego, przez co całość zmieściła się w płaskiej i niewielkiej obudowie.

Działanie:


Schemat ideowy timera przedstawiony jest na rysunku poniżej:

Sercem układu jest mikrokontroler U1 (AT89C2051) wraz z elementami X1 (12MHz), C1 (33pF) i C2 (33pF). Kondensator C3 ma za zadanie zresetować procesor po włączeniu zasilania. Wyświetlacz W1 (LED) podłączony jest do portu P3 mikrokontrolera przez rezystory ograniczające prąd R1 - R7 (330R). Anodami wyświetlacza sterują tranzystory T1 (BC556) i T2 (BC556) wraz z rezystorami R8 - R11 (3,3k). Do złącza Sw dołączona jest klawiatura złożona z pięciu przycisków. Ze względu na małą liczbę wyprowadzeń mikrokontrolera ostatni przycisk wykorzystuje prosty dekoder zbudowany na diodach D1 (1N4148) i D2 (1N4148). Tranzystor T3 (BC556) wraz z elementami R14 (3,3k) i R15 (3,3k) steruje pracą buzzera z generatorem B1. Obwód wykonawczy stanowi triak Tr1 (BT138-600E) oraz optotriak OPT1 (MOC3042). Rezystor R13 (330R) ogranicza prąd optotriaka. Do złącza 230V (ARK) należy dołączyć odbiornik w taki sposób jakby złącze to stanowiło zwykły wyłącznik sieciowy. Do złącza Zas (Goldpin) doprowadzamy napięcie zasilające o wartości około 7-12V. Stabilizator U2 (7805) wraz z kondensatorami C4 (47uF) i C5 (22uF) dostarczają napięcia stabilizowanego na poziomie 5V.

Budowa:


Urządzenie można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym można pobrać tutaj. Montaż należy rozpocząć od wlutowania pięciu zworek a następnie wszystkie rezystory. Na sam koniec warto zostawić elementy największe. Pod mikrokontroler U1 bezwzględnie konieczna jest podstawka, natomiast pod wyświetlacz W1 można zastosować podstawkę DIP18 przeciętą na dwie części. Rozwiąże to problem kondensatorów wystających ponad wyświetlacz i ułatwi montaż całości w obudowie. Triak Tr1 i stabilizator U2 należy wlutować w pozycji leżącej, jak pokazuje schemat montażowy. Timer wygodnie jest zasilać z mini ładowarki do komórki ze względu na małe wymiary i niewielki ciężar. Po rozmontowaniu taka ładowarka da się upchnąć w prawie każdej obudowie. Pomocą przy budowie może się okazać schemat montażowy dostępny tutaj.

Wykaz Elementów:


1x Złącze śrubowe ARK2
5x uSwitch 12x12mm

1x 220R
8x 330R
6x 3,3k

2x 33pF
1x 22uF Elektrolit
1x 1uF Elektrolit
1x 47uF Elektrolit

1x Rezonator Kwarcowy 12MHz
1x Buzzer 5V z generatorem
1x Wyświetlacz podwójny, wspólna anoda
2x 1N4148
1x 7805
1x AT89C2051 + Podstawka
3x BC556
1x MOC3042
1x BT138-600E

Programowanie:


Mikrokontroler do timera został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

$crystal = 12000000                                           '12MHz
$regfile = "89C2051.DAT"
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Przerwanie0
Load Timer0 , 250
Enable Timer0
Start Timer0
Enable Interrupts
 
Dim Co4ms As Byte , Co1s As Byte
Dim Czas As Byte , Czas_ust As Byte
Dim Wysw As Byte , Wysw10 As Byte , Wysw1 As Byte
Dim Sw_port As Byte , Stan_portu As Byte , Licznik_sw As Byte
Dim Mux As Bit
Dim Odliczanie As Bit
Dim Flaga4ms As Bit
Dim Flaga1s As Bit
 
Czas_ust = 12
Odliczanie = 0
Wysw = Czas_ust
 
Triak Alias P1.1
Buzzer Alias P1.0
'****************************
      'Petla glowna
'****************************
Do
 
If Flaga4ms = 1 Then
  Flaga4ms = 0
  Gosub Wyswietlanie
  Gosub Przyciski
End If
 
If Flaga1s = 1 Then
  Flaga1s = 0
  If Odliczanie = 1 Then
    Decr Czas
    Wysw = Czas
    If Czas = 0 Then
      Odliczanie = 0
      Triak = 1
      Stop Timer0
      P3 = 255
      Wysw = Czas_ust
      Buzzer = 0
      Waitms 200
      Buzzer = 1
      Waitms 200
      Buzzer = 0
      Waitms 200
      Buzzer = 1
      Start Timer0
    End If
  End If
End If
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
 Incr Co4ms
 If Co4ms = 16 Then
   Co4ms = 0
   '***************************************  co 4ms
   Set Flaga4ms
   Incr Co1s
   If Co1s = 250 Then
     Co1s = 0
     '***************************************  co 1s
     Set Flaga1s
   End If
 End If
 
Return
'****************************
Wyswietlanie:
  Mux = Not Mux
 
  If Mux = 1 Then
    Set P1.6
    Wysw10 = Wysw / 10
    If Wysw < 10 Then Wysw10 = 10
    Wysw10 = Lookup(wysw10 , Tabela)
    P3 = Wysw10
    Reset P1.7
  Else
    Set P1.7
    Wysw1 = Wysw Mod 10
    Wysw1 = Lookup(wysw1 , Tabela)
    P3 = Wysw1
    Reset P1.6
  End If
Return
 
Przyciski:
  Sw_port = P1
  Sw_port = Sw_port Or &B11000011
  If Sw_port <> 255 And Stan_portu = Sw_port Then
    Incr Licznik_sw
    If Licznik_sw = 120 Then
      Licznik_sw = 0
      Select Case Stan_portu
        Case 223:                                             '+1
          If Odliczanie = 0 Then
            If Czas_ust < 99 Then Incr Czas_ust
          Else
            Odliczanie = 0
            Triak = 1
          End If
        Case 239:                                             '-1
          If Odliczanie = 0 Then
            If Czas_ust > 1 Then Decr Czas_ust
          Else
            Odliczanie = 0
            Triak = 1
          End If
        Case 247:                                             '+10
          If Odliczanie = 0 Then
            If Czas_ust < 90 Then Czas_ust = Czas_ust + 10
          Else
            Odliczanie = 0
            Triak = 1
          End If
        Case 251:                                             '-10
          If Odliczanie = 0 Then
            If Czas_ust > 10 Then Czas_ust = Czas_ust - 10
          Else
            Odliczanie = 0
            Triak = 1
          End If
        Case 207:                                             'start
          If Odliczanie = 0 Then
            Co4ms = 0
            Co1s = 0
            Load Timer0 , 250
            Flaga4ms = 0
            Flaga1s = 0
            Czas = Czas_ust
            Odliczanie = 1
            Triak = 0
          Else
            Odliczanie = 0
            Triak = 1
          End If
      End Select
 
      Wysw = Czas_ust
    End If
  Else
    Stan_portu = Sw_port
    Licznik_sw = 80
  End If
Return
                           'Tabela do wyswietlania
'*******************************************************************************
Tabela:
    Data 65 , 207 , 82 , 70 , 204 , 100 , 96 , 79 , 64 , 68 , 255
     'znak:    0     1    2    3    4    5     6    7    8   9   pusty

Zdjęcia Projektu:

ZałącznikWielkość
Schemat80.85 KB
Płytka15.27 KB
Płytka (odbicie lustrzane)15.34 KB
Płytka (4 na stronie)53.08 KB
Montowanie21.01 KB
Kod Źródłowy4.26 KB
Program po kompilacji (BIN)780 bajtów
Program po kompilacji (HEX)2.17 KB
Nadruk na obudowę36.46 KB



Portret użytkownika emdo6

Timer

Witam jestem ciemny w tych sprawach konstrukcyjnych, ale potrzebuję timera który by się ustawiało na np 60-120 min, załączał by urządzenie 1600w i po określonym czasie wyłączał by napięcie. musi mieć wyświetlacz który pokazywał by ile minut jescze zostało do końca.
Potrzebuje 4 może 5 takich urządzeń. czy ktoś by mi takie coś zrobił i za ile?
bardzo proszę o szybką odpowiedź wszystkich majstrów.

Portret użytkownika mirley

Re: Timer

Napisz dokładnie jak to ma działać na mojego maila (formularz kontaktowy)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika jarek

koszt zakupu gotowego timera

Witam
Czy można taki gotowy timer kupić i jaki jest koszt
Pozdrawiam

Portret użytkownika mirley

Re; Timer

Niestety to jest strona "Zrób to sam" dostępna jest cała dokumentacja i pomoc w realizacji ale zrobić trzeba sobie samemu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika wrzaskun

programowanie USBasp

witam czy jest mozliwosc zamiany mikrokontrolera na inny ktory mozna zaprogramowac za pomoca USBasp.
np AT89S2051. mam w domu tylko taki programator i chcialbym zrobic ten timerek.
ewentualnie czy bylaby mozliwaosc nabycia juz zaprogramowanego AT89C2051.

pozdrawiam
Wojciech

Portret użytkownika kaktus

Tak

Jego odpowiednikiem pod względem wyprowadzeń jest Tinny2313. Wymagana będzie niewielka kosmetyka kodu źródłowego.

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".

Portret użytkownika Piotr59mb

Zapętlenie układu

Witam.
Składałem ten układ jakiś czas temu, ale szczerze mówiąc nie pamiętam już jak dokładnie działał, ale czy jest możliwość przerobienia (myślę, że to kwestia kilku dodatkowych linijek kodu) programu tak, aby układ działał w następujący sposób.
1. Ustawiamy czas w przedziale 1-99s
2. Naciskamy Start
3. Układ odlicza ustawiony czas
4. Po odliczeniu ustawionego czasu, podaje impuls (o czasie trwania około 0.5 - 1 sek. - tyle, żeby przekaźnik [zamiast układu z optotriakiem, chciałem wrzucić przekaźnik z cewką na 5V] zdążył przełączyć styki)
5. Układ odlicza ten sam, ustawiony czas
6. Patrz punkt 4.
7. Układ jest zapętlony, do momentu powtórnego naciśnięcia przycisku Start (w takim razie to już Start/Stop)

Buzzer mógłby zniknąć, a zamiast niego przycisk ON/OFF, uruchamiający licznik, zliczający impulsy na wyjściu P1.1 i po osiągnięciu ustalonej w programie liczby (np. 500), zatrzymywałby działanie Timera.

Całość planowałem podłączyć (przez przekaźnik) pod przycisk pilota do lustrzanki, tak aby można było złożyć film z poszczególnych, długo naświetlanych klatek - zdjęć. A żeby wyeliminować efekt przesunięcia gwiazd na niebie, potrzebna jest odpowiednio dobrana przerwa czasowa między spustem migawki)

Mam nadzieję, że te wypociny są w miarę zrozumiałe. Liczę na jakąkolwiek pomoc.

Pozdrawiam
Piotr59mb

Portret użytkownika mirley

Re: Timer

fragment odpowiedzialny za ustawianie odliczania powinien wygladać teraz tak

         If Odliczanie = 0 Then            
            Co4ms = 0
            Co1s = 0
            Load Timer0 , 250
            Flaga4ms = 0
            Flaga1s = 0
            Czas = Czas_ust
            Odliczanie = 1
          Else
            Odliczanie = 0
          End If

I w drugim miejscu..... trzeba wrzucić sekwencję włączania się

If Flaga1s = 1 Then
Flaga1s = 0

If Odliczanie = 1 Then
Decr Czas
Wysw = Czas
If Czas = 0 Then
Stop Timer0
P3 = 255
Co4ms = 0
Co1s = 0
Load Timer0 , 250
Flaga4ms = 0
Wysw = Czas_ust
Triak = 0
Buzzer = 0
Waitms 250
Buzzer = 1
Waitms 250
Waitms 250
Waitms 250
Triak = 1
Start Timer0
End If
End If
End If

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika maciek1221

prąd stały

Witam, jak przerobić ten układ, aby sterował urządzeniem na prąd stały?

Portret użytkownika mirley

Re: Timer

Zamiast triaka i optotriaka trzeba dać tranzystor mosfet, albo tranzystor z przekaźnikiem.... Wszystko zależy od tego jakim napięciem stałym chcesz sterować i jaki prąd będzie płynął

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika omek

Sygnalizacja dzwiękowa

Witam
Ustawiając czas jaki timer ma odliczyć widzę wszystkie zmiany na wyświetlaczu. Natomiast po wcisnięciu przycisku start nie jestem pewien czy procedura odliczania już trwa.Dowiem się tego dopiero po minucie (odliczany czas w minutach).I tu moja prośba o zmianę programu tak aby przy nacisnięciu przycisku start był jednocześnie słyszalny krótki dzwięk buzera.

Portret użytkownika omek

Przycisk start

Witam

Ustawiając czas jaki timer ma odliczyć widzę wszystkie zmiany na wyświetlaczu. Natomiast po wcisnięciu przycisku start nie jestem pewien czy procedura odliczania już trwa.Dowiem się tego dopiero po minucie (odliczany czas w minutach).I tu moja prośba o zmianę programu tak aby przy nacisnięciu przycisku start był jednocześnie słyszalny krótki dzwięk buzera.

Portret użytkownika omek

Przycisk start

Witam

Ustawiając czas jaki timer ma odliczyć widzę wszystkie zmiany na wyświetlaczu. Natomiast po wcisnięciu przycisku start nie jestem pewien czy procedura odliczania już trwa.Dowiem się tego dopiero po minucie (odliczany czas w minutach).I tu moja prośba o zmianę programu tak aby przy nacisnięciu przycisku start był jednocześnie słyszalny krótki dzwięk buzera.

Portret użytkownika omek

Przycisk start

witam

Ustawiając czas jaki timer ma odliczyć widzę wszystkie zmiany na wyświetlaczu. Natomiast po wciśnięciu przycisku start nie jestem pewien czy procedura odliczania już trwa.Dowiem się tego dopiero po minucie (odliczany czas w minutach).I tu moja prośba o zmianę programu tak aby przy naciśnięciu przycisku start był jednocześnie słyszalny krótki dżwięk buzera.

Portret użytkownika marekszy

przycisk start

zobacz to, może Tobie lepiej podpasuje.
http://mirley.firlej.org/node/924

Portret użytkownika mirley

Co4ms = 0 Co1s =

            Co4ms = 0
            Co1s = 0
 
 
      Buzzer = 0   '<<<<<< DODAC
      Waitms 200   '<<<<<< DODAC
      Buzzer = 1   '<<<<<< DODAC
 
 
            Load Timer0 , 250
            Flaga4ms = 0
            Flaga1s = 0
            Czas = Czas_ust
            Odliczanie = 1
            Triak = 0

Dodaj te 3 linijki, po kliknięciu start będzie pisk a potem dopiero start odliczania

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika omek

Podziękowanie

Wszystko działa dziękuję.