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

[atmegaXX][avrstudio/c] sterowanie podswietleniem lcd rgb

ja_fryta 22 Lip 2010 21:12 3047 16
  • #1 8319883
    ja_fryta
    Poziom 19  
    Witam
    Posiadam wyświetlacz LCD z podsiwieniem RGB. Anoda jest wspólna i podłączona przez rezystor 300 Ohmów do Vcc. Podłączając każdą z 3 katod do masy uzyskuje inne kolory i ich kombinacje. Teraz moje pytanie czy mogę podłączyć katody pod rejestry atmegi ustawić je jako wyjścia a następnie podciągać do Vcc / GND (gasić /zapalać) ?
    Chodzi mi o programowe ustawienie podświetlenia. Czy istnieje na to jakiś wzorzec projektowy czy moje podejście jest dobre ?
  • #2 8320019
    tmf
    VIP Zasłużony dla elektroda
    Możesz podłączyć pod wyjścia PWM, wtedy będziesz mógł prosto (sprzętowo) regulować jasność poszczególnych kanałów.
  • Pomocny post
    #3 8320119
    nsvinc
    Poziom 35  
    podlacz PRZEZ TRANZYSTORY!!
    Nie lacz anod wspolnie i wtedy przez 300R. Dajesz wszystkim trzem
    kolorom podswietlenia tylko 16mA dostepnego pradu, w efekcie
    jak zaswiecisz na full zielony z niebieskim (np. ku osiagnieciu cyan)
    to bedzie ci sie to podswietlenie jarzyc, albo wogole nie bedzie swiecic nic.

    Rozdziel te anody i podlacz kazda z osobna przez rezystory 220r.
    Katody podlacz na kolektory tranzystorow (emitery do masy).
    Bazy tych tranzystorow podlacz przez rezystory 2k2 do wyjsc PWM
    w procesorze. I juz...
  • #4 8320126
    ja_fryta
    Poziom 19  
    Jestem początkujący i PWM jest dla mnie całkowicie obce. Przeglądałem dokumentacje atmegi ale tez nie za wiele zrozumiałem tyle ze w atmega8 są dwa oznaczone jako OC0 i OC1. Czy mógł bym na nich uzyskiwać płyną regulację napięcia 0 - 5v ?

    A co do rozwiązania które opisałem wyżej jest poprawne ?

    Anoda jest wspólna na stałe http://artronic.pl/o_produkcie.php?id=643?

    Sprawdzałem to podłączając jak pisałem przy podłączeniu wszystkich kolorów pod masę. Nic się nie jarzyło kolor prawie biały.

    Docelowo nie jest mi potrzebna płynna regulacja (chociaż chętnie bym się douczył jak coś takiego można zrobić) tylko możliwość włączenia podświetlenia i wyłączone programowo.
  • #5 8320167
    nsvinc
    Poziom 35  
    Ale na pewno masz OC1A i OC1B. I oprocz tego rowniez OC0. Czyli
    trzy kanaly.

    PWM PWM NIE JEST REGULACJA NAPIECIA. Wpisz w wikipedie
    PWM i temat juz nie powinien byc dla ciebie obcy (a co, google nie dzialaja?)

    Twoje rozwiazanie z pierwszego postu najpewniej jest zlym rozwiazaniem,
    bo nikt nie podlacza leda pod rejestr :] :]
  • #6 8320197
    ja_fryta
    Poziom 19  
    http://pl.wikipedia.org/wiki/Pulse_Width_Modulation - przeczytałem, nie zrozumiałem za wiele :p

    Tak faktycznie jest OC0 OC1A OC1B i OC2

    Co do tego podłączania leda pod rejestr to pierwszy program jaki robiłem na AVR. Migająca dioda z przykładu Borkowskiego.
  • #7 8320253
    nsvinc
    Poziom 35  
    Jesli znasz angielski, poszukaj PWM na anglojezycznej wikipedii...

    Sterowanie PWM wyjasnie ci tak:

    Wyobraz sobie, ze jak masz leda podlaczonego pod zasilanie (tak po prostu)
    to przez przewod ida sobie w spokoju tzw, coulomby - porcyjki ladunku.
    Skojarz sobie z noszeniem na plecach wiadra z woda i wylewanie go
    u celu do beczki z dziura, z ktorej wylewa sie w stalym tempie konkretna
    ilosc wody, scisle zalezna od tego, ile wody aktualnie znajduje sie w
    beczce. (im wiecej w beczce, tym szybciej leci...)
    Ty noszac wode i wlewajac do beczki, dostarczasz material ktory moze
    sie wylewac (no a to jest twoim celem). - Analogia - plynie prad (czyli
    ida coulomby) - to led swieci...

    I teraz jesli ty bedziesz do tej beczki wlewal wode z ta sama
    czestotliwoscia, tyle ze za kazdym razem bedziesz przynosil mniej
    wody (np. 3/4 wiadra zamiast cale) i bedziesz to robil przez konkretny czas,
    poziom wody ustabilizuje ci sie NIZEJ niz jak nosiles cale wiadro wody,
    i automatycznie woda bedzie wolniej wyciekac z beczki. Analogia -
    jesli z w tym samym interwale czasu (czestotliwosc) bedzie do leda isc
    mniej coulombow, to swiecenie leda bedzie stabilne, ale SLABSZE.

    PWM nie mowi o tym, jak czesto bedziesz nosic wiadro z woda, ale o tym,
    ile wody za kazdym razem w wiadrze przyniesiesz, zakladajac,
    ze oprozniasz wiadro do beczki co ten sam interwal czasu
    .
    i to nazywa sie WYPELNIENIE (tak samo wiadra, jak i przebiegu napiecia
    elektrycznego)

    Modulujac to wypelnienie, zmieniasz predkosc ciekniecia wody z beczki -
    a w przypadku uC i leda - jasnosc jego swiecenia...
  • Pomocny post
    #8 8320742
    Electix
    Poziom 21  
    Kolega nsvinc zastosował ciekawą analogię... Ja bym natomiast opisał Ci to następująco.

    Pulse Width Modulation czyli Modulacja Szerokości Impulsu.
    Modulacja ta polega na tym, że na wyjściu modulatora, jest sygnał prostokątny o stałej częstotliwości, ale o zmiennym współczynniku wypełnienia tego sygnału. Współczynnik wypełnienia w sygnale prostokątnym, to stosunek czasu trwania poziomu wysokiego do czasu trwania poziomu niskiego w jednym okresie tego sygnału. Najczęściej jest podawany w % i może się zawierać teoretycznie w przedziale od 0% do 100%. Poniższy obrazek prezentuje kilka przykładów współczynników wypełnienia sygnału prostokątnego.

    [atmegaXX][avrstudio/c] sterowanie podswietleniem lcd rgb

    Sygnał taki po odpowiedniej konfiguracji możesz uzyskać na wyjściach PWM swojego µkontrolera po skonfigurowaniu i uruchomieniu modułu PWM (szczegóły w nocie katalogowej). Gdy poprawnie skonfigurujesz do swoich potrzeb i uruchomisz moduł PWM, poprzez zmiany wartości w rejestrach porównujących PWM możesz sterować współczynnikiem wypełnienia sygnałów generowanych na wyjściach PWM µkontrolera.
    Jak to się ma do świecenia backlightu? :)
    Każdy z kolorów podświetlenia w Twoim wyświetlaczu to dioda LED. Intensywność świecenia diody LED zależy od prądu jaki przez nią płynie. Kiedy taką diodę, podepniesz pod wyjście PWM µkontrolera (oczywiście przez odpowiedni układ np. z tranzystorem jak pisali koledzy wyżej), będzie się ona zaświecać i gasić w takt sygnału prostokątnego który nią steruje. Jeżeli sygnał ten będzie miał odpowiednio wysoką częstotliwość (od 100Hz w górę) oko Twoje nie zauważy błyskania. Własność ta nazywa się bezwładnością oka. Do tego, oko Twoje ma jeszcze taką własność że uśrednia przetwarzany sygnał. I tu tkwi cały szkopuł w działaniu PWM. Gdy nastawisz współczynnik wypełnienia na 0% będzie to oznaczać że przez cały okres sygnału jest niski poziom czyli dioda nie świeci. Gdy nastawisz 25% na 1/4 okresu zapali się dioda co Twoje oko zauważy jako słabe świecenie, gdy nastawisz 50% zauważysz że dioda świeci mocniej, przy 75% jeszcze mocniej a przy 100% dioda świeci cały czas w okresie, co odbierasz jako najintensywniejsze świecenie. Oczywiście współczynnik wypełnienia możesz zmieniać "płynnie" w całym zakresie od 0% do 100% Sterując w ten sposób trzema kolorami RGB możesz osiągnąć całą gamę kolorów ograniczoną jedynie rozdzielczością rejestrów porównujących modułu PWM.
    Tak by to w skrócie wyglądało. :)
    Pozdrawiam serdecznie
  • #9 8321047
    ja_fryta
    Poziom 19  
    Dziękuje za poświęcony czas podziękowania już wysłałem. W tej chwili buduje ten układ z tranzystorem sterującym. Na razie bazę dam na rejestr a do PWM na pewno jeszcze wrócę. Mam jeszcze małe pytanie odnośnie jaki tranzystor zastosować / na jaki parametr zwraca uwagę. Mam pod ręką BC847.
  • #11 8323923
    Electix
    Poziom 21  
    Ja polecam Ci tranzystor BS170 . Jest to mosfet z kanałem typu N. Ma tą zaletę że jest mały, tani, łatwo dostępny. Że może przewodzić prądy między drenem a źródłem rzędu 0,5A. Że jego bramkę można bezpośrednio podłączyć do wyprowadzenia µkontrolera i będzie on dla niego znikomym obciążeniem (polecam bramkę tranzystora ściągnąć do masy, przez jakiś duży rezystor, żeby w chwilach gdy na wyjściu µkontrolera będzie stan wysokiej impedancji, tranzystor nie "łapał" z powietrza jakichś ładunków i nie wzbudzał się, co powodowało by niekontrolowane mruganie podświetlenia i stosunkowo duże obciążenie prądowe oraz możliwe zakłócenia w pracy procesora). Ja w swoich układach bardzo często korzystam z tych tranzystorków i bardzo sobie chwalę :)
  • #12 8324441
    nsvinc
    Poziom 35  
    Mosfetow nigdy nie podlacza sie bezposrednio pod procesor!
    koniecznoscia jest zastosowanie kilku...kilkudziesiecio ohmowego rezystora
    bramkowego. Bez tego rezystora procesor najpewniej zalaczy
    tego mosfeta...skonczona...ilosc razy.

    Po co wsadzac mosfeta tu, gdzie bipolar sobie bezproblemowo poradzi?
    Po co polecac ultraczule na ESD (wiem z doswiadczenia) miniaturowe
    tranzystory mosfet osobie poczatkujacej?

    Zastosowanie bipolara eliminuje koniecznosc sciagania do masy wyjscia
    procesora.

    Miniaturowe mosfety w miejsce bipolarnych maja tylko sens gdy jest
    budowany uklad o ultraniskim poborze pradu, tu, gdzie liczy sie kazdy
    oszczedzony uA.
  • #13 8325445
    ja_fryta
    Poziom 19  
    Witam
    Ostatecznie zaprojektowałem sobie PCB z BC817 w SOT23 do tego 2,2k na bazę i 10k ściąganie do masy. Każdy kanał osobno.
  • #14 8325557
    nsvinc
    Poziom 35  
    sciaganie do masy nie jest konieczne, ale moze zostac. W razie gdybys mial
    lipne swiecenie (albo chcial podniesc jasnosc) to wywal te 10kilowe rezystory
    (dotyczy faktu ograniczania pradu przez tranzystory, a nie rezystory
    na anodach ledow!)

    Ogolnie uklad powinien ci dzialac dobrze.
  • #16 8408463
    ja_fryta
    Poziom 19  
    W reszcie przyszło mi PCB.
    Układ połączyłem tak jak pisałem. Z lenistwa odpuściłem rezystory ściągające do masy. Układ działa bez zarzutu teraz biorę się za PWM.
  • #17 8424712
    ja_fryta
    Poziom 19  
    Dodałem z ciekawości rezystory ściągające do masy.
    Brak zauważalnej różnicy w działaniu układu.
REKLAMA