Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zasilanie mikroprocesora. Na wyświetlaczu LCD 2*16 pojawiają się szlaczki.

Witkacy8 30 Dec 2006 22:10 6045 33
Suntrack
  • #1
    Witkacy8
    Level 20  
    Mam problem z zasilaniem i filtrowaniem mikroprocesora.
    Zbudowałem sterownik pieca AZSO na mikroprocesorze ATmega32 ,
    w warunkach domowych wszystko ok. Jednakże u klientów podczas załaczania się styczników sterujących żmijką czy nawiewami, wyświetlacz LCD 2*16 zaczyna wariować. Pojawiają się rózne szlaczki.
    W jaki sposób odfiltrować zasilanie aby to się nie działo.
  • Suntrack
  • #2
    cyberdar
    Level 31  
    Witam

    Nie dałeś schematu ani żadnego opisu. Proponuję na styki przekaźników podłączyć układy gasikowe (rezystor 100Ω + kondensator 100nF) na zasilaniu pompy czy innych urządzeń spróbuj dodatkowo dać warystory. Jeśli to nie pomoże to zrób zasilacz impulsowy w oparciu o LM2574.

    --
    pozdrawiam
  • #3
    Witkacy8
    Level 20  
    Taki stabilizator właśnie w tej chwili mam zamontowany,ale u niektórych klientów ten problem nadal istnieje. Spróbuję te układy gasikowe zastosować.
  • #4
    cyberdar
    Level 31  
    Witam

    Ja w swoim sterowniczku mam zwykły stabilizator i układ potrafił się powiesić przy załączaniu badź włączaniu siłowników (elektrycznych). Gasiki rozwiązały problem definitywnie.

    --
    pozdrawiam
  • #5
    markosik20
    Level 33  
    Nie zawsze zakłócenie pracy uP powoduje złe zasilanie.
    Jeżeli w pobliżu jest dużo elementów które mogą powodować zakłócenie to minimalizowanie ich wpływu jest niedobrym rozwiązaniem. Trzeba sprawdzić co konkretnie się dzieje, czy program się "wykrzacza" (wtedy trzeba odpalić watchdoga), czy zakłócenie jest tylko na lini danych z uP do LCD'ka. Lepiej "uodpornić" układ uP-wy bo czasami układy gasikowe też sie uszkadzają i nie spelniaja już swojej roli. Dodatkowo źle dobrany układ gasikowy może niekorzystnie wpływać na działanie np: elektrozaworów gdzie cewka ma bardzo dużą indukcyjność.
  • #6
    greg_matrix
    Level 17  
    A ja mam kilka prostych zasad których staram się trzymać żeby wszystko było pod kontrolą:
    1. Zasilanie +5V podłączam do procesora przez diodę Shottkyy a za nią daję kondensator 22µF. Zakłócenia przez coś takiego się nie przedostają, a w każdym razie na pewno nie ma zaników napięcia.
    2. Jeśli w układzie mogą pojawić sie przepięcia to na zasilaniu daję diodę Zenera która w razie czego je obetnie.
    3. Jeśli procesor zaświeca jakieś LED to podłączam je do tego samego zasilania które dostaje procesor (po diodzie Shottkyy) albo do masy, nigdy do "niepewnego" +5V (przed diodą).
    4. Jeśli mają być przekaźniki, FET-y itp to sterowane są zawsze przez tanzystor albo jakiś driver.

    Jeśli jest skąd wziąć odpowiednie napięcie do zasilenia stabilizatorka 78L05 to warto go użyć zamiast punktów 1 i 2.

    Restart procesora występuje nie tylko przy zaniku zasilania ale też przy przeciążeniu wyjść, dlatego trzeba pamiętać o uwagach 3 i 4. Zwłaszcza niespodziewany restart przez LED-y był dla mnie zaskakujący kiedy go swojego czasu odkryłem... :-)
  • #7
    Fajfer2
    Level 20  
    Krótsze przewody łączące uP z LCD i/lub wszystkie przewody (te do LCD)
    (zasilanie,masa,i sygnałowe) przepuść przez ferrytowy pierścień toroidalny ( wykonaj na nim kilka zwojów całą tą wiązką - najlepiej skręć
    ją wcześniej ).
  • Suntrack
  • #8
    janek1815
    Level 38  
    greg_matrix wrote:

    1. Zasilanie +5V podłączam do procesora przez diodę Shottkyy a za nią daję kondensator 22µF. Zakłócenia przez coś takiego się nie przedostają, a w każdym razie na pewno nie ma zaników napięcia.



    ja robie podobnie jednak za dioda daje zawsze dlawik okolo 100uH i wiekszy kondensator okolo 100uf sterowniki pracuja wsrod wielu wentylatorow i pomp CO nigdy nie ma z nimi problemow wczesniej byly w ciagu dnia potrafily sie zawiesic kilka razy teraz w ciagu miesiaca zdarza sie to moze raz
  • #9
    wicy
    Level 22  
    greg_matrix wrote:

    3. Jeśli procesor zaświeca jakieś LED to podłączam je do tego samego zasilania które dostaje procesor (po diodzie Shottkyy) albo do masy, nigdy do "niepewnego" +5V (przed diodą).

    Jeśli jest skąd wziąć odpowiednie napięcie do zasilenia stabilizatorka 78L05 to warto go użyć zamiast punktów 1 i 2.

    Restart procesora występuje nie tylko przy zaniku zasilania ale też przy przeciążeniu wyjść, dlatego trzeba pamiętać o uwagach 3 i 4. Zwłaszcza niespodziewany restart przez LED-y był dla mnie zaskakujący kiedy go swojego czasu odkryłem... :-)


    To ja mam pytanie do powyższego. W najprostszym układzie ATTiny2313 zasilanym bezpośrednio z 78L05 (reset up do vcc przez 10k) są jeszcze 2 diody LED. Po starcie układ powinien zasygnalizować gotowość 2xbłyskiem jednej z LED, ale po włączeniu zasilania układ wariuje i błyska diodą jak mu się spodoba.
    Czy zwiększony pobór prądu przez LED w chwili jej zaświecenia może skutkować spadkiem napięcia i resetem up (i stąd te ciągłe migania)? Czy wstawienie między uP a LED rezystora może obniżyć prąd diody na tyle by nie powodowała reseta?
  • #10
    janek1815
    Level 38  
    wicy wrote:
    Czy wstawienie między uP a LED rezystora może obniżyć prąd diody na tyle by nie powodowała reseta?

    a nie masz wstawionego rezystora ograniczajacego prad diody LED? jaka ma wartosc moze zbyt mala?
  • #11
    wicy
    Level 22  
    Nie mam nic wstrawione. Mała, czerwona LED 3,5mm sterowana bezpośrednio z pinu procesora.
    Wstawiam 1k i zobaczymy co będzie
  • #12
    rezi_ar
    Level 17  
    Do Witkacy8
    Czy nie masz czasem sterowania LCD w trybie 4 bitowym?
    Jeżeli tak, to prawdopodobnie nie uP wariuje, tylko coś zakłóca transmisję z LCD.
    Wystarczy, że "zginie" jedna "4" bitów i na wyświetlaczu są już tylko krzaki.
    Pomaga ponowna inicjalizacja LCD.

    rezi
  • #13
    janek1815
    Level 38  
    no to masz przekroczony prad maksymalny pinu dziwne ze dioda jeszcze jest ok :)
  • #14
    greg_matrix
    Level 17  
    Jeśli ta dioda tylko któtko mruga to nic jej nie będzie, za to port na pewno jest przez chwilę przeciążony. To może skutkować restartami albo jakimś dziwnym zachowaniem.

    Do LED czerwonych i zielonych w sam raz jest 680Ω, do żółtych i pomarańczowych 510Ω. Prąd będzie około 5mA. To wszystko oczywiście dla zasilania 5V.

    W ogóle jeśli do portów pracujących jako wyjścia podłączasz cokolwiek, to warto pamiętać o opornikach szeregowych. Choćby na wszelki wypadek. Nawet jeśli podłączasz coś co z założenia nie pobiera prądu to przecież może się uszkodzić.

    Szybkie oszacowanie: np. dla większości AVR dopuszczalny prąd na 1 pin to 20mA. Załóżmy, że masz stan wysoki na pinie a podpięte urządzenie zorganizowało nam zwarcie do masy. Żeby nie przekroczyć 20 mA potrzebny jest opornik szeregowy 5V/0,02A = 250Ω.
  • #15
    wicy
    Level 22  
    Wszystko racja. Chciałem zminimalizować ilość elementów na płytce, co jednak nie do końca okazało się szczęśliwym rozwiązaniem.
    Procesor resetuje w już dobrze przy podpiętym rezystorze 2,2k i minimalnych zmianach w programie w inicjacji portów.
    Chyba jednak za szybkie i zbytnie obciążenie wyjść może być przyczyną złych i nieoczekiwanych resetów.
    Sorka za zaśmiecenie wątku i dzięki za rady.
  • #16
    Witkacy8
    Level 20  
    rezi_ar wrote:
    Do Witkacy8
    Czy nie masz czasem sterowania LCD w trybie 4 bitowym?
    Jeżeli tak, to prawdopodobnie nie uP wariuje, tylko coś zakłóca transmisję z LCD.
    Wystarczy, że "zginie" jedna "4" bitów i na wyświetlaczu są już tylko krzaki.
    Pomaga ponowna inicjalizacja LCD.

    rezi



    Tak tryb czterobitowy.
    I jeszcze jedno pytanie dotyczące wyświetlacza LCD 16*1
    Jak go zainicjować??
    Gdy wezmę go jako 16*1A lub jakkolwiek to wyświetla mi znaki tylko do połowy lcd. Druga połowa jest pusta.
  • Helpful post
    #17
    wojtkow
    Level 14  
    Wyświetlacz 16x1 to tak naprawdę 8x2 (też z tym kiedyś walczyłem)
    Musisz wysłać mu po 8 znakach polecenie "nowa linia" 0xC0 i dalej tekst który zajmuje następne 8 znaków.
  • #18
    Witkacy8
    Level 20  
    To troszkę do kitu z tym wyświetlaczem.
    Ale dzięki,walczyłem z nim kilka dni zmieniałem je jeden po drugim ,myśląc że trafiłem na uszkodzony.
    Wkońcu ktoś mi to rozjasnił.
  • #19
    Witkacy8
    Level 20  
    Jeszcze jedno pytanie.
    Widziałem kiedyś w sterowniku mikroklimatu firmy Big Dutchman
    wyświetlacz z dwoma liniami,który po chwili nie naciśnięcia zadnego z przycisków wyświetlał temperature łącząc dwie linie ze sobą,dzięki temu powstały duze cyfry na wysokość dwóch linii. Jak takie coś zrobić?
  • #20
    teedd
    Level 18  
    Witam.
    W typowym wyświetlaczu LCD 2x16 można zdefiniować w jednym momencie do 8 własnych znaków. Jeżeli nie będziesz wyświetlał jednocześnie więcej niż 2 duże cyfry (każda duża cyfra to 4 własne zdefiniowane znaki), to da się to zrobić.
    teedd
  • #21
    Witkacy8
    Level 20  
    Tylko że tam temperatura zajmowała 4 cyfry np. 23.6°
  • #22
    teedd
    Level 18  
    Możliwe, że to był inny typ wyświetlacza, albo te powiększone znaki miał zdefiniowane w ROM-ie. Szkoda, że nie da się tego samemu zrobić...
    Jeśli zdecydujęsz się tylko na powiększenie wysokości cyfr, to się da wyświetlić 4 różne cyfry.
    teedd
  • #23
    JStan
    Level 16  
    Mam podobne pytanie dotyczące zasilania ATmegi128. W układzie mam napięcie z zasilacza komputerowego 12V i 5V. Układ zawiera w sobie wyświetlacz LCD, trzy serwomechanizmy i sporo ledow. Ledy zasilane beda z 12V, natomiast mam wątpliwości czy reszte zasilić napięciem 5V bezpośrednio z zasilacza czy poprzez stabilizatory 7805 z 12V?? Wówczas myśle aby użyć jednego do Up i LCD a drugiego do samych serwomechanizmów aby ich większy pobór prądu nie powodował przygaasania LCD i co gorsze wykrzaczania uP.

    Dzięki za rady!!
  • #24
    Ch.M.
    Level 27  
    Witaj
    Obciązałnośc prądowa zasilaczy ATX komputerowych jest zawsze większa dla +5V niż +12V. LEDY raczej powinieneś zasilać z +5V i wogóle całość też, tyle, że procesor z oddzielnego stabilizatora, najlepiej przetwornicy. Jeśli nie używasz tego zasilacza do równoczesnego zasilania komputera, to zastanów sięnad wykorzystaniem do zasilania LEDów napięcia +3,3V (jeśli takie akurat ma)
    Pozdrawiam
  • #25
    Jdsoul
    Level 23  
    Obawiam się, że rzeczony wyświetlacz miał albo rozszerzony zakres poleceń (odpowiednik HD w wykonaniu Samsunga) albo był wyświetlaczem graficznym.

    Co do filtracji napięcia zasilania.

    Objawy, o których mówisz pojawiają się raczej w sterowniku wyświetlacza niż na porcie kontrolera. Możesz spróbować dodać kondesator filtrujący tuż przy wyświetlaczu, rzędu 470 uF oraz 100 nF równolegle i zaekranować wstęgę w skrajnym wypadku zastanowiłbym się :) to nie żart nad bufforem 74F245 po obu stronach wiązki
    Czasem wyświetlacz gubi zasilanie i ma dziwne efekty w pamięci a porządna prądowa magistrala radzi sobie naprawdę super, a z tego co zrozumiałem zasilanie nie jest problemem.

    Możesz też zastosować rozwiązanie softwarowe :)
    Tzn. założyć i tak istnienie błędnego wyświetlania
    i okresowo resetowanie softwarowe i pełne czyszczenie zawartości pamięci wyświetlacza z ponownym wysłaniem wyniku. Jeśli zależy ci na tym żeby się klient nie zorientował to możesz zapisać w instrukcji obsługi że co jakiś czas wyświetlacz "odpoczywa" :)
  • #26
    Ch.M.
    Level 27  
    Jeśli to wina samej komunikacji, to możesz zmniejszyć wpływ kabla na transmisję poprzez przeplecenie masy między sygnałami czyli:
    1-masa
    2-D0
    3-masa
    4-D1
    5-masa
    6-D2
    ...
    n-masa

    Z punktu widzenia elektrycznego będzie to wyglądało na skrócenie przewodów
    Oczywiście bufor też jest dobrym wyjściem, ale chyba szybciej zmienić pinouty a dopiero później dodawać elektronikę. Oczywiście Twoje problemy mogą wynikać również z wadliwego egzemplarza.
    Pozdrawiam
  • #27
    JStan
    Level 16  
    Do Ch.M. - wsystko było by w porządku z zasilaniem ledów z 5V ale one sa połączone w szereg po trzy, więc napięcie przewodzenia takiej grupy jest powyżej 5ciu wolt... pozostaje mi więc tylko 12V, z obliczeń wynika że diody pobiorą 4,5A prądu, zasilacz mam lepszej klasy,za to komp nieco gorszej więc myśle że wydoli. Przeprowadziłem test. Przy zasilaniu serw i uP z jednego stabilizatora 7805(taki powinien wystarczyć) przy ruchu serwa miga podświetlenie LCD, dopiero przy osobnych 7805 jestw porządku. I tak też zrobię.
  • #28
    Ch.M.
    Level 27  
    Dużo tych amperów, wielki ten LCD...

    Wracając do wcześniejszych postów to możesz wyświetlić praktycznie co chcesz na takim wyświetlaczu... ale okupione to będzie trudem :)
    Przecież pamięć tego wyświetlacza możesz przeprogramowywać dowolnie między wyświetleniem jednego znaku a drugiego... nikt nie powiedział, że robisz to tylko zaraz po inicjalizacji :)
    Oczywiście dużo lepiej zastosować wyświetlacz, który ma od tego dodatkowy kontroler :)
    Pozdrawiam
  • #29
    Jdsoul
    Level 23  
    Wyświetlacz LCD to w sumie peryferia i tak należałby go traktować :)

    Akurat magistrala sterownika HD jest równoległa, ale istnieje kilka prostych przykładów jak ją przerobić na szeregową :) I2C lub SPI.

    Może w przyszłych projektach z automatyką dużych obciążeń powinieneś jednak skorzystać z magistrali szeregowej
    a) łatwiej zaekranować;
    b) mniej różnych poziomów na pinach:
    c) łatwiej zapewnić ciągłość impdancji od nadajnika do odbiornika :)

    Część wyświetlaczy w ofercie www.elementy.pl ma już magistralę SPI na pokładzie :), wtedy nawet tryb 4 bitowy przegrywa bo wyświetlacz zabierze ci raptem dwa piny :)
  • #30
    Rime
    Level 14  
    Witam, mam jedno (zapewne głupie) pytanie.
    Czy zasilaczem impulsowym 5V 600mA, mogę zasilać układ lampki RGB oparty na mikrokontrolerze ATTiny2313 (wyczytałem w nocie że pracuje stabilnie w zakresie 2,7 - 5V). No i oczywiście, czy może to być zasilacz impulsowy ? Czy taki układ nie będzie świrować, i czy napewno procek ruszy (zakładając poprawność układu) ?