Отладка ЖК-дисплея 16x2 на Arduino

9

У меня есть стандартный ЖК-дисплей 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

Пример искаженного текста: искаженный текст

Ричард Рассел
источник
1
Попробуйте добавить по крайней мере 1 мкФ конденсатора в ваши силовые шины, то есть один конец конденсатора к Vcc, а другой - к GND. Будьте осторожны с направлением конденсатора, если он электролитический :)
Абдулла Кахраман
1
Это действительно странно. Вы не управляете этим большим реле напрямую, коробка реле, которую вы купили, на самом деле имеет крошечный DIP SSR, который переключает питание на большое реле, а большое реле отключается от линии переменного тока. Таким образом, на самом деле не должно быть способа, чтобы обратная ЭДС, генерируемая реле, попала в вашу цепь.
Коннор Вольф
Это пахнет как проблема заземления / развязки. Какую емкость у вас на силовых шинах на макете?
Коннор Вольф
Кроме того, насколько близко блок реле к контуру с макетной платой? Можете ли вы проложить несколько футов провода между блоком реле и остальной цепью? Это исключило бы возможность любой магнитной связи.
Коннор Вольф
Спасибо за ответы. Вы правы, что реле разъединено с SSR и различными другими компонентами. Я попробовал диод, а позже я попробовал электролитический конденсатор 220 мкФ между 5 В и GND на силовых шинах рядом с ЖК-дисплеем. Ни один из них, казалось, не имел эффекта. Я (пока) не попробовал их вместе.
Ричард Рассел

Ответы:

5

У вас есть диод через реле? В противном случае индуктивные скачки при закрытии / открытии могут вызвать проблемы.

Когда вы, например, останавливаете ток, протекающий через реле, оно пытается сохранить его, если нет пути разряда, это создаст большое напряжение (по существу, оно будет расти, пока не найдет маршрут).
В частности, формула V = L (dI / dT). Это означает, что индуктор противодействует изменениям тока через него, создавая напряжение на нем, пропорциональное скорости изменения тока.

Попробуйте установить диод поперек реле, ориентированный против нормального тока.

РЕДАКТИРОВАТЬ - проверяя страницу продукта, кажется, что это «готовое свернутое» реле в коробке с добавленными периферийными компонентами, так что вряд ли это будет выше. Тем не менее, я бы попытался поместить диод через питание к реле.
Также убедитесь, что ваши поставки хорошо отфильтрованы, как указано в комментариях. Поместите несколько конденсаторов не менее 1 мкФ рядом с микросхемами и ЖК-дисплеем, а затем установите крышку с емкостью> 100 мкФ (все от питания до земли)

Оли Глейзер
источник
Посмотрите на таблицу данных для «Эстафеты». Вход на реле фактически управляет крошечным SSR, который переключает фактическую мощность на само реле. Поскольку входной сигнал для реле является входом SSR, я не вижу, чтобы диод действительно что-то делал.
Коннор Вольф
У меня был взгляд (я не мог найти его раньше), и я согласен, это было просто предложение типа «не повредит» без дополнительной информации. Надеюсь, скоро мы получим обновление о том, как это происходит с добавленной развязкой.
Оли Глейзер
Спасибо за ответ. Вы правы, что реле разъединено с SSR и различными другими компонентами. Я попробовал диод, а позже я попробовал электролитический конденсатор 220 мкФ между 5 В и GND на силовых шинах рядом с ЖК-дисплеем. Я (пока) не попробовал их вместе.
Ричард Рассел
Я также попытался сознательно отодвинуть схему переменного тока на расстоянии около фута от цепи 5 В, оставив только сигнальный провод реле 5 В, соединяющий их, но это не помогло. В своих экспериментах я обнаружил, что небольшая нагрузка на реле (галогенная лампа 85 Вт), по-видимому, не сильно влияет на дисплей, но если у меня большая нагрузка (чайник мощностью 2000 Вт), это, скорее всего, приведет к ошибке. Я видел эту проблему с лампой ранее, хотя и нечасто.
Ричард Рассел
Керамическая крышка 1 мкФ или около того будет лучше для переходных процессов, добавьте ее параллельно 220 мкФ. Попробуйте также добавить еще один или два> 100 мкФ колпачка (ов) через +5 В и GND возле проводов реле. Можете ли вы показать нам лучшую картину вашей установки?
Оли Глейзер
1

У меня была такая же проблема с ЖК-дисплеем 16x4, когда Arduino также управлял оптоизолированной релейной платой SainSmart . Все работало нормально с отключенными контактами реле. Но когда реле переключало индуктивную нагрузку (реле питания 24 В переменного тока), дисплей искажался. Никакое количество изоляции и конденсаторов фильтра не помогло.

Решением проблемы стал демпфер (конденсатор и резистор последовательно) на контактах реле SainSmart. Для аккуратности я использовал предварительно упакованный фильтр электромагнитных и радиочастотных помех Cornell Dubilier, но конденсатор 0.1 ufd для различных садовых помещений, включающий последовательно 47-омный резистор, вероятно, будет работать так же хорошо.

Лен Шустек
источник
Могу ли я увидеть принципиальную схему, как вы последовательно соедините конденсатор и резистор с реле. Спасибо
Jam Ville
1

Я бился головой, почему мой ЖК-дисплей "искажен", и оказалось, что я не подключил свой Arduino GND к макету (если это кому-то поможет). С уважением

Боб
источник
Это не добавляет много к существующим комментариям.
Дэвид
-1

используйте экранированный кабель на выходе и заземлите его. Это решило проблему для меня.

user25091
источник