Действительно ли мне нужны резисторы при управлении светодиодами с помощью Arduino?

Я просто впервые пробую Arduino Uno с двумя мигающими светодиодами на макетной плате. Все учебники в Интернете, похоже, используют резистор. Я знаю функцию резисторов, но имеет ли это здесь какое-то значение? Эти светодиоды прекрасно работают без резистора.

Это зависит от того, хотите ли вы, чтобы ваш светодиод плавился или нет. Если вы не возражаете, опустите резистор. :-) .

Ответы (6)

Непослушный! :-). Если они говорят использовать резистор, для этого есть веская причина! Выключите его, СЕЙЧАС!

Резистор нужен для ограничения тока светодиода. Если вы опустите его, ограничение тока должно исходить от выхода Arduino, и ему это не понравится. Как узнать какой должен быть резистор? Вы знаете закон Ома? Если нет, напишите крупными буквами:

В знак равно я р

Напряжение равно току, умноженному на сопротивление. Или вы могли бы сказать

р знак равно В я

Это то же самое. Напряжение, которое вы знаете: Arduino работает от 5 В. Но не все это пройдет через резистор. Светодиод также имеет падение напряжения, обычно около 2 В для красного светодиода. Так что остается 3В для резистора. Типичный светодиодный индикатор будет иметь номинальный ток 20 мА, затем

р знак равно 5 В 2 В 20 м А знак равно 150 Ом

Arduino Uno использует микроконтроллер ATmega328 . В техническом описании говорится, что ток для любого контакта ввода-вывода не должен превышать 40 мА, что обычно называют абсолютным максимальным номиналом. Поскольку у вас нет ничего для ограничения тока, есть только (низкое!) Сопротивление выходного транзистора. Ток вполне может быть выше 40 мА, и ваш микроконтроллер будет поврежден.

На
следующем графике из таблицы данных ATmega показано, что произойдет, если вы будете управлять светодиодом без токоограничивающего резистора:

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

Без нагрузки выходное напряжение составляет 5 В, как и ожидалось. Но чем выше потребляемый ток, тем ниже будет выходное напряжение, оно будет падать примерно на 100 мВ на каждые дополнительные 4 мА нагрузки. Это внутреннее сопротивление 25 Ом . затем

я знак равно 5 В 2 В 25 Ом знак равно 120 м А

График не идет так далеко, сопротивление будет расти с температурой, но ток останется очень высоким. Помните, что в таблице данных указано 40 мА как абсолютный максимальный номинал. У вас в три раза больше. Это определенно повредит порт ввода-вывода, если вы будете делать это в течение длительного времени. И скорее всего светодиод. Светодиодный индикатор 20 мА часто будет иметь 30 мА в качестве абсолютного максимального номинала.

У меня сейчас нет резистора. На данный момент, могу ли я просто подключить несколько светодиодов последовательно, чтобы имитировать резистор?
Не совсем. 3, и вы не получите никакого света, потому что 3 x 2V > 5V, и 2 у вас будет та же проблема, только падение 1V вместо 3V. Я добавил к своему ответу, чтобы отключить его сейчас!
Я потерял счет тому, сколько раз я писал этот расчет в ответах здесь. У меня должен быть сценарий для этого :-)
Красный светодиод падает на 1,7 В, а 10 мА вполне достаточно для повседневного использования в помещении. Стандартный токоограничивающий резистор для красного светодиода и питания 5 В составляет 330 Ом.
На этом сайте и во многих других местах есть много ответов, которые объясняют, ПОЧЕМУ нужен последовательный резистор и как его рассчитать. В жизни есть много вещей, которые кажутся нормальными, несмотря на то, что говорят обратное, и которые во многих случаях приводят к плохим последствиям. Это один из таких. Общая комбинация может быть не слишком сложной для светодиода или Arduino. Или, может быть. Срок службы светодиодов может сократиться. Срок службы Arduino может внезапно исчезнуть. Но это МОЖЕТ работать нормально достаточно долго, чтобы вы были счастливы. Или не.
Светодиоды рассчитаны на работу при определенном максимальном токе. Напряжение, управляющее ими, означает, что ток не контролируется. Порты сделаны для обеспечения определенного максимального тока. Их короткое замыкание или перегрузка МОЖЕТ привести к разрушению выводов или всей микросхемы или просто вызвать небольшие проблемы в работе. Или не.
@JohnR.Strohm Я бы не назвал это отраслевым стандартом.
@JohnR.Strohm - Как говорит м.Алин, это не отраслевой стандарт. Digikey перечисляет номинальные светодиоды 10 мА в диапазоне от 0,4 мкд до 1000 мкд и светодиоды 20 мА в диапазоне от 0,1 мкд до 54000 мкд. В нем нет линии, и нет гарантии, что ваш светодиод 10 мА будет хорошо виден. Напряжение красного светодиода обычно находится в диапазоне от 1,8 В до 2,2 В. Для красного светодиода 1,6 В исключительно мало.

40участок,

Я должен сказать, что управлять светодиодом без резистора НЕ РЕКОМЕНДУЕТСЯ, если вы не знаете, что делаете. Однако, если вы понимаете, как ведет себя светодиод, вы можете безопасно управлять им без резистора. На самом деле управление светодиодом без токоограничивающего резистора часто лучше.

Зачем управлять светодиодом без резистора? Простой, чтобы сделать вашу схему более энергоэффективной.

Должны ли вы управлять своим светодиодом с ШИМ, настроенным на постоянный рабочий цикл (т.е. ШИМ 5 В с рабочим циклом 34% для достижения среднего напряжения 1,7 В)?

Да и нет. Использование ШИМ может работать так же хорошо, как подача определенного напряжения (если вы будете осторожны), но есть и лучшие способы. О чем стоит беспокоиться при использовании ШИМ-подхода.

  1. Частота ШИМ важна. При использовании ШИМ в этом сценарии вы полагаетесь на способность компонентов вашей схемы временно выдерживать большие токи. Больше всего вас будет беспокоить то, как светодиод справится с временным высоким током и как выходная цепь вашего чипа может справиться с временно высоким током. Если эта информация не указана в даташите, то авторы даташита поленились. НО!!! Если эта информация указана в техническом описании, вы можете смело ею воспользоваться. Например, светодиод, который стоит рядом со мной, имеет максимальный номинальный ток 40 мА. Тем не менее, он также имеет показатель «пикового прямого тока» 200 мА, с примечанием, что ток не может оставаться на уровне 200 мА дольше, чем 10 мкс. Тааак... Я могу управлять светодиодом с 1,7 В (типичное прямое напряжение для светодиодов из таблицы данных). При рабочем цикле 34% и источнике питания 5 В (34% от 5 В = 1,7 В) среднее напряжение будет 1,7 В, мне просто нужно убедиться, что время ШИМ составляет 10 мкс или меньше. Во время работы ток через светодиод, вероятно, возрастет примерно до 58 мА (58 мА = типичное потребление тока при 1,7 В моего диода, деленное на 34%). 58 мА превышают максимальный постоянный ток моих светодиодов 40 мА на 18 мА. Наконец... Мне потребуется частота ШИМ 33,3 кГц или выше, чтобы безопасно управлять моим светодиодом (33,3 кГц = инверсия [10 мкс времени включения, разделенного на 34%, чтобы получить период ШИМ]). В РЕАЛЬНОСТИ я мог бы безопасно использовать ШИМ для питания моего светодиода с более медленной частотой ШИМ. Причина в том, что в спецификациях обычно не указываются все допустимые сценарии работы компонента. Они не определяют эти сценарии, потому что поставщик не не хотят тратить время на определение спецификации и поддержку использования своего компонента в крайних случаях использования. Например, с моим светодиодом, если я могу работать со светодиодом при 40 мА вечно (40 мА — это максимальное значение постоянного тока), и я могу управлять светодиодом при 200 мА в течение 10 мкс. Тогда я могу быть на 99,99999% уверен, что смогу безопасно управлять светодиодом при токе 100 мА в течение некоторого периода, превышающего 10 мкс, возможно, около 20 мкс.

ПРИМЕЧАНИЕ. Все компоненты могут безопасно справляться с временными всплесками тока, превышающими их максимальные номиналы, если продолжительность всплесков тока ДОСТАТОЧНО МАЛЕНЬКАЯ . Некоторые компоненты будут более щадящими, чем другие, и, если вам повезет, в техническом описании компонента будет указано, насколько хорошо он может выдерживать скачки тока.

  1. Напряжение вашего PWM важно. Я продемонстрирую свою точку зрения на примере, а не через объяснение. Если мы используем светодиод, о котором я говорил ранее, мы знаем, что рабочий цикл 34% при частоте 33,3 кГц и напряжении 5 В безопасен. Однако, если бы наше напряжение было 12 В, нам пришлось бы переработать наши расчеты, чтобы сохранить то же количество тока, протекающего через светодиод. Наш рабочий цикл должен был бы упасть до 14,167% (1,7 В, деленное на 12 В), а наша минимальная частота ШИМ должна была бы уменьшиться до 14,285 кГц (обратное значение [10 мкс, деленное на 14,167%]). ОДНАКО!, это повод для беспокойства. В сценарии 5 В мы применяем 5 В для 10 мкс, а в сценарии 12 В мы применяем 12 В для 10 мкс. Мы более чем удвоили напряжение за эти 10 мкс, должны быть какие-то последствия. И да, есть! Моя спецификация светодиода не дает мне данных, необходимых, чтобы знать, какое высокое напряжение я могу использовать для 10 мкс, прежде чем я повредю свой светодиод. Наверняка 1000 В на 10 мкс поджарят мой светодиод. Но как мне узнать, поджарит ли мой светодиод 5 В при 10 мкс? или 12В для 10us? Если для него нет спецификации, вы рискуете. Так что... 5В на 10 мкс рискованно, но, скорее всего, безопасно.

ПРИМЕЧАНИЕ. Вы можете добавить конденсатор в цепь, чтобы усреднить ШИМ и устранить эту проблему.

  1. Вы также должны знать о возможностях выходного контакта, к которому вы подключили свой светодиод. Наиболее важным параметром будет максимальный выходной ток. Для Arduino Uno я считаю, что это 40 мА. Вы должны выбрать рабочий цикл ШИМ, среднее напряжение которого удерживает ток, проходящий через светодиод, ниже 40 мА. Чтобы узнать, какие напряжения будут производить такой большой ток, вам нужно посмотреть на кривую IV светодиодов (график зависимости тока от напряжения). Для типичного светодиода напряжение от 0,7 В (типичное минимальное напряжение, необходимое для излучения света светодиодом) и 1,25 В почти наверняка будет безопасным. Почему 1,25 В, вероятно, безопасно? Ну, большинство светодиодов не превышают 40 мА при 1,25 В даже без токоограничивающего резистора. Еще одна вещь, помогающая защитить кого-то в случае, если они прикладывают слишком большое напряжение, заключается в том, что схема цифрового вывода Arduino будет иметь собственный выходной импеданс, этот выходной импеданс будет низким, но даже выходной импеданс в 20 Ом обеспечит незначительную степень защиты. Arduino Uno имеет сопротивление цифрового выхода около 250 Ом. Короче говоря, если вы управляли светодиодом, используя ШИМ с напряжением 1,0 В на высокой частоте, для типичного светодиода нет никаких шансов, что вы повредите свой цифровой выход на Arduino Uno.

  2. Подход с ШИМ управляет светодиодом в режиме разомкнутого контура (как и при использовании источника питания 1,7 В без ШИМ). Вы подаете к светодиоду среднее напряжение, которое является правильным значением для включения светодиода, но недостаточно высоким, чтобы повредить светодиод. К сожалению, диапазон напряжения от включенного (и достаточно яркого, чтобы видеть) до поврежденного светодиода очень мал (на моем светодиоде этот диапазон составляет около 0,7 В). Существуют разные причины, по которым 1,7 В, которые, как вы думаете, вы подаете, не всегда будут 1,7 В...

а. Изменения температуры окружающей среды. Что, если бы у вас был драйвер двигателя, регулятор напряжения и т. Д. В закрытой коробке, в которой также находился светодиод. Другие компоненты нередко повышают температуру окружающей среды внутри корпуса с 25°C до 50°C. Это повышение температуры изменит поведение вашего светодиода, вашего регулятора напряжения и т. д. Ваши когда-то безопасные 1,7 В больше не будут 1,7 В, а ваш светодиод, который раньше работал при 2,5 В, теперь будет гореть при 2,2 В.

б. Изменения в напряжении питания. Что, если вашим источником питания была батарея. По мере разрядки аккумулятора напряжение значительно падает. Что, если вы спроектировали свою схему так, чтобы она хорошо работала с немного использованной 9-вольтовой батареей, но затем добавили новую 9-вольтовую батарею. Совершенно новые свинцово-кислотные аккумуляторы 9 В обычно имеют фактическое напряжение 9,5 В. В зависимости от схемы, которая обеспечивает 5 В, используемые для ШИМ, эти дополнительные 0,5 В могут увеличить ваш 5 В ШИМ до 5,3 В. Что, если бы вы использовали перезаряжаемую батарею? Они имеют еще больший диапазон напряжений на протяжении всего цикла разрядки.

в. Есть и другие сценарии, такие как индуцированный ток от электромагнитных помех (двигатели будут делать это).

Наличие токоограничивающего резистора избавит вас от многих из этих проблем.

Использование ШИМ для управления светодиодом - не очень хорошее решение, есть ли лучший способ, не требующий токоограничивающего резистора?

Да! Делайте то, что они делают в светодиодных лампочках для вашего дома. Управляйте светодиодом с помощью контроллера тока. Установите контроллер тока для управления током, на который рассчитан ваш светодиод.

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

Недостаток: вам нужен контроллер тока, и вы увеличили сложность схемы в 10 раз. Однако не расстраивайтесь. Вы можете купить ИС контроллера тока, ИС драйвера светодиода или сделать собственный повышающий преобразователь с управлением по току. Это не так сложно. Найдите время в своем плотном графике и узнайте больше о повышающих и понижающих преобразователях. Узнайте о переключении источников питания. Это то, что питает ваш компьютер, и они чрезвычайно энергоэффективны. Затем либо создайте ее с нуля, либо купите недорогую микросхему, которая сделает за вас большую часть работы.

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

http://www.littelfuse.com/~/media/electronics/design_guides/led_protectors/littelfuse_led_lighting_design_guide.pdf.pdf

Подводя итог: вы должны решить для себя, какой риск вы готовы взять на себя со своей схемой. Использование ШИМ 5 В для управления вашим светодиодом, скорее всего, будет работать нормально (особенно если вы добавите конденсатор, чтобы сгладить прямоугольную волну ШИМ и максимизировать частоту ШИМ). Не бойтесь выводить свою электронику за пределы обычных условий эксплуатации, просто будьте в курсе, когда делаете это, знайте, на какой риск вы идете.

Наслаждаться!

К вашему сведению: я удивлен тем, как много людей сразу переходят к ответу: «ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ТОКООГРАНИЧИТЕЛЬНЫЙ РЕЗИСТОР». Это благонамеренный, но слишком безопасный совет.

Орт

Я удивлен, увидев, как много людей посчитали этот ответ ценным советом по дизайну. Управление светодиодом без ограничения тока с использованием ШИМ так же плохо для светодиода, как и то, что делает OP, плюс оно будет генерировать пульсации EMI и VCC, как сумасшедшие.
@DmitryGrigoryev, я понял, что полностью не смог решить проблему максимального выходного тока цифрового выхода. Я добавил новую пулю, чтобы покрыть это. ШИМ ДЕЙСТВИТЕЛЬНО позволяет кому-то безопасно управлять светодиодом без токоограничивающего резистора. EMI и пульсации VCC создаются каждый раз, когда вы управляете нагрузками с цифровым сигналом, но это обычное явление (например, H Bridge, Boost Converter, Hobby Servo Control и т. д.) и вряд ли является причиной для отказа от PWM. Существуют разумные решения для обработки пульсаций EMI и VCC, если это необходимо. Большинство людей не будут заботиться о небольшом количестве пульсаций EMI и VCC, создаваемых при управлении светодиодом с PWM.

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

Подтягивающие резисторы обеспечивают достаточный ток, чтобы тускло светить светодиод, подключенный к выводу, который был сконфигурирован как вход.

Не для светодиодов, это можно использовать для кнопок, но для светодиодов есть опасность поломки выхода
если это небезопасно, почему так говорят официальные документы? (Я также пробовал сам, и это сработало, как описано.)
Пожалуйста, прочитайте до OUTPUT, в нем упоминается, что ему нужен последовательный резистор: «Этого тока достаточно, чтобы ярко зажечь светодиод (не забудьте о последовательном резисторе) или, например, запустить множество датчиков, но недостаточно тока для работы большинства реле, соленоиды или моторы».
@MenelaosVergis это безопасно делать, когда контакт находится в режиме INPUT_PULLUP, это небезопасно делать с контактом в режиме OUTPUT. Это ясно из документов, если вы прочитали оба раздела (и из цитируемого отрывка в этом ответе).

Короткий ответ: да и нет, это зависит от вашего Arduino и от цвета вашего светодиода. Например, плата на 3,3 В не требует последовательного резистора с небольшим зеленым светодиодом, потому что прямое напряжение светодиода довольно велико, см .. Внутреннее сопротивление составляет около 25 Ом, примите (3,3 - 3)/25 = 12 мА, так что это все еще нормально, вы не должны использовать максимальный ток на контакт, который составляет 40 мА для процессора Atmel 328p, используемого на платах UNO (если только вы используете производную от 328p, где может быть другая история). Тем не менее, для Arduino, работающего на 5 В, возникнут проблемы с инфракрасным светодиодом, который имеет гораздо более низкое прямое напряжение, обычно 1,2 В, (5-1,2) / 25 = 150 мА, и это определенно слишком много, поэтому используйте ограничитель тока, такой как в качестве резистора для управления такими светодиодами. Контакт 13 на платах Arduino (или другой контакт на вариантах) уже имеет последовательно соединенные светодиод и резистор. Кроме того, источник питания платы имеет максимальный номинал, обычно 200 мА, и вы должны оставаться ниже этого уровня, и вы не можете потреблять больше определенного количества мА на группу контактов, это объясняетсяздесь . Если вы хотите управлять множеством светодиодов, рассмотрите возможность использования матричного драйвера светодиодов, который выполняет мультиплексирование за вас, см., например, мою область на YouTube, где я демонстрирую драйвер MAX7219CNG. Но также Arduino Uno может сделать мультиплексирование для вас, посмотрите мой ИК-термометр с 4 семисегментными светодиодами на YouTube. Удачного взлома.

Ответ от stevenvh объясняет, что вам нужно делать, но вы также должны рассчитать рассеиваемую мощность на светодиоде, чтобы не сжечь резистор падения напряжения. Например, если напряжение питания составляет 5 В, а прямое напряжение резистора равно 1,0 В, то вы будете сбрасывать 4 В. Использование резистора 220 Ом приведет к току (I=V/R) 18 мА и рассеиваемой мощности (P=IV) 72 мВт.

Резистор 0402 Imperial (1005 Metric) обычно имеет мощность 1/16 Вт, что составляет 62,5 мВт. Так что в этом случае это не сработает; это приведет к перегреву резистора и сокращению срока его службы. Таким образом, вам нужно будет заменить резистор 0402 с номиналом 1/10 Вт или резистор 0603 большего размера.

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

Обратите внимание, что прямое напряжение (и, следовательно, значение резистора) является функцией светодиода, и разные цвета светодиодов будут иметь разные значения. В частности, синие светодиоды имеют высокое прямое напряжение (~ 3,0 В тип.). Поэтому, если вы пытаетесь получить четыре разных светодиода с одинаковой яркостью, вам нужно будет повторить расчеты для каждого светодиода. Чтобы сделать это правильно, посмотрите на оптические характеристики каждого светодиода при его номинальном токе и соответствующим образом отрегулируйте.

ДА! Это может быть сделано.

Хотя то, что было сказано правильно... есть и другой путь. Более энергоэффективный способ управления светодиодами с напряжением 5 В.

Это немного недокументировано, и неизвестно, приведет ли решение к износу светодиодов, но это можно сделать. Я на самом деле делаю это.

Аппаратное использование ШИМ: Вот пример :

#include <avr/io.h>
#include <util/delay.h>
void pwm_init()
{
    // initialize TCCR0 as per requirement, say as follows
    TCCR0 |= (1<<WGM00)|(1<<COM01)|(1<<WGM01)|(1<<CS00);

    // make sure to make OC0 pin (pin PB3 for atmega32) as output pin
    DDRB |= (1<<PB3);
}

void main()
{
    uint8_t duty;
    duty = 1;       // duty cycle = 0.39% of the time (depends on the oscillator.)

    // initialize timer in PWM mode
    pwm_init();

    // run forever
    while(1)
    {
        OCR0 = duty;
    }
}

ШИМ также можно смоделировать с помощью программного обеспечения и таймеров avrs. Вы можете найти пример в библиотеке lufa под названием LEDNotifier.c.

Мой вывод: можно погонять светодиод на 5В.

Плюсы: нет необходимости в резисторе. Некоторое энергосбережение тоже (~50%)

МИНУСЫ: я не знаю, подвергается ли компонент нагрузке и сокращается ли срок его службы.

Есть парень, который также провел этот эксперимент в Стэнфорде и разместил некоторую информацию на своем сайте .

Это просто не кажется хорошей идеей. Вы, вероятно, получаете от контроллера больше тока, чем он рассчитан, даже если вы не делаете это очень долго.
Как говорится, это недокументировано. Выходной IO Arduino UNO может работать около 40-50 мА. Это постоянно. Я точно могу справиться с очень короткими импульсами с большим током. Пожалуйста, загляните в википедию .
В среде Arduino проще получить ШИМ с analogWrite()помощью соответствующего контакта. Все еще не уверен, что это хорошая идея, но, по крайней мере, для ИК-светодиодов в спецификациях обычно допускается значительно более высокие пиковые токи для рабочих циклов менее 100%.
Я почти уверен, что экономия энергии будет отрицательной по сравнению с решением на основе резисторов, потому что эффективность светодиода снижается с увеличением тока.
@ScottSeidman Почему это не хорошая идея? только потому, что большинство людей считают, что не рекомендуется использовать светодиод без резистора? этот ответ подтвердил исследование, очень уважаемый источник, такой как Стэнфордский университет, и из того, что я могу поэкспериментировать, это работает. Я определенно люблю посты с минусами, потому что они говорят, что те, кто проголосовал против, просто предвзяты. Какой парадокс...
@Ivanzinho, как правило, не рекомендуется делать то, что не задокументировано в таблице данных, по разным причинам. Незадокументированное поведение не гарантируется — ни для существующих чипов, ни для каких-либо инженерных изменений в чипах. В данном случае не для каждого типа светодиодов. Мы склонны проектировать в соответствии с тем, что говорят нам таблицы данных, потому что это приведет к надежно работающим проектам, которые, как правило, требуют меньше ресурсов (времени, денег, раздражения), чем выполнение действий маргинальным способом, который будет работать в некоторых случаях, но не в других. другие.