Arduino Polska Forum
Artefakty LCD MAX7219 - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Wyświetlacze (https://forum.arduinopolska.pl/dzial-wy%C5%9Bwietlacze)
+--- Wątek: Artefakty LCD MAX7219 (/watek-artefakty-lcd-max7219)



Artefakty LCD MAX7219 - Wesouek - 30-01-2022

Cześć Wszystkim.

Robię pewien większy projekt.
Ogólnie upraszczając jest to automacik, który po wrzuceniu monety załącza elektrozawór  ( Danfoss BB230AS, 230V  10W) odpowiednim przekaźnikiem i wyświetla czas między innymi na wyświetlaczu Matrycowym led opartym na MAX7219.

Wszystko działa do momentu wyłączenia się przekaźnika/elektrozaworu. W momencie gdy ten się wyłącza, na wyświetlaczu zapalają się wszystkie diody (tak jakby wchodził w tryb testowy). Gdy dla testu na wyjściu zamiast elektrozaworu daję np. lampę 100W wszystko śmiga ok.

Wyświetlacz do arduino podłączony jest na 2m kablu (od domofonu Smile ) do interfejsu SPI.

Rzeczy które próbowałem, a które nie dały rezultatu :
- rozdzielenie zasilania arduino, przekaźnika i wyświetlacza (ze wspólną masą)
- rezystory pull-up, pull-down na wszystkich 3 liniach sygnałowych (przy pull-down do linii CS zdarzyło się kilka razy, że problem się nie pojawił)
- zmiana częstotliwości SPI (SPI_CLOCK_DIV)

Czy jest jeszcze coś czego mogę spróbować?


RE: Artefakty LCD MAX7219 - kaczakat - 31-01-2022

Zmiana koncepcji, interfejsy typu SPI są "pudełkowe", kilka no w porywach do kilkudziesięciu cm w optymalnych warunkach otoczenia, które tu niestety jak widać nie występują, nie są odporne na zakłócenia. Drugi sposób to dołożenie do wyświetlacza Atmegi, przesyłanie komunikatów przez UART lub RS485.


RE: Artefakty LCD MAX7219 - Wesouek - 20-02-2022

Sorki za długi czas bez odpowiedzi.
Ciągle walczyłem z tematem aż w końcu się udało.
Konwersja sygnałów na rs485 nie zdała niestety egzaminu; nawet gdy LCD był przy samym Arduino na 5cm kablu artefakty się pojawiały.

Rozwiązanie okazało się proste i programowe.
Jako że do obsługi MAX7219 używam biblioteki MD Parola wystarczyło, że przed włączeniem/wyłączeniem elektrozaworu czyszczę LCD, usuwam obiekt klasy a następnie, po przełączeniu elektrozaworu i odczekaniu 200ms, tworzę i inicjalizuję nowy obiekt klasy do obsługi LCD. Innymi słowy programowo resetuję LCD. Działa to sprawnie i brak jakichkolwiek artefaktów.

Może to niezbyt eleganckie rozwiązanie, ale działa w 100%.