Есть ли двунаправленный переключатель уровня 5v-3.3v?

27

Есть ли какая-либо микросхема, которая соединяет любые 3,3 В вход / выход с 5 В выход / вход? Мне это нужно в первую очередь для Arduino Due, но если есть какая-либо двунаправленная микросхема, которая работает так, это было бы здорово.

Некоторые люди советовали мне использовать интегральные схемы SN74AHC125 и CD4050, но я не понимаю, как они работают или как взаимодействовать с ними.

3bdalla
источник
2
Каков предполагаемый частотный диапазон?
alexan_e
1
Например, предположим, что я хочу подключить устройство 5 В к 3.3 В Arduino. Я не мог понять, где соединить выход 5В и вход 3.3В. А как насчет вывода 3.3 В от Arduino, например, на устройство 5 В? Что вы подразумеваете под частотным диапазоном?
3бдалла
1
Я не уверен, что понял вашу точку зрения, я раньше не имел дело с частотами, моя цель - простая электроника: |
3бдалла
3
SparkFun имеет совет, его называют «уровень конвертер»
geometrikal
1
Обычно я использовал микросхемы от техасских инструментов. Серии TXS и TXB имеют двунаправленные преобразователи напряжения (например, TXS0102 имеют два канала)
frarugi87

Ответы:

44

Очень простой двунаправленный переводчик уровня может быть сделан с помощью одного N-mosfet:

введите описание изображения здесь

Используемый mosfet должен быть моделью с низким порогом Vgs, чтобы он мог иметь относительно низкое значение Rds-ON (сопротивление ВКЛ) при предполагаемом уровне входного напряжения (в данном случае 3,3 В).
BSS138 в одном из таких примеров, он имеет Vgs-th максимум 1,5 В и определено, что он имеет низкое сопротивление сток-исток при напряжениях Vgs всего 2,5 В (возможно, немного ниже).

Показанный пример использует трансляцию 3.3v <-> 5v, но он также может работать с 2.5v <-> 3.3v или 2.5v <-> 5v, даже между 2.5v <-> 12v. Диапазон ограничен только характеристиками используемого мосфета.

Показанная схема основана на замечании по применению из NXP
AN97055 Двунаправленный переключатель уровня для шины I2C и других систем
Новая более короткая версия: AN10441 Методы сдвига уровня в конструкции шины I2C

Когда L1 высокий (3v3) или плавающий, R1 удерживает Mosfet в выключенном состоянии, поэтому R2 поднимает сторону слива высоко (до 5v).

Когда L1 опускается, то Mosfet проводит, и сток становится низким.

Когда низкий уровень (0) подается на H1, то это напряжение передается через диод подложки на сторону источника (L1)

Обратите внимание, что размер сопротивления может влиять на скорость ( источник изображения )

введите описание изображения здесь

Альтернативное транзисторное решение введите описание изображения здесь


Соответствующие статьи вы можете найти полезными:

alexan_e
источник
11

Поскольку вопрос, по-видимому, ориентирован на интегральную схему, обеспечивающую двунаправленное смещение уровня, рассмотрим семейство деталей Texas Instruments TXB010x: TXB0102 имеет 2 канала, TXB0104 имеет 4 канала, а TXB0108 имеет 8 каналов.

Отличительной особенностью этого семейства микросхем является то, что направление сигнала определяется автоматически, поэтому отдельный вывод настройки направления не требуется.

Скорость переключения до 10 МГц работает надежно. Теоретическая максимальная скорость может быть выше - таблицы данных не содержат явных указаний на основании того, что я могу определить.

У меня TXB0108, работающий между 3,6-вольтовой панелью запуска MSP430 и 5-вольтовой Arduino Nano, поэтому вопрос использования этого вопроса рассматривается.

Для тестирования Adafruit предлагает готовый модуль с TXB0108 , который избавляет вас от необходимости пайки SMD-детали. Могут быть похожие варианты для 0102 и 0104 от них или других.

8-канальный двунаправленный преобразователь логического уровня - TXB0108

Если целью является сдвиг уровня сигнала I2C , который не идеально подходит для интегральных микросхем серии TXB, то опция, специально предназначенная для топологии нагрузочного резистора и открытого коллектора I2C, представляет собой подобный модуль , снова продаваемый Adafruit. и другие поставщики.

Переключатель уровня I2C

В этом модуле используются полевые МОП-транзисторы BSS138 способом, описанным в ответе alexan_e . Хотя речь идет не о единственной ИС, такой как вопрос, возможно, она выполняет поставленную цель. В качестве альтернативы, просто построить эту схему самостоятельно, используя МОП-транзисторы.

Аниндо Гош
источник
+1 Отличная находка! ... Ваша ссылка на TXB0102 фактически является ссылкой на TXS0102. Я не определил разницу, но это отмечено в техническом описании TXS0102: «Его основное целевое приложение используется для взаимодействия с драйверами с открытым стоком на входах / выходах данных, таких как I2C или 1-wire, где данные является двунаправленным и управляющий сигнал недоступен. TXS0102 также может использоваться в приложениях, где двухтактный драйвер подключен к вводу-выводу данных, но TXB0102 может быть лучшим вариантом для таких двухтактных приложений ». Вот фактическая ссылка на TXB0102
Tut
@ Тут ой, промах, спасибо. TXB0108 удовлетворяет мои собственные потребности, так что остальные для меня более приятны. :-)
Аниндо Гош
10

Еще одна вещь, которую вы должны рассмотреть, это то, нужно ли вам вообще менять уровень. Многие микросхемы имеют входные контакты, допускающие 5 В, даже при работе с более низким напряжением, например 3,3. Процессор atmega также интерпретирует все, что выше 0,6 * Vcc или 3 В для Arduino, как логический максимум, поэтому сигнал 3,3 В может напрямую управлять выводом Arduino без смещения уровня.

Предполагая, что вы используете 5 В arduino и вам нужно поговорить с частью 3.3 В, если часть имеет входы с допустимым напряжением 5 В (многие делают это в настоящее время), просто подключите их, и это будет работать. Если ваша двунаправленная линия имеет конструкцию с открытым коллектором, такую ​​как i2c, где устройства только опускают линию, тогда просто подключите подтягивающие резисторы к 3,3 В вместо 5 В, и все будет работать.

В противном случае все, что вам нужно сделать, это убедиться, что линия не поднимается выше 3,3 В, вы можете сделать это с помощью резистора и стабилитрона, установить резистор на линию Arduino, а затем стабилитрон, чтобы зафиксировать напряжение до 3,3 В. (источник: repetae.net )зажим стабилитрона

У вас может возникнуть соблазн жить опасно и просто использовать резистор 10 кОм и ничего больше. Причина, по которой это (иногда!) Работает, заключается в том, что внутри приемного чипа находится зажимной диод, который подает избыточное напряжение до VCC или 3,3 В. Этот диод сгорит, если вы попытаетесь протянуть всю линию 3,3 В до 5 В через него (в дополнение к любому повреждению, вызванному вытягиванием этой линии до 5 В), однако с резистором не будет течь большой ток и предполагается, что ваша линия 3,3 В имеет нетривиальную нагрузку, это существенно не изменит уровень вашей линии электропередачи, но есть много предостережений. Так что, в общем, не делайте этого, если у вас нет локальной изолированной шины 3,3 В и вы не можете сэкономить лишние два цента для стабилитрона. Я упоминаю об этом только потому, что вы увидите это в схемах для дешевых дешевых секционных досок, которые вы получаете на ebay, и у вас может возникнуть желание скопировать их, просто не позволяйте ему проскользнуть мимо макета в производственный дизайн. :)

Эдит только что заметил, что вы используете более новую версию 3.3 В Arduino, поэтому просто инвертируйте то, что я сказал выше, уловка с резистором Зенера все еще будет работать, хотя, очевидно, некоторые из линий ввода / вывода из-за этого могут быть 5 В, возможно, есть некоторое разногласие на форумах. Teensy 3.1 также представляет собой симпатичную маленькую плату ARM, которая имеет все толерантные выводы 5 В и стоит меньше половины стоимости должного и лучше разработанного IMHO http://www.pjrc.com/store/teensy31.html

Джон Мичам
источник
3

В отделе дешевых [er?] Решений FET (из принятого ответа на основе приложения NXP) можно заменить на BJT и диод Шоттки, как в Silicon Labs AN883 . Их схема немного сложна с другими вещами, поэтому я извлек здесь существенную часть и переориентировал ее так, чтобы она выглядела в принятом ответе для простого сравнения двух схем:

введите описание изображения здесь

BJT выполняет перевод только в направлении от низкого до высокого ... именно так, как описано в одном транзисторе с повышением уровня . Шоттки заменяет диод корпуса полевого транзистора на высокий -> низкий перевод.

Ниже приведено увеличенное изображение для транслятора 3.3 <-> 1.8 В; они также предлагают эту схему для трансляции 5 <-> 1,8 В и т. д. При трансляции 3,3 <-> 1,8 В у MMBT3904 падение составляло только 150 мВ (насыщение). Диод BAS40 имел падение напряжения 350 мВ в обратном направлении. Эти смещения влияют (очевидно) на вывод низкого уровня логики на нижней и, соответственно, верхней стороне транслятора.

введите описание изображения здесь

У них были хорошие CMOS-устройства с обеих сторон, поэтому входной импеданс не был большой проблемой. Не было видимого ухудшения / смещения логически высоких полей в их трассе 1V / div, поэтому я не потрудился включить это здесь. Входное сопротивление их устройств было не менее 1 МОм, что я могу сказать из моделирования. Высокие логические границы начинают ухудшаться ниже входного сопротивления 100 Кб или около того.

Кроме того, они рекомендуют этот BJT-транслятор только до 300 кГц или около того.

Я не уверен, какое из этих решений на практике дешевле, FET или Schottky + BJT ... но этому, безусловно, нужно больше деталей ... если только вы не используете один из существующих пакетов диод + транзистор, например, PZMT1101 . Но вам также нужно 3 резистора.

шипение
источник
Каково ожидаемое потребление тока / потребляемая мощность этого метода по сравнению с методом на основе FET?
KyranF
@KyranF: Я не сравнивал их, но если вы беспокоитесь об этом, то или из-за подтягиваний, либо не будет. CMOS-версии с низким энергопотреблением выглядят как m.eet.com/media/1103155/Fig2.gif. Это из eetimes.com/document.asp?doc_id=1231111, в котором сравниваются различные подходы.
Fizz
Спасибо за ссылки. Я подозреваю, что подход BJT был бы очень мощным по сравнению с тем временем, когда база насыщена. Постоянная нагрузка подтягивающих резисторов действительно беспокоит любую конструкцию, особенно конструкции с батарейным питанием.
KyranF
@KyranF: Я смотрел на это в симуляции: транзистор и диод рассеивают мощность в Вт, а резисторы рассеивают мВт. На самом деле BJT рассеивает около 100 мВт, диод 1 мВт. FET или BJT здесь не имеют значения ... резисторы, имеющие путь к земле для рассеивания статического электричества, имеют значение. Это с входными импедансами 1Meg.
Fizz
@KyranF: Я пытался использовать модель ON BSS138LT1, но это дает отрицательное распределение средней мощности в LTspice (-63uW) ... поэтому я думаю, что их модель может быть проблематичной. Мусор в ... мусор вон. Также он начал колебаться (на гораздо более высокой частоте, чем сигнал) при движении с высокой стороны. Это модель subckt, а не простая модель MOS, поэтому трудно понять, что происходит. [продолжение]
Fizz
2

Ну, их много. Вам необходимо указать максимальную частоту, количество битов и т. Д. Короче говоря, вы можете использовать любую ИС преобразователя уровня напряжения. У Texas Instruments есть аккуратный инструмент выбора для той же цели: http://www.ti.com/logic/docs/translationresults.tsp?sectionId=458&voltageIn=5.0&searchDirection=2&voltageOut=3.3#voltintf

Али Алави
источник
2

Кроме того, если вы ищете отличную электрическую изоляцию, а также функцию двунаправленного сдвига уровня, я бы порекомендовал ISO1541 . Это довольно дешево и обеспечивает хорошую защиту через изоляцию.

dr3patel
источник
1

Самое простое решение - запустить все ваши цепи при напряжении 3,3 В. Чипы HC будут счастливо работать на этом уровне.

Когда это невозможно, вы можете сделать вещи намного проще, ограничив себя одним направлением. Микросхема HCT на 5 В будет нормально принимать уровни 3,3 В, а простой двухрезисторный делитель может уменьшить 5 В до 3,3 В. Некоторые UC допускают 5 В на своих выводах, поэтому вам не нужен делитель. И если вы подключите 5В отводы к контактам и переключитесь между заземлением и обрывом (= вход), у вас будет проходимый выход 0-5В.

Для соединения шин с открытым коллектором (I2C, Dallas 1-wire) трюк BS138 - это путь. Есть маленькие чипы для I2C, которые помещают два полевых транзистора в один корпус. (PCA9306 и т. Д.)

Но если вам действительно нужна трансляция на уровне двунаправленного текста: такие чипы существуют, проверьте, например, TXB0108.

Воутер ван Оойен
источник
-4

Простое решение - использование SN74LVC244AN. Может питаться от 3V3 и иметь напряжение 5 В на входах.

град
источник
5
Это не двунаправленный.
Мэтт Янг
Нет, но 74LVC4245 есть.
Брегалад