Timer Serwisowy


9.11111
Ocena: None Średnia: 9.1 (9 głosujących)

Timer serwisowy to nic innego jak zwykły licznik odliczający w tył od ustawionej wartości. Układ został wyposażony w duże wyświetlacze LED, o wysokości cyfry 6cm. Umożliwia to bezproblemowy odczyt wskazań nawet ze znacznej odległości. Układ pracuje jako timer w serwisie rajdowym, pokazując czas jaki został na naprawę samochodu, jednak jego przeznaczenie może być dowolne. Układ jest prosty w obsłudze gdyż do sterowania wykorzystywane są jedynie trzy przyciski (+,- oraz start/pauza). Po włączeniu układ odczytuje zapamiętany odcinek czasu aby za każdym razem go nie ustawiać (jeśli korzystamy z jednakowych nastaw codziennie itp.). Timer wyposażony jest w dwukolorowe wyświetlacze jednak ze względu na prostotę, wybór koloru odbywa się poprzez zwarcie odpowiednich zworek na płytce. Całość została zbudowana w oparciu o mikrokontroler ATmega8 i elementy dyskretne pracujące w typowych konfiguracjach. Zasilanie dla układu można pobrać z gniazdka zapalniczki samochodowej, lub z transformatora o napięciu 9-12V AC. Obecność mostka prostowniczego zapobiega przed omyłkowa zmianą biegunowości zasilania a jednocześnie pozwala na zasilanie timera bezpośrednio z transformatora.

Działanie:


Schemat ideowy układu znajduje się na rysunku poniżej:

Sercem układu, podobnie jak w większości tego typu projektów jest mikrokontroler U1 (ATMega8(88)), wraz z rezonatorem kwarcowym X1 (8MHz) i dwoma kondensatorami C1 (22pF) i C2 (22pF). Jako klawiatura sterująca pracują trzy przyciski S1-S3 (uSwitch L=15mm). Zasilanie podawane jest poprzez złącze Z (ARK2), wprost na mostek prostowniczy Br1 (1A) i kondensator filtrujący C4. Stabilizatory U2 (7809) i U3 (7805) dostarczają napięcia 9V (dla zasilania wyświetlaczy) i 5V (dla mikrokontrolera), a do ich poprawnej pracy wymagane są kondensatory C5 (100uF) i C6 (47uF). Kondensator C3 (100nF), umieszczony blisko nóżek mikrokontrolera, zapewnia dodatkową filtrację jego zasilania.

Tranzystor T9 (BC856) pracuje jako klucz włączający sygnalizator piezo (buzzer) BUZ. Prąd bazy tego tranzystora ograniczony jest poprzez rezystor R21 (3,3k). W wersji podstawowej sygnalizacja dźwiękowa nie jest obsługiwana. Do wyświetlania upływającego czasu wykorzystywane są wyświetlacze dwukolorowe W1-W4 (RG57MM). Prąd segmentów ograniczany jest za pomocą R13-R19 (220R). Ze względu na to, że wyświetlacze są dwukolorowe, wspólne anody (kolor cyfry) przełączane są za pomocą zworek GP1-GP4. Do sterowania anod wyświetlaczy wykorzystywany jest układ z tranzystorami T1-T4(BC856), T5-T8 (BC846), rezystorami R1-R4 (10k) i rezystorami R5-R12 (3,3k). Tak skomplikowany układ sterowania anodami jest konieczny aby dopasować poziomy logiczne na jakich pracują wyświetlacze i procesor. Nie da się podłączyć bezpośrednio wyświetlacza za pomocą tranzystora PNP, gdyż jest on zasilany wyższym napięciem (9V) niż procesor (5V). Tranzystor w takim przypadku nigdy się nie wyłączy bo panujący stan wysoki na wyjściu procesora daje potencjał na bazie tranzystora i tak niższy od potencjału emitera co w konsekwencji wprowadza tranzystory w stan przewodzenia. Tranzystory T1-T4 sterowane są za pośrednictwem tranzystorów T5-T8 z wyjść mikrokontrolera. Rezystory R5-R12 ograniczają prąd płynący przez bazy tranzystorów, natomiast R1-R4 umożliwiają poprawne wyłączenie się tranzystorów T1-T4, gdy T5-T8 przestaną przewodzić. Diody D1 (LED RG) i D2 (LED RG) stanowią "dwukropek" między wyświetlaczami minut i sekund, ich prąd ogranicza R20 (470R) a zworki GP5 i GP6 umożliwiają zmianę koloru "dwukropka".

Budowa:


Układ z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż należy rozpocząć od wlutowania wszystkich zworek. Elementy współpracujące ze stabilizatorami napięcia powinny być zamontowane od strony druku, podobnie jak zworki GP1-GP6 i złącze programujące Prog. Lutując goldpiny od strony druku można zastosować kątowe, zmniejszy to dystans jaki będzie trzeba zachować od tylnej ścianki obudowy. Rezystory w obudowach przewlekanych należy zamontować jak najbliżej płytki, tak aby wyświetlacze mogły dolegać do płytki. Ułatwi to ich równy montaż. Jeśli nie da się docisnąć wyświetlaczy do płytki to można na czas lutowania podłożyć pod ich obudowę kawałki laminatu o jednakowej grubości. Diody Led stanowiące dwukropek nie powinny wystawać ponad wyświetlacze bo przód obudowy ma stanowić płyta z plexi. Przy lutowaniu SMD (szczególnie procesora) należy zwrócić uwagę na numery wyprowadzeń, gdyż podstawowy rysunek montaży pokazuje widok od strony elementów. Przyciski powinny wystawać ponad wyświetlacze, przynajmniej o grubość plexi, aby możliwe było ich wciśnięcie.

Układ może być zasilany napięciem stałym w granicach 11-16V lub przemiennym 9-12, bezpośrednio z transformatora. Biegunowość nie jest ważna bo na wejściu zasilania jest mostek prostowniczy. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Dla montażu SMD pomocny będzie także rysunek montażowy w odbiciu lustrzanym, dostępny tutaj

Wykaz Elementów:

1x Złącze Śrubowe ARK2(podwójne)
1x Złącze Szufladkowe 1x8
3x uSwitch 15mm

9x 3,3k
4x 10k
7x 220R
1x 470R

2x 22pF
1x 100nF
1x 47uF Elektrolit
1x 100uF Elektrolit
1x 470uF Elektrolit

1x Rezonator Kwarcowy 8MHZ
2x Dioda LED RG
1x Mostek Prostowniczy 1A
4x BC846
5x BC856
1x Stabilizator 7805
1x Stabilizator 7809
1x Mikrokontroler ATMEGA8(88)
1x Buzzer z Generatorem
4x RG Wyświetlacz 57mm (dwukolorowy)

Programowanie:


Kod Źródłowy do timera został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.dat"
$crystal = 16000000
 
Config Portb = &B00000000 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11110000
Config Portd = &B11111111 : Portd = &B11111111
 
Sw_port Alias Pinb
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Co4ms As Byte
Dim F4ms As Bit
 
Dim M As Byte , S As Byte
Dim M2 As Byte
Dim Pd As Byte , Pc As Byte
Dim W As Byte , Ktory_w As Byte
Dim Dled As Bit , Savesig As Bit , Mig As Bit
Dim Buzz As Bit
Dim Odliczanie As Bit , Alarm As Bit
Dim Stan_sw As Byte , Sw As Byte , Licznik_sw As Byte       'zmienne
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Readeeprom M , 1
If M > 99 Or M < 1 Then M = 40
S = 0
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
  If F4ms = 1 Then
    F4ms = 0
    Gosub Wyswietl
    Gosub Przyciski
  End If
 
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
Timer0 = 6
Set F4ms
Incr Co4ms
If Co4ms = 250 Then
  Co4ms = 0
  Toggle Mig
  If Odliczanie = 1 Then
    Dled = Mig
    Decr S
    If S = 255 Then
      S = 59
      Decr M
    End If
 
    If M = 0 And S = 0 Then
      Odliczanie = 0
      Alarm = 1
    End If
  Else
    Dled = 0
  End If
End If
Return
'******** Przerwanie timer 0 Koniec ************
 
Wyswietl:
 Incr Ktory_w
 If Ktory_w = 4 Then Ktory_w = 0
 
 Select Case Ktory_w
  Case 0:
    Reset Portc.0
    W = M / 10
    If W = 0 Then W = 10
    Set Portc.3
  Case 1:
    Reset Portc.3
    W = M Mod 10
    Set Portc.2
  Case 2:
    Reset Portc.2
    W = S / 10
    Set Portc.1
  Case 3:
    Reset Portc.1
    W = S Mod 10
    Set Portc.0
 End Select
 
 If Alarm = 0 Then
   W = Lookup(w , Tabela)
 Else
   If Mig = 1 Then W = 191 Else W = 255
 End If
 
 If Savesig = 1 Then W = 255
 
 
Portc.4 = W.4
Portc.5 = W.3
Pd.0 = W.2
Pd.1 = W.6
Pd.2 = W.5
Pd.3 = W.0
Pd.4 = W.1
Pd.5 = Dled
Pd.6 = Buzz
Portd = Pd
 
Return
 
 
'***********************************************
'*****************  Przyciski     **************
Przyciski:
Sw = Sw_port And &B00000111                                 'maska na piny nieużywane jako sw
 
If Sw <> 7 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
     Licznik_sw = 0
     If Alarm = 0 Then
        Select Case Stan_sw
          Case &B00000110:                                  'plus
            If Odliczanie = 0 Then
              If M < 99 Then Incr M
              S = 0
            End If
          Case &B00000101:                                  'minus
            If Odliczanie = 0 Then
              If M > 1 Then Decr M
              S = 0
            End If
          Case &B00000011:                                  'start/pause
            If Savesig = 0 Then Toggle Odliczanie Else Savesig = 0
          Case &B00000100:                                  'save
            If Odliczanie = 0 Then
              Writeeeprom M , 1
              Savesig = 1
            End If
        End Select
      Else
        Alarm = 0
        Readeeprom M , 1
        If M > 99 Or M < 1 Then M = 40
        S = 0
      End If
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 60
  End If
 
Return
'***********************************************
'*************************************************
 
 
Tabela:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 , 191
'znak:    0     1     2     3     4     5     6     7     8     9    pusty  -

Część Mechaniczna:

Wykonanie obudowy do układu wymaga umiejętności obróbki plexi i drewna. Do jej wykonania będzie potrzebna listewka 3x1cm i długości około 1m oraz kawałek plexi. Z listewek wykonujemy ramkę, w taki sposób ab płytka układu zmieściła się w środku. Przód i tył obudowy stanowić będzie plexi, w której należy nawiercić dziury pod wkręty. Płytka układu powinna być zamontowana do tylnej ścianki w obudowie za pomocą śrub 3mm.

Zdjęcia Projektu:

ZałącznikWielkość
Schemat50.18 KB
Płytka42.3 KB
Płytka (odbicie lustrzane)42.4 KB
Płytka (2 na stronie)80.91 KB
Montowanie52.1 KB
Montowanie (odbicie lustrzane)52.26 KB
Kod Źródłowy4.01 KB
Program po kompilacji (bin)1.54 KB
Program po kompilacji (hex)4.36 KB



Portret użytkownika rgbled

Witam

Witam, projekt bardzo fajny i przydanty:)Szacun:D Ale sobie tak pomyślałem jak by tak ten program przerobć na prosty zegarek, co?Płytka jest ok to tylko by sofcik było trzeba zmeinić.Czy mógłby Pan to zrobić?

Ps.A wyświetlacze led to gdzie były kupywane?

-

Pozdro :)

Portret użytkownika mirley

Re: Timer

Wyświetlacze dostępne są na allegro u użytkownika: ARTRONICpl co do przeróbki na zegar taki najzwyklejszy to trzeba mieć trochę czasu żeby to wykonać, zapiszę sobie na lście

-

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 rgbled

Czy zmiany trzeba było by

Czy zmiany trzeba było by wprowadzić w kodzie źródłowym cyz też w pcb?Bo jak w kodzie to bym spróbował to przerobić:D

-

Pozdro :)

Portret użytkownika mirley

Re: Timer

Na płytce nie trzeba nic zmieniać... tylko soft. Zacznij od procedury timera

-

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 esc

Jak uda Ci się zmienić soft

Jak uda Ci się zmienić soft to daj znać chętnie taki zegarek popełnię

Portret użytkownika Rafal

Czy się da??

Witam.
Fajny projekcik :) Tylko czy dało by się żeby wyświetlał jeszcze setne sekundy, jeśli tak to mógł by Pan doradzić jak??

Portret użytkownika mirley

Re: timer serwisowy

Tak z mety dało by się zrobić dziesiątki sekund ale tylko w teorii. Jak zadziałało by to w praktyce to nie wiem

-

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 Konrad

Zegar

Widząc zainteresowanie programem zegara postanowiłem pozmieniać trochę w kodzie. To tylko czysto teoretyczne zmiany i nie wiem czy to jest działający program. Jednak jeżeli ktoś się zna na programowaniu to myslę, że ewentualne poprawki nie zajmą dużo czasu. Ja nie mam układu i nie jestem w stanie tego sprawdzić jednak gdy ktoś ma zbudowany układ niech wrzuci to na procka i sprawdzi, czy wogóle działa. Z góry dzięki.

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.dat"
$crystal = 16000000
 
Config Portb = &B00000000 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11110000
Config Portd = &B11111111 : Portd = &B11111111
 
Sw_port Alias Pinb
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Co4ms As Byte
Dim F4ms As Bit
Dim Sekjed As Byte
Dim Sekdz As Byte
Dim Minjed As Byte
Dim Mindz As Byte
Dim Godzjed As Byte
Dim Godzdz As Byte
Dim Pd As Byte , Pc As Byte
Dim W As Byte , Ktory_w As Byte
Dim Mig As Bit
Dim Odliczanie As Bit
Dim Stan_sw As Byte , Sw As Byte , Licznik_sw As Byte       'zmienne
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Sekjed = 5
Sekdz = 5
Minjed = 9
Mindz = 5
Godzjed = 3
Godzdz = 2
 
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
  If F4ms = 1 Then
    F4ms = 0
    Gosub Wyswietl
    Gosub Przyciski
  End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
Timer0 = 6
Set F4ms
Incr Co4ms
If Co4ms = 250 Then
  Co4ms = 0
  Incr Sekjed
   Toggle Mig
   End If
 
  If Sekjed = 10 Then
  Sekjed = 0
  Incr Sekdz
  End If
 
  If Sekdz = 6 Then
  Sekdz = 0
  Incr Minjed
  End If
 
  If Minjed = 10 Then
  Minjed = 0
  Incr Mindz
  End If
 
  If Mindz = 6 Then
  Mindz = 0
  Incr Godzjed
  End If
 
  If Godzjed = 10 Then
  Godzjed = 0
  Incr Godzdz
  End If
 
  If Godzdz = 2 And Godzjed = 4 Then
  Godzdz = 0
  Godzjed = 0
  End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
Wyswietl:
 Incr Ktory_w
 If Ktory_w = 4 Then Ktory_w = 0
 
 Select Case Ktory_w
  Case 0:
    Reset Portc.0
    W = Godzdz
    If W = 0 Then W = 10
    Set Portc.3
  Case 1:
    Reset Portc.3
    W = Godzjed
    Set Portc.2
  Case 2:
    Reset Portc.2
    W = Mindz
    Set Portc.1
  Case 3:
    Reset Portc.1
    W = Minjed
    Set Portc.0
 End Select
 
   W = Lookup(w , Tabela)
 
Portc.4 = W.4
Portc.5 = W.3
Pd.0 = W.2
Pd.1 = W.6
Pd.2 = W.5
Pd.3 = W.0
Pd.4 = W.1
 
Return
 
'***********************************************
'*****************  Przyciski     **************
Przyciski:
Sw = Sw_port And &B00000111                                 'maska na piny nieużywane jako sw
 
If Sw <> 7 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
     Licznik_sw = 0
        Select Case Stan_sw
 
          Case &B00000110:                                  'ustawianie minut
             Incr Minjed
              Sekjed = 0
              Sekdz = 0
 
          Case &B00000101:                                  'ustawianie godzin
            Incr Godzjed
         End Select
  Else
    Stan_sw = Sw
  End If
 End If
Return
'***********************************************
'*************************************************
Tabela:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255
'znak:    0     1     2     3     4     5     6     7     8     9    pusty

Portret użytkownika demsy1

Mała przeróbka

Witam serdecznie.
Mam pytanie do kolegi ,,mirley,, czy jest taka możliwość zastosowania układu wykonawczego do tego projektu. Mianowicie chodzi mi o to czy po odliczeniu np: 1 minuty układ wykonawczy rozłączy urządzenie na napięcie 230V?

Portret użytkownika mirley

Re: Timer serwisowy

Można wykorzystać wyjście buzzera i dopisać dwie linijki w programie. Zamiast buzzera musi być wtedy podłączony układ wykonawczy z triakiem.... jeśli nie jest potrzebny jednocześnie z tym duży wyświetlacz, to projekt "timer fotograficzny" jest sterownikiem właśnie tego typu

-

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 demsy1

Timer serwisowy

Wolałbym duży wyświetlacz. Oczywiście gdy timer odlicza czas układ wykonawczy jest włączony, a gdy upłynie ustawiony czas u. wykonawczy się wyłączy i dobre byłoby dodatkowe np: sekundowe zadziałanie buzera.

Portret użytkownika mirley

re: timer

Zmodyfikuj ten fragment kodu:

 Toggle Mig
  If Odliczanie = 1 Then
    Dled = Mig
    Reset portb.5      'uklad wykonawczy
    Decr S
    If S = 255 Then
      S = 59
      Decr M
    End If
 
    If M = 0 And S = 0 Then
      Odliczanie = 0
      Alarm = 1
      Buzz = 0
      wait 1
      buzz = 1
    End If
  Else
    Dled = 0
    set portb.5 'uklad wykonawczy
  End If

i na początku ma być:

Config Portb = &B00100000 : Portb = &B11111111

układ wykonawczy jest na pb.5, na złączu programującym, stan aktywny to 0

-

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 demsy1

Dziękuję

Dziękuję

Portret użytkownika vett

Stałe ustawienia timera

Ponieważ jestem tutaj nowy dlatego też witam Wszystkich.
Jestem początkujący w programowaniu i dlatego też naukę rozpoczynam od poznawania przykładów i prób ich modyfikacji na ewentualne moje potrzeby.
Pytanie moje jest takie:
Jak zmodyfikować ten układ aby odliczał zapisane "na sztywno - na stale" godziny upływu czasu.
Potrzebuję odliczenia upływu czasu po kolei w następujących krokach:
1 - odliczenie w dół jednorazowo 5 godzin (tu będę chciał włączyć urządzenie)
2 - odliczenie w dół 1 godzina (tu będę chciał wyłączyć urządzenie)
3 - odliczenie w dół 10 minut (tu będę chciał włączyć urządzenie)
4 - odliczenie w dół 1 godzina (tu będę chciał wyłączyć urządzenie)
5 - dalej cyklicznie tak jak w pkt 3 następnie 4
Napisałem odliczanie w dół, ale to również dobrze może być w górę, a w zamyśle to ma być sterownik (do przekształtnika diodowego - urządzenie niedozorowane) do ciągłego doładowywania dużego akumulatora, czyli pierwsze włączenie na 5 godzin (timer rusza po osiągnięciu odpowiedniego napięcia na akumulatorze), następnie wyłączenie na 1 godz, następnie cykliczne doładowywanie przez 10 minut i przerwa przez 1 godzinę, tak długo aż nie wyłączy się tego przekształtnika (może ten stan trwać nawet do 72 godzin).
Oczywiście to jest dopiero początek, który chciałbym opanować z programowaniem czasu za pomocą tego tutaj opisanego układu, a następnie chciałbym dokładać odczyty z ADC (w tym przypadku napięcie jałowe do 125V, prąd do 30A), wyświetlaniem czy to na LED czy na LCD.
Dodatkowo nasuwa się pytanie czy należało by rozważyć oddzielenie pomiarów napięć i prądów od sterowania czasowego np. pomiar na dwóch procesorkach - na jednym sterowanie czasowe na tym timerze, na drugim pomiar napięć i prądu).
Proszę szczególnie Autora tego projektu, jeżeli jest to możliwe, o podpowiedzi do moich zamysłów.
Pozdrawiam
vett

Portret użytkownika mirley

Re: Timer

Załóż sobie osobny temat na forum bo to się trochę mija z moim timerem..... Ogólnie jest to do zrealizowania ale trochę czasu zajmie. Na początek przeczytaj jakiś kurs programowania a potem reszta

-

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 bart

Timer serwisowy

Witam.
Projekt naprawdę udany, realizacja na wysokim poziomie. Mam pytanie odnośnie programu, do czego służy poniższy blok:

Portc.4 = W.4
Portc.5 = W.3
Pd.0 = W.2
Pd.1 = W.6
Pd.2 = W.5
Pd.3 = W.0
Pd.4 = W.1
Pd.5 = Dled
Pd.6 = Buzz
Portd = Pd

Portret użytkownika suchy

problem z uruchomieniem

witam zbudowałem dzisiaj zegarek i mam problem z poprawnym działaniem. mianowicie po zaprogramowaniu wszystkie cyfry pokazują zero zapalając kolejno każdą belke po obwodzie wyświetlacza. co może być nie tak ??

Portret użytkownika mirley

Re: Timer

Piszesz o zegarku.... masz swój program, czy chodzi ci o program timera? Próbowałeś na oryginalnym programie?

-

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 suchy

program jest Twój ściągnięty

program jest Twój ściągnięty z Twojej stronki

Portret użytkownika mirley

Re: Timer

Ok w takim razie w pierwszej kolejności należy za pomocą miernika sprawdzić napięcia w ukłądzie, czy procesor i wyświetlacze są odpowiednio zasilane. Potem na wyłaczonym napięciu sprawdzić przewodzenie ścieżek, od procesora aż do tranzystorów sterujących anodami i te do wyświetlacza bezpośrednio też.

Czy fusebity są ustawione na zewnętrzny kwarc?

-

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 suchypl

napięcia do procesora i do

napięcia do procesora i do wyświetlaczy dochodza zostały tylko fusy ale nie wiem jak zmienić . urzywam programatora usbasp

Portret użytkownika mirley

Re: Fusebity

Skoro masz usbaspa to pewnie burn-o-mata masz zainstalowanego. Jesli nie to poczytaj mój artykuł na temat programowania w avrdude (patrz artykuły różne). Potem ustaw fusebity tak:

http://mirley.firlej.org/files/ART_fuseM8_02B.gif

-

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 Piki1989

Witam Czyli po podanej

Witam

Czyli po podanej modyfikacji kodu mogę podłączyć układ wykonawczy np. http://mirley.firlej.org/wykonawczy_triak pod pb5.
Układ będzie działał następująco : Po ustaleniu czasu nastąpi odliczanie czasu (określonego) i układ wykonawczy wyłączy podłączone urządzenie. Jeśli się mylę proszę mnie poprawić

Portret użytkownika mirley

Re: TImer

Po jakiej modyfikacji? W projekcie powyżej pb5 nic nie robi i jest wejściem.

-

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 Piki1989

Chodzi mi o modyfikację kodu

Chodzi mi o modyfikację kodu :
Zmodyfikuj ten fragment kodu:

Toggle Mig
If Odliczanie = 1 Then
Dled = Mig
Reset portb.5 'uklad wykonawczy
Decr S
If S = 255 Then
S = 59
Decr M
End If

If M = 0 And S = 0 Then
Odliczanie = 0
Alarm = 1
Buzz = 0
wait 1
buzz = 1
End If
Else
Dled = 0
set portb.5 'uklad wykonawczy
End If
i na początku ma być:

Config Portb = &B00100000 : Portb = &B11111111
układ wykonawczy jest na pb.5, na złączu programującym, stan aktywny to 0

Gdzie należy podłączyć układ wykonawczy ?

Portret użytkownika mirley

RE: Układ wykonawczy timer

Powinno działać tak jak mówisz. Podłącz rezystor 470R od +5V do optotriaka w układzie wykonawczym (do anody diody). Katodę diody do pinu procka na którym zrobiłeś wyjście

-

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 jamtex

Wyświetlacz 12 V

Witam,

Podsiadam wyświetlacze ale 12V (po 3 diody w każdym z pól/segmentów).
Czy zamiast BC846 i BC856, mogę użyć przewlekane BC556 i BC546?
Jakie powinny być wtedy wartości rezystorów?

Pozdrawiam

Tomek

Portret użytkownika mirley

Re: Timer

Tranzystory mogą być przewlekane, rezystory do nich mogą zostac takie same dla 12V. Jedynie trzeba pomyśleć jakie rezystory dać do ograniczenia prądu segmentów ale to trzeba ocenić na oko. Pewnie 330R zamiast 220R będzie dobre

-

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 gosc - andrzej

timer do wentylatora pokojowego

Witam.
jak widzisz regulację obrotów wentylatora przez cykliczne wysterowanie triaka (przekaźnika) by nie dać jemu się rozpędzić - jak wkładanie na chwilę wtyczki do gniazdka sieciowego.
Pozdrawiam.

Portret użytkownika mirley

Re: Sterowanie wentylatora

Jest to wentylator na 230V? Mozna by spróbować triak i transoptor z załączeniem w zerze sieci + PWM. Będzie to proste i powinno działac jeśli wentylator ma dużą bezwładność i powoli się rozpędza. Jesli wentylator jest na napięcie stałe to PWM + tranzystor

-

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 gosc - andrzej

sterowanie wentylatora

Witam.
Dzięki za odpowiedź, jest to wentylator z dalekiego wschodu bez szczotkowy na 230 V
zrobiłem próby z zwykłym przekaźnikiem czasowym i da się nawet przy tym spać :), idealną rzeczą była by możliwość regulacji czasu włączenia i wyłączenia.
Podobna zasada była wykorzystywana w układach chłodzenia dużych kompresorów.
Pozdrawiam.

Portret użytkownika mirley

Re: Triak

No to trzeba dać triak i przełączać go z okresem np 1s i regulowanym wypełnieniem.

-

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 gosc - andrzej

sterowanie wentylatora

Witam ponownie.
jestem zielony jak trawnik :), może jakaś podpowiedź jak się do tego zabrać?
Pozdrawiam.

Portret użytkownika mirley

Re: Timer

A pisałeś jakikolwiek program?

Na marginesie to załóż nowy temat na forum bo to trochę nie na temat. napisz w nim o co chodzi to będziemy myśleć

-

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 maly_13

a ja mam taki problem wgrałem

a ja mam taki problem wgrałem program hex ustawiłem fusebit tak jak trzeba i niestety timer liczył 2xwolniej, poza tym było widać multiplexowanie wyświetlacza zmieniłem kwarc na 16mhz (był 8mhz) i czas odlicza ok ale nie zapamiętuje ustawionego czasu tylko zawsze wskakuje na 40 min może plik uszkodzony? bo nie wiem co jest nie tak

po zmianie kwarcu wszystko działa ale nie działa buer i nie zapisuje mi ustawien ( choć jakimś cudem coś zapisał ale nie wiem w którym momencie, wiem że wtedy wyświetlacz zgasł)

Portret użytkownika mirley

Re: Timer

Ewidentnie widac jakby były źle ustawione fusebity.... nie pamiętam czy M88 ma dzielnik częstotliwości, jeśli tak to trzeba go wyłaczyć. program który jest na stronie jest dokładnie tym co sam używałem

-

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 marcinmobil

programuje procesor

programuje procesor weryfikacja ok programuje fuse też ok ustawiam hfuse - C9 Lfuse - FF programuje avf8burnOmat
mam kwarc 8mhz i wyswietlacz pokazuje 40.00 min ale miga tak jak by odswierzanie miał za niskie ale jak wstawie kwarc 16mhz to ok nie wiem co może być nie tak

Portret użytkownika mirley

Re: Timer

Sprawdź bit CKDIV8, powinien być na 1

-

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 marcinmobil

no właśnie nie wiem co jest

no właśnie nie wiem co jest za sza... programator usbpas program avr8 burn-o-mat podaje mu hfuse d9, albo c9 i jest bez zmian lfuse ff
przy ustawieniach bezpieczników jak ma orginalnie atmega8 migają po koleji wyswietlacze czyli ok
zmiana bezpieczników jak wyżej wyświetla ale działa dwa razy wolniej
odczyt bezpieczników podaje tak jak programuje
wyjęcie kwarcu nie działa nic
wymiana kwarcu na 16MHz czas działa ok ale nie działa buzer

Portret użytkownika mirley

Re: Fusebity

Przejdź w burn-o-mat do trybu edycji bitów. Zaprogramuj procka fabrycznymi fusebitami.... potem odznacz tylko bit CKDIV8 i zaprogramuj fusy. Powinno juz działać ale na wewnętrzym oscylatorze. Potem zaznaczasz tylko bit CKSEL3 a reszta CKSEL ma byc odznaczona. SUT maja byc odznaczone

-

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 DaroAdmin

Cześć Mam mały problemik i

Cześć
Mam mały problemik i proszę cię o jego rozwiązanie.
Z góry za sugesie dziękuję.
Zbudowałem ten timerek troszkę go modyfikując elektrycznie.
Teoretycznie wszystko powinno być OK. Ale nie jest.
Po primo wyświetlają mi się same 8888. Nie da się timera uruchomić. Podawanie masy na końcówki nie powoduje odliczania.
Przełączanie pomiędzy wyświetlaczami czyli multipleksowanie na pewno działa.
Jakieś sugestie ?

Mam inne pytanie. Bardzo mi się podobają wyświetlacze LED, ale mam z nimi samą udrękę. Nie potrafię nimi sterować. ( Na razie ) Dlatego robię wszystko na LCD.
W twoim układzie segmenty A,B,C..... zapalane są przez podanie masy. Jak zrobić aby zapalane były przez podanie logicznej 1. ? Patrzę na program ale nie rozumiem tej części układu.

Jeszcze jedno. Nie używałem rezonatora. Dałem na fuse inernal 8 mhz (000100). Będzie to działało ?

Portret użytkownika DaroAdmin

Jak zrobić żeby wyświetlacze

Jak zrobić żeby wyświetlacze były sterowane poprzez 1 a nie 0 logiczne ?

Portret użytkownika mirley

Re: Timer

Skąd wiesz że multipleksowanie działa... patrzyłes na przebiegi oscyloskopem? może byc przeciez wszystko zwarte i temu się świeci.... Jesli procesor jest zaprogramowany poprawnie to nie wyswietli samych 8 a będzie coś odliczał.

W jaki sposób chcesz zapalac wyświetlacze logiczną 1, przecież trzeba katody zwierać do masy a nie do 1 logicznego. Poza tym w układzie ze schematu wyżej tak się nie da bo zasilanie wyswietlaczy jest wyższe. Anody poprzez tranzystory sterowane są logicznym 1.

ten program to zły przykład na uczenie się multipleksowania, popatrz na program do mini timera uniwersalnego

Jesli nie uzyjesz rezonatora w układzie który odlicza czas to dokładność będzie tragiczna

-

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 demsy1

Zegar

Witam
Panowie chciałbym zmienić kod tak żeby liczył po naciśnięciu przycisku po puszczeniu stop itd.. co powinienem zmienić?

Portret użytkownika EDC

Zegar Demsy :)

Proszę kolego bo widze że długo męczysz temat.
Powinien działać tak że po włączeniu zasilania odzcytuje ostatnie zapamiętane minuty i sekundy :)
Powinien działać Twój upragniony Przekaźnik wykonawczy na PORTB.5 na Start/Stop :)
Pamiętaj że liczy do 99m59s i potem stop! Żeby Ci jakiegos naświetlania nie przerwało (bo chyba coś z UV było) to przed ta datą podczas Pause zapisz sobie stan do zeszytu a na liczniku cofnij i Zapisz !! Cofać można tylko minuty.
Miłego użytkowania i jak coś to daj znać ;)

PS. Tylko nie pytaj jak zapisuje się czas :P
Dwa guziki naraz.

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.dat"
$crystal = 16000000
 
Config Portb = &B00100000 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11110000
Config Portd = &B11111111 : Portd = &B11111111
 
Sw_port Alias Pinb
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Co4ms As Byte
Dim F4ms As Bit
 
Dim M As Byte , S As Byte
Dim M2 As Byte
Dim Pd As Byte , Pc As Byte
Dim W As Byte , Ktory_w As Byte
Dim Dled As Bit , Savesig As Bit , Mig As Bit
Dim Buzz As Bit
Dim Odliczanie As Bit , Alarm As Bit
Dim Stan_sw As Byte , Sw As Byte , Licznik_sw As Byte       'zmienne
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Readeeprom M , 1
If M > 99 Then M = 0
Readeeprom S , 2
If S > 60 Then S = 0
 
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
  If F4ms = 1 Then
    F4ms = 0
    Gosub Wyswietl
    Gosub Przyciski
  End If
 
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
Timer0 = 6
Set F4ms
Incr Co4ms
If Co4ms = 250 Then
  Co4ms = 0
  Toggle Mig
  If Odliczanie = 1 Then
    Reset Portb.5                                           'uklad wykonawczy
    Dled = Mig
    Incr S
    If S = 59 Then
      S = 0
      Incr M
   Else
     Set Portb.5
   End If
 
    If M = 99 And S = 59 Then
      Odliczanie = 0
      Alarm = 1
    End If
  Else
    Dled = 0
  End If
End If
Return
'******** Przerwanie timer 0 Koniec ************
 
Wyswietl:
 Incr Ktory_w
 If Ktory_w = 4 Then Ktory_w = 0
 
 Select Case Ktory_w
  Case 0:
    Reset Portc.0
    W = M / 10
    If W = 0 Then W = 10
    Set Portc.3
  Case 1:
    Reset Portc.3
    W = M Mod 10
    Set Portc.2
  Case 2:
    Reset Portc.2
    W = S / 10
    Set Portc.1
  Case 3:
    Reset Portc.1
    W = S Mod 10
    Set Portc.0
 End Select
 
 If Alarm = 0 Then
   W = Lookup(w , Tabela)
 Else
   If Mig = 1 Then W = 191 Else W = 255
 End If
 
 If Savesig = 1 Then W = 255
 
 
Portc.4 = W.4
Portc.5 = W.3
Pd.0 = W.2
Pd.1 = W.6
Pd.2 = W.5
Pd.3 = W.0
Pd.4 = W.1
Pd.5 = Dled
Pd.6 = Buzz
Portd = Pd
 
Return
 
 
'***********************************************
'*****************  Przyciski     **************
Przyciski:
Sw = Sw_port And &B00000111                                 'maska na piny nieużywane jako sw
 
If Sw <> 7 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
     Licznik_sw = 0
     If Alarm = 0 Then
        Select Case Stan_sw
          Case &B00000110:                                  'plus
            If Odliczanie = 0 Then
              If M < 99 Then Incr M
              S = 0
            End If
          Case &B00000101:                                  'minus
            If Odliczanie = 0 Then
              If M > 1 Then Decr M
              S = 0
            End If
          Case &B00000011:                                  'start/pause
            If Savesig = 0 Then Toggle Odliczanie Else Savesig = 0
          Case &B00000100:                                  'save
            If Odliczanie = 0 Then
              Writeeeprom M , 1
              Writeeeprom S , 2
              Savesig = 1
            End If
        End Select
      Else
        Alarm = 0
 
      End If
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 60
  End If
 
Return
'***********************************************
'*************************************************
 
 
Tabela:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 , 191
'znak:    0     1     2     3     4     5     6     7     8     9    pusty  -

-

BARTek
Moja strona

Portret użytkownika demsy1

Dzięki Bartek, jak będę miał

Dzięki Bartek, jak będę miał chwilę to sprawdzę program

Portret użytkownika emil

Witam, złożyłem timer i

Witam, złożyłem timer i działa poprawnie tylko mam problem z buzerem. Od razu po włączeniu zasilania buzer piszczy . Co zrobić by buzer uruchamiał się gdy timer skończy odliczać czas?

Portret użytkownika mirley

Re: Timer

Jak podłaczyłeś ten buzzer bo według kodu, buzzer nie ma prawa sie nigdy wlączyć. Stan na pinie zawsze powinien być wysoki, co zapobiega uruchomieniu buzzera

Aby dzialal trzeba by dodac linijki we fragmencie o alarmie:

 If Alarm = 0 Then
   W = Lookup(w , Tabela)
   Buzz=1
 Else
   If Mig = 1 Then 
     W = 191
     Buzz=0 
   Else 
     W = 255
     Buzz=1
   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.