Debug di un display LCD 16x2 su un Arduino


9

Ho un display LCD 16x2 standard (credo che sia compatibile con Hitachi HD44780 - vedi sommario e specifiche di seguito), collegato ad un Arduino Uno usando 4 pin dati, come descritto qui , anche se ho aggiunto 2x resistori da 220ohm in parallelo (cioè un Resistenza 110ohm) sul pin 16 (terra retroilluminazione) e sostituito il Pot con resistori statici per creare 4 V su Vo.

In breve, RW è collegato a terra e RS, Enable e Data4-7 sono collegati ai pin Arduino, mentre i dati 0-3 sono mobili.

Ho altre cose (sensori, un transistor con un SSR optoisolato e un relè di rete, alcuni pulsanti) collegati a diversi pin sull'Arduino. Il codice che uso scrive il testo sul display più volte al secondo e normalmente il display funziona perfettamente.

Tuttavia, quando il relè si chiude (ci vogliono circa 10ma ed è controllato da un transistor che a sua volta è controllato da uno dei pin di Arduino), a volte il display LCD diventa confuso. Rimane confuso di solito fino alla successiva chiusura del relè, ma a volte quando il relè si apre o dopo qualche altro ciclo di apertura / chiusura per il ripristino. La confusione inizia sempre e si interrompe contemporaneamente all'apertura o alla chiusura del relè.

Per "confondersi", intendo che ogni volta che scrivo ad esso in seguito confondendolo, anziché scrivere caratteri inglesi, ottengo una serie di caratteri, che di solito non riesco a identificare nel foglio dati (anche se alcuni posso). Questa serie di caratteri confusi tende a spostarsi a sinistra lungo lo schermo mentre scrivo nuovo testo sul display LCD.

Sono sicuro che Arduino stesso non si confonda, poiché scrivo lo stesso testo sul monitor seriale allo stesso tempo e non è confuso.

Da allora ho provato a collegare il pin RW a un'uscita Arduino e Data0-3 a terra, ma questo non aiuta. Ho alimentato l'intero dispositivo con una batteria da 9 V o con USB e non aiuta. Ho sostituito la batteria ... nessuna modifica.

L'unica cosa che sembra funzionare è non avere alcun carico collegato al relè, ma ciò vanifica lo scopo :-)

Non ho un analizzatore di segnale o qualcosa di più sofisticato di un multimetro, un laptop e un arduino ... Qualcuno ha qualche suggerimento per aiutarmi a eseguire il debug?

Foglio riassuntivo LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

Specifiche LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

Esempio di testo confuso: testo confuso


1
Prova ad aggiungere un condensatore di almeno 1 uF ai binari di alimentazione, ovvero un'estremità del condensatore su Vcc e l'altra su GND. Fai attenzione alla direzione del condensatore se è un elettrolitico :)
abdullah kahraman

1
Questo è davvero bizzarro. Non stai guidando direttamente quel grande relè, la scatola del relè che hai acquistato in realtà ha un piccolo DIP SSR che sta cambiando l'alimentazione al grande relè e il grande relè è fuori dalla linea CA. Come tale, non dovrebbe davvero esserci modo per il back-emf generato dal relè che si attiva di entrare nel circuito.
Connor Wolf,

Questo puzza di un problema di messa a terra / disaccoppiamento. Hai molta capacità che hai sulle barre di alimentazione sulla breadboard?
Connor Wolf,

Inoltre, quanto è vicina la scatola relè al circuito breadboard? Puoi mettere qualche metro di filo tra la scatola relè e il resto del circuito? Ciò eliminerebbe la possibilità di qualsiasi accoppiamento magnetico.
Connor Wolf,

Grazie per le risposte Hai ragione che il relè è disaccoppiato con un SSR e vari altri componenti. Ho provato un diodo e in seguito ho provato un condensatore elettrolitico da 220uF tra 5V e GND sulle barre di alimentazione vicino al display LCD. Nessuno di questi sembrava avere un effetto. Non ho (ancora) provato i due insieme.
Richard Russell,

Risposte:


5

Hai un diodo sul relè? In caso contrario, i picchi induttivi in ​​chiusura / apertura causeranno probabilmente problemi.

Quando, ad esempio, si interrompe la corrente che fluisce attraverso un relè, si tenta di mantenerlo attivo, se non vi è alcuna via di scarica si crea una grande tensione (essenzialmente continuerà a salire fino a quando non trova una via).
Nello specifico la formula è V = L (dI / dT). Ciò significa che l'induttore si oppone ai cambiamenti di corrente attraverso di esso sviluppando una tensione attraverso di esso proporzionale alla velocità di variazione della corrente.

Prova a posizionare un diodo attraverso il relè, orientato a contrastare il normale flusso di corrente.

MODIFICA: controllando la pagina del prodotto sembra che sia un relè "pronto all'uso" in una scatola con componenti periferici aggiunti, quindi è improbabile che sia il precedente. Anche così proverei a posizionare il diodo attraverso l'alimentazione al relè.
Assicurati inoltre che la tua offerta sia ben filtrata come indicato nei commenti. Posiziona alcuni condensatori di almeno 1 uF accanto a IC e LCD e un tappo di massa di> 100 uF da qualche parte (tutti dall'alimentazione a terra)


Guarda la scheda tecnica per il "relè". L'ingresso al relè sta effettivamente pilotando un piccolo SSR, che commuta la potenza effettiva sul relè stesso. Dato che l'ingresso al relè è un ingresso SSR, non vedo un diodo fare davvero nulla.
Connor Wolf,

Ho dato un'occhiata (non riuscivo a trovarlo prima) e sono d'accordo, era solo un tipo di suggerimento "non posso far male" senza ulteriori informazioni. Speriamo di ricevere presto un aggiornamento su come è con il disaccoppiamento aggiunto.
Oli Glaser,

Grazie per la risposta. Hai ragione che il relè è disaccoppiato con un SSR e vari altri componenti. Ho provato il diodo e in seguito ho provato un condensatore elettrolitico da 220uF tra 5V e GND sulle barre di alimentazione vicino al display LCD. Non ho (ancora) provato i due insieme.
Richard Russell,

Ho anche provato a spostare consapevolmente i circuiti CA a circa un piede di distanza dal circuito 5V, lasciando solo il filo del segnale del relè 5V che li collega, ma questo non ha aiutato. Nella mia sperimentazione, ho scoperto che un piccolo carico sul relè (lampada alogena da 85 W) non sembra avere molto effetto sul display, ma se ho un grande carico (bollitore da 2000 W), è più probabile che causi l'errore. Ho visto questo problema con la lampada prima, anche se raramente.
Richard Russell,

Un tappo in ceramica di circa 1uF sarebbe meglio per i transitori, aggiungerne uno in parallelo con il 220uF. Prova ad aggiungere un altro o due> 100uF cap, anche su + 5V e GND vicino ai fili del relè. Puoi mostrarci un'immagine migliore della tua configurazione?
Oli Glaser,

1

Ho avuto lo stesso problema con un display LCD 16x4 quando l'Arduino stato inoltre controlla un SainSmart optoisolata scheda relè . Tutto ha funzionato bene con i contatti del relè non collegati. Ma quando il relè ha commutato un carico induttivo (un relè di potenza a 24 V CA), il display è confuso. Nessuna quantità di isolamento di potenza e condensatori di filtro ha aiutato.

Ciò che ha risolto il problema è stato uno snubber (condensatore e resistenza in serie) attraverso i contatti del relè SainSmart. Ho usato un filtro EMI / RFI Cornell Dubilier preconfezionato per la pulizia, ma un condensatore 0.1 da giardino in serie con una resistenza da 47 ohm probabilmente funzionerebbe altrettanto bene.


posso vedere lo schema circuitale di come serie il condensatore e la resistenza con il relè. Grazie
Jam Ville

1

Mi stavo sbattendo la testa perché il mio LCD è "confuso" e si è scoperto che non ho collegato il mio Arduino GND alla breadboard (se questo è di qualche aiuto a qualcuno). Saluti


Questo non aggiunge molto ai commenti esistenti.
David

-1

utilizzare un cavo schermato sull'uscita e metterlo a terra. Mi ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.