Mirley - Elektronika i Programowanie
projekty, programy... wszystko o elektronice
M
RSS FB TW G+
Prosty zegar Nixie z termometrem
Maj 19, 2017 Zegary i Timery
Main thumb Prezentowany układ jest prostym zegarkiem pokojowym, wyposażonym dodatkowo w termometr. Prezentacja wskazań odbywa się za pomocą jedynie dwóch lamp Nixie. Takie oszczędne rozwiązanie pozwala nie tylko zmniejszyć wymiary urządzenia ale także ograniczyć koszty związane z zakupem lamp Nixie. Układ zegara został podzielony na dwa oddzielne obwody drukowane, jeden pełni funkcję sterownika, a drugi wyświetlacza z wysokonapięciowymi tranzystorami do sterowania lamp i neonówek. Ze względu na ograniczone możliwości wyświetlania wskazań na dwóch lampach zastosowano sekwencyjną prezentację czasu i temperatury: na chwilę pojawiają się godziny, potem minuty, sekundy oraz temperatura, po czym cały cykl się powtarza. W układzie mogą pracować w zasadzie dowolne lampy wskaźnikowe, natomiast w projekcie modelowym zastosowano LC-531.

Działanie:

Schemat sterownika zegara został przedstawiony na rysunku 1. Sercem układu jest mikrokontroler U3 (ATMEGA8-PU), pracujący z wewnętrznym taktowaniem 8MHz. Piny rezonatora kwarcowego wykorzystano jako klasyczne porty wyjściowe. Za prawidłową polaryzację nóżki resetu mikrokontrolera odpowiada rezystor R3 (10k).
Kup Teraz! - Płytki, Elementy, uC …Pokaż Cennik Pokaż na Allegro
Prawidłowe zasilanie mikrokontrolera U3 generowane jest za pomocą stabilizatora liniowego U2 (78L05) oraz filtrowane za pomocą kondensatorów C2 (100uF/25V), C3 (47uF/25V) i C5 (100nF). Złączem zasilania (typowo 9-12V) jest tutaj gniazdo GP1 (NS25-W2).
Rysunek 1: Schemat Ideowy Sterownika
Liczeniem czasu zajmuje się dedykowany układ zegara czasu rzeczywistego U1 (PCF8583), który komunikuje się z mikrokontroleram za pomocą magistrali I2C. Nad poprawną polaryzacją linii SCL i SDA tej magistrali czuwają rezystory podciągające R1 (3,3k) i R2 (3,3k). Układ zegara taktowany jest rezonatorem kwarcowym X1 (32,768kHz), wspomaganym pojemnością C1 (22pF). Kondensator C4 (100nF) filtruje dodatkowo zasilanie samego zegara U1, który za pośrednictwem diod D1 (BAT85) i D2 (BAT85), może pracować na zasilaniu bateryjnych BT1 (CR2032), bądź pochodzącym ze stabilizatora U2.
Pomiar temperatury dokonywany jest za pomocą czujnika U4 (DS18B20), pracującego na 1-Wire. Do poprawnej pracy tej magistrali wymagany jest rezystor R4 (4,7k). Sterowanie zegarem odbywa się za pomocą klawiatury złożonej z przycisków SW1-SW3 (uSw 6mm), Złącza GP2 (NS25-W8) i GP3 (NS25-W8) umożliwiają połączenie między płytką sterownika a wyświetlacza, GP4 (NS25-W2) jest złączem dodatkowym, niewykorzystywanym w projekcie modelowym, natomiast PROG1 (AVRPROG) jest klasycznym złączem programującym dla układu U3.
Rysunek 2: Schemat Ideowy Nixie
Schemat ideowy wyświetlacza przedstawiony został na rysunku 2. Do sterowania lampami Nixie V3-V4 (LC-531) wykorzystano tranzystory wysokonapięciowe z serii MPSA. Elementy T7-T16 (MPSA42) sterują przepływem prądu przez katody lamp. Prądy baz tych tranzystorów ograniczane są za pomocą rezystorów R19-R28 (33k). Rezystory R8 (47k) i R9 (47k) ograniczają prądy płynące przez anody lamp V3 (LC-531) i V4, kluczowane tranzystorami T1 (MPSA92) i T2 (MPSA92). Ze względu na wysoki potencjał panujący na emiterach tych tranzystorów, do ich poprawnej pracy wymagane są jeszcze tranzystory T3 (MPSA42) i T4 (MPSA42). Gdy T3 przewodzi, prąd bazy T1 płynie przez rezystor R3 (470k), który ogranicza go do bezpiecznej wartości. W odwrotnej sytuacji, gdy prąd nie płynie przez tranzystor T3, rezystor R1 (100k) podciąga potencjał na bazie T1 do zasilania, co powoduje jego wyłączenie. W podobny sposób działają elementy T2, T4, R2 (100k) oraz R4 (470k). Rezystory R10 (33k) i R11 (33k) ograniczają prądy baz tranzystorów T3 i T4.
Elementy V1-V2 (NEON) to popularne wskaźniki neonowe, których prąd ograniczany jest odpowiednio przez R5-R6 (220k). Sterowanie neonówkami odbywa się za pośrednictwem tranzystorów T5 (MPSA42) i T6 (MPSA42), których prądy baz ograniczane są z kolei za pomocą R12 (33k) i R13 (33k). Aby zminimalizować, lub pozbyć się całkowicie zjawiska "Duchów" zastosowano układ wstępnej polaryzacji katod lamp Nixie zbudowany za pomocą dzielnika R7 (330k), R14 (220k) i zestawu szybkich diod D3-D12 (BA159). Dzięki temu gdy tranzystory sterujące katodami nie przewodzą, katody znajdują się na potencjale około 60-75V, co uniemożliwia zaświecenie cyfr, ale jednocześnie pośredni potencjał poprawia szybkość włączenia danej cyfry podczas multipleksowania. Kondensator C4 (100nF) został zastosowany jako prosty filtr napięcia z dzielnika R7, R14, a złącza GP2 (NS25-W8) i GP3 (NS25-W8) umożliwiają połączenie między płytką sterownika i wyświetlacza.

Budowa:

Widok płytki drukowanej sterownika od strony druku (od spodu) dostępny jest tutaj. Odbicie lustrzane płytki można pobrać tutaj, natomiast podczas lutowania płytki od strony elementów (od góry) z pewnością przyda się schemat montażowy dostępny tutaj. Montowanie płytki od strony druku (od spodu) warto oprzeć o rysunek dostępny tutaj. Lutowanie płytki należy rozpocząć od złącz GP2 i GP3, które mają być wlutowane od strony druku. Należy przy tym zachować szczególną uwagę aby listwa goldpin została zamontowana prostopadle do płytki i na tej samej wysokości.
Kup Teraz! - Płytki, Elementy, uC …Pokaż Cennik Pokaż na Allegro
Przed włożeniem złącza można delikatnie pokryć cyną wszystkie pola lutownicze aby ułatwić montaż. W dalszej kolejności warto przejść od trzech zworek oznaczonych na schemacie montażowym jako "zw", po czym montujemy wszystkie rezystory i małe kondensatory. Pozostałe elementy mogą być przylutowane w dowolnej kolejności, zwracając uwagę na fakt, iż pod układy U1 oraz U3 warto zastosować podstawki.

Widok płytki drukowanej wyświetlacza od strony druku (od spodu) dostępny jest tutaj, natomiast jej odbicie lustrzane można znaleźć tutaj. Rysunek dostępny tutaj z pewnością przyda się podczas lutowania płytki od strony druku (od spodu), natomiast podczas lutowania od strony elementów (od góry) z pewnością przyda się rysunek dostępny tutaj. Montaż w tym przypadku należy rozpocząć od strony elementów, lutując najpierw trzy zworki, potem rezystory i diody a na końcu pozostałe elementy. Złącza szufladkowe GP2 i GP3 montujemy na samym końcu. Lampy Nixie V3 i V4 oraz wskaźniki neonowe V1 (NEON) i V2 montowane są od strony druku. Nie zaleca się tutaj lutowania lamp bezpośrednio w płytkę, a montaż w podstawkach. Podstawki należy wykonać samodzielnie wyciągając pojedyncze piny z podstawek precyzyjnych pod układy scalone. Takie rozwiązanie pozwoli na precyzyjne ustawienie lamp i neonówek względem siebie, a także pozwoli na łatwą wymianę lampy w przypadku jej zniszczenia.

Programowanie:

Program został napisany w dobrze znanym programie BASCOM AVR . Zajmuje on około 30% dostępnej pamięci mikrokontrolera. Poniżej przedstawione są jedynie ciekawe fragmenty programu.

Poniżej przedstawiona została pętla główna:
Do
'****************************
  If F4ms = 1 Then
    F4ms = 0
    Gosub ShowMux
    Gosub Switches
  End If
'********************************
  If F500ms = 1 Then
    F500ms = 0
    Reset Watchdog
    Toggle BlinkState
    If MenuPos=0 Then Gosub ReadRTC
  End If
'********************************
  If F200ms = 1 Then
    F200ms = 0
    
    Select Case MenuPos
      Case 0:
       'Normal displaing, time and  temperature....
        Incr AnCounter
        If AnCounter > AnDelay Then
          Incr AnScreen
          If AnScreen >5 Then AnScreen=1
          AnCounter=0
        End If
        Select Case AnScreen
          Case 1:
            DispEna=1
            PresVal=TimeH
            NeonL=1 : NeonR=0
            AnDelay=5'*200ms
          Case 2:
            DispEna=1
            PresVal=TimeM
            NeonL=0 : NeonR=1
            AnDelay=5'*200ms
          Case 3:
            DispEna=1
            PresVal=TimeS
            NeonL=0 : NeonR=0
            AnDelay=15'*200ms
          Case 4:
            DispEna=0
            NeonL=0 : NeonR=0
            AnDelay=3'*200ms
          Case 5:
            DispEna=1
            Hi = T Mod 10
            If Hi >= 5 Then NeonR=1 Else NeonR=0
            NeonL=0
            Hi = T/10
            PresVal=Hi
            AnDelay=20'*200ms
        End Select
      Case 1:
       'Hour settings
        AnCounter=0 : AnScreen=0 : AnDelay=0
        DispEna=1
        PresVal=TimeH
        NeonR=0
        NeonL=BlinkState
      Case 2:
       'Minutes Setting
        AnCounter=0 : AnScreen=0 : AnDelay=0
        DispEna=1
        PresVal=TimeM
        NeonR=BlinkState
        NeonL=0
    End Select
    
  End If
'********************************
Loop
End
Pętla główna taktowana jest za pomocą trzech zmiennych/flag co 4ms, 200ms i 500ms, ustawianych w procedurze obsługi przerwania timera. Gdy flaga F4ms przyjmuje wartość 1 program przechodzi do procedury multipleksowania wyświetlacza i obsługi klawiatury. Co każde 500ms resetowany jest licznik watchdog'a, a jeśli zegar nie jest w trybie ustawień to odczytywany jest także aktualny czas z układu RTC. Co 200ms, po ustawieniu flagi F200ms, modyfikowana jest treść do wyświetlania na lampach, gdyż czas i temperatura muszą być wyświetlane w sposób sekwencyjny. Podczas normalnej pracy zegara zmienna MenuPos jest równa 0. Za poprawną obsługę sekwencyjnego wyświetlania czasu i temperatury odpowiadają zmienne: AnCounter, AnDelay, AnScreen. Pierwsza z nich odlicza czas wyświetlania kolejnego "ekranu" (AnDelay), którego numer przechowywany jest w zmiennej AnScreen. W efekcie ekrany wyświetlane są sekwencyjnie na czas AnDelay. W zależności od aktualnej wartości zmiennej AnScreen, za pomocą instrukcji case, ustawiane jest to co ma być aktualnie pokazane na wyświetlaczu. Zmienna DispEna pozwala wygasić wyświetlacz, bez konieczności modyfikowania jego aktualnej wartości w zmiennej PresVal. Piny NeonL i NeonR odnoszą się bezpośrednio do stanów obu neonówek.

W trybie ustawień, gdy zmienna MenuPos jest równa 1 lub 2, możliwe jest ustawienie godzin i minut. Aby zasygnalizować moment ustawień, NeonL miga przy ustawianiu godzin a NeonR przy ustawianiu minut, sekundy zawsze są zerowane przy wyjściu z menu ustawień czasu.

Procedura multipleksowania przedstawiona została poniżej:
ShowMux:
  Incr Mux
  If Mux = 5 Then Mux = 0

  Select Case Mux
    Case 0:
      CathState = PresVal Mod 10
      If DispEna=0 Then CathState=10
      Gosub SetCathodes
      Set A1
    Case 1:
      Reset A1
    Case 2:
      CathState = PresVal / 10
      If DispEna=0 Then CathState=10
      Gosub SetCathodes
      Set A2
    Case 3:
      Reset A2
      Gosub Temp
   'Case 4: 'Dummy case to get more time for DS18B20
      
  End Select
Return
Multipleksowanie wyświetlacza odbywa się co 4ms. Każde wejście do procedury zwiększa cyklicznie licznik Mux w zakresie 0 - 4. Dla Mux=0 stan katod wyświetlacza przyjmuje wartość odpowiadającą cyfrze jedności aktualnie prezentowanych danych, po czym włączana jest anoda odpowiedniej lampy. Dla kolejnej wartości zmiennej Mux, ze względu na dużą bezwładność lamp, następuje jedynie wyłączenie anody pierwszej lampy. W przypadku Mux = 1 oraz Mux = 2 sytuacja jest analogiczna, z tym że bezpośrednio po wygaszeniu drugiej lampy program skacze jeszcze do procedury pomiaru temperatury. Ostatnia wartość zmiennej Mux stanowi jedynie opóźnienie, potrzebne na pomiar temperatury.

Sposób ustawiania stanów na katodach przedstawiono poniżej:
SetCathodes:
  Portb = Portb and &B00111000 : Portc = Portc and &B11000111 : Portd = Portd and &B00001111
  Select Case CathState
    Case 0: Portd.6 = 1
    Case 1: Portd.5 = 1
    Case 2: Portb.0 = 1
    Case 3: Portd.4 = 1
    Case 4: Portb.7 = 1
    Case 5: Portb.6 = 1
    Case 6: Portc.3 = 1
    Case 7: Portc.4 = 1
    Case 8: Portc.5 = 1
    Case 9: Portd.7 = 1
  End Select
Return
Na pierwszy rzut oka metoda ustawiania stanów dla katod wygląda bardzo brutalnie, jest jednak wymagana ze względu na rozłożenie wyjść po wszystkich portach mikrokontrolwera. W zasadzie jest to najprostsza z metod z punktu widzenia ilości operacji logicznych. Na początku wszystkie wyjścia katod wyświetlacza są zerowane za pomocą odpowiednich operacji AND, po czym ustawiana jest jedna wybrana katoda za pomocą instrukcji case.

Ustawienia Fusebitów:

Wersje Oprogramowanie uC:

  • 0.95 - Pierwsza wersja jaka ma pełną funkcjonalność. Zegar działa a wszystkie jego funkcje są oprogramowane. Wyświetlanie danych jest sekwencyjne: Godziny, minuty, sekundy a następnie temperatura.

Obsługa:

Obsługa zegara jest banalnie prosta i odbywa się za pomocą trzech przycisków (+, Menu, -). Naciśnięcie przycisku Menu (SW2) powoduje wejście do ustawień czasu, a dokładniej do ustawiania godzin. Miga wtedy neonówka po lewej stronie wyświetlacza, a przyciskami + (SW3) oraz - (SW1) dokonujemy nastaw. Ponowne naciśnięcie Menu przechodzi do ustawień minut (miga neonówka po prawej stronie wyświetlacza), natomiast trzecie naciśnięcie wychodzi z trybu ustawień i zeruje licznik sekund.

Podczas normalnego sekwencyjnego wyświetlania czasu i temperatury neonówki V1 i V2 pozwalają na lepszą interpretację wskazań na wyświetlaczu zegara. Sekwencja jest następująca:
  • Godziny, świeci neonówka z lewej (około 1s)
  • Minuty, świeci neonówka z prawej (około 1s)
  • Sekundy, nie świeci żadna neonówka (około 3s)
  • Przerwa (około 0.6s)
  • Temperatura, neonówka z prawej oznacza +0.5 stopnia (około 4s)

Zdjęcia Projektu:

Wykaz Elementów:

Elementy Nixie:
Elementy Sterownika:

Załączniki:

Projekt Płytki:
AB AB AB Płytka Sterownika (strona druku,termotransfer) 25.8 kB
AB AB AB Płytka Nixie (strona druku,termotransfer) 35.7 kB
AB AB AB Płytka Nixie (strona druku,odbicie lustrzane) 36.0 kB
AB AB AB Płytka Sterownika (strona druku,odbicie lustrzane) 25.9 kB
AB AB AB Płytka Sterownika (strona druku, kilka na stronie, termotransfer) 134.7 kB
AB AB AB Płytka Nixie (strona druku, kilka płytek na stronie, termotransfer) 214.0 kB
AB AB AB Montowanie Sterownika (strona elementów) 44.2 kB
AB AB AB Montowanie Nixie (strona elementów) 69.5 kB
AB AB AB Montowanie Sterownika (strona druku) 38.3 kB
AB AB AB Montowanie Nixie (strona druku) 58.3 kB
AB AB AB Warstwa Opisowa Sterownika (strona elementów) 63.8 kB
AB AB AB Warstwa Opisowa Nixie (strona elementów) 113.2 kB
AB AB AB Warstwa Opisowa Nixie (strona druku) 19.3 kB
AB AB AB Warstwa Opisowa Sterownika (strona druku) 13.9 kB
AB AB AB Soldermaska Sterownika (strona druku) 53.0 kB
AB AB AB Soldermaska Nixie (strona druku) 89.8 kB
Dokumentacja:
AB AB AB Schemat Ideowy Sterownika 141.6 kB
AB AB AB Schemat Ideowy Nixie 110.8 kB
AB AB AB Lista Elementów Sterownika 1.2 kB
AB AB AB Lista Elementów Nixie 824 B
AB AB AB Lista Montażowa Nixie 981 B
AB AB AB Lista Montażowa Sterownika 1.2 kB
Programowanie:
AB AB AB Kod Źródłowy (BASCOM-AVR) 8.1 kB
AB AB AB Program wynikowy (BIN BASCOM-AVR) 2.5 kB
AB AB AB Program wynikowy (HEX) 7.1 kB
AB AB AB Ustawienia Fusebitów (burn-o-mat) 12.1 kB
Pozostałe:
AB AB AB Przewodnik Wierceń Sterownika 11.7 kB
AB AB AB Przewodnik Wierceń Nixie 12.7 kB

Pytania i Komentarze:

comments powered by Disqus


Listopad 15, 2017
Uniwersalna przetwornica na LM2576 już opisana...
Więcej …
Marzec 23, 2017
Zegar Nixie z termoemtrem został ukończony
Więcej …
Więcej nowinek …

mirley.net
Polecane Strony