logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterownik do wyświetlaczy 7-segmentowych 101mm – przebijanie segmentów przy multipleksie

KJ 02 Cze 2006 03:17 2447 6
REKLAMA
  • #1 2688579
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    Buduję sterownik do dużych wyświetlaczy 7 segmentowych (101mm) i napotkałem na nieoczekiwany problem z multipleksem. Mianowicie dane z jednego wyświetlacza "przebijają" na pozostałe objawia się to słabym świeceniem segmentów sąsiednich wyświetlaczy pomimo tego że powinny być wygaszone. Mogę się tylko domyślać że to wina zbyt wolnego wyłączania czegoś w układzie. Nie mam jednak pojęcia czego i jak się tego pozbyć. Niech ktoś zajrzy na schemat i powie jaki błąd popełniam. Dołączam schemat i program testujący (ma na celu wyświetlić cokolwiek zmieniającego się na jednym wyświetlaczu i sprawdzić Timer0) Rezystory przy tranzystorach anod zostały dobrane metodą pi razy oko = zobaczymy co będzie :D więc podejrzewam że to ich wina. Jeśli mam rację to jakie powinny być ich wartości.
    Załączniki:
    • Test1.zip (415 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
    • multi.zip (45.14 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2688743
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    KJ napisał:
    Buduję sterownik do dużych wyświetlaczy 7 segmentowych (101mm) i napotkałem na nieoczekiwany problem z multipleksem. Mianowicie dane z jednego wyświetlacza "przebijają" na pozostałe objawia się to słabym świeceniem segmentów sąsiednich wyświetlaczy pomimo tego że powinny być wygaszone. Mogę się tylko domyślać że to wina zbyt wolnego wyłączania czegoś w układzie. Nie mam jednak pojęcia czego i jak się tego pozbyć. Niech ktoś zajrzy na schemat i powie jaki błąd popełniam. Dołączam schemat i program testujący (ma na celu wyświetlić cokolwiek zmieniającego się na jednym wyświetlaczu i sprawdzić Timer0) Rezystory przy tranzystorach anod zostały dobrane metodą pi razy oko = zobaczymy co będzie :D więc podejrzewam że to ich wina. Jeśli mam rację to jakie powinny być ich wartości.


    Rezystory są niewinne, źle multipleksujesz cyfry. Najpierw zmieniasz świecącą cyfrę na porcie C, potemzmieniasz jej treść na porcie B. Tą metodą treść starej cyfry jest jeszcze aktywna na liniach portu B, a na porcie C już jest zapalona nowa cyfra, aby po chwili zmienić stan portu B na treść nowej cyfry. No i przez ten krótki czas świecią się na nowej cyfrze segmenty starej i stąd duchy.

    Na samym początku procedury obsługi przerwania timera daj rozkaz 'portb = 0' (lub 255 - chodzi o ciemne segmenty, nie pamiętam, czy ten ULN neguje stan logiczny) i problem zniknie,
  • REKLAMA
  • #3 2689736
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    Pozmieniałem soft i nadal mam przekłamania nawet przy bardzo wolnym multipleksowaniu. Przy szybszym zjawisko to się nasila.

    Jest to możliwe żeby ULN nie zdążał się całkowicie wyłączyć ?
  • REKLAMA
  • Pomocny post
    #4 2690408
    rasty
    Poziom 27  
    Posty: 734
    Pomógł: 126
    Ocena: 23
    Niektóre układy sterujące robią drobną przerwę miedzy wybieraniem cyfr. Może udało by się skorygowac program dla displaya ? Być może pomoże. :D

    pozdr.
    Załączniki:
    • Sterownik do wyświetlaczy 7-segmentowych 101mm – przebijanie segmentów przy multipleksie multiplex.gif (5.59 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #5 2690477
    dee jay G
    Poziom 26  
    Posty: 857
    Pomógł: 71
    Ocena: 41
    Nie wiem jak to wygląda od strony programowej (bo się na tym nie znam), ale wiem jedno :)
    Do każdego tranzystora (T11, T13, T15) podłącz rezystor 10k - 22k -> Między kolektor, a +12V.
    Po prostu "podciągnij" rezystorami bazy T1, T3, T5 do plusa zasilania. Będzie wtedy powność, że tranzystor zostanie wyłączony po zaniku sterowania.

    Popatrz na rysunki pod spodem (symulator)
    Wyraźnie widać, że bez tego rezystora nawet przy stanie niskim na bazie pierwszego tranzystora, przez drugi tranzystor płynie niewielki prąd.

    To nie musi być przyczyną problemu, ale na pewno nie zaszkodzi, a powinno być zastosowane.
    Załączniki:
    • Sterownik do wyświetlaczy 7-segmentowych 101mm – przebijanie segmentów przy multipleksie Rezystor podciągający.JPG (15.25 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #6 2690482
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    KJ napisał:
    Pozmieniałem soft i nadal mam przekłamania nawet przy bardzo wolnym multipleksowaniu. Przy szybszym zjawisko to się nasila.


    Czyli typowo - układ przez chwilę po zmianie cyfry podaje jeszcze na poszczególne segmenty starą cyfrę. Musisz mieć błąd w procedurze multipleksowania - kolejność musi być taka: Wygaszenie segmentów cyfry, zmiana wyświetlanej cyfry, wyświetlenie nowych segmentów mnowej cyfry.

    KJ napisał:
    Jest to możliwe żeby ULN nie zdążał się całkowicie wyłączyć ?


    Może być, nie wiem na ile jest on szybki, musisz zajrzeć do karty katalogowej. Spróbuj zrobić w ten sposób: w pierwszym przerwaniu timera wygaszasz segmenty, w drugim uaktywniasz następną cyfrę, w trzecim włączasz jej segmenty, w czwartym wygaszasz, w piątym zmieniasz na następną, w szóstym zaświecasz itd. W ten sposób każdy sterowany elemnt (i od strony anod i katod) ma czas odpoczynku równy jednemu cyklowi timera. wtedy doświadczalnie sprawdź które kroki możesz ze soba połączyć w jednym cyklu. (oczywiście we właściwej kolejności).
  • #7 2690686
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    Każde rozwiązanie problemu osobno niczego nie zmieniło podziałały dopiero wszystkie naraz :) tj. dodatkowy rezystor+odpowiednie przerwy+odpowiednia kolejność sygnałów sprawiły że nie ma już przekłamań :)

Podsumowanie tematu

✨ Problem przebijania segmentów w sterowniku dużych wyświetlaczy 7-segmentowych (101mm) podczas multipleksowania wynikał z nieprawidłowej kolejności sterowania portami i tranzystorami. Segmenty starej cyfry pozostawały aktywne chwilę po przełączeniu na nową cyfrę, co powodowało słabe świecenie sąsiednich wyświetlaczy. Rozwiązaniem było wprowadzenie w procedurze multipleksowania kolejności: najpierw wygaszenie segmentów, potem zmiana wyświetlanej cyfry, a następnie włączenie nowych segmentów. Dodatkowo zalecane było zastosowanie rezystorów podciągających (10k–22k) między kolektorami tranzystorów a zasilaniem +12V, co zapewniało pełne wyłączenie tranzystorów po zaniku sygnału sterującego. Wprowadzenie krótkich przerw między wybieraniem cyfr oraz odpowiednia kolejność sygnałów w programie wyeliminowały efekt duchów. Samo dobieranie rezystorów przy tranzystorach metodą „na oko” nie było przyczyną problemu. Wskazano także, że układ ULN może mieć opóźnienie w wyłączaniu, co wymagało uwzględnienia w sterowaniu czasowym multipleksu.
Wygenerowane przez model językowy.
REKLAMA