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é:
Réponses:
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)
la source
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.
la source
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
la source
utilisez un câble blindé sur la sortie et mettez-le à la terre. Cela a résolu le problème pour moi.
la source