Zegar Binarny


Zegar Binarny tak jak każdy inny zegar służy do liczenia czasu. Wyświetlacz tego czasomierza jest dość nietypowy a mianowicie jest to sześć słupków po cztery diody led. Wskazują one aktualną godzinę w kodzie binarnym. Urządzenie pracuje w oparciu o mikrokontroler AT89C2051, który sam zajmuje się odmierzaniem upływającego czasu. Zegar posiada zasilanie bateryjne na czas zaniku napięcia sieci (wyświetlacz jest wtedy wyłączony). Do jego obsługi przewidziano trzy przyciski. Pozwalają one ustawić godziny, minuty i wyzerować sekundy, a także ustawić czas budzenia itp. (Przynajmniej takie było pierwotne założenie. Obecnie jest oprogramowany sam zegar).

Działanie:


Na rysunku poniżej przedstawiono schemat Sterownika:

Sercem układu jest mikrokontroler U1 (AT89C2051) wraz z rezonatorem kwarcowym X1 (12MHz), kondensatorami C4 (33pF) i C5 (33pF) oraz trymerem C6 (4...40pF). Za pomocą C6 można regulować częstotliwość pracy procesora aby była jak najbardziej zbliżona do 12MHz. Jest to związane z dokładnością pracy zegara.

Złącze Zas (ARK) służy do podłączenia transformatora sieciowego (ok. 7-12 V). Napięcie przemienne jest prostowane w mostku Br1 (1A) a następnie filtrowane za pomocą C0 (1000uF) oraz stabilizowane do wartości 5V za pomocą układu U2 (7805). Kondensator C2 (22uF) współpracuje ze stabilizatorem scalonym U2. Diody D1 (1N4007) oraz D2 (1N4007) tworzą obwód zasilania awaryjnego. Podczas normalnej pracy dioda D2 spolaryzowana jest w kierunku zaporowym i prąd z baterii rezerwowej nie jest pobierany. Gdy napięcie na stabilizatorze spadnie poniżej napięcia baterii to dioda D1 zostanie spolaryzowana zaporowo a mikrokontroler będzie zasilany ze źródła awaryjnego. Do podłączenia wspomnianej baterii służy złącze Bat (ARK). Jej napięcie nie może być większe niż 5V.(mogą być 2 lub 3 "paluszki") Dodatkową filtrację napięcia zasilającego zapewnia kondensator C3 (22uF).

Rezystor R1 (10k) wymusza stan niski na nożce resetu mikrokontrolera i wraz z przyciskiem Sr (uSwitch) służy do jego resetowania. Elementy R2 (100k) i R3 (20k) wraz z tranzystorem T0 (BC547) stanowi obwód detekcji zaniku napięcia zasilającego. Podczas normalnej pracy T0 jest otwarty i na nóżce P1.4 kostki U1 panuje stan niski. Zanik napięcia zasilania objawia się zatkaniem tranzystora T0 i pojawieniem się stanu wysokiego na pinie P1.4. Rezystory R4 (1k) oraz R5 (1k) podciągają piny P1.0 i P1.1 mikrokontrolera do plusa zasilania, gdyż nie ma on wewnętrznych rezystorów podciągających na tych pinach. Elementy R6 - R9 (820R) pełnią funkcję ograniczenia prądu diod led wyświetlacza do dopuszczalnej wartości. Tranzystor T1 (BC557) wraz z rezystorami R10 (3.3k) i R11 (3.3k) jest odpowiedzialny za włączanie brzęczyka piezo z generatorem, wpiętego między punkty bz i -. Złącza goldpin GP1, GP2 i GP3 zapeniają połączenie z płytką wyświetlacza.

Schemat Wyświetlacza Przedstawiony jest na poniższym rysunku:

Złącza GP1, GP2 oraz GP3 zapewniają połączenie z płytką sterownika. Przyciski S1 - S3 (uSwitch) pozwalają ustawić czas na zegarze. Diody DL1 - DL22 są połączone w matrycę 4x6 ze wspólną anodą. Dla wyświetlania dziesiątek godzin zastosowano wyjątkowo tylko dwie diody, ze względu na fakt że nie może być więcej niż 23 godziny i kolejne dwa ledy nigdy by się nie zapaliły. Tranzystory T2 - T7 (BC557) wraz z rezystorami R13 - R22 (3.3k) sterują anodami matrycy 4x6 led.

Budowa:


Montaż sterownika można dokonać na płytce drukowanej dostępnej tutaj lub gdy wymagany jest rysunek w odbiciu lustrzanym to można wykorzysteć rysunek dostępny tutaj. Lutowanie należy rozpocząć od jednej zworki. Dalsza kolejność elementów jest dowolna. W miejsce złącz GP1 - GP3 należy wlutować złącza szufladkowe o wyskości umożliwiającej złożenie dwóch płytek. Pod mikrokontroler należy bezwzględnie zastosować podstawkę. W innym wypadku niemożliwe będzie jego zaprogramowanie. W układzie został użyty procesor AT89C4051 zamiast AT89C2051 ze względu na większą pamięć programu. Pomocą w montażu może okazać się schemat montażowy dostępny tutaj.

Rysunek płytki wyświetlacza można pobrać tutaj lub tutaj gdy wymagany jest obraz w odbiciu lustrzanym. Ze względu na fakt, że płytka jest jednostronna zawiera aż 17 zwór. Montaż należy rozpocząć od wlutowania ich wszystkich. W dalszej kolejności należy wlutować resztę elementów, pamiętając, że złącza goldpin lutowane są od strony druku. Na samym końcu należy przylutować diody led. Pomocą może okazać się dostępny tutaj schemat montażowy.

Wykaz Elementów:

Sterownik:


1x Złącze szufladkowe na goldpiny 1x3
2x Złącze szufladkowe na goldpiny 1x6
1x uSwitch
1x Rezonator Kwarcowy 12MHz
1x Podstawka DIP20

2x 1N4007
1x Mostek Prostowniczy 1A
1x Buzzer 5V z generatorem
1x BC547B
1x BC557B
1x 7805 Stabilizator 5V
1x AT89C4051

4x 820R
2x 1k
2x 3.3k
1x 10k
1x 20k
1x 100k

2x 33pF
1x 4...40pF Trymer
2x 22uF Elektrolit
1x 1000uF Elektrolit

Wyświetlacz:


1x Goldpin 1x3
2x Goldpin 1x6
3x uSwitch

12x 3.3k

6x BC557B
22x Dioda LED dowolnego typu

Programowanie:

Mikrokontroler do zegara został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Fragmenty programu przedstawione są poniżej.

Konfiguracja timera żeby przerwania następowały co 250us

Config Timer0 = Timer , Gate = Internal , Mode = 2
Load Timer0 , 250                                            
Start Timer0
Enable Timer0
Enable Interrupts
On Timer0 Przerwanie_timer

Główna pętla programu. Zawiera instrukcję warunkową sprawdzającą stana na pinie oznaczonym Test_napiecia (czyli wykrywanie stanu napięcia zasilającego) oraz skok do etykiety Praca następujący co 2ms

Do
  If Test_napiecia = 1 Then
      P1 = 255
      Buzzer = 1
      Idle
  Else
     If Flaga_praca = 1 Then Gosub Praca
  End If
Loop
End

Obsługa Przerwania. Następuje co 250us a jej zadaniem jest jedynie poprawnie odliczać czas.

Przerwanie_timer:
Incr Co2ms
If Co2ms = 8 Then
  Co2ms = 0
  Set Flaga_praca                                             'co 2ms
  Incr Co4ms
  If Co4ms = 2 Then
    Co4ms = 0
    Incr Co1sek
    If Co1sek = 250 Then
      Co1sek = 0
      Incr Sekundy
      If Sekundy >= 60 Then
        Sekundy = 0
        Incr Minuty
        If Minuty >= 60 Then
          Minuty = 0
          Incr Godziny
          If Godziny >= 24 Then
            Godziny = 0
          End If
        End If
      End If
    End If
  End If
End If
 
Return

Ta procedura wykonywana jest co 2ms. Jej zadaniem jest multipleksowanie i wyświetlanie wskazań na matrycy diod LED

Praca:
 
Flaga_praca = 0
 
Incr Poz_wyswietlana
If Poz_wyswietlana = 6 Then Poz_wyswietlana = 0       
 
Gosub Obsl_przyciskow
Gosub Sterowanie
 
Incr Licz_miganie
If Licz_miganie = 125 Then
  Licz_miganie = 0
  Wygaszenie = Not Wygaszenie
End If
 
 
Select Case Poz_wyswietlana
  Case 0:                                                     '1 cyfra
    Set P3.5
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Godziny / 10
     Case 1:
       Sp1 = Godziny_buz / 10
     Case 2:
       Sp1 = 1
    End Select
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 1 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.0
  Case 1:                                                     '2 cyfra
    Set P3.0
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Godziny Mod 10
     Case 1:
       Sp1 = Godziny_buz Mod 10
     Case 2:
       Sp1 = 1
    End Select
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 1 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.1
  Case 2:
    Set P3.1
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Minuty / 10
     Case 1:
       Sp1 = Minuty_buz / 10
     Case 2:
       Sp1 = 6
    End Select
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 2 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.2
  Case 3:
    Set P3.2
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Minuty Mod 10
     Case 1:
       Sp1 = Minuty_buz Mod 10
     Case 2:
       Sp1 = 6
    End Select
 
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 2 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.3
  Case 4:
    Set P3.3
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Sekundy / 10
     Case 1:
       Sp1 = Sekundy_buz / 10
     Case 2:
       If Buzzer_onoff = 1 Then Sp1 = 2 Else Sp1 = 14
    End Select
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 3 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.4
  Case 5:
    Set P3.4
    '************
    Select Case Poz_menu
     Case 0:
       Sp1 = Sekundy Mod 10
     Case 1:
       Sp1 = Sekundy_buz Mod 10
     Case 2:
       If Buzzer_onoff = 1 Then Sp1 = 7 Else Sp1 = 14
    End Select
 
 
    If Inwersja_wysw = 1 Then Sp1 = Not Sp1
    Gosub Kasuj
 
    If Ustawianie = 3 Then
      If Wygaszenie = 1 Then P1 = 255 Else P1 = Sp1
    Else
      P1 = Sp1
    End If
    '************
    Reset P3.5
End Select
 
Return

Procedura obsługi przycisków:

Obsl_przyciskow:
 
If Prz_plus = 0 Then
  Incr Przycisk
  If Przycisk = 30 Then Set P_plus Else Reset P_plus
Else
  Przycisk = 0
  Reset P_plus
End If
 
If Prz_minus = 0 Then
  Incr Przycisk2
  If Przycisk2 = 30 Then Set P_minus Else Reset P_minus
Else
  Przycisk2 = 0
  Reset P_minus
End If
 
If Prz_menu = 0 Then
  Incr Przycisk3
  If Przycisk3 = 30 Then Set P_menu Else Reset P_menu
Else
  Przycisk3 = 0
  Reset P_menu
End If
 
'****************************************
If P_menu = 1 Then
'********
 If Ustawianie = 0 Then
  Incr Poz_menu
  If Poz_menu = 3 Then Poz_menu = 0
 Else
  Incr Ustawianie
  If Ustawianie = 4 Then Ustawianie = 0
 End If
'********
End If
 
 
If P_plus = 1 And P_minus = 0 Then
'********
 Select Case Ustawianie
  Case 0:
   Ustawianie = 1
  Case 1:
   Select Case Poz_menu
     Case 0:
      Incr Godziny
      If Godziny = 24 Then Godziny = 0
     Case 1:
      Incr Godziny_buz
      If Godziny_buz = 24 Then Godziny_buz = 0
     Case 2:
      Kolejnosc = Not Kolejnosc
   End Select
  Case 2:
   Select Case Poz_menu
     Case 0:
      Incr Minuty
      If Minuty = 60 Then Minuty = 0
     Case 1:
      Incr Minuty_buz
      If Minuty_buz = 60 Then Minuty_buz = 0
     Case 2:
      Inwersja_wysw = Not Inwersja_wysw
   End Select
  Case 3:
   Select Case Poz_menu
     Case 0:
      Sekundy = 0
     Case 1:
      Incr Sekundy_buz
      If Sekundy_buz = 60 Then Sekundy_buz = 0
     Case 2:
      Buzzer_onoff = Not Buzzer_onoff
   End Select
 End Select
'********
End If
 
 
If P_plus = 0 And P_minus = 1 Then
'********
 Select Case Ustawianie
  Case 0:
 
  Case 1:
   Select Case Poz_menu
     Case 0:
      Decr Godziny
      If Godziny = 255 Then Godziny = 23
     Case 1:
      Decr Godziny_buz
      If Godziny_buz = 255 Then Godziny_buz = 23
     Case 2:
      Kolejnosc = Not Kolejnosc
   End Select
  Case 2:
   Select Case Poz_menu
     Case 0:
      Decr Minuty
      If Minuty = 255 Then Minuty = 59
     Case 1:
      Decr Minuty_buz
      If Minuty_buz = 255 Then Minuty_buz = 59
     Case 2:
      Inwersja_wysw = Not Inwersja_wysw
   End Select
  Case 3:
   Select Case Poz_menu
     Case 0:
      Sekundy = 0
     Case 1:
      Decr Sekundy_buz
      If Sekundy_buz = 255 Then Sekundy_buz = 59
     Case 2:
      Buzzer_onoff = Not Buzzer_onoff
   End Select
 End Select
'********
End If
'****************************************
Return

Procedura odwracająca bity itp.:

Kasuj:
 If Kolejnosc = 1 Then
  Help_bit = Sp1.0
  Sp1.0 = Sp1.3
  Sp1.3 = Help_bit
  Help_bit = Sp1.1
  Sp1.1 = Sp1.2
  Sp1.2 = Help_bit
 
  If Poz_wyswietlana = 0 Then
    Clr c
    Rotate Sp1 , Right , 2
  End If
 
 End If
 
 Sp1.7 = 1
 Sp1.6 = 1
 Sp1.5 = 1
 Sp1.4 = 1
Return

Program ten należy uzupełnić o procedure obsługi buzzera. Cały kod źródłowy można pobrać tutaj. Wersje skompilowane dostępne są tutaj (plik *.bin) lub tutaj (plik *.hex)

Zdjęcia Projektu:

AttachmentSize
Sterownik Schemat54.35 KB
Wyświetlacz Schemat47.34 KB
Sterownik Płytka11.84 KB
Sterownik Płytka (odbicie lustrzane)11.88 KB
Sterownik Płytka (4 na stronie)44.63 KB
Sterownik Montowanie16.91 KB
Wyświetlacz Płytka19.37 KB
Wyświetlacz (odbicie lustrzane)19.3 KB
Wyświetlacz (3 na stronie)56.29 KB
Wyświetlacz Montowanie32.56 KB
Kod źródłowy10.35 KB
Program po kompilacji (BIN)2.01 KB
Program po kompilacji (HEX)5.68 KB
Sterownik Opis6.91 KB
Sterownik Opis (odbicie lustrzane)6.95 KB
Wyświetlacz Opis11.23 KB
Wyświetlacz Opis (odbicie lustrzane)11.31 KB



gosc's picture

być może te pytania będą

być może te pytania będą błahe z pana punktu widzenia ale...

1. Czy wyjścia na schemacie oznaczone np. +5V mam podłączyć pod ścieżkę +5V? Gdzie w takim razie jest napięcie rzędu +4,3V
2. Czy wyście GND (uziemienie) można połączyć z minusem np. mostka Br1
3. Czy czerwona kropka na złączu bazy tranzystora T1 jest wstawiona celowo (jako czerwona)? jaśli tak to co znaczy?
4. Buzzer wstawiam pomiędzy bz1 a... GND procesora?
........
5. W jaki sposób można sprawdzić czy program został prawidłowo wgrany na kość, bez montowania całego układu (używałem programatora BlowIT [url=http://http://www.dinastiasoft.com.ar/Imagenes/Circuitos/Micros/BLOWIT-1.gif] własnej roboty, wypalałem BASCOM'em [ale nie wiem czy dobrze]), czy podczas programowania np. nagrzewa się procesor?

P.S. Układ sterownika oraz wyświetlacza nie montuję na płytkach drukowanych, tylko na pleksi (jak na amatora przystało ;))

mirley's picture

Kilka pytań o zegar

1. Oznaczenie +5V na schemacie mają być zwarte do siebie, nie oznaczają one punktu podłączenia zasilacza, takie oznaczenie ułatwia rysowanie schematu gdyż nie trzeba rysować dodatkowych podłączeń zasilania utrudniających analizę obwodu. Transformator zasilający należy podłączyć do zacisku ZAS. Napięcie około 4.3V powstaje po przejściu 5V przez diodę krzemową (w kierunku przewodzenia spadek napięcia ok 0.6-0.7V). W tym przypadku nazwa 4.3V jest poprostu nazwą szyny zasilającej procesor.

2. GND to masa, głowna szyna zasilająca (minus). Można podłączyć ją do uziemienia ale nie jest to konieczne. Wszystkie GND mają być zwarte ze sobą.

3. Czerwona kropka w połączeniu jest pozostałością po wcześniejszym stylu rysowania (kropki czerwone, widać to na następnym schemacie). Pierwszy schemat był edytowany poźniej i styl został zmieniony ale jak widać nie w całości.

4. Dokładnie Tak

5. Ja posiadam MCS Flash Programmer metodą na sprawdzenie działania jest podłączenie procesora do układu lub kliknięcie opcji Verify w bascomie.

PS. To jest dość stary projekt i nie pamiętam wszystkich szczegołow do niego ale możesz pytać jak jeszcze będą problemy

Pozdrawiam

gosc's picture

Teraz powinienem już dać

Teraz powinienem już dać sobie radę :)

Dziękuję i pozdrawiam

gosc's picture

Kod źródłowy

Witam, mam pytanie co do procedury resetowania, mam kompilator BASCOM-8051 i wywala mi błąd przy następującej instrukcji:

   Sp1.0 = Sp1.3   ' Wrong Type (...) expected
  Sp1.3 = Help_bit
  Help_bit = Sp1.1
  Sp1.1 = Sp1.2
  Sp1.2 = Help_bit

Proszę o pomoc. Pozdrawiam.

mirley's picture

Re: Kod źródłowy

Jaką wersję Bascoma posiadasz. Ja bez problemu skompilowałem cały kod źródłowy dostępny na stronie i nie wystąpił żaden problem. Jeśli nie masz najnowszej wersji bascoma 8051 to pobierz ze strony producenta i przeinstaluj

Ps. Jeśli próbowałeś skompilować tylką samą procedurę a nie cały kod to napewno nie pójdzie :)

gosc's picture

Czytanie kodu binarnego

Witam!!!
Według mnie rozmieszczenie diod w twoim zegarze jest błędne, a mianowicie: kod binarny czytamy od dołu do góry lub od prawej do lewej. Piersza cyfra oznacza dla mnie 4 lub 8 .
Pozdawiam

mirley's picture

Re: Kod binarny

Po pierwsze to nikt nie pisał że zagar pokazuje czas w naturalnym kodzie binarnym :). Po drugie jak dobrze pamiętam (bo strasznie dawno to robiłem) to program zegara umozliwia zmianę kierunku reprezentacji liczby binarnej tak że LSB jest po prawej lub lewej stronie. Do wyboru, do koloru.

Zawsze można przecierz zakodować w kodzie mirley'a gdzie LSB będzie w środku słowa bitowego :)))

Guzik's picture

Pytanka

Witam
Mam parę mam parę pytań odnośnie tego projektu:

1.Chce podłączyć jako zasilanie bateria 9V, w związku z tym czy mogę zostawić mostek czy lepiej się go pozbyć? Z tego co wiem w zależności od tego jak podłącze baterie do mostka, będą działać 2 diody zamiast 4, ale nie wiem czy to będzie w jakimś stopniu działać nie korzystnie na układ ?

2.Zamiast kondensatorów 2x33pF mam 2x47pF, czy spowodują one złe działanie układu?

3.Na schemacie sterownika, oraz w wykazie elementów pisze, żeby zastosować kondensator 1000uF, jednak porównując zdjęcie gotowego układu z moim układem wydaje mi się, że został zastosowany kondensator 100uF.Mam kondensator 1000uF/16V.

4.Mam stabilizator L78512CV, zamiast 7805 i tak patrze i wydaje mi się,że ostatnia cyfra pokazuje jakie napięcie stabilizuje stabilizator . Czyli wychodzi, że zamiast napięcia 5V miałbym 12V mam racje ?

5.Mam tranzystor C557C zamiast BC557B, wdaje mi się że są to te same tranzystory z innym oznaczeniem, ale wole zapytać.

6.Czy coś się stanie jeżeli nie podłącze buzzera?

7.Czy moge w jakiś sposób sprawdzić czy działa układ jeżeli nie mam zaprogramowanego mikrokontrolera?

Układ mam już po lutowany, ale miałem małe problemy. Zauważyłem że w zależności jakiej cyny używam łatwiej się ona łączy z płytką i elementami lub gorzej.
Czy to łączenie cyny z płytką mogło zależeć od tego, że miałem podtrawione ścieżki?

mirley's picture

Re: Zegar binarny

1. Ogólnie mówiąc lepiej zastosować zasilacz niż baterię bo diody led jednak swoje pobierają :) Nie wiem jak długo to będzie działać ale może sie okazać że niedługo :) Dla baterii 9V mostem może sobie być zamontowany. Nic nie powinno to przeszkadzzać. Jeśli zasilanie musi być bateryjne to lepiej zastosować 3 paluszki dające 4,5V i ze schematu usunąć na dobre stabilizator oraz diody D1 i D2. Należy D1 zastąpić zworą tak samo wlutować miedzy 1 a 3 nóżkę stabilizatora.

2. Lepiej dać 33pF bo czym większy kondensator to stanowi większe obciążenie dla generatora w procesorze :)

3. Pewnie dałem 100uF bo taki miałem :) Nie miało to znaczenia bo i tak finalnie układ zasilałem już wyfiltrowanym napięciem i duży kondensator okazał się zbędny. Ten co masz może być :)

4. Tak dokładniejest tak jak piszesz 7812 daje 12V a to za dużo dla uC. Układ powinien być 7805

5. To prawie napewno ten sam tranzystor i w tym zastosowaniu nie powinno być różnicy który dasz. Ten co podałeś ma inny współczynnnik wzmocnienia prądowego.

6. Nie będzie sygnału dźwiękowego :)

7. Możesz postykać piny w pustej podstawce i zobaczyc czy wszystkie diody świecą

Odnosnie kłopotów z lutowaniem to pokryłeś płytkę kalafonią w spirytusie? bez tego lutowanie jest trudne bo płytka zaraz pokryje się tlenkiem. podtrawione ścieżki mogą mieć wpływ bo masz mniej miedzi na przyczepność. Wszystko to zależy jak podtrawione. jeśli już prawie miedzi nie ma to faktycznie lutowanie może być trudne :)

Guzik's picture

Zasilacz w przyszłości

Zasilacz w przyszłości napewno, bedzie więc zostawie stabilizator.
No chyba, że w sklepie nie dostane 7805, to wtedy podłącze 3 paluszki i zrobie tak jak kazałeś :P

Przez postykanie pinów rozumiem, że mam napięcie, które dochodzi do VCC przykładać do pinów które odpowiadają za świecenie diod.

Tak pokryłem ją kalafonią i to gruba warstwą.Jednak to co stworzyłem czyli roztwór jest dosyć rzadki, co dosypywałem kalafoni to wyglądało, że roztwór jest już nasycony, ale wkońcu kalafonia sie rozpuszczała choć trwało to dosyć długo.

Jak sprawdze działanie układu wstawie fotki na forum(niestety tylko gotowego układu), bo teraz wydaje mi się że to cud, iż to polutowałem xD

Wszystkie elementy które napisałem, że mam inne niż powinny być dostałem w eklepie "elektronicznym" myślałem, że ludzie którzy tam pracują wiedzą co sprzedają, gdybym tego nie sprawdził układ pewnie bym spalił...

mirley's picture

Re: Zegar binarny

Przez "postykanie pinów" rozumiem że masz złożone dwie płytki do siebie i zamiast procesora stykasz dwoma kablami do masy odpowiednie piny sterujące tak aby włączak po kolei tranzystory i kolejne diody

gosc's picture

PCF8583

Witaj
Czy było by możliwym byś dopisał do tego zegara obsługę PCF8583

mirley's picture

Re: Zegar binarny

Wolał bym zrobić ten zegar od początku :)

gosc's picture

ZEGAR

Mówiąc uczciwie
to ja zrobiłem zegar w oparciu o ten projekt http://www.mcselec.com/index.php?option=com_content&task=view&id=137&Itemid=57 nieco zmieniając program

i chciałem sobie dopisać do tego PCF8583 ale nie bardzo mi to idzie , ni wiem jak to zrobić

A jak bym miał jakiś przykład to już bym sobie poradził

Większość takich projektów opiera się o LCD i meni do ustawiania
Ja ustawiam je zegar dwoma przyciskami i wykorzystuję LED Multipleksowane

mirley's picture

Re: PCF w zegarze binarnym

Jak chcesz przykład to popatrz na mój zegar nixie. Tam jest PCF oprogramowany, tylko że pod mikrokontroler AVR. Poprostu przerobisz kod pod 2051, ale zasada działanie się nie zmieni

Guzik's picture

Witaj :) Mam problem, który

Witaj :)
Mam problem, który nie daje mi spokoju i sam go prawdo podobnie nie rozwiążę.

Mianowicie gdy chce, żeby sie zapaliła dioda 1(DL1) lub DL3 to pali sie DL7.
Tak samo gdzy ma sie palić DL2 lub DL4 to pali sie DL8 itd.
Gdy zapalam pojedyńczo DL7-DL10 diody działają prawidłowo.
Pozostałe diody od DL11 do DL22 działają bez problemów.
Wszystkie tranzystory są na pewno dobre.

Dziwi mnie natomiast napięcie. Zwieram P3.1 i P1.0 powinna sie zapalić DL3 świeci sie DL7.
Napięcie na
P3.0= 2V - tu chyba nie powinno być napięcia

P3.1= 0,7V DL3= 0,5V - nie pali sie a powinna

P3.2= 0,5V DL7= 2V - pali sie a niepowinna

Już wolałbym jakby sie wszystkie razem świeciły xD
Bo teraz to już nie mam pojęcia co jest nie tak.
Biore pod uwage fakt, że jakaś część w układzie ma inną wartość niż powinna mieć.

Mam nadzieje, że wszystko jasno opisałem, bo już nie mam sił myśleć.
Znając życie pewnie gdzieś sie pomyliłem i dlatego takie cyrki wychodzą ^^

mirley's picture

Re: Zegar

"Zwieram P3.1 i P1.0..." masz namysli że w programie piszesz aby się zwarły czy normalnie drutem zwierasz? Napisz może taki krótki program od podstaw który po kolei bedzie zwierał tranzystory i potem piny portu P1.0 zapalając kolejne diody. Części raczej są dobre, jeśli każda dioda się pali tak jak powinna podczas zwierania kablem odpowiednich pinów to musi działać. Może sie uC uszkodził ale to mało prawdopodobne

Guzik's picture

Zwierałem drutem :P Teraz

Zwierałem drutem :P

Teraz już wszystko śmiga.
Zostały poprawione wszytkie luty, ale nie jestem pewien co było przyczyną takiego działania.
Według mnie P3.0, P3.1, P3,2 były w jakimś miejscu zwarte a ponadto T2 i T3 prawdopodobnie dobrze nie chodziły(możliwy zimny lut).
Dlatego diody paliły sie tylko przez dobrze działający T4.
T2 i T3 zaczeły chodzić jak została poprawiona ścieżka doprowadzająca zasilanie do tranzystorów.

Wielkie dzięki za pomoc :)

gosc's picture

Pytanie

Mam pytanie odnośnie zasady działania wyświetlacza, jak to działa? gdy np diody dl16-dl18 i dl21 świecą się i w tym czasie dl20 i dl22 są wygaszone, skoro linie pionowe 5 i 6 przepuszczają prąd oraz linie poziome 6 5 4 tak samo pozwalają na przepływ prądu. Jak to się dzieje, że te dwie diody d20 d22 są wygaszone ??

mirley's picture

Re: Zegar

Kolumny sterowane przez tranzystory T2 - T7 nigdy nie świecą jednocześnie. W jednej chwili załączony jest tylko jeden z tranzystorów i w tym samym czasie podawany jest na całe wiersze stan diod dla tej kolumny, tak to świeci np przez 4ms i diody są gaszone, właczany jest kolejny tranzystor i podawany stan kolejnej kolumny. To wszystko zmienia się z częstotliwością 75hz lub szybciej i nie widzisz migotania

chanelka44's picture

Pytanie

Witam.
Może pytania będą banalne dla Pana,
ale wolę zapytać, ponieważ jestem początkująca :)

1. Czy mogę zastosować trymer ceramiczny? Na zdjęciu jest chyba foliowy...
2. Jaki najlepiej użyć transformator sieciowy? Może jakiś konkretny model otrzymam?
3. Czy mając podłączony transformator sieciowy, mogę zrezygnować z "paluszków"? Jeśli tak to czy zmieni się ustawienie podzespołów na płytce? A może lepiej użyć "paluszków" zamiast transformatora?
4. Z jakiego tworzywa wykonał Pan czarną obudowę zegara?

Z góry dziękuję za odpowiedź:)

mirley's picture

Re: Zegar

1. Może być dowolny, w pierwszej fazie nie musi być montowany, jeśli jest trymer to ten kondensator co jest z nim równolegle powinien byc mniejszy, bo ustawienie trymerem ma dać dokładnie dwie równe pojemności.
2. Dowolny transformator o napięciu 9-12V i prądzie 150mA lub więcej
3. Poprostu nie podłączasz baterii i to wszystko, po wyłączeniu zasilania zegar utraci ustawienia jeśli nie będzie baterii. Podłączenie samej baterii nie uruchomi wyświetlacza
4. Plexi z powierconymi dziurami a potem od tyłu zamalowana sprayem

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account, used to display your avatar.
  • You can use BBCode tags in the text. URLs will automatically be converted to links.
  • Use the special tag [adsense:format:slot] or [adsense:format:[group]:[channel][:slot]] or [adsense:block:location] to display Google AdSense ads.
  • You can enable syntax highlighting of source code with the following tags: [code], [blockcode], [c], [cpp], [java], [javascript], [php], [python], [qb].
  • Image links with 'rel="lightbox"' in the <a> tag will appear in a Lightbox when clicked on.

More information about formatting options