Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega8 - Wyświetlacze słabo świecą przy multipleksowaniu

15 Sty 2014 21:45 2022 16
  • Poziom 10  
    Dobry wieczór!
    Mam mały problem podczas multipleksowania czterech wyświetlaczy 7-segmentowych. Mają one wspólną anodę. Steruję je przez tranzystory PNP przez którymi daję jeszcze oporniki 1k. Nie będę dalej tego opisywał - schemat w załączniku.
    Sterowanie odbywa się przez WYSW3. Przez WYSW i WYSW2 podłączone są poszczególne segmenty wyświetlaczy na osobnej już płytce. Przed każdym znajduje się opornik 100R.
    W chwili obecnej podłączony jest omawiany wyświetlacz, programator, termometr (na razie na PB1) oraz klawiatura wykorzystująca ADC (pod PC5).
    Problem polega na tym, że wyświetlacze świecą słabiej niż mogą. Jak testowo pominę tranzystor i podepnę anodę jednego z wyświetlaczy bezpośrednio do zasilania (4,8V) wtedy wyświetlacz świeci o wiele mocniej. Także gdy zamiast do portu (np. PC0) podepnę opornik do masy, wtedy również wyświetlacz świeci mocnej. Jednak przy podłączeniu do portów PCx wyświetlacze nie świecą pełną mocą.
    Steruje nimi następujący kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Do wysw[x] w innym przerwaniu wpisywane są cyfry, które aktualnie mają być wyświetlone.
    Co może tutaj być problemem?
  • Poziom 10  
    Tak jest, stanem niskim co widać w kodzie. Najpierw wyłączam wszystkie wyświetlacze poprzez ustawienie stanu wysokiego na bity 0..3 portu PC (LEDY to PC), potem pobieram cyfrę do wyświetlenia, wyświetlam na porcie D (tutaj segmenty podpięte) a następnie ustawiam stan niski tylko na jeden pin PC. Zwiększam licznik whichLed żeby kolejnym razem zapalił się kolejny wyświetlacz.
    Tranzystory to BC556B.
  • Moderator Mikrokontrolery Projektowanie
    Witaj.

    Dlaczego trzech?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    w ten sposób zostawiasz dwa, a nie trzy bity, co jet prawidłowo oczywiście, ale komentarz zły :)


    yaceq8 napisał:
    Także gdy zamiast do portu (np. PC0) podepnę opornik do masy, wtedy również wyświetlacz świeci mocnej. Jednak przy podłączeniu do portów PCx wyświetlacze nie świecą pełną mocą.

    Zapoznaj się z tym: http://mikrokontrolery.blogspot.com/2011/03/datasheet-mikrokontroler-prady-pinow.html
    i policz jak jest w Twoim przypadku, bo nie wiemy jakie dokładnie wyświetlacze stosujesz.

    Zmierz proszę napięcie na pinie zasilającym mikrokontroler w trakcie pracy układu z zasilania zewnętrznego.

    BTW: Ten mikrokontroler w tej wersji nie może pracować z napięciem 3V.
  • Poziom 10  
    dondu napisał:

    Dlaczego trzech?
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Mój błąd w komentarzu, oczywiście 2 ostatnich bitów powinno być napisane.

    dondu napisał:

    yaceq8 napisał:
    Także gdy zamiast do portu (np. PC0) podepnę opornik do masy, wtedy również wyświetlacz świeci mocnej. Jednak przy podłączeniu do portów PCx wyświetlacze nie świecą pełną mocą.

    Zapoznaj się z tym: http://mikrokontrolery.blogspot.com/2011/03/datasheet-mikrokontroler-prady-pinow.html
    i policz jak jest w Twoim przypadku, bo nie wiemy jakie dokładnie wyświetlacze stosujesz.

    Wyświetlacze stosuję takie: http://www.artronic.com.pl/o_produkcie.php?id=927 Potrzebują 10mA.
    Wydaje mi się, że wszystko u mnie w porządku. Segmenty podłączone mam pod port PD - 200mA tam nie przekraczam. Na porcie PC 100mA też nie.

    dondu napisał:

    Zmierz proszę napięcie na pinie zasilającym mikrokontroler w trakcie pracy układu z zasilania zewnętrznego.

    Napięcie na VCC wynosi ok 4,5V.

    dondu napisał:

    BTW: Ten mikrokontroler w tej wersji nie może pracować z napięciem 3V.

    W projekcie używam Atmegę8A, na schemacie jest tylko zaznaczona starsza wersja.
  • Specjalista - Mikrokontrolery
    1. Jaka jest częstotliwość procesora, a jaka przerwań timera?

    2. Jak wygląda funkcja read_number() ?

    3. Spróbuj zamienić kolejność tych dwóch linii:
    LEDY |= 0x0F; //wyłączenie wszystkich wyświetlaczy
    tmp= (wysw[whichLed]);
  • Poziom 36  
    yaceq8 napisał:

    Wyświetlacze stosuję takie: http://www.artronic.com.pl/o_produkcie.php?id=927 Potrzebują 10mA.


    Problem jest w tym, że niemasz możliwości osiągnąc te 10mA
    Zasilanie masz a poziomie5V lub mniej; od tego odejmij 0.7V na tranzystor; chociaż nie masz limitujących rezystorów w obwodzie segmentów (?), to i tak te 4.3 V jest za mało.
    Datasheet pokazuje że masz po trzy diody szeregowo/segment. Czerwone diody mają przeważnie od 1.63 do 2.02V (Vf) każda.
    Obrachuj sam jaki prąd możesz uzyskac. Napewno daleko od szukanych 10 mA

    To są duże wyświetlacze i potrzebują byc zasilane z wyższego napięcia, tak aby po odliczeniu spadków napięc na diodach i elementach załączających pozostało jeszcze troche voltów na ustalenie wymaganego prądu rezystorami, biorąc pod uwagę multiplexing. Prawdopdobnie będziesz potrzebował dodac ULNxxx w obwód kathod (segmentów) i całośc zasilic co najmniej 9 V.

    e marcus
  • Poziom 10  
    emarcus napisał:
    chociaż nie masz limitujących rezystorów w obwodzie segmentów (?)

    Mam takie rezystory, ale tak jak napisałem w pierwszym poście - są one na osobnej płytce razem z wyświetlaczami. Każdy ma po 100R.

    emarcus napisał:

    Datasheet pokazuje że masz po trzy diody szeregowo/segment. Czerwone diody mają przeważnie od 1.63 do 2.02V (Vf) każda.
    Obrachuj sam jaki prąd możesz uzyskac. Napewno daleko od szukanych 10 mA

    To są duże wyświetlacze i potrzebują byc zasilane z wyższego napięcia, tak aby po odliczeniu spadków napięc na diodach i elementach załączających pozostało jeszcze troche voltów na ustalenie wymaganego prądu rezystorami, biorąc pod uwagę multiplexing. Prawdopdobnie będziesz potrzebował dodac ULNxxx w obwód kathod (segmentów) i całośc zasilic co najmniej 9 V.

    e marcus

    No tak, nie zwróciłem totalnie uwagi, że tam są 3 diody. :(
    Nie bardzo chcę stosować 9V w tym projekcie, dlatego pewnie zamienię te wyświetlacze na mniejsze, zawierające tylko jedną diodę w segmencie. Wtedy powinny już świecić prawidłowo z takim układem jaki przedstawiłem?
    W ogóle cały układ miał być zasilany 4x aku AA, czyli 4,8V. Ale teraz zaczynam się zastanawiać jak długo takie akumulatorki będą w stanie zasilać wyświetlacze. Jeżeli patrzeć tylko na prąd przez nie pobierany to wychodzi 7x10mA na wyświetlacz dając 70mA. Razy 4 to już 280mA. Przy zastosowaniu aku 2800mAh wszystko będzie działać tylko ok... godziny? Czy totalnie źle to liczę? Pomijam na razie mikrokontroler i inne układy.

    BlueDraco napisał:
    1. Jaka jest częstotliwość procesora, a jaka przerwań timera?

    2. Jak wygląda funkcja read_number() ?

    3. Spróbuj zamienić kolejność tych dwóch linii:
    LEDY |= 0x0F; //wyłączenie wszystkich wyświetlaczy
    tmp= (wysw[whichLed]);

    1. 1MHz
    2. Ta funkcja tylko odczytuje z tablicy które segmenty należy zaświecić aby wyświetliła się dana cyfra. Podam jak wygląda jak tylko do domu wrócę.

    dondu napisał:
    Zmierz jaki prąd płynie przez włączoną w tym układzie jedną diodę dowolnego z wyświetlaczy podczas, gdy nie ma multipleksowania.

    Jak tylko wrócę do domu to zmierzę. Chociaż chyba odpowiedź już dostałem dlaczego tak słabo świecą :(
  • Pomocny post
    Poziom 36  
    yaceq8 napisał:

    Nie bardzo chcę stosować 9V w tym projekcie, dlatego pewnie zamienię te wyświetlacze na mniejsze, zawierające tylko jedną diodę w segmencie. Wtedy powinny już świecić prawidłowo z takim układem jaki przedstawiłem?
    W ogóle cały układ miał być zasilany 4x aku AA, czyli 4,8V. Ale teraz zaczynam się zastanawiać jak długo takie akumulatorki będą w stanie zasilać wyświetlacze. Jeżeli patrzeć tylko na prąd przez nie pobierany to wychodzi 7x10mA na wyświetlacz dając 70mA. Razy 4 to już 280mA. Przy zastosowaniu aku 2800mAh wszystko będzie działać tylko ok... godziny? Czy totalnie źle to liczę? Pomijam na razie mikrokontroler i inne układy.

    W takiej "energo-oszczędnej" sytuacji poszedłbym dalej i zastosował LCD z czasowym wyłączaniem podświetlenia, oraz kombinowanym powiększeniem cyfr.
    -np. na wyświetlaczu 2 x 16 zajmując obie linie możesz uzyskac coś takego:
    Atmega8 - Wyświetlacze słabo świecą przy multipleksowaniu
    albo taki z decimal point:
    Atmega8 - Wyświetlacze słabo świecą przy multipleksowaniu

    Potrzeba tylko troche własnej inicjatywy, resztę znajdziesz w necie.

    e marcus

  • Poziom 17  
    Wyrzuć te 100 Ohm szeregowo z tymi segmentami. Uwaga - sprawdź ile diod jest w segmencie kropki bo jeżeli tylko jedna to tu musisz mieć rezystor. Może się okazać że efekt satysfakcjonujący.
    Jeżeli układ będzie pobierał 280 mA podczas gdy pakiet ogniw ma pojemność 2800 mAh to będzie Ci układ działał 10 godzin na pełnym pakiecie.
    Możesz jeszcze zastosować tranzystory polowe P-MOSFET z małą rezystancją zastępczą Rdson zamiast tych bipolarnych PNP. Ale to jeśli masz znaczną stratę napięcia teraz na tych PNPkach. Możesz sprawdzić ile teraz masz straty napięcia włączając na stałe tylko jeden tranzystor i świecąc np. czterema segmentami cyfry.
  • Poziom 41  
    Z czterech akumulatorów Ni-MH będzie od około 5,2V do 3,6V. Musisz całkowicie zmienić sposób zasilania, np. przez przetwornicę STEP-UP.
  • Poziom 10  
    Dar.El napisał:
    Z czterech akumulatorów Ni-MH będzie od około 5,2V do 3,6V. Musisz całkowicie zmienić sposób zasilania, np. przez przetwornicę STEP-UP.

    Czyli lepszym wyjściem byłoby zastosowanie np. 2 aku AA i do tego przetwornica step-up na 5V?

    Dzięki za wszystkie odpowiedzi. Teraz już przynajmniej wiem, że takie wyświetlacze i tak nie miałyby zbytnio sensu przy akumulatorkach. Zmienię je na wyświetlacz 2x16 albo podobny jak sugerował emarcus.

  • Poziom 17  
    Możesz dać step-up tylko pamiętaj, że wtedy prąd pobierany z baterii wzrośnie i szacunkowo wynosił będzie tyle by moc na wejściu konwertera była równa mocy na wyjściu (pomijamy straty w konwerterze step-up).
    Zatem jeśli przykładowo na wyjściu masz 5 V oraz 100 mA to jeżeli na wejściu masz np. 3,5 V to prąd pobierany z baterii będzie wynosił I = 100mA x 5V / 3,5V.

    PS. A próbowałeś się pozbyć tych 100 Ochm i sprawdzić czy efekt zadowalający?
  • Poziom 10  
    No tak, czyli znowu nie jest to zbyt efektywne rozwiązanie :( Ale chyba nie ma innego, lepszego wyjścia?

    Szczerze mówiąc nie próbowałem pozbywać się tych rezystorów. Po obliczeniu tego pobieranego przez wszystkie wyświetlacze prądu i czasu pracy na akumulatorkach, totalnie takie rozwiązanie mija się z celem projektu i tego co chciałem osiągnąć.

  • Poziom 17  
    Hmm. A potrzebujesz podświetlenia? Jeżeli nie to faktycznie wrzuć LCD np. 16x2 i bez podświetlenia będzie brał kilka miliamper/kilkanaście.
    Jeżeli to nie jest projekt komercyjny, tylko jednorazowa realizacja na własne potrzeby to daj 3xAA to będziesz miał koło 4,5 V z baterii (potem mniej). Dla procka napięcie może spaść a jak niskie napięcia tolerował będzie Twój LCD możesz sprawdzić regulowanym zasilaczem. A jak to projekt komercyjny to inna bajka - trzeba to zrobić jak się patrzy...
    Zawsze możesz zrobić tak jak pisałeś - 2xAA i step-up. Albo jeszcze możesz zrobić 4xAA i stabilizator LDO na 5V albo trochę mniej jak znajdziesz, lub coś podobnego do LM317 i ustawić np. na wyjściu 4,5 V lub mniej jeśli akceptował to będzie LCD :]
  • Poziom 10  
    Nie, nie potrzebuję. Myślałem właśnie żeby podświetlenie było tylko włączane przyciskiem i działało parę sekund.
    Jak spoglądałem na specyfikacje wyświetlaczy to w prawie wszystkich pobór prądu był określony na 2mA, max 3mA. W prawdzie nie orientowałem się jeszcze jak obsługiwać taki wyświetlacz z Atmegi, ale mam cichą nadzieję, że będzie ona mogła być uśpiona przez większą część czasu ;)