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

Jak połączyć ATMEGA8 z wyświetlaczem LED 7-segmentowym przez I2C?

Corcho 17 Maj 2007 10:22 5764 20
REKLAMA
  • #1 3893206
    Corcho
    Poziom 11  
    Posty: 83
    Pomógł: 2
    Ocena: 5
    Witam

    Chciałbym podłączyć do Atmega 8 wyświetlacz 4x led 7 seg.
    Ponieważ nie chciałem przez porty procesora multipleksowo sterować wyświetlaniem, żeby nie tracić portów wydumłem żeby wykożystać PCF8574AP (expander) przez złączae I2C.

    Niestety kość PCF kosztuje 3x Atmega8 :O

    W związku z tym taniej poświęcić inną Atmega8 i nią sterować LEdami chyba.

    Teraz mam tylko problem - jak to połączyć tzn. procesor z ledami - czy mogę bezpośrednio czy też za bardzo obciąże ukłąd.
    Podobno jeżeli będę multipleksowo sterował to prądowo procek wydoli.
    Jeżeli jednak ktoś robił takie rozwiązanie i ma schemat tego typu a dodatkowo np. z regulacją jasnośći ledów to bardzo proszę o udostępnienie.

    Do tego dochodzi problem komunikacji - z jakiś powodów ATMEGA nie może być slave w komunikacj I2C realizowanej sprzętowo - czy to prawda ?

    Programuje w BASCOM który obsługuje I2C więc było by wygodnie nie zajmować się przesyłaniem osobiśćie :)

    Ew. proszę o inne rozwiązanie problemu.

    Pozdrawiam
    Andrzej Gicala
  • REKLAMA
  • #2 3893257
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witaj
    Próbowałem sterować atmega8 7-segmentowym LED. Niestety zawsze procek sie uszkadza po paru minutach pracy... moze to kwestia źle napisanego programu a moze zakłóceń impulsowych. Inny problem to jasność kolejnych kości LED, mogą się różnić nieznacznie, ale to będzie widoczne niestety... Zastanów sie czy nie lepiej zastosować wyświetlacz LCD.
    Pozdrawiam
  • #3 3893303
    pubus
    Poziom 30  
    Posty: 1289
    Pomógł: 138
    Ocena: 31
    Multipleksowanie i tak cię nie minie...
    ATmega8 nie ma na tyle pinów żeby 4x7 podpiąć do niej...
    Co do prądu...
    Generalnie przy takiej liczbie ledów lepiej było by dać np ULN2003/ULN2803...
    Są natomiast wyświetlacze dla których wystarczą 2mA na segment i w takim przypadku można by podpinać bezpośrednio pod porty...
    Oczywiści nie zapominając o rezystorze na każdy segment...
    Można też obejść się bez drugiej atmegi i dać rejestry przesuwne 4094 i drivery...
    Co do komunikacji to łatwiej/szybciej będzie po SPI...
    Konfiguracja prosta, nie ma tyle "zabawy" co z I2C...
  • #4 3893526
    Corcho
    Poziom 11  
    Posty: 83
    Pomógł: 2
    Ocena: 5
    @ch.M
    Mam LCD ale cyfry nie są tak czytelne jak z leda - wiec muszę dodać jeszcze ten LED.

    @pubus

    Proszę cię o wyjaśnienie :
    Co to za kości ULN2003/ULN2803... ?
    Rejestr przesuwny - co to oznacza ?

    Co do SPI - wychodzi na to że SPI potrzebuje więcej kabelków niż I2C (tylko 2) wiec dalej blokuje sobie wyjścia z procka - a podstawowym problemem jest żeby prockowi zostało dużo we/wy .

    Pozdrawiam
  • #5 3893637
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    wielokrotnie robilem oba rozwiazania i procek nie padl tzn uzywalem PIC nie atmegi ale to chyba bez wiekszego znaczenia , multipleksowe sterowanie ma te wade , ze problem jest uzyskac jasne swiecenie led , porty laczylem poprzez oporniki ok 200 om a wspolne elektrody poprzez tranzystory .
  • #6 3893686
    Czesiek
    Poziom 28  
    Posty: 1124
    Pomógł: 99
    Ocena: 116
    Cytat:
    Co to za kości ULN2003/ULN2803... ?


    Są to drivery pozwalające włączyć obciążenia, których Atmega8 nie wytrzyma (20mA). Drivery te sterowane poziomami 0/5V na wyjściu mogą mieć podłączone np. przekaźniki na napięcie 24V i obciążenie do 500mA.[/quote]
  • #7 3895919
    pubus
    Poziom 30  
    Posty: 1289
    Pomógł: 138
    Ocena: 31
    Tak jak kolega wyżej napisał są to drivery...
    ULN2803 ma w strukturze 8 darlingtonów i nie potrzebuje zasilania a jedynie masę...
    Daje inwersję ale to nie problem...
    Po 500mA na kanał lub 1A przy łączeniu dwóch kanałów równolegle...
    ULN2003 to 7 razy darlington, tu normalnie zasilanie i masa...
    Więcej info w dokumentacji układów...
    Rejestr przesuwny w tym przypadku chodziło mi SIPO (serial input parallel output)...
    Czyli wejście szeregowe gdzie w takt zegara podajesz kolejne bity...
    Natomiast wyjście jest równoległe sterowane sygnałem strobe i enable...
    W przypadku komunikacji jednokierunkowej SPI można też ograniczyć do dwóch linii... MOSI i SCK...
  • REKLAMA
  • #8 3896439
    sanwa
    Poziom 14  
    Posty: 171
    Pomógł: 7
    Ocena: 10
    Witam
    Może troszkę nie na temat, ale nasuwa mi się takie pytanie. A może sprawdzał Autor cenę tego elementu na Allegro? No, chyba, że ktoś ma dostęp do ATMEGA8 za 1,50PLN :):). Tak na poważnie, to ceny tych elementów na Allegro są niższe niż 3XATMEGA8, a właściwie to nawet niż 1XATMEGA8.
    Pozdrawiam
    Sanwa
  • REKLAMA
  • #9 3896510
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    co do Bascoma, to żeby zrobić I2Cslave, trzeba mieć dodatkową bibliotekę ( chyba jest na elce), ale o ile pamiętam obsługuje ona tylko jeden bajt pod adresem i tak naprawdę da się zrobić bez problemów ( podobno - bo nie próbowałem) tylko emulację PCF8574. co do multipleksowego sterowania LED'ami, to nie ma się co łudzić, że sterując bezpośrednio z procka uzyska się przyzwoitą jasność. tutaj trzeba w impulsach podawać 50mA i więcej na każdy segment. inaczej będzie fajnie, ale tylko w ciemnym pomieszczeniu. trochę słońca przez okno i nic nie widać. lepiej od razu spróbować wrzucić jakiś gotowy driver do multipleksów po SPI czy I2C. na 4 wyświetlacze jest dość duży wybór ( na szybko znalazłem w TME SAA1064 - I2C, 4 cyfry, kosztuje 11,30 +VAT, proponuję poszukać jeszcze dalej, bo kiedyś szukając taniego drivera na 6 cyfr znalazłem mnóstwo obsługujących właśnie 4). przy okazji łatwiej to oprogramować, bo nie trzeba się przejmować dodatkowymi przerwaniami, co w Bascomie dość różnie wychodzi. przestrzegam też w tym przypadku przed tanimi CMOS'owymi konwerterami BCD - 7segmentów (4055, 4056, 4511, 4513 etc). mimo, ze w manualu pisze "direct LED driver" mają za małą wydajność prądową do multipleksu i trzeba je dodatkowo buforować co znakomicie komplikuje układ i często prowadzi do "zacinania się" wyjść. ta uwaga dotyczy również rejestrów przesuwających. żeby uzyskać jasność, nie obejdzie się bez buforów anod (lub katod) i segmentów. tanie rozwiązania mają to do siebie, że często nie do końca działają tak , jakbyśmy sobie tego życzyli, lub wychodzą najwyżej w tej samej cenie co drogie ( o ile nie drożej) i trzeba się przy tym sporo napracować.
    co do pytania o cenę na allegro, to koszt przesyłki, przelewu lub pobrania chyba przekracza koszt 3x Atmega8 ( dawno nie kupowałem , ale płacę po ok. 4 zł za Atmega 8535), więc lepiej zamówić sobie nawet ciut droższy element w pobliskim sklepie i i tak wyjdzie taniej.
  • #10 3897459
    Corcho
    Poziom 11  
    Posty: 83
    Pomógł: 2
    Ocena: 5
    Super, dziękuję za odpowiedzi -
    poczytan o TME SAA1064 - I2C.

    Wielkie dzięki .
  • #11 3897840
    sanwa
    Poziom 14  
    Posty: 171
    Pomógł: 7
    Ocena: 10
    Witam
    Sorry za odpowiedź nie na temat wątku :):), do wypowiedzi alnus'a. Przekaz 50gr, przesyłka 4 PLN; przy różnicy cen rzędu 5 PLN i więcej na sztuce układu naprawdę wychodzi się na swoje nawet przy dwóch kostkach.
    Pozdrawiam
    Sanwa
  • Pomocny post
    #12 3899626
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    TME, to firma, która sprzedaje elementy elektroniczne - Transfer Multisort Elektronik, www.tme.pl , układ to po prostu SAA1064 z interfejsem I2C.
  • #13 3902116
    Corcho
    Poziom 11  
    Posty: 83
    Pomógł: 2
    Ocena: 5
    Super - układ SAA1064 jest tym czego mi trzeba
    tylko szczegółów - schematu jaki ma wyprowadzenia nie mogę znaleść - może macie ?

    Czy da się tu sterować jasnością LED'ów ?
    Jeżeli nie to może znacie układ który dodatkowo może ?


    Pozdrawiam
  • REKLAMA
  • #14 3902425
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Po wpisaniu w google "saa1064 pdf" od razu dostajesz linka do dokumentacji...
    http://www.grifo.com/PRESS/DOC/Philips/SAA1064.pdf
    Układ ma możliwość programowego ustawienia określonego prądy diody (bity kontrolne C4-C6)
  • #15 3902504
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1060
    Przemysl czy nie prosciej zastosowac np rejestry szeregowe 74164 ja tak robie w swoich urzadzeniach jesli chodzi o wyswietlacze LED)
  • #16 3905441
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    janek, sorry że się wtrącę, ale napisz gdzie twoim zdaniem leży ta prostota. bo oprócz dostępności układów i ceny ( prawdopodobnie ) jakoś nie potrafię znaleźć żadnych zalet w stosunku do specjalizowanego drivera sterowanego jakimś interfejsem szeregowym.
  • #17 3905634
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1060
    Przeciez to byla tylko moja propozycja. Dla mnie jest to po prostu prostsze rozwiazanie z rejestrami nie neguje magistrali I2C. Ale glowna zaleta jest minimalna ilosc polaczen do wyswietlacza fakt musze dolaczyc 4 tranzystory do sterowania anod wyswietlacza jednak sam wyswietlacz 4 cyfrowy ma tylko 12 nozek :) Co do ceny no coz SAA1064 nie jest az tak drogi aby jego stosowanie nie mialo sensu. Zaleta jest jeszcze jego to ze nie musisz sie tak bardzo martwic o przerwania jak przy rejestrach jednak dalej stoje przy swoim ;)
  • #18 3906310
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    żeby uzyskać w miarę przyzwoitą jasność świecenia, to chyba jeszcze wypadałoby zbuforować wyjścia rejestru, bo inaczej to tylko zabawa dla superjasnych wyświetlaczy ( trudno o inny kolor niż czerwone ) chyba, że ktoś postara się o jakieś egzotyczne wysokoprądowe wersje rejestru. z tego co wiem nie jest o nie łatwo i nie są już tanie. ja nie twierdzę, że to jest złe rozwiązanie, ale napewno nie jest prostsze, zwłaszcza w Bascomie, gdzie dość trudno wyłapać zależności czasowe programu i byle jakie przerwanie potrafi nieźle namieszać.
  • #19 3925414
    toms76
    Poziom 12  
    Posty: 6
    polecam jako alternatywę do PCF-ek MCP23017 (2porty 16 I/O) (Microchip) osobiście używałem są ok. ( cena ok 4zł ) http://www.tme.pl/katalog/index.phtml?f_szukaj=mcp23017&idp=1

    Robienie komunikacji 2 ATmegach to niepotrzebna komplikacja zadania. Ostatnio robiłem komunikację I2C pomiędzy Pic-kiem i Atmegą i wiem że to więcej pracy i okazji do pomyłek.
  • #20 3928328
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Co do wyświetlaczy LCD to nie uwazam by były one nieczytelne...
    Tez miałem zamiar zastosować 7segmentowe LEDy, ale do ich sterowania potrzeba było zbyt duzo wyprowadzen, bądz układów pobocznych, a innych zalet poza czytelnoscia nie mają tego typu wyświetlacze. Zrezygnowałem więc z tego pomysłu i zastosowałem LCD od S65. Mogę na nim wyświetlić większe znaki, więc odległość z której odczytam informacje będzie podobna,a do tego moge wyświetlać inne info prócz cyfr!
    Zalety przewyższają wady, którymi jest np potrzeba zasilenia podświetlenia nieco wyższym napięciem (ok 12V). Sterowanie takim wyświetlaczem okazało się prostsze niz 7segm. LED :) (mniej wyprowadzeń), a także wizualnie projekt zyskał
    Cena 40zł nie jest odstraszająca

    Pozdrawiam
  • #21 3928760
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    wszystko zależy od tego ile i jakich znaków się spodziewamy, ale faktycznie fama o tym, że LCD są gorzej czytelne niż LED jest mocno przesadzona, a wręcz nieprawdziwa w niektórych warunkach. mam urządzenie w którym jest zegar na 6 dużych ( 1 "), zielonych LED'ach i LCD4x20. dopiero zastosowanie MAX7221 z maksymalnym prądem wyjściowym jako drivera do LEDów pozwoliło na uzyskanie jasności umożliwiającej odczyt przy niezbyt dużym słońcu, podczas gdy nie wystąpił wogóle problem z LCD. do tego wymieniłem z 10 różnych filtrów kontrastowych, zanim trafiłem na odpowiedni. problemem jest tylko koszt dużych wyświetlaczy graficznych LCD.

Podsumowanie tematu

✨ Dyskusja dotyczy podłączenia wyświetlacza 4-cyfrowego LED 7-segmentowego do mikrokontrolera ATmega8 z wykorzystaniem magistrali I2C, unikając bezpośredniego multipleksowania i zajmowania wielu portów procesora. Rozważano użycie ekspandera PCF8574AP, jednak jego koszt jest wysoki, co skłoniło do pomysłu zastosowania drugiego ATmega8 jako sterownika LED. Poruszono kwestie prądowego obciążenia portów i możliwości sterowania multipleksowego, wskazując na konieczność stosowania driverów takich jak ULN2003/ULN2803 do obsługi większych prądów segmentów LED. Zaproponowano także użycie rejestrów przesuwnych (np. 4094, 74164) jako alternatywę do ekspanderów I2C, choć z uwagą na konieczność buforowania wyjść dla uzyskania odpowiedniej jasności. Wskazano, że komunikacja SPI może być prostsza, ale wymaga więcej linii niż I2C. Poruszono problem implementacji ATmega8 jako slave I2C w Bascomie, gdzie wymagana jest dodatkowa biblioteka i ograniczona funkcjonalność. Jako bardziej efektywne rozwiązanie zaproponowano dedykowany sterownik LED SAA1064 z interfejsem I2C, który umożliwia sterowanie 4-cyfrowym wyświetlaczem oraz regulację jasności segmentów poprzez programowe ustawienia prądu diod. Alternatywnie polecono ekspander MCP23017 (Microchip) z 16 portami I/O. W dyskusji pojawiły się także argumenty za i przeciw wyświetlaczom LCD w kontekście czytelności i prostoty sterowania. Podsumowując, najlepszym rozwiązaniem jest użycie dedykowanego drivera SAA1064 lub ekspandera MCP23017, co upraszcza sterowanie i pozwala na regulację jasności, unikając komplikacji związanych z multipleksowaniem i dużym obciążeniem portów ATmega8.
REKLAMA