Débogage d'un écran LCD 16x2 sur un Arduino

9

J'ai un écran LCD 16x2 standard (je pense qu'il est compatible Hitachi HD44780 - voir résumé et spécifications ci-dessous), connecté à un Arduino Uno à l'aide de 4 broches de données, comme décrit ici , bien que j'ai ajouté 2x résistances 220ohm en parallèle (c'est-à-dire un Résistance 110ohm) sur la broche 16 (masse du rétroéclairage), et a remplacé le Pot par des résistances statiques pour créer 4V sur Vo.

En bref, RW est câblé à la terre, et RS, Enable et Data4-7 sont connectés aux broches Arduino, tandis que les données 0-3 sont flottantes.

J'ai d'autres choses (capteurs, un transistor avec un SSR optoisolé et un relais secteur, quelques boutons) connectés à différentes broches de l'Arduino. Le code que j'utilise écrit du texte sur l'écran plusieurs fois par seconde et, normalement, l'affichage fonctionne parfaitement.

Cependant, lorsque le relais se ferme (il prend environ 10 mA et est contrôlé par un transistor qui est à son tour contrôlé à partir d'une des broches Arduino), parfois l'écran LCD devient brouillé. Il reste généralement brouillé jusqu'à la fermeture du relais, mais parfois lorsque le relais s'ouvre, ou après quelques cycles d'ouverture / fermeture supplémentaires pour réinitialiser. Le brouillage commence et s'arrête toujours en même temps que le relais s'ouvre ou se ferme.

Par "brouillé", je veux dire que chaque fois que j'écris dessus après qu'il devienne brouillé, plutôt que d'écrire des caractères anglais, j'obtiens une chaîne de caractères, que je ne peux généralement pas identifier dans la fiche technique (bien que j'en puisse certains). Cette chaîne de caractères tronqués a tendance à se déplacer vers la gauche le long de l'écran lorsque j'écris du nouveau texte sur l'écran LCD.

Je suis convaincu que ce n'est pas l'Arduino lui-même qui se confond, car j'écris le même texte sur le moniteur série en même temps, et ce n'est pas brouillé.

J'ai depuis essayé de câbler la broche RW à une sortie Arduino et Data0-3 à la masse, mais cela n'aide pas. J'ai alimenté l'ensemble de l'appareil avec une batterie 9V ou USB, et cela n'aide pas. J'ai remplacé la batterie ... pas de changement.

La seule chose qui semble fonctionner est de ne pas avoir de charge branchée sur le relais, mais cela va à l'encontre du but :-)

Je n'ai pas d'analyseur de signal ni rien de plus sophistiqué qu'un multimètre, un ordinateur portable et un arduino ... Quelqu'un a-t-il des conseils pour m'aider à déboguer cela?

Feuille de résumé LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

Spécifications LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

Exemple de texte tronqué: texte brouillé

Richard Russell
la source
1
Essayez d'ajouter un condensateur d'au moins 1 uF à vos rails d'alimentation, c'est-à-dire une extrémité du condensateur à Vcc et l'autre à GND. Soyez prudent avec la direction du condensateur s'il s'agit d'un électrolyte :)
abdullah kahraman
1
C'est vraiment bizarre. Vous ne pilotez pas directement ce gros relais, le boîtier de relais que vous avez acheté a en fait un minuscule DIP SSR qui coupe l'alimentation au gros relais, et le gros relais est alimenté par la ligne CA. En tant que tel, il ne devrait vraiment y avoir aucun moyen pour le back-emf généré par l'actionnement du relais d'entrer dans votre circuit.
Connor Wolf
Cela sent comme un problème de mise à la terre / découplage. Hoe, quelle capacité avez-vous sur vos rails d'alimentation sur la planche à pain?
Connor Wolf
De plus, à quelle distance est la boîte de relais du circuit de la maquette? Pouvez-vous mettre quelques pieds de fil entre le boîtier de relais et le reste du circuit? Cela supprimerait la possibilité de tout couplage magnétique.
Connor Wolf
Merci pour les réponses. Vous avez raison, le relais est découplé avec un SSR et divers autres composants. J'ai essayé une diode, et plus tard j'ai essayé un condensateur électrolytique 220uF entre 5V et GND sur les rails d'alimentation près de l'écran LCD. Aucun de ces éléments ne semblait avoir d'effet. Je n'ai pas (encore) essayé les deux ensemble.
Richard Russell

Réponses:

5

Avez-vous une diode sur votre relais? Sinon, les pointes inductives à la fermeture / ouverture causeront probablement des problèmes.

Lorsque vous arrêtez, par exemple, le courant traversant un relais, il essaie de le maintenir en marche, s'il n'y a pas de voie de décharge, cela créera une tension élevée (essentiellement, il continuera à augmenter jusqu'à ce qu'il trouve une route).
Plus précisément, la formule est V = L (dI / dT). Cela signifie que l'inductance s'oppose aux changements de courant qui la traversent en développant une tension aux bornes de celle-ci proportionnelle au taux de changement de courant.

Essayez de placer une diode à travers le relais, orientée pour s'opposer au flux de courant normal.

EDIT - en vérifiant la page du produit, il semble qu'il s'agisse d'un relais "prêt à rouler" dans une boîte avec des composants périphériques ajoutés, il est donc peu probable que ce soit le ci-dessus. Même ainsi, j'essayerais de placer la diode sur l'alimentation du relais.
Assurez-vous également que votre offre est bien filtrée, comme mentionné dans les commentaires. Placez quelques condensateurs d'au moins 1 uF à côté des circuits intégrés et de l'écran LCD, et un plafond de> 100 uF quelque part (tous de l'alimentation à la terre)

Oli Glaser
la source
Regardez la fiche technique du "Relais". L'entrée du relais entraîne en fait un minuscule SSR, qui commute la puissance réelle vers le relais lui-même. Étant donné que l'entrée du truc de relais est une entrée SSR, je ne vois pas de diode vraiment faire quoi que ce soit.
Connor Wolf
J'ai jeté un coup d'œil (je ne pouvais pas le trouver auparavant) et je suis d'accord, c'était juste une suggestion de type "ne peut pas faire de mal" sans plus d'informations. J'espère que nous aurons bientôt une mise à jour sur la façon dont il est avec le découplage ajouté.
Oli Glaser
Merci pour la réponse. Vous avez raison, le relais est découplé avec un SSR et divers autres composants. J'ai essayé la diode, et plus tard j'ai essayé un condensateur électrolytique 220uF entre 5V et GND sur les rails d'alimentation près de l'écran LCD. Je n'ai pas (encore) essayé les deux ensemble.
Richard Russell
J'ai également essayé de déplacer consciemment les circuits AC à environ un pied du circuit 5V, ne laissant que le fil de signal du relais 5V les reliant, mais cela n'a pas aidé. Dans mon expérimentation, j'ai découvert qu'une petite charge sur le relais (lampe halogène 85W) ne semble pas avoir beaucoup d'effet sur l'affichage, mais si j'ai une grande charge (bouilloire 2000W), il est plus susceptible de provoquer l'erreur. J'ai vu ce problème avec la lampe plus tôt, bien que rarement.
Richard Russell
Un capuchon en céramique d'environ 1 uF serait préférable pour les transitoires, ajoutez-en un en parallèle avec le 220 uF. Essayez d'ajouter un ou deux autres capuchons> 100uF également, sur + 5V et GND près des fils de relais. Pouvez-vous nous montrer une meilleure image de votre configuration?
Oli Glaser
1

J'ai eu le même problème avec un écran LCD 16x4 lorsque l'Arduino contrôlait également une carte relais opto-isolée SainSmart . Tout a bien fonctionné avec les contacts de relais non connectés. Mais lorsque le relais a commuté une charge inductive (un relais d'alimentation de 24 VCA), l'affichage s'est brouillé. Aucune quantité d'isolation de puissance et de condensateurs de filtre n'a aidé.

Ce qui a résolu le problème était un amortisseur (condensateur et résistance en série) entre les contacts du relais SainSmart. J'ai utilisé un filtre EMI / RFI Cornell Dubilier préemballé pour la propreté, mais un condensateur 0,1 ufd de type jardin en série avec une résistance de 47 ohms fonctionnerait probablement aussi bien.

Len Shustek
la source
puis-je voir le schéma de circuit sur la façon dont vous série le condensateur et la résistance avec le relais. THanks
Jam Ville
1

Je me cognais la tête pourquoi mon écran LCD est "brouillé" et il s'est avéré que je n'ai pas connecté mon Arduino GND à une planche à pain (si cela peut aider quelqu'un). Cordialement

bobe
la source
Cela n'ajoute pas grand-chose aux commentaires existants.
David
-1

utilisez un câble blindé sur la sortie et mettez-le à la terre. Cela a résolu le problème pour moi.

user25091
la source