Светодиоды всегда тусклые с arduino nano

поэтому я делаю анимированный светодиодный стоп-сигнал с помощью arduino nano, похожий на этот: https://www.youtube.com/watch?v=d5Ohzg3JKq0&ab_channel=IMEEMADE

У меня есть 18 каналов, с разным количеством последовательных светодиодов и резистора. Все светодиоды + соединены вместе, предназначены для входа 14,5 В, с отдельным резистором после последнего катода светодиода: 14.5 V -> + LED - ->> R ->>> GND>>>

У меня есть несколько каналов с 1 светодиодом, 2 светодиода и 4 светодиода, все настроены с различными резисторами, так что каждый канал "тянет" ~20 мА при 14,5 В. 12 В работает отлично, а также просто немного диммер. На источнике питания я могу заземлить любой канал без перекрестных помех или заземлить все и все светодиоды равномерно (из того, что могут сказать мои глаза).

Первоначально я планировал предоставить 5 В вход для arduino с помощью преобразователя buck и подключить каждый канал к цифровому выходу (D2-D19 или D2-D13 + A0-A5). В итоге я обеспечил 12 В на Vin и 12 В на светодиоды, а также arduino вообще не работал, как ожидалось, с 14,5 В на светодиоды и 12 В на Vin.

Моя проблема заключается в том, что при такой настройке, независимо от того, что я делаю в коде, когда arduino подключен к Vin и заземлению, некоторые светодиоды всегда горят тускло (странно D2-D13). Они действительно становятся ярче, когда pinMode установлен в OUTPUT и вызывается digitalWrite({pin}, LOW). Но запись HIGH или установка pinMode для ввода не отключает их, просто оставляет их тусклыми. Я попытался настроить Vin между 7-12 В, установив регулятор на 5 В и подключившись непосредственно к 5 В. Никаких изменений в поведении. Единственное, что заставляет светодиоды тускло светиться, - это снижение входного напряжения на сами светодиоды. Но тогда мне не хватает, чтобы управлять 4-мя светодиодными каналами серии...

Я знаю, что это может сработать, потому что в видео, которое я связал, есть 4 светодиода серии, управляемые таким же образом (хотя и красные, я использую белые), но с использованием arduino объясняется не так уж много.

Что я делаю неправильно или как я могу заставить это работать? Мне нужно как минимум 12 В к светодиодной плате, чтобы убедиться, что каналы 4-й серии горят правильно. Из того, что я прочитал, я уже исчерпал цифровые каналы на arduino nano, поэтому не могу использовать один из них в качестве входного сигнала (вместо Vin или 5V), если это имеет значение, или разделить 4 серии на 2 канала и т. Д.

Заранее спасибо!

, 👍0

Обсуждение

пожалуйста, нарисуйте принципиальную схему схемы ... описание неясно, @jsotola

Это звучит так, как будто вы используете двухтактный выход 5 В в качестве разомкнутого стока в цепи 12 В. Так что... да, вы получите светодиоды. Вы также получите мертвый Arduino, если не будете осторожны., @Majenko

Вот как в основном у меня все устроено в настоящее время: https://www.circuit-diagram.org/circuits/de34ef54ab094db8b650731add9c1615, @user72995

@Majenko Я не совсем уверен в tbh. Я считаю, что хочу только "вытягивать" выход из светодиодов. Я не совсем понимаю электронику, стоящую за arduino, но они дешевы и не требуют специального программатора, поэтому я решил использовать их в качестве своего контроллера., @user72995

По сути, то, что я пытаюсь сделать, - это включить светодиоды с оригинальным источником напряжения (12-14, 5 В) и просто использовать arduino для управления временем заземления каждого канала. Я не собирался ставить 12 В через arduino, и я не вижу, почему напряжение, используемое для питания arduino, должно иметь значение в этом случае (кроме сжигания его с слишком большим количеством на входе). И да, я почти уверен, что я убил одного, пытаясь поставить >5 В для вывода A7 в качестве входа вместо Vin :(, @user72995


2 ответа


Лучший ответ:

1

Вы не можете управлять светодиодами от источника, превышающего 5 В, как низкоугловой переключатель с Arduino напрямую. Для этого вам нужен выход "open drain".

Вы можете создать их на Arduino, добавив один транзистор (N-канальный МОП-транзистор с порогом "логического уровня" или NPN BJT), который Arduino переключает:

schematic

R2 просто существует, чтобы держать M1 выключенным, когда Arduino не активно управляет им (т. Е. В то время Как загрузчик работает и т. Д.).

,

Спасибо @Majenko! Я предполагаю, что мне нужен отдельный резистор для каждого МОП-транзистора для заземления в противном случае, если штыри затвора подключены параллельно с одним резистором, я предполагаю, что переключение одного выходного контакта на arduino вызовет сигнал всех МОП-транзисторов?, @user72995


1

Что делать, смотрите в ответеМаенко .

Это касается того, почему вы видите то, что видите, или природы части вашего вопроса "Что я делаю не так", и поэтому вам нужно сделать что-то вроде того, что предлагает Майенко.

Внутри микроконтроллера находятся диоды, которые защищают его от переходных процессов напряжения, наблюдаемых на выводе GPIO. Один из них подключается от вывода GPIO к выводу VCC ("5V") MCU. Это в значительной степени относится практически к любому микроконтроллеру, а значит, и к любым выводам Arduino, с вариациями для таких вещей, как детали 5 В и 3,3 В. Вывод СБРОСА на ардуино на базе AVR имеет внешний диод по причинам, связанным с нежеланием (не) входить в высоковольтное программирование.

Когда GPIO не является ВЫХОДНЫМ и НИЗКИМ, то есть если он ВЫСОКИЙ, или ВХОДНОЙ, или INPUT_PULLUP, ток идет от вашего номинального источника 12 В, вниз через вашу нагрузку (светодиод и ограничение тока), в ваш вывод GPIO и через защитный диод на рельс 5 В вашего Arduino. Оттуда он будет конкурировать с вашим регулятором 5V (или регулятором USB хоста), чтобы попытаться включить все на Arduino, например, ваш "L" LED, последовательный трансивер, регулятор 3,3 В, сам AVR и т. Д. И все остальное, что вы подключили к "5V".

Таким образом, ваши контакты GPIO рассчитаны только на то, что-VCC-плюс около падения диода; где-то около 5,5 В в этом случае. Выше этого напряжения начинает проводить защитный диод, и GPIO не кажется высокоимпедансным тому, что к нему подключено.

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

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

  • меньший ток, чем может использовать Arduino. В противном случае напряжение на "5В" хорошо поднимется до точки жарки вещей. Он будет возвращать обратно то, что должно регулировать 5 В на Arduino, что может быть проблемой, а может и не быть проблемой в зависимости от конструкции того или иного регулятора.

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

Схема в ответе Майенко не обеспечивает путь, который позволил бы любому току говорить о перемещении от источника 12 В в вывод GPIO.

,

Спасибо за объяснение!, @user72995