Преобразование логических уровней UART

kost82
Offline
Зарегистрирован: 30.11.2015

Исходные данные: имеется Arduino Nano и датчик mh-z19. Выходы RX и TX последнего не толерантны к 5 Вольтам (может по факту и толерантны, но я проверять не хочу, датчик не из дешевых). А хочется их подружить (ардуину и датчик) именно по UART интерфейсу, чтобы отправлять команды и получать данные уже в "цифре". Простым резистивным делителем, как я понял, тут не обойтись.

На Алиэксперссе есть простые дешевые преобразователи типа такого но беда в том, что их не найти в обычных магазинах с электронными компонентами, а ждать с али очень долго.

В принципе можно такой собрать и самому, тем более нужно всего два канала, а не четыре, но мне тут пришло в горову, что скорей всего существуют уже готовые устройства, решающие эту проблему, распространенные (можно купить в любом радиомагазине) и недорогие.

Посоветуйте пожалуйста, кто пользовался, есть такие устройства. Основные требования: согласовывать нужно 3.3 и 5 Вольт, минимум два канала (либо подойдут два одноканальных), двунаправленные (ну то есть, чтобы можно было через них отправлять команду и принимать ответ), с минимальной обвязкой (в идеале вообще без дополнительных внешних элементов) ну и чтоб распространенные были. Желательно не слишком мелкие, чтоб паять было удобно, хотя это не критично.

Спасибо!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kost82 пишет:

Посоветуйте пожалуйста, кто пользовался, есть такие устройства. Основные требования: согласовывать нужно 3.3 и 5 Вольт, минимум два канала (либо подойдут два одноканальных), двунаправленные

Зачем двунаправленные? RX в одну сторону направлен, а TX в другую. Вам нужно два однонаправленных. Этого добра, как биоматериала за баней, например https://www.chipdip.ru/product/cd40109be . Обвязки никакой (ну кроме фильтра по питаню, как обычно). Ну и там в разделе "Логические - Преобразователи уровня" есть ещё 100500.

nik182
Offline
Зарегистрирован: 04.05.2015

Больше того. Tx датчика Rx ардуины преобразователь не нужен. Tx ардуины Rx датчика согласовывается делителем из двух резисторов.

kost82
Offline
Зарегистрирован: 30.11.2015

Спасибо!
А то я начитался всяких форумов с обсуждением преобразования уровней, и даже статью нашел с кучей вариантов преобразования. А оказалось все так просто. Надо было сразу на "родной" форум идти :-)

kost82
Offline
Зарегистрирован: 30.11.2015

nik182 пишет:
Больше того. Tx датчика Rx ардуины преобразователь не нужен. Tx ардуины Rx датчика согласовывается делителем из двух резисторов.

А номиналы резисторов какие лучше брать? Ну я имею в виду Омы, килоОмы десятки килоОм...? Длина провода планируется около 2-3 метров, если это важно. Планирую использовать витую пару для этого.

b707
Offline
Зарегистрирован: 26.05.2017

kost82 пишет:

А номиналы резисторов какие лучше брать? Ну я имею в виду Омы, килоОмы десятки килоОм...? Длина провода планируется около 2-3 метров

в этих условиях я бы взял 1-2К

12val12
Offline
Зарегистрирован: 19.02.2019

Да не нужен делитель для преобразования 5 в 3.3 и обратно

Просто последовательно резисторы 470 Ом

Пороги кмоп примерно пол питания (это 3 в 5 )   , 

а излишек в 2 мА легко уйдет в VCC через входные диоды  (это 5 в 3)

но  если нужно Очень скоростное преобразование 3 в 5  серия HCT идеально  подойдет так как у нее пороги  ниже чем пол питания для согласования с ТТЛ

kost82
Offline
Зарегистрирован: 30.11.2015

Да, действительно в каждой статье по mh-z19 пишут, что нужно приведение уровней, и при этом подключают напрямую. И даже все работает.
Я почему то склонен верить даташитам производителя, где есть явное указание, что необходимо согласовать уровни напряжений. Мне не лень добавить два резистора в схему, зато я буду спокоен за датчик.

sadman41
Offline
Зарегистрирован: 19.10.2016

MH-Z19 имеет PWM выход, через который данные идут всегда, а не по запросу. Так что, если нужно с него только брать CO2, можно обойтись одним входом без согласования.

__Alexander
Offline
Зарегистрирован: 24.10.2012

TX датчика можно подключить напрямую на RX ардуины, т.к. вход не подтягивается. А RX датчика подтянуть резистором на его-же 3.3В (соседняя нога) и через диод пустить на TX ардуины.