Рейтинг@Mail.ru

Как подключить к Arduino преобразователь логического уровня сигнала

автор:
Be the first to comment! Arduino
Print Friendly, PDF & Email
Разбираемся, для чего нужен преобразователь уровня сигнала и как им пользоваться.

Для проекта нам понадобится:

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, которые обеспечивают быструю коммутацию сигналов.

4-канальный преобразователь логического уровня на транзисторах BSS138
4-канальный преобразователь логического уровня на транзисторах BSS138

У показанного преобразователя есть два ряда контактов. С одной стороны подключаются сигналы низковольтового устройства (LV), с другой – сигналы высоковольтового (HV). К входам-выходам HV1…HV4 подключаются сигнальные линии высоковольтного устройства, а к входам-выходам LV1…LV4 – линии низковольтового устройства. К входу питания HV подключается питание высоковольтной части, к входу питания LV – питание низковольтной части схемы. Земля GND – общая.

Иногда каналы обозначаются не HV и LV, а по-другому. Например, A и B.

Как не сложно догадаться, сигналы необходимо подключать к соответствующим выводам. Например, если вы подключаете линию тактовой частоты контроллера к высоковольтному каналу HV3, то с другой стороны она будет выходить из канала LV3.

Ещё один пример преобразователя напряжения уровня – модуль HW-221 на основе микросхемы TXS0108E.

8-канальный преобразователь логического уровня на микросхеме TXS0108E
8-канальный преобразователь логического уровня на микросхеме 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 к Arduino через преобразователь логического уровня
Схема подключения датчика HTU21D к Arduino через преобразователь логического уровня

Для того чтобы использовать датчик, скачаем библиотеку HTU21D (она также приложена внизу статьи). Установим библиотеку как обычно. Загрузим пример SparkFun_HTU21D_Demo (File Examples SparkFun HTU21D humidity and temperature sensor breakout). В мониторе порта побегут измеренные значения температуры и влажности. Вживую это выглядит так:

Работа с датчиком HTU21D посредством Arduino и преобразователя логического уровня
Работа с датчиком HTU21D посредством Arduino и преобразователя

Сгорит ли датчик HTU21D, если его подключить напрямую к Arduino без преобразователя уровня? Вряд ли. Но он будет работать на повышенном напряжении, что сократит срок его службы на неопределённое время. Кроме того, датчик может греться, а значит, будет искажать показания и температуры, и влажности. Также возможны «глюки» в управлении. Поэтому лучше всё же подключать датчик HTU21D к Arduino через конвертер уровня. На крайний случай, если его нет, можно подключить линии SDA и SCL датчика через ограничительные резисторы сопротивлением ~330 Ом.

Более подробно о работе с сенсором HTU21D рассказывается в следующей статье.

Last modified onПятница, 18 Июнь 2021 21:11 Read 1944 times
Ключевые слова: :

Поделиться

Print Friendly, PDF & Email

Leave a comment