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

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

yaceq8 15 Sty 2014 21:45 2349 16
REKLAMA
  • #1 13181275
    yaceq8
    Poziom 10  
    Posty: 55
    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 / 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?
    Załączniki:
    • dol.pdf (22.05 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 13181592
    eleproject

    Poziom 17  
    Posty: 168
    Pomógł: 20
    Ocena: 11
    Jakie masz te tranzystory? Naturalnie, rozumiem, że załączasz daną cyfrę (tranzystor) stanem niskim?
    Konto firmowe:
    ELEPROJECT Michał Grochowina
    Gen. W. Andersa, Zabrze, 41-808 | Tel.: +48 XXX XXX XXX (Pokaż) | Strona WWW: https://www.eleproject.pl
  • #3 13181615
    yaceq8
    Poziom 10  
    Posty: 55
    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.
  • #4 13181620
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Witaj.

    Dlaczego trzech?

    Kod: C / 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.
  • REKLAMA
  • #5 13181717
    yaceq8
    Poziom 10  
    Posty: 55
    dondu napisał:

    Dlaczego trzech?
    Kod: C / 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.
  • #7 13181977
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    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]);
  • #8 13182170
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #9 13183447
    yaceq8
    Poziom 10  
    Posty: 55
    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
    #10 13183877
    Konto nie istnieje
    Poziom 1  
  • #11 13185447
    eleproject

    Poziom 17  
    Posty: 168
    Pomógł: 20
    Ocena: 11
    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.
    Konto firmowe:
    ELEPROJECT Michał Grochowina
    Gen. W. Andersa, Zabrze, 41-808 | Tel.: +48 XXX XXX XXX (Pokaż) | Strona WWW: https://www.eleproject.pl
  • REKLAMA
  • #12 13187259
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    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.
  • #13 13199693
    yaceq8
    Poziom 10  
    Posty: 55
    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.
  • #14 13200709
    eleproject

    Poziom 17  
    Posty: 168
    Pomógł: 20
    Ocena: 11
    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?
    Konto firmowe:
    ELEPROJECT Michał Grochowina
    Gen. W. Andersa, Zabrze, 41-808 | Tel.: +48 XXX XXX XXX (Pokaż) | Strona WWW: https://www.eleproject.pl
  • #15 13200783
    yaceq8
    Poziom 10  
    Posty: 55
    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ąć.
  • #16 13200862
    eleproject

    Poziom 17  
    Posty: 168
    Pomógł: 20
    Ocena: 11
    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 :]
    Konto firmowe:
    ELEPROJECT Michał Grochowina
    Gen. W. Andersa, Zabrze, 41-808 | Tel.: +48 XXX XXX XXX (Pokaż) | Strona WWW: https://www.eleproject.pl
  • #17 13200903
    yaceq8
    Poziom 10  
    Posty: 55
    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 ;)

Podsumowanie tematu

✨ Użytkownik zgłasza problem z niską jasnością czterech wyświetlaczy 7-segmentowych z wspólną anodą, sterowanych przez tranzystory PNP. Po podłączeniu anod bezpośrednio do zasilania, jasność wzrasta, co sugeruje, że problem leży w zasilaniu przez porty mikrokontrolera Atmega8A. Użytkownik stosuje rezystory 1k oraz 100R dla segmentów, a wyświetlacze wymagają 10mA. W dyskusji poruszono kwestie związane z napięciem zasilania, prądem przez diody, a także sugerowano użycie tranzystorów P-MOSFET oraz przetwornic STEP-UP dla poprawy wydajności. Użytkownik rozważa zmianę wyświetlaczy na mniejsze oraz zastosowanie LCD z ograniczonym poborem prądu.
Wygenerowane przez model językowy.
REKLAMA