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

ATmega8 i dziwne krzaczki na LCD

pawel182 25 Paź 2010 21:49 2429 10
  • #1 8663484
    pawel182
    Poziom 11  
    Witam;
    Zbudowałem prosty licznik na układzie Atmega8 + LCD 2x16
    Licznik liczy detale zmontowane na jednej z maszyn. Jako czujniki sa użyte układy SICK WL150-P420 zasilane napięciem 24V. Procesor jest odseparowany od czujników transoptorem PC817.
    Na wyjściu układu jest przekaźniki 24V który sterowany jest poprzez tranzystor NPN i steruje on maly zaworem.
    Jako, że jestem początkującym to sam program pewnie jest napisany maskarycznie ale działa.
    Czasami jednak pojawia się mały problem - na wyświetlaczu pojawiają się dziwne krzaczki tzn są te napisy co powinny być poprzeplatane z jakimis innym i wszystko powoli przsuwa sie z prawej strony na lewą ale wsumie poza wskazaniami na LCD układ pracuje poprawnie ponieważ zawór na wyjściu jest wysterowywany cały czas we właściwy sposób.

    Co może byc przyczyną tej anomali? Dodam tylko że pojawia sie ona w sposób różny. Tzn układ pracuje 24godz. na dobe i czasami potrafi chodzić sobie kilka dni a czasami defekt pojawia sie po jednym dniu.

    Niestety nie mam rzadnego schematu ale wygląda to tak:
    Sam LCD jest połączony z płytką kabelkami o długości ok 10 - 20cm max
    Sam uProcesor:
    Nóżka AREF jest przez kondensator 100n połączona z masą i nóżka AVCC jest tak samo przez 100n do masy i do + 5V przez dławik 10uH (tak jak jest na schemacie płytki testowej ZL2AVR) NIe wykorzystane nóżki wiszą w powietrzu
  • #2 8663568
    anonim206
    Poziom 13  
    Witam
    Byc może przekaźnik powoduj zakłócenia.
    wydaje mi się że może pomógł by większy kondensator przy wejściu zasilania UC i przy LCD.
    Pozdrawiam Wojtek.
  • #3 8663719
    tmf
    VIP Zasłużony dla elektroda
    Najpewniej długa taśma łącząca LCD z mikrokontrolerem zbiera zakłócenia. 20cm to sporo. Daj z dwóch stron koraliki ferrytowe. Zmień program obsługi LCD tak, żeby testował poprawność danych i je poprawiał lub resetował LCD. Skróć kabelek. Popraw zasilanie, dodaj przewody masy pomiędzy linie sygnałowe LCD, można też pomyśleć o szeregowych rezystorach dopasowanych do impedancji linii.
  • #4 8663722
    arktik1
    Poziom 27  
    Myślę że same kondensatory 100n nie wystarczą.
    Podłącz jeszcze jakiś kondensator np 100uF do +5v i 100n dolutuj do zasilania wyświetlacza.
    Poza tym sprawdź, czy deklaracja "$crystal =" jest zgodna z prędkością Uc.
  • #5 8663738
    hotdog
    Poziom 26  
    Zrób może odrobinę większe opóźnienie przy zapisie bajta na wyświetlacz (czyli przed ustawieniem opadającym zboczem na E). Kabel do wyświetlacza może i nie jest długi ale może też się tutaj przyczynić.

    Poza tym możesz też odpowiedzieć na kilka pytań:
    - czy jest kwarc, czy jest wewnętrzny RC?
    - w jakich temperaturach pracuje układ?
    - sprawdzałeś 10 razy połączenia do LCD?
    - skąd masz funkcje do LCD?
    - czy po resecie układ działa normalnie?
    - czy jak się zakłucenia pojawią, to są dopóki nie zresetujesz układu, czy znikają po 5 minutach?

    Chyba tyle
    Pozdro
  • #6 8663789
    pawel182
    Poziom 11  
    hotdog napisał:


    Poza tym możesz też odpowiedzieć na kilka pytań:
    - czy jest kwarc, czy jest wewnętrzny RC?
    - w jakich temperaturach pracuje układ?
    - sprawdzałeś 10 razy połączenia do LCD?
    - skąd masz funkcje do LCD?
    - czy po resecie układ działa normalnie?
    - czy jak się zakłucenia pojawią, to są dopóki nie zresetujesz układu, czy znikają po 5 minutach?
    Pozdro



    - Kwarc jest zewnetrzny 8MHz + 2 kondensatory 27pF

    - Układ pracuje w temperaturze dodatniej 20-35 stopni C

    - funkcje do LCD... yy tzn?

    - sprawdzałem połączenie LCD ale chyba wykonam raz jeszcze

    - układ po wyłączeniu zasilania i ponownym włączeniu działa poprawnie. Krzaczki raczej same nie znikaja przynajmnij nic takiego nie zaobserwowałem.

    Co do samego zasilania układ zasilany jest napięciem 24V, które jest później pomniejszone do 5V za pomoca dwóch stabilizatorów 12V a nastepnie 5V. Na wejsciu i wyjściu każdego z tych stabilizatorów są kondensatory 100n i 100uF.

    Jeszcze jedno: te nóżki LCD które nie są połączone z wyjściem uP są zwarte do masy.
  • #7 8664022
    mateusz140m
    Poziom 11  
    Warto by było gdybyś wstawił schemat i kod obsługi LCD. Ja kiedyś miałem problem z LCD, szukałem prawie tydzień, aż się okazało, że błąd leży tam gdzie się nie spodziewałem.
  • #8 8664192
    hotdog
    Poziom 26  
    Trochę tego nie rozumiem, powiedzmy że co sekundę zapisujesz coś na LCD. To teraz jak zapisujesz po wykrzaczeniu się, coś tam na LCD to nie pojawia się ono tam? Fajnie by było jak byś zrobił fotkę tych krzaków.

    Bibliotekę do LCD skąd masz? W ogóle to piszesz w C czy bascomie (bo tego chyba nie widzę żebyś gdzieś to napisał).

    Możesz zrobić tak:
    - zrobić taką funkcję która po naciśnięciu na przycisk zaincjalizuje ponownie wyświetlacz. Po wykrzaczeniu naciśnij go i daj znać czy problem ustał. Jeżeli nie to odłącz VCC od lcd, naciśnij go i sprawdź czy problem ustał.
    - zresetować sam uC (jak nie masz przycisku to zewrzyj reset w ISP do masy) i sprawdzić czy problem ustał

    W zależności od wyników powiemy pewnie Tobie coś więcej. Poza tym:
    - spróbuj z innym LCD.
    - zwiększ ten odstęp przed zboczem na E w bibliotece tak jak pisałem wcześniej.

    mateusz140m napisał:
    Warto by było gdybyś wstawił schemat i kod obsługi LCD. Ja kiedyś miałem problem z LCD, szukałem prawie tydzień, aż się okazało, że błąd leży tam gdzie się nie spodziewałem.


    Jak byś się go tam spodziewał, to byś nie szukał tydzień :P

    Ja raz zrobiłem płytkę na ten LCD i odwróciłem oznaczenia wyprowadzeń - DB7 podłączyłem pod DB4 itd. Najfajniejsze było że pomyliłem się na schemacie - miałem komponent na którym wyraźnie było napisane DB7, a z jego lewej strony podłączone DB4. Typowy błąd CTRL+C, CTRL+V. Chyba z 3 dni nad tym siedziałem. Analizator stanów podłączyłem i analizowałem przebieg. Ale co z tego jak miałem na nim błędnie oznaczone wyprowadzenia.

    Pozdrawiam
  • #9 8710953
    pawel182
    Poziom 11  
    Sorki za tak późną odpowiedź ale coś ostatnio sie przeziębiłem :(

    Wracając do tematu - po resecie uP (masa podana na nóżkę 1) program łąduje się poprawnie.
    w załączniku zdjęcie "krzaczków" sorki za jakość.


    Ostatnio zauważyłem jedna rzecz:
    w programie mam tak skonfigurowany LCD

    Config Lcd = 16 * 2                                         
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5


    natomiast w zakładce BASCOM-a
    OPTIONS > PROGRAMMER > COMPILER > LCD
    wyświetlacz był chyba troszke inaczej skonfigurowany....czy to mogło mieć jakiś wpływ?
  • #10 8711152
    arktik1
    Poziom 27  
    Przedstaw kod, może tam jest coś źle.
    "natomiast w zakładce BASCOM-a
    OPTIONS > PROGRAMMER > COMPILER > LCD
    wyświetlacz był chyba troszke inaczej skonfigurowany....czy to mogło mieć jakiś wpływ?"
    Jeżeli w programie ustawiasz "Config Lcdpin" to ustawienie w BASCOMie nie ma wpływu.
  • #11 8711246
    hotdog
    Poziom 26  
    moim zdaniem powinieneś wyeliminować zmienną którą jest wada wyświetlacza, poprzez wymianę go na inny.

    To jest trochę dziwne bo jak rozumiem Twój program zapisuje w pętli coś na LCD, a jak te krzaki nie znikają to problemem jest albo komunikacja (np jeden z pinów przestał funkcjonować poprawnie) albo wadliwy wyświetlacz.

    Weź jeszcze przejrzyj program i zobaczy czy:
    a) nie ustawiasz omyłkowo któregoś z pinów lcd jako wejście w którymś miejscu w programie
    b) nie zmieniasz stanu jakiegoś pinu

    Pozatym zrób sobie jakąś funkcję podpiętą pod jakiś tam przycisk, czy cokolwiek, która zapełni wyświetlacz jednym typem znaków(np same A), zainicjalizuje na nowo wyświetlacz, czyściła wyświetlacz i np. zapełni go jednym typem znaków (takie same jak w 1 kroku) . Zrób to w 4 krokach (jedno zapełnienie jednym typem znaków, drugie naciśnięcie inicjalizacja, trzecie wyczyszczenie, czwarte zapełnienie jednym typem znaków). Taki test wykonaj jak się te krzaki pojawią. Pomoże stwierdzić czy to procesor coś źle wysyła, czy to wyświetlacz nie działa poprawnie.

    I tak pierwsze co powinieneś zrobić to spróbować z innym LCD.
REKLAMA