Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LCD 4x16 krzaczki - zakłócenia od cewki stycznika, program w Bascom

RAPELC 04 Kwi 2017 14:44 648 10
  • #1 04 Kwi 2017 14:44
    RAPELC
    Poziom 17  

    Nie problem że pojawiają się krzaczki na LCD ale że czyszczenie ekranu komendą cls (Bascom) nic nie daje.

    Jednostka CPU z ATMEGA32 i LCD4x16, długość przewodów około 5cm, są umieszczone w typowej obudowie na szynę TH. Obok jest zamontowany stycznik 25A do załączania silnika. Zakłócenia powstają w czasie rozłączania stycznika. Procesor jest na te impulsy odporny, pracuje prawidłowo i się nie zawiesza. Jedynie LCD wariuje. Następuje to nie za każdym razem, lecz wystarczy kilka zał/wył stycznika aby wyskoczyły krzaczki. Co ciekawe, po następnych kilku lub kilkunastu zał/wył znikają i LCD wyświetla prawidłowo. Zauważyłem również że gdy są krzaczki to można zauważyć w nich też prawidłowe znaki.
    To że zakłócenia występują można by było to zignorować, gdyby udało się je jakoś skasować lub wyczyścić. Próba odkłócenia zasilania LCD - kondensatory ceramiczne równolegle 10uF i 100nF - przylutowane bezpośrednio do zasilania LCD, pola nr 1 i 2, nic nie dały. Odsunięcie stycznika na odległość kilkunastu cm również było bez skutku. Poprzednio (nie było stycznika lecz przekażnik 10A) nie stosowałem komendy cls lecz uzupełniałem niewykorzystane pozycje spacjami aby LCD nie migotał. Teraz dałem na początku pętli głównej komendę cls aby wyczyścić te krzaczki jak powstaną, lecz nie ma żadnego skutku, czyszczenie ekranu nie następuje. Jest mruganie przy każdym przejściu pętli, więc komenda działa, ale bzdury na ekranie się nie kasują.

    Czy ktoś może wie o co tu może chodzić, jak wysterować ten moduł z HD44780 aby pozbyć się tych krzaków jak powstaną. Wygląda na to ze pozycje na których pojawiły się krzaki nie reagują na komendę próby ich zapisu. Wyłączenie zasilania całego sterownika na kilka, nieraz na kilkanaście sekund, przywraca wszystko do normy. a potem znowu to samo gdy stycznik wyłączy. Z przekażnikiem występowało to bardzo rzadko.
    Wytłumienie przepięć na cewce stycznika (obudowa na szynę TH) jest raczej trudne bo to napięcie sieciowe AC230V. Czy zastosowanie warystora by coś dało, ale o jakich parametrach?

    0 10
  • Sklep HeluKabel
  • #2 04 Kwi 2017 15:03
    crobe
    Poziom 17  

    Tez tak miałem warystor nic nie pomógł.
    Rób restart wyświetlacza po każdej zmianie stanu stycznika mignie ale krzaków nie będzie .

    0
  • Sklep HeluKabel
  • #3 04 Kwi 2017 19:10
    RAPELC
    Poziom 17  

    W jaki sposób zrobić restart LCD? To właśnie chciałem zrobić podając komendę cls, czyli czyść ekran wyświetlacza. Jeżeli to nie to, to jaka jest komenda do restartu LCD?

    Dla HD44780 instrukcja:
    Display clear - (RS = 0, R/W = 0, dane = 00000001) -instrukcja ta powoduje wyczyszczenie wyświetlacza poprzez wypełnienie go spacjami, ustawienie trybu zapisu danych od pozycji w lewym górnym rogu wyświetlacza oraz wyłączenie trybu przesuwania okna; maksymalny czas trwania instrukcji - 1,64ms

    Liczyłem na to że to wykonuje w Bascomie instrukcja cls.

    0
  • #4 04 Kwi 2017 20:46
    landy13
    Poziom 29  

    RAPELC napisał:
    W jaki sposób zrobić restart LCD? To właśnie chciałem zrobić podając komendę cls, czyli czyść ekran wyświetlacza.
    Bo "CLS" właśnie tylko czyści ekran. Ty masz zrobić ponowną inicjację. W Baskomie to chyba "Config LCD...: czy jakoś tak.

    0
  • #5 04 Kwi 2017 21:22
    RAPELC
    Poziom 17  

    crobe napisał że w Arduino stosował funkcje
    lcd.begin(16, 2); //Deklaracja typu
    czyli to co pisze landy13.

    Dziękuje za informacje. Zbuduję podobny układ jak tamten i wypróbuje. Bo do tych moich sterowników co pisałem nie mam obecnie praktycznie dostępu.

    0
  • #6 04 Kwi 2017 23:10
    Press
    Poziom 22  

    W Bascom to komenda LCDINIT. Tez się tym ratowałem w liczniku do maszyny. Silnik przy rozruchu często zawieszał mi lcd.

    0
  • #7 05 Kwi 2017 09:04
    zster

    Poziom 28  

    Szynę danych do LCD wykorzystujesz 4 bitową czy 8 bitową? Jeśli 4, to czy pozostałe 4 bity ( wejścia LCD ) podłączyłeś do masy ? Czy próbowałeś ekranować przewody do LCD? A do cewki dobrać gasik RC o odpowiednich parametrach dobranych do samej cewki ( czasami takie dane można znaleźć w nocie katalogowej stycznika ).

    0
  • #8 05 Kwi 2017 09:15
    RAPELC
    Poziom 17  

    Jeszcze jedno pytanie, tak profilaktycznie, na wszelki wypadek.
    Jak mieliście te problemy z krzaczkami to czy u was również procesor pracował bez problemów? Czy to by znaczyło że chińczyki robią teraz LCD zbyt wrażliwe na zakłócenia, a procesory na te paskudztwa są odporne. U mnie zasilanie LCD to te same 5V pobierane obok uC.

    Odpowiedz na post wyżej.
    Szyna 4-bitowa, pozostałe w powietrzu. Na jakimś forum czytałem że dużym błędem jest podłączanie ich do masy czy też do plusa ze względu na budowę LCD.
    Układ gaszący RC odpadł ze względów praktyczno czasowych i estetycznych. Po prostu nie miałem, gdy dodawałem stycznik, odpowiednich kondensatorów. Poprzednio gdy miałem tylko przekażnik to jego styki zbocznikowałem 10n/500V ceramiczny + 39 om w szereg. Po kilku miesiącach rozwaliło kondensator i wypaliło PCB, silnikowi nic się nie stało bo wyłączył termik silnikowy. Ponoć kondensatory ceramiczne się nie nadają do tego, muszą być styrofleksy. Nie miałem czym zmierzyć przepięć na stykach przy wyłączaniu silnika. Silniki nie są duże 3fazowe około 500W. Na obiekcie tych sterowników mam kilkanaście. Gdy przełączałem ręcznie to mi rozwaliło też następny kondensator gasikowy. Zdecydowałem się więc założyć styczniki sterowane istniejącymi przekażnikami ale już z wyciętymi kondensatorami, aby nie było problemów. Styczniki można było tanio kupić od ręki w lokalnej hurtowni elektrycznej a kondensatory niestety nie.

    0
  • #9 05 Kwi 2017 09:48
    crobe
    Poziom 17  

    W moim przypadku procek działał poprawnie, ale i tak w programie był włączony watchdog i w razie czego zresetowało by sterownik.

    Co do wyświetlaczy chyba najczulsze są niebieskie z białymi literami ...

    0
  • #10 05 Kwi 2017 09:52
    zster

    Poziom 28  

    RAPELC napisał:
    Jak mieliście te problemy z krzaczkami to czy u was również procesor pracował bez problemów? Czy to by znaczyło że chińczyki robią teraz LCD zbyt wrażliwe na zakłócenia, a procesory na te paskudztwa są odporne. U mnie zasilanie LCD to te same 5V pobierane obok uC.


    Tak, w takich wypadkach mikrokontroler i inne urządzenia pracowały prawidłowo ale LCD się sypał. Pomagało ekranowanie przewodów, podciąganie pozostałych 4 bitów do masy, gasiki przy stycznikach, ferryt na taśmie do LCD, Dławiki na zasilaniu gdzie się tylko dało.

    RAPELC napisał:
    Szyna 4-bitowa, pozostałe w powietrzu. Na jakimś forum czytałem że dużym błędem jest podłączanie ich do masy czy też do plusa ze względu na budowę LCD.

    Budowę LCD? Domyślam się, że używasz LCD ze sterownikiem zgodnym z HD44780. Nie ma żadnych przeciwwskazań by podłączyć nieużywane bity szyny danych do VCC czy GND jeśli tylko nie odczytujesz żadnych danych z LCD .

    Jeśli gasików nie da się zastosować to pozostaje jedynie ekranowanie obudowy z LCD, filtrowanie, podłączenie nieużywanych pinów do GND a jako ostateczność własnie procedura inicjalizacji LCD co np. 10s.

    0
  • #11 05 Kwi 2017 10:22
    RAPELC
    Poziom 17  

    Ja pozakładałem żółte tło z czarnymi literami.

    Pisałem soft w Bascomie i miałem wątpliwości co do kodu po kompilacji. Kompilator nie wykazywał żadnych błędów składniowych. Na początku gdy kod był jeszcze krótki w zasadzie co napisałem to działało OK za wyjątkiem przerwań zewnętrznych na końcówce INT procka. Więc zrezygnowałem z tych przerwań choć to było niewygodne. Gdy kod się rozrósł to po kilku tygodniach pracy sterowników zauważyłem że zegar programowy pokazuje czas do tyłu kilkanaście dni. Obserwując to wyglądało jakby po kilkudziesięciu godzinach pracy bez żadnego powodu zadziałał Watchdog chociaż był jawnie wyłączony instrukcją, tak naprawdę to nie wiadomo dlaczego. Podobnie było z załączaniem i gaszeniem podświetlania. To prymitywne polecenie zmiany stanu nóżki uC, ten sam program na jednych sterownikach działał a na innych nie, to już czarna magia.
    Dopiero teraz dwa dni temu, gdy byłem na obiekcie z powodu tych krzaczków, zauważyłem że gdy zapisałem flash programem skompilowanym wersją 1.11.9.5.001 Bascoma to nie było odczytu temperatur z DS18B20, gdy skompilowałem go wersją 2.0.7.5.003 to odczyty termometrów były poprawne. Poprzednio nie zauważyłem takiego zjawiska. W czasie kompilacji każda wersja nie wykazywała żadnych problemów i wskazywała wielkość kodu binarnego 78%.
    Inny sterownik na MEGA8 gdzie indziej też bez watchdoga pracuje już kilka dobrych lat i jeszcze się nie zawiesił.
    Być może w tych wersjach Bascoma odmiana procka który zastosowałem nie jest dość dobrze zdefiniowana, do wyboru w Bascomie miałem Mega32 bez żadnych literek.
    Mam zamiar przepisać ten cały soft w C i kompilować na Eclipse. Na razie gdy będę na obiekcie (nikt nie wie kiedy) to dodam inicjacje LCD na początku pętli głównej. Powtarza się ona co około 1 sek bo dużo czasu zajmują pętle For przy pomiarze napięć (aby wynik nie skakał). Więc problem powinien się rozwiązać.

    0