Существует ли двунаправленный переключатель уровней 5В-3.3В?

Существует ли IC, которая соединяет любой вход/выход 3.3V с выходом/входом 5V? Мне это нужно в первую очередь для Arduino Due, но если есть какая-нибудь двунаправленная ИС, которая работает подобным образом, было бы здорово.

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

Решение

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

Используемый мосфет должен быть моделью с низким порогом Vgs, чтобы он мог иметь относительно низкое Rds-ON (сопротивление включения) при предполагаемом уровне входного напряжения (3,3 В в данном случае).
BSS138 в одном из таких примеров, он имеет Vgs-th 1.5v max и специфицируется как имеющий низкое сопротивление сток-исток при напряжениях Vgs вплоть до 2.5v (возможно, немного ниже).

В показанном примере используется перевод 3.3v 5v, но он также может работать с 2.5v 3.3v или 2.5v 5v, даже между 2.5v 12v. Диапазон ограничен только характеристиками используемого мосфета.

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

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

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

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

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

Альтернативное решение транзистора


Релевантные статьи, которые могут быть вам полезны:

Комментарии (0)

Еще один момент, который следует рассмотреть, - нужно ли вам вообще смещение уровней. Многие микросхемы имеют входные контакты с толерантностью 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)

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

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

Комментарии (0)

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

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

Для соединения шин с открытым коллектором (I2C, dallas 1-wire) трюк с BS138 - то, что нужно. Существуют небольшие микросхемы для I2C, которые помещают два FET в один корпус. (PCA9306 и т.д.)

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

Комментарии (0)