Как подключить к Arduino преобразователь логического уровня сигнала
Для проекта нам понадобится:
- Ардуино UNO (или совместимая плата);
- 8-канальный преобразователь уровня сигнала 3.3-5 В или 4-канальный;
- макетная плата;
- соединительные провода (вот такие);
- персональный компьютер или ноутбук.
1Назначение и описание преобразователя уровня сигнала
Для коммуникации с цифровыми устройствами (датчиками, контроллерами и т.д.) и управления ими используется цифровой сигнал. Цифровой сигнал – это такой сигнал, в котором вся необходимая информация кодируется двумя уровнями напряжения, т.н. логическим нулём и логической единицей. За логический "0" обычно (но не обязательно) принимают напряжение 0 В, за логическую "1" – высокий уровень напряжения. Высокий он называется только относительно логического нуля. По факту это обычно довольно слабые напряжения. Самые распространённые на сегодня напряжения для передачи цифрового сигнала это 5 В и 3.3 В. Техника развивается, технологии изготовления цифровых устройств не стоят на месте. Поэтому в последнее время также встречаются более низкие напряжения 2.4 и 1.2 В. Подробнее о напряжениях, применяемых в цифровой технике, можно почитать здесь.
Если ваш микроконтроллер использует 5-вольтовую логику (как, например, Arduino), то нельзя просто взять и подключить к нему напрямую устройство, в котором применяется другой логический уровень. Для согласования уровней применяются специальные преобразователи напряжения.
В англоязычной литературе их могут называть по-разному: logic shifter, level shifter, level converter.
Они бывают одноканальные, но чаще встречаются многоканальные. Например, 2-канальные, 4-канальные, 8-канальные и другие. Число каналов показывает, сколько разных логических сигналов можно подключить к данному преобразователю. Например, если вы применяете 4-проводный интерфейс SPI для связи с вашим датчиком, то необходимо применять 4-канальный преобразователь.
Кроме того, бывают преобразователи однонаправленные и двунаправленные. Однонаправленные преобразователи уровня могут преобразовывать сигналы, идущие только в одну сторону, как правило, от контроллера к управляемому устройству. Двунаправленные преобразователи, соответственно, преобразуют сигнал и от контроллера к устройству, и в обратную сторону.
Пример 4-канального двунаправленного преобразователя уровня показан на фотографии. Его основной элемент – четыре транзистора BSS138, которые обеспечивают быструю коммутацию сигналов.
У показанного преобразователя есть два ряда контактов. С одной стороны подключаются сигналы низковольтового устройства (LV), с другой – сигналы высоковольтового (HV). К входам-выходам HV1…HV4 подключаются сигнальные линии высоковольтного устройства, а к входам-выходам LV1…LV4 – линии низковольтового устройства. К входу питания HV подключается питание высоковольтной части, к входу питания LV – питание низковольтной части схемы. Земля GND – общая.
Иногда каналы обозначаются не HV и LV, а по-другому. Например, A и B.
Как не сложно догадаться, сигналы необходимо подключать к соответствующим выводам. Например, если вы подключаете линию тактовой частоты контроллера к высоковольтному каналу HV3, то с другой стороны она будет выходить из канала LV3.
Ещё один пример преобразователя напряжения уровня – модуль HW-221 на основе микросхемы TXS0108E.
Здесь уже имеются 8 вводов-выводов. Причём к выводам со стороны порта A (A1…A8) должна подключаться низковольтовая логика, а к выводам B1…B8 – высоковольтная. Соответственно, питание VCCA должно быть от 1.4 до 3.6 В, а питание VCCB – от 1.65 до 5.5 В. Напряжение VCCA должно быть не больше, чем VCCB. Также на данном модуле присутствует вход разрешения работы OE. Работа разрешена при подключении его к питанию VCCA. При подключении OE к земле, все вводы-выводы переходят в третье состояние.
2Пример подключения преобразователя логического уровня
Давайте посмотрим на практическом примере, как работает преобразователь уровня.
Для этого подключимся к какому-нибудь 3-вольтовому датчику, например, датчику температуры и влажности HTU21D. Этот датчик управляется по интерфейсу I2C, и ему необходим 3-вольтовый сигнал управления. В то же время Arduino генерирует 5-вольтовый сигнал. Тут нам и придёт на помощь преобразователь логического уровня. Соединим устройства по такой схеме:
Для того чтобы использовать датчик, скачаем библиотеку HTU21D (она также приложена внизу статьи). Установим библиотеку как обычно. Загрузим пример SparkFun_HTU21D_Demo (File Examples SparkFun HTU21D humidity and temperature sensor breakout). В мониторе порта побегут измеренные значения температуры и влажности. Вживую это выглядит так:
Сгорит ли датчик HTU21D, если его подключить напрямую к Arduino без преобразователя уровня? Вряд ли. Но он будет работать на повышенном напряжении, что сократит срок его службы на неопределённое время. Кроме того, датчик может греться, а значит, будет искажать показания и температуры, и влажности. Также возможны «глюки» в управлении. Поэтому лучше всё же подключать датчик HTU21D к Arduino через конвертер уровня. На крайний случай, если его нет, можно подключить линии SDA и SCL датчика через ограничительные резисторы сопротивлением ~330 Ом.
Более подробно о работе с сенсором HTU21D рассказывается в следующей статье.
Download attachments:
- Техническое описание транзистора BSS138 (749 Downloads)
- Техническое описание (datasheet) TXS0108E (994 Downloads)
- Библиотека Arduino для HTU21D (779 Downloads)
Поблагодарить автора:
Поделиться
Related items
2 comments
-
Дмитрий Суббота, 30 Июль 2022 09:02 Ссылка на комментарий
Здравствуйте. Может вы подскажете, как реализовать.
Имеется задача: вывести символьные изображения посредством Ардуино, полученные с платы с установленным газоразрядным дисплеем, те что устанавливались на музыкальных центрах 90-х - 00-х годов. Символы анимированные и управляются процессором с муз центра. Как возможно полученный сигнал преобразовать для ардуинки и затем вывести на современный экран. Подскажите, пожалуйста, если это возможно -
aave1 Воскреснье, 31 Июль 2022 19:50 Ссылка на комментарий
Дмитрий, всего доброго! Начать стоит с того, что найти, какая микросхема формирует сигнал на ваш экранчик, а затем найти и изучить документацию на неё. Возможно Вам повезёт, и интерфейс окажется совместимым с современными дисплеями. А возможно и нет, и придётся принимать его с Ардуино и каким-то образом преобразовывать. В любом случае нужно начать с изучения документации. Много вариантов, как может быть.