Я в значительной степени новичок в электронике, и в настоящее время я работаю над личным проектом, где у меня есть устройство, которое выдает цифровой сигнал (прямоугольную волну), который идет от 0 В до 2,7 В, и мне нужно прочитать это сигнал с моим Arduino. Этого, к сожалению, недостаточно для Arduino Mega 2560, поскольку минимальное напряжение для включения цифрового вывода составляет не менее 3 В.
Я провел некоторое «исследование» и наткнулся на шестнадцатеричный переключатель уровня MC14504B, который показался идеальным решением моей проблемы. Однако... У меня возникли проблемы с интерпретацией таблицы данных...
TL;DR: мне нужно сдвинуть уровень моего сигнала 2,7 В как минимум до 3 В или более.
Это логическая схема переключателя уровня:
А это характеристики:
Я не совсем уверен, как интерпретировать эти цифры. Планирую использовать режим TTL-CMOS.
Из того, что я могу сказать, пока вход считается 1 (высоким), мое напряжение на выходе будет ~ 5 В, если Vdd равно 5 В, что идеально. Подойдет ли 3,3 В Vdd, поскольку Arduino требуется не менее 3 В для включения высокого уровня на выводе?
Теперь к моему реальному вопросу... Я не понимаю часть Vcc и Vin (Vol, Voh).
Из таблицы видно, что если Vcc равно 5 В, а Vdd равно 10 В, то Vin будет логическим 0, если напряжение, подаваемое на вход <= 0,8 В, то же самое происходит, если Vcc равно 5 В, а Vdd равно 15 В.
Теперь, насколько я могу судить, вход будет считаться высоким, если на вход подается не менее 2 В или более, когда Vcc = 5 В и Vdd = 10 В/15 В, но и Voh, и Vol изменяются в зависимости от Vdd? Что это означает для моего варианта использования?
Что, если я использую 5 В для Vcc и Vdd? Что, если я использую 3,3 В для Vcc и Vdd? Что, если я использую 3,3 В для Vcc и 5 В для Vdd и наоборот. Что происходит в этих сценариях? Может ли кто-нибудь объяснить это очень простым способом, пожалуйста? Кажется, я что-то упускаю здесь, поскольку моя интерпретация не имеет для меня смысла.
Спасибо!
TL; DR: используйте Vcc = 5 В, Vdd = 5 В, режим TTL-CMOS, и все будет в порядке.
«Из того, что я могу сказать, пока вход считается 1 (высокий), мое напряжение на выходе будет ~ 5 В, если Vdd равно 5 В, что идеально. Будет ли 3,3 В Vdd приемлемым, поскольку Arduino требуется не менее 3 В, чтобы превратить булавка высоко?"
Правильно, вы получите выход ~ 5 В, если используете Vdd = 5 В. Однако в режиме TTL-CMOS напряжение Vdd и Vcc должно быть не менее 5 В (рис. 4 таблицы данных). Поскольку точка переключения входной логики составляет 1,5 В для Vcc = Vdd = 5 В, это будет отлично работать с вашим логическим входом 2,7 В.
«Теперь к моему реальному вопросу… Я не понимаю часть Vcc и Vin (Vol, Voh)».
В этой таблице данные перечислены довольно странным образом, и на самом деле не совсем понятно, что это значит. Моя интерпретация заключается в том, что «VOL = 1,0 В постоянного тока» означает, что при работе в этом состоянии выходное напряжение гарантированно будет меньше 1 В постоянного тока. К счастью, я не думаю, что это действительно проблема для вашего приложения.
«Вход будет считаться высоким, если на вход подается не менее 2 В или более, когда Vcc = 5 В и Vdd = 10 В/15 В, но и Voh, и Vol изменяются в зависимости от Vdd? Что это означает для моего варианта использования?»
Да, вы правильно интерпретируете это. Для вашего варианта использования игнорируйте числа «Voh и Vol» в разделе «Входное напряжение» и вместо этого уделите больше внимания самому верхнему разделу с надписью «Выходное напряжение», в котором просто говорится, что если вы используете Vdd = 5 В, вы будете получить выход ~ 5 В.
«Что, если я использую 5 В для Vcc и Vdd для обоих? Что, если я использую 3,3 В для Vcc и Vdd для обоих? Что, если я использую 3,3 В для Vcc и 5 В для Vdd и наоборот».
Опять же, см. рис. 4. В режиме TTL-CMOS вам нужно использовать 5 В для Vcc и Vdd. Я бы сказал, что использование 5 В для обоих — правильное решение для вашего приложения.
Пока вы не возражаете против логической инверсии, вы можете использовать что-то простое, например, транзистор и два резистора.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Выходное напряжение датчика выше 0,8 В включает транзистор Q1. R2 подтягивает вход Arduino к шине питания, когда Q1 выключен. Если вы используете контакт ввода-вывода с программируемым подтягивающим резистором, вы можете опустить R2. Большинство слабосигнальных NPN BJT подойдет для Q1.
Входы Arduino должны соответствовать указанным логическим уровням для запаса.
VIL <= 0,3 В пост. тока макс.
VIH >= 0,7 В пост. тока мин.
Таким образом, входная прямоугольная волна должна быть> = 0,4 В куб. См и для 5 В или 0,4 * 5 = 2,0 В пик-пик, и у вас есть 2,7 В с запасом 0,7 В.
В качестве альтернативы вы можете использовать пару переменного тока для входа со смещением R на Vcc/2.
Существует множество решений для переключения уровней от 2,7 В до 5 В.
Преподобный Б.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Уровни входного напряжения TTL составляют >=0,8 В низкого и >=2,0 В высокого. MC14504B принимает эти логические уровни в режиме TTL с Vcc = +5В. Ваши уровни сигнала 0В и 2,7В, так что все хорошо.
MC14504B имеет выходы CMOS, которые идут от 0 В до Vdd. Arduino работает при напряжении 5 В, поэтому вам также следует установить Vdd на +5 В.
Игнасио Васкес-Абрамс
сельвек
0xd4v3
сельвек
0xd4v3
Питер Мортенсен