У меня есть стандартный ЖК-дисплей 16x2 (я думаю, что он совместим с Hitachi HD44780 - см. Сводку и технические характеристики ниже), подключенный к Arduino Uno с помощью 4 контактов данных, как описано здесь , хотя я добавил 2 резистора 220 Ом параллельно (т.е. Резистор 110 Ом) на выводе 16 (заземление задней подсветки), и заменили Pot на статические резисторы для создания 4 В на Vo.
Короче говоря, RW подключен к земле, а RS, Enable и Data4-7 подключены к выводам Arduino, а данные 0-3 плавающие.
У меня есть другие вещи (датчики, транзистор с оптоизолированным SSR и сетевое реле, некоторые кнопки), подключенные к различным контактам на Arduino. Код, который я использую, записывает текст на дисплей несколько раз в секунду, и обычно дисплей работает отлично.
Однако, когда реле замыкается (это занимает около 10 мА и управляется транзистором, который, в свою очередь, управляется от одного из выводов Arduino), иногда ЖК-дисплей искажается. Обычно он остается искаженным до следующего замыкания реле, но иногда при размыкании реле или после нескольких повторных циклов открывания / закрывания для сброса. Полоскание всегда начинается и останавливается одновременно с открытием или закрытием реле.
Под «искаженным» я подразумеваю, что каждый раз, когда я пишу в него после того, как он искажается, вместо того, чтобы писать английские символы, я получаю строку символов, которую я обычно не могу определить в таблице данных (хотя некоторые я могу). Эта строка искаженных символов имеет тенденцию двигаться влево вдоль экрана, когда я пишу новый текст на ЖК-дисплей.
Я уверен, что это не запутывает сам Arduino, так как я одновременно пишу тот же текст на монитор Serial, и он не искажается.
С тех пор я экспериментировал с подключением вывода RW к выходу Arduino и заземлением Data0-3, но это не помогает. Я запитал все устройство от батареи 9 В или от USB, и это не помогает. Я заменил батарею ... без изменений.
Единственное, что, кажется, работает, это отсутствие нагрузки на реле, но это побеждает цель :-)
У меня нет анализатора сигналов или чего-то более сложного, чем мультиметр, ноутбук и Arduino ... У кого-нибудь есть советы, которые помогут мне отладить это?
Сводная таблица ЖКД: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf
Характеристики ЖК-дисплея: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf
Пример искаженного текста:
Ответы:
У вас есть диод через реле? В противном случае индуктивные скачки при закрытии / открытии могут вызвать проблемы.
Когда вы, например, останавливаете ток, протекающий через реле, оно пытается сохранить его, если нет пути разряда, это создаст большое напряжение (по существу, оно будет расти, пока не найдет маршрут).
В частности, формула V = L (dI / dT). Это означает, что индуктор противодействует изменениям тока через него, создавая напряжение на нем, пропорциональное скорости изменения тока.
Попробуйте установить диод поперек реле, ориентированный против нормального тока.
РЕДАКТИРОВАТЬ - проверяя страницу продукта, кажется, что это «готовое свернутое» реле в коробке с добавленными периферийными компонентами, так что вряд ли это будет выше. Тем не менее, я бы попытался поместить диод через питание к реле.
Также убедитесь, что ваши поставки хорошо отфильтрованы, как указано в комментариях. Поместите несколько конденсаторов не менее 1 мкФ рядом с микросхемами и ЖК-дисплеем, а затем установите крышку с емкостью> 100 мкФ (все от питания до земли)
источник
У меня была такая же проблема с ЖК-дисплеем 16x4, когда Arduino также управлял оптоизолированной релейной платой SainSmart . Все работало нормально с отключенными контактами реле. Но когда реле переключало индуктивную нагрузку (реле питания 24 В переменного тока), дисплей искажался. Никакое количество изоляции и конденсаторов фильтра не помогло.
Решением проблемы стал демпфер (конденсатор и резистор последовательно) на контактах реле SainSmart. Для аккуратности я использовал предварительно упакованный фильтр электромагнитных и радиочастотных помех Cornell Dubilier, но конденсатор 0.1 ufd для различных садовых помещений, включающий последовательно 47-омный резистор, вероятно, будет работать так же хорошо.
источник
Я бился головой, почему мой ЖК-дисплей "искажен", и оказалось, что я не подключил свой Arduino GND к макету (если это кому-то поможет). С уважением
источник
используйте экранированный кабель на выходе и заземлите его. Это решило проблему для меня.
источник