Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zegarek NIXIE Pomysł. Czy da się prosto przerobić zegar binarny?

mkpl 28 Jun 2007 23:02 3225 15
  • #1
    mkpl
    Level 37  
    Witam
    Czy da sie jakoś prosty sposób przerobić zegar binarny z tematu https://www.elektroda.pl/rtvforum/topic648151-0.html tak aby jako wyświetlacze pracowały lampy nixie. Jeśli by tak podpiąć sygnały sterujące katodami diod do dekodera 74141 a anody sterować za pomocą transoptorów... Dobrze myśle?
    Pozdrawiam
    mkpl
  • Helpful post
    #2
    mariuz
    Level 31  
    Znaczy sie chodzi ci o neonówki?

    No to w sumie czemu nie :D Fajne by było
  • #3
    mkpl
    Level 37  
    Nie tyle neonówki co nixie gdzie liczbę zapala sie zwierając odpowiednia katodę do masy. I dlatego do sterowania katodami chce zastosować 74141 czyli dekoder bcd 1z10. Tylko jeszcze nie mam za bardzo pomysłu jak sterować anodami no i czy wogóle to zadziala....
  • #4
    oj
    Level 42  
    Do tego zegarka binarnego z linku nie da się (bez zmian programowo- sprzętowych) podłączyć dekoderów 74141, trzeba to zrobić od początku.

    A jak ten kod zegarka BCD ma być wyświetlany, bo .. nie wiem, czy na 20 lampach, która każda wyświetli tylko 0 lub 1
  • #5
    mariuz
    Level 31  
    No mi też jakoś to sie nie widzi na lampkach nixie... Weź te neonówki :D

    I przedstaw anm konkretnie jakby miał wyglądać binarny z nixami... bo nie moge tego sobie wyobrazić
  • #6
    mkpl
    Level 37  
    Juz zamieszczam schemacik:D W sumie chodzi tutaj oto że chce wykorzystać ten procek i program bo z programowaniem u mnie jeszcze kiepsko :P do czego przyznaje sie bez bicia a ten zegarek już kiedyś robiłem i teraz wala sie mi po szufladzie.:D Dlatego mam nadzieje że uda się coś z tego wycisnać.:D
  • #7
    mariuz
    Level 31  
    A to powiedz że klasyczny :D

    Bo ja myślałem że chcesz binarny robić :P

    Na szybko patrząc to układ w porządku, tylko soft porządny żeby był :P
  • #8
    mkpl
    Level 37  
    Soft powinien dać rade tylko zastanawiam sie jak uprościć sterowanie anodami bo z tego co widziałem w dużej większości projektów lampa jest wybierana przez wystawienie 1 na porcie procka a w moim programie jest odwrotnie czyli wszędzie sa 1 a wybieranie następuje przez 0. Jak to rozwiazać ??
    Bo prościej chyba było by zrobić odpowiedni układ albo zmienić w sofcie tylko w którym miejscu.:idea:
  • #9
    mariuz
    Level 31  
    rozwiązanie sprzętowe:
    ULN 2803 / ULN2003
    Inwerter z max obciążeniem 500mA ;)

    Programowo, to nie chce mi sie szukać programu :P
    Z resztą pewnie i tak bym nie zrozumiał...
  • #10
    mkpl
    Level 37  
    A może transoptorem z wbudowanym tranzystorem pnp tylko czy takie wogóle istnieja.... A co do programu to wydaje mi sie ze za konfiuracje portów odpowiada ten kawałek programu:
    
    
    Config Portd = 255
            Portd = &B255
    Config Portc = &B0000000
            Portc = &B0000000
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    

    tylko co tu zmodyfikować?
  • #11
    mariuz
    Level 31  
    Coś jednak zrozumiałem :D

    Myśłałem, że to w C albo w ASM :P

    Configa nie zmieniasz

    
    wyswietlamy
    Wyswietl = Uniwersalny And &B111
    Portc = &B0000000
    
    Select Case Wyswietl                                        ' obsluga wyswietlacza
    
    Case 1:                                                     ' wyswietl zawart. licznika jedn min
    Portd = Lookup(sekjed , Tabela )
    Portc.0 = 1
    
    Case 2:                                                     ' zawart licz. dzies min
    Portd = Lookup(sekdzies , Tabela)
    Portc.1 = 1
    
    Case 3:                                                     ' jedn godz
    Portd = Lookup(minjed , Tabela)
    Portc.2 = 1
    'Portb.4 = Migaj
    
    Case 4:                                                     ' dzies godz
    Portd = Lookup(mindzies , Tabela)
    Portc.3 = 1
    
    Case 5:
    Portd = Lookup(godzjed , Tabela)
    Portc.4 = 1
    
    Case 6:
    Portd = Lookup(godzdzies , Tabela)
    Portc.5 = 1
    


    Tu trzeba zamienić :P


    Portc = &B0000000

    na
    Portc = &B1111111
    <==czy jakoś tak (ma wszystkie linie ustawić na "1"

    Portc.0 = 1

    i wszystkie procz "migaj" zamieniasz na
    Portc.0 = 0


    Ale nie jestem na 100%pewny wiec robisz na wlasne ryzyko ;)
  • Helpful post
    #12
    oj
    Level 42  
    Czyli ma to być zegar standartowy wykorzystuący ten program.

    Jako sterowanie Anod nixie zastosuj standartowe rozwiązanie z dwoma tanzystorami wysokonapięciowymi; n-p-n przy porcie procesora, p-n-p sterowanie Anod, programowo zanegować port.

    Lub przez transoptory wysokonapięciowe TLP 627-1 , 2 , lub 4

    Katody przez 74141
  • #13
    mkpl
    Level 37  
    Transoptory wydają mi sie najlepsze. A sterowanie będzie takie samo jak przy tranzystorach?:D Czy trzeba będzie modyfikować program? i co dopisać do programu aby otrzymać sygnał do dwukropka?
  • #14
    oj
    Level 42  
    Sterowanie jest takie samo, oszczędza się tylko miejsce na płytce.

    Oczywiście wstawiając cztero-nóżkowego transoptora TLP627, nie jest potrzebny tranzystor p-n-p, tak jak jest narysowane na schemacie.

    Sekundy zrób na procie: Portb.4; zobacz w źródle programu

    Sterowanie kropek: tranzystor n-p-n, MPSA 42, baza do portu Portb.4 przez rezystor 4k7, emiter na masie. W kolektorze neonówka/i przez rezystor szeregowy do +170V.

    PortD >>> wejścia BCD 74141 , zanegować programowo
  • #15
    mkpl
    Level 37  
    Więc do sterowania wystarczy sam transoptor? to nawet dobrze się składa.:D tylko dlaczego w standardowym sterowaniu lampami steruje tranzystor pnp?
    Co do negacji wyjść BCD to ta funkcja jest juz w programie tylko nie wiem jak ta funkcje właczyć
    
    Tabela:
    'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9                      'w negatywie
    Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246       ' w pozytywie
    

    Jakie rezystory zastosować miedzy prockiem a transoptorem?:?:
    Zastanawiam sie też nad przetwornica do zasilania lamp. Jaką byście mi polecili?:?: na ne555 czy na MC34065 ??
    Czy moge zamiast kwarcu 16MHz zastosować inny tzn 8MHz lub 4MHz?:?: i w którym miejscu to sie ustawia.:?:
    Prosił bym też o sprawdzenie poprawności programu.:D
    
    'zegar binarny joboo
    
    $regfile = "m8def.DAT"
    $crystal = 16000000
    
    Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte
    Dim Godzjed As Byte , Godzdzies As Byte , wyswietl As Byte , Migaj As Bit , Uniwersalny As Byte
    
    Config Portd = 255
            Portd = &B255
    Config Portc = &B0000000
            Portc = &B0000000
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    
    Config Timer0 = Timer , Prescale = 64
    Config Timer1 = Timer , Prescale = 256
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    On Timer0 Co4ms
    On Timer1 Co1s
    Sekjed = 9 : Sekdzies = 5 : Minjed = 9 : Mindzies = 5 : Godzjed = 3 : Godzdzies = 2
    Uniwersalny = 6 : Maxi = 100
    
    Do
    Loop
    End
    
    
    
    Co1s:                                                       ' przerwanie co 1 sek
    Timer1 = 3036
    Incr Sekjed
    Toggle Migaj
    Return
    
    Co4ms:                                                      'przerwanie co 4 mili sek
    Decr Uniwersalny                                            'obsluga wyswietlaczy i przyciskow
    If Pinb.3 = 0 And Pinb.2 = 1 Then                           'przycisk s1 nacisniety
       If Uniwersalny = 0 Then
       Uniwersalny = Maxi : Incr Minjed : Sekjed = 0 : Sekdzies = 0
       Maxi = Maxi - 8
       If Maxi < 8 Then Maxi = 8                                'coraz szybciej
       End If
       End If
    
    If Pinb.2 = 0 And Pinb.3 = 1 Then                           'przycisk s2nacisniety
       If Uniwersalny = 0 Then
       Uniwersalny = Maxi : Incr Godzjed
       Maxi = Maxi - 8                                          'coraz szybciej
       If Maxi < 12 Then Maxi = 12
       End If
    Else                                                        'oba nacisniete lub zwolnione
    If Uniwersalny = 0 Then
    Uniwersalny = 6
    Maxi = 100
    End If
    End If
    
    'co 4ms korygujemy stany licznikow
    If Sekjed = 10 Then
    Sekjed = 0
    Incr Sekdzies
    End If
    
    If Sekdzies = 6 Then
    Sekdzies = 0
    Incr Minjed
    End If
    
    If Minjed = 10 Then
    Minjed = 0
    Incr Mindzies
    End If
    
    If Mindzies = 6 Then
    Mindzies = 0
    Incr Godzjed
    End If
    
    If Godzjed = 10 Then
    Godzjed = 0
    Incr Godzdzies
    End If
    
    ' co 4ms sprawdzamy czy nie jest polnoc jesli tak skracamy cykl
    
    If Godzdzies = 2 And Godzjed = 4 Then
    Godzdzies = 0
    Godzjed = 0
    End If
    
    'wyswietlamy
    Wyswietl = Uniwersalny And &B111
    Portc = &B1111111
    
    Select Case Wyswietl                                        ' obsluga wyswietlacza
    
    Case 1:                                                     ' wyswietl zawart. licznika jedn min
    Portd = Lookup(sekjed , Tabela )
    Portc.0 = 0
    
    Case 2:                                                     ' zawart licz. dzies min
    Portd = Lookup(sekdzies , Tabela)
    Portc.1 = 0
    
    Case 3:                                                     ' jedn godz
    Portd = Lookup(minjed , Tabela)
    Portc.2 = 0
    'Portb.4 = Migaj
    
    Case 4:                                                     ' dzies godz
    Portd = Lookup(mindzies , Tabela)
    Portc.3 = 0
    
    Case 5:
    Portd = Lookup(godzjed , Tabela)
    Portc.4 = 0
    
    Case 6:
    Portd = Lookup(godzdzies , Tabela)
    Portc.5 = 0
    
    End Select
    Return
    
    Tabela:
    'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9                      'w negatywie
    Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246       ' w pozytywie
    
  • #16
    mariuz
    Level 31  
    $crystal = 16000000 

    Rezystory do transoptorów - sprawdz w nocie katalogowej maksymalny prad i wylicz... pewnie wyjdzie miedzy 330 a 680...

    
    Tabela:
    'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9                      'w negatywie
    Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246       ' w pozytywie 
    
    


    zamieniasz na

    
    
    Tabela:
    Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9