Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Этот пост призван объяснить более простой способ использования Arduino Due (или другой платы 3,3 В) с популярным ЖК-дисплеем 16x2 с модулем адаптера I2C.
Первоначальная проблема заключается в том, что ЖК-дисплею требуется 5 В для правильной работы подсветки, но контакты SCL и SDA должны работать при 3,3 В для связи с Arduino Due, не причиняя вреда. Чтобы решить эту проблему, я нашел два варианта:
Наиболее упоминаемое решение - использовать двунаправленный преобразователь логического уровня, который действительно решает проблему. Но он также добавляет еще один компонент в ваш список и дополнительные проводные соединения в вашей цепи
Другой способ, который я нашел, - это просто отсоединить 2 подтягивающих резистора в «рюкзаке адаптера I2C» от ЖК-дисплея. Помимо того, что он намного проще, у него есть другие преимущества, которые объясняются в сравнении в конце. Этот метод является основным в этой публикации
Запасы
Arduino Due
ЖК-дисплей 16x2 с адаптерным модулем I2C
Паяльник
Паяльный насос или фитиль для пайки
Пинцет
Шаг 1: источник решения
Решение было изобретено не мной, я видел довольно хорошее предложение и объяснение на форуме Arduino по ссылке ниже, которую я воспроизведу в этом посте.
forum.arduino.cc/index.php?topic=553725.0
Ответ от: david_prentice
Я не смог найти ни одного полного руководства в Интернете, и, поскольку это очень распространенная проблема, я пытаюсь подробно представить решение здесь, засвидетельствовать, что оно действительно работает, и добавить информацию, которая могла бы смягчить некоторый скептицизм по поводу ее результатов.
Шаг 2: объяснение
Устройства
Для работы связи I2C требуются подтягивающие резисторы, подключенные к контактам SDA и SCL. Это потому, что устройства устанавливают эти контакты только в НИЗКИЙ уровень во время связи. Чтобы представить ВЫСОКИЙ, он должен только не отправлять НИЗКИЙ, и благодаря подтягиваниям он переходит в ВЫСОКИЙ. (это понимание будет очень важно позже)
ЖК-дисплей «Рюкзак I2C» имеет два подтягивающих резистора 4K7, которые удовлетворяют требованиям I2C. Но поскольку они подключены к Vcc, если вы используете 5 В, они потянут SDA и SCL до 5 В.
Если вы посмотрите на таблицу, то увидите, что, в отличие от других плат, Due уже имеет встроенные подтягивающие резисторы 1K5 на основных выводах SDA, SCL, которые подтягивают их к напряжению 3,3 В.
Тесты
- Дисплей LCD -> Arduino
- Земля -> Земля
- Vcc -> 5 В
- ПДД -> ПДД
- SCL -> SCL
Если вы просто подключите ЖК-дисплей к Due (следуя схеме выше), подтяжки 1k5 (или 1k0) Due, подключенные к 3,3 В, и подтяжки ЖК-дисплея 4K7, подключенные к 5 В, приведут к незанятым линиям I2C при 3,7 В (3,6 В с 1к0). Это нехорошо, поскольку в таблице данных Due указано максимальное напряжение 3,6 В для линий ввода-вывода.
При тестировании этого сценария только с ЖК-дисплеем я получил 3, 56 В. Добавив модуль EEPROM к тем же SDA и SCL, он поднялся до 3,606 В. В обоих случаях все работало нормально, но они далеки от идеального напряжения. уровни с учетом оговоренного максимума 3,6 В.
Так что да, есть шанс, что он будет работать так же, как и мой, без каких-либо изменений. Но уровень напряжения все еще далек от идеала, и некоторые несоответствия на подтяжке Due или LCD могут привести к тому, что оно превысит предел 3,6 В. (Было бы желательно, по крайней мере, перед тем, как тщательно проверить потенциометром 20K или 100K, какое наименьшее сопротивление между 5 В и выводами SCL / SDA, прежде чем они достигнут 3,6 В, хотя остальная часть решения намного безопаснее и, вероятно, проще)
Решение
Предлагаемое решение состоит в том, чтобы просто удалить подтягивающие резисторы из рюкзака с ЖК-дисплеем, которые пытаются подтянуть линию до 5 В. Затем останутся только подтягивающие резисторы Due на плате, подтягивающие линии SCL и SDA к 3,3 В.. Он работал отлично, поддерживая на холостом ходу напряжение около 3,262 В!
Связи остаются прежними:
- ЖК-дисплей -> Arduino
- Земля -> Земля
- Vcc -> 5 В
- ПДД -> ПДД
- SCL -> SCL
Если вам интересно, не подтягивает ли ЖК-дисплей линию к 5 В для представления ВЫСОКОГО уровня при обмене данными, помните, что на I2C устройства подтягивают линии только к НИЗКОМУ, представляя ВЫСОКИЙ сигнал, когда он не создает помех, который будет составлять 3,3 В от Подтягивания на борту Дуэ.
Кроме того, 3,3 В достаточно для рюкзака I2C, чтобы рассматривать его как сигнал HIGH.
Шаг 3: Определите и удалите резисторы
На изображении выше красным цветом показаны подтягивающие резисторы, которые я нашел в своем модуле.
Идентифицировать
Поскольку рюкзак адаптера LCD I2C может отличаться, резисторы могут быть разных конфигураций. Для определения подтягивающих резисторов можно использовать мультиметр с проверкой целостности цепи. Каждый подтягивающий резистор должен иметь один конец, подключенный к выводу SCL или SDA, а другой конец - к Vcc.
В моем случае на плате было три резистора 4K7 (472 в коде SMD). Только двое из них удовлетворяли вышеуказанным требованиям, указывая на то, что это именно те подтягивания, которые мы искали!
В качестве дополнительной меры предосторожности (если по какой-то причине они не были 4K7) я также протестировал другие резисторы и подтвердил, что ни один из них не удовлетворяет требованиям для подтягивания.
Удалять
Теперь все, что вам нужно сделать, это избавиться от них! Будет проще, если у вас есть паяльная помпа или фитиль для пайки и пинцет.
Шаг 4: Сравнение решений
Двунаправленный логический преобразователь уровня (LLC)
Плюсы:
Не требует паяльного оборудования или навыков
Минусы:
Рекламируйте больше кабелей и LLC в список компонентов вашего списка
Соединения Мессье с дополнительными компонентами
Чуть дороже
Отпаяйте подтягивающие резисторы ЖК-дисплея
Плюсы:
Более чистый конечный результат
Вероятно, вы сможете сделать это сразу, не дожидаясь LLC
Особенно хорошо, если вы хотите уменьшить количество компонентов и сложность сборки в сложном проекте или который вы хотите воспроизвести
Минусы:
Изменяет схему ЖК-дисплея (если вы хотите, чтобы он был «готов к использованию» с Uno, уже имея подтяжки 4K7, вы можете отменить изменения, перепаяв их)
Шаг 5: Заключительные соображения
Я надеюсь, что это руководство проливает свет на эту проблему совместимости и некоторые из ее возможных решений.
Если у вас есть какие-либо идеи по улучшению, более подробные объяснения, новые решения или обнаружены какие-либо ошибки в сообщении, сообщите мне в комментариях!:)