Arduino Polska Forum

Pełna wersja: Artefakty LCD MAX7219
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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ć?
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.
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%.