Как я могу использовать вход 12 В на цифровом выводе Arduino?


38

Я создаю контроллер для системы 12 В, используя микрокронтроллер Arduino Uno. Для выходов я использую релейный экран для переключения компонентов 12 В. У меня есть тумблер 12 В, который включает некоторые компоненты 12 В в системе, и я хочу использовать триггерный сигнал от того же самого переключателя для отправки на цифровой вход Arduino. Я знаю, что Arduino может работать только с 5 В макс. Что было бы лучшим способом понизить напряжение 12 В на выключателе до 5 В для входа?

РЕДАКТИРОВАТЬ: Система для использования в автомобиле. Нужно ли каким-либо образом уменьшать силу тока автомобильного аккумулятора, чтобы не взорвать компоненты?


3
сила тока в машине не имеет значения - компоненты потребляют столько тока, сколько им нужно. Автомобильный аккумулятор способен подавать сотни ампер, например, необходимый для стартера. Это не означает, что всегда есть сотни ампер, которые могут повредить вещи. :)
KyranF

Ответы:


44

Хорошие новости! Это будет дешево! :-)

Простой резисторный делитель снизит напряжение 12 В до 5 В, которые может переварить Arduino. Выходное напряжение можно рассчитать как

VOUT=R2R1+R2VIN

Значения резисторов в диапазоне 10 кОм являются хорошим выбором. Если ваш R2 равен 10 кОм, тогда R1 должен быть 14 кОм. Теперь 14 кОм не является стандартным значением, а 15 кОм. Ваше входное напряжение будет 4,8 В вместо 5 В, но Arduino увидит это все еще на высоком уровне. У вас также есть немного запаса на случай, если 12 В должно быть слишком высоким. Даже 18 кОм все равно дадут вам достаточно высокое 4,3 В, но тогда вы должны начать думать о 12 В слишком низко. Будет ли напряжение по-прежнему считаться высоким? Я бы придерживался 15 кОм.

редактировать
Вы упоминаете автомобильную среду, а затем вам нужна дополнительная защита. Напряжение 12 В в автомобиле никогда не бывает достаточно 12 В, но в большинстве случаев оно выше, с пиковыми значениями в несколько вольт выше номинальных 12 В. (На самом деле номинальное значение больше похоже на 12,9 В при 2,15 В на элемент.) Вы можете поместить стабилитрон на 5 В диод параллельно с R2, и это должно обрезать любое напряжение выше, чем напряжение 5 В. Стабилизатора. Но напряжение Стабилизатора меняется в зависимости от тока, и при низком входном токе резисторы дают вам отключение при более низких напряжениях. Лучшим решением было бы иметь диод Шоттки между входом Arduino и источником питания 5 В. Тогда любое входное напряжение выше, чем примерно 5,2 В, приведет к тому, что диод Шоттки будет работать, а входное напряжение будет ограничено 5,2 В. Для этого вам действительно нужен диод Шоттки, обычный PN-диод имеет 0.

Лучший
оптрон Майкла - хорошая альтернатива, хотя и немного дороже. Вы часто будете использовать оптопару для изоляции ввода от выхода, но вы также можете использовать его для защиты входа, как вы хотите здесь.

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

Как это работает: входной ток загорается внутренним инфракрасным светодиодом, который вызывает выходной ток через фототранзистор. Соотношение между входным и выходным током называется CTR для коэффициента передачи тока. CNY17 имеет минимум CTR 40%, что означает , что необходимо 10 мА вход для 4 мА выхода. Давайте перейдем к входу 10 мА. Тогда R1 должно быть (12 В - 1,5 В) / 10 мА = 1 кОм. Выходное сопротивление должно вызывать падение напряжения 5 В при 4 мА, тогда оно должно составлять 5 В / 4 мА = 1250 Ом. Лучше иметь немного более высокое значение, в любом случае напряжение не упадет более чем на 5 В. 4.7 кОм ограничит ток до 1 мА.

Vcc является источником питания 5 В Arduino, Vout поступает на вход Arduino. Обратите внимание, что входной сигнал будет инвертированным: он будет низким, если присутствует 12 В, и высоким, если его нет. Если вы этого не хотите, вы можете поменять положение выхода оптопары и подтягивающего резистора.

edit 2
Как решение оптопары не решает проблему перенапряжения? Резисторный делитель является пропорциональным: выходное напряжение является фиксированной величиной входного напряжения. Если вы рассчитали на 5 В на 12 В, то на 24 В будет 10 В. Не в порядке, отсюда и защита диода.

В схеме оптопары вы можете видеть, что правая сторона, которая подключается к входному контакту Arduino, вообще не имеет напряжения выше 5 В. Если оптрон включен, то транзистор будет потреблять ток, я использовал 4 мА в примере выше. 1,2 кОм приведет к падению напряжения на 4,8 В в соответствии с законом Ома (текущее время сопротивление = напряжение). Тогда выходное напряжение будет 5 В (Vcc) - 4,8 В на резисторе = 0,2 В, это низкий уровень. Если ток будет ниже, падение напряжения будет также меньше, и выходное напряжение будет расти. Например, ток 1 мА вызовет падение на 1,2 В, а выходной сигнал составит 5 В - 1,2 В = 3,8 В. Минимальный ток равен нулю. Тогда у вас нет напряжения на резисторе, и на выходе будет 5 В. Это максимум,

Что если входное напряжение станет слишком высоким? Вы случайно подключаете батарею 24 В вместо 12 В. Затем ток светодиода удвоится и составит от 10 мА до 20 мА. 40% CTR будет вызывать выходной ток 8 мА вместо расчетных 4 мА. 8 мА через резистор 1,2 кОм будет падением 9,6 В. Но от источника 5 В это будет отрицательно, и это невозможно; здесь нельзя опускаться ниже 0 В. Таким образом, в то время как оптрон очень хотел бы потреблять 8 мА, резистор будет ограничивать это. Максимальный ток, проходящий через него, - это когда на него подается полное напряжение 5 В. Выходной сигнал тогда будет действительно 0 В, а ток 5 В / 1,2 кОм = 4,2 мА. Таким образом, к какому бы источнику питания вы ни подключали, выходной ток не будет превышать этого, а напряжение будет оставаться в диапазоне от 0 до 5 В. Никакой дополнительной защиты не требуется.

Если вы ожидаете перенапряжения, вам придется проверить, справится ли светодиод оптопары с повышенным током, но 20 мА не будет проблемой для большинства оптопар (они часто рассчитаны на максимум 50 мА), и, кроме того, это для двойной входное напряжение, которое, вероятно, не произойдет IRL.


Система предназначена для использования в автомобиле. Нужно ли уменьшать силу тока автомобильного аккумулятора, чтобы не взорвать компоненты? Я новичок в этом. Спасибо
DW

@ DW О-о, машина! :-(. Я
обновлю

@DW - Нет, емкость автомобильного аккумулятора не имеет значения. Ток будет определяться напряжением (12 В) и сопротивлением (всего 25 кОм). Тогда согласно закону Ома ток будет 12 В / 25 кОм = 0,5 мА. Неважно, является ли аккумулятор 40 Ач или 400 Ач; резисторы не позволят больше.
Стивенвх

Замечательно. Спасибо за вашу помощь. Просто любопытно, а будет ли что-то подобное работать? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW

2
@stevenvh Спасибо, Стив. Я с нетерпением жду возвращения в пользу тех, кто является новым в электронике, когда я буду уверен в этом. Спасибо
DW

15

Хороший способ изолировать сигнал переключателя 12 В - пропустить его через оптопару. Схема будет настроена следующим образом.

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

Vi на диаграмме представляет 12 В вашей цепи, которая переключается вашим переключателем (S1). Выберите R1, чтобы ограничить ток через часть D1 оптопары до уровня, который находится в пределах рейтингов выбранного компонента.

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


15

Вы также можете использовать диод и резистор, как указано ниже:

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

Я бы сделал резистор довольно жестким, в противном случае вы потеряете много энергии от этой цепи. Прелесть этой схемы (по сравнению с делителем напряжения) состоит в том, что ее не волнует, будет ли ваше первоначальное напряжение 12 В, 14 В или 15 В: оно будет 5 В (на самом деле 5,2-5,3 В в зависимости от диода) независимо от того, входное напряжение.


это довольно умно, +1 за независимость напряжения!
Флориан Кастеллан

5
Осторожно с максимальным перенапряжением на выводе. Например, таблица данных ATmega32u4: Напряжение на любом выводе относительно земли (8): от -0,5 В до VCC + 0,5 В. Если используется обычный диод, напряжение будет больше, чем VCC + 0,5 В, если используется резистор менее 170 кОм. Я думаю, что диоды Шоттки являются наиболее безопасными для этого.
киберпонк

13

Для независимости от напряжения используйте резистор для регулирования тока и стабилитрон для регулирования напряжения, например:

схематический

смоделировать эту схему - созданная с использованием CircuitLab

С резистором 30 кОм, это будет выдавать 4,99 В и использовать только около 234 мкА при 12 В.
В этом случае:
R1 потребляет 234 мкА х (12 В - 4,99 В) = 1,64 мВт,
D1 потребляет 234 мкА х 4,99 В = 1,17 мВт

Общая потребляемая мощность: 2,81 мВт (при высоком входном сигнале)


Для чего-либо видимого я бы использовал светодиод + резисторный делитель последовательно, чтобы подать сигнал 5 В при напряжении 12 В, и поместил стабилитрон параллельно нижней половине делителя и светодиоду для защиты от перенапряжения. Таким образом, светодиод загорается при наличии входного сигнала и дает визуальную обратную связь.
Госвин фон Бредерлоу

@GoswinvonBrederlow Можете ли вы нарисовать схему светодиод / диод / резистор?
шипение

В приведенной выше схеме установите R1 на 770 Ом и добавьте 330 Ом и красный светодиод параллельно к диоду Зенера. Затем при входе 12 В ~ 9 мА будет протекать через светодиод, и вы получите выходной сигнал 5 В. Если входное напряжение возрастает, хотя стабилитрон ограничит выходной сигнал до 5,1 В и защитит как Arduino, так и светодиод.
Госвин фон Бредерлоу

-2

Немного поздно, но в моей машине я использую LM7805. Прекрасно работает и дешево.


1
Не так дешево, как 2 резистора или резистор и диод.
Дэйв Твид

7
@TonNies Вы неправильно поняли вопрос. ОП не ищет напряжение питания для своего контроллера. Это больше о формировании сигнала.
Ariser

1
Ничего плохого в использовании LM7805 для сдвига уровня 12 В сигналов.
Chugadie

1
@chugadie: Но очень необычный и относительно «дорогой» подход с избыточным разрешением, если все, что вам нужно, это снизить напряжение 12 В на один вывод ввода-вывода.
1.0
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.