Я просто впервые пробую Arduino Uno с двумя мигающими светодиодами на макетной плате. Все учебники в Интернете, похоже, используют резистор. Я знаю функцию резисторов, но имеет ли это здесь какое-то значение? Эти светодиоды прекрасно работают без резистора.
Непослушный! :-). Если они говорят использовать резистор, для этого есть веская причина! Выключите его, СЕЙЧАС!
Резистор нужен для ограничения тока светодиода. Если вы опустите его, ограничение тока должно исходить от выхода Arduino, и ему это не понравится. Как узнать какой должен быть резистор? Вы знаете закон Ома? Если нет, напишите крупными буквами:
Напряжение равно току, умноженному на сопротивление. Или вы могли бы сказать
Это то же самое. Напряжение, которое вы знаете: Arduino работает от 5 В. Но не все это пройдет через резистор. Светодиод также имеет падение напряжения, обычно около 2 В для красного светодиода. Так что остается 3В для резистора. Типичный светодиодный индикатор будет иметь номинальный ток 20 мА, затем
Arduino Uno использует микроконтроллер ATmega328 . В техническом описании говорится, что ток для любого контакта ввода-вывода не должен превышать 40 мА, что обычно называют абсолютным максимальным номиналом. Поскольку у вас нет ничего для ограничения тока, есть только (низкое!) Сопротивление выходного транзистора. Ток вполне может быть выше 40 мА, и ваш микроконтроллер будет поврежден.
На
следующем графике из таблицы данных ATmega показано, что произойдет, если вы будете управлять светодиодом без токоограничивающего резистора:
Без нагрузки выходное напряжение составляет 5 В, как и ожидалось. Но чем выше потребляемый ток, тем ниже будет выходное напряжение, оно будет падать примерно на 100 мВ на каждые дополнительные 4 мА нагрузки. Это внутреннее сопротивление 25 . затем
График не идет так далеко, сопротивление будет расти с температурой, но ток останется очень высоким. Помните, что в таблице данных указано 40 мА как абсолютный максимальный номинал. У вас в три раза больше. Это определенно повредит порт ввода-вывода, если вы будете делать это в течение длительного времени. И скорее всего светодиод. Светодиодный индикатор 20 мА часто будет иметь 30 мА в качестве абсолютного максимального номинала.
40участок,
Я должен сказать, что управлять светодиодом без резистора НЕ РЕКОМЕНДУЕТСЯ, если вы не знаете, что делаете. Однако, если вы понимаете, как ведет себя светодиод, вы можете безопасно управлять им без резистора. На самом деле управление светодиодом без токоограничивающего резистора часто лучше.
Зачем управлять светодиодом без резистора? Простой, чтобы сделать вашу схему более энергоэффективной.
Должны ли вы управлять своим светодиодом с ШИМ, настроенным на постоянный рабочий цикл (т.е. ШИМ 5 В с рабочим циклом 34% для достижения среднего напряжения 1,7 В)?
Да и нет. Использование ШИМ может работать так же хорошо, как подача определенного напряжения (если вы будете осторожны), но есть и лучшие способы. О чем стоит беспокоиться при использовании ШИМ-подхода.
ПРИМЕЧАНИЕ. Все компоненты могут безопасно справляться с временными всплесками тока, превышающими их максимальные номиналы, если продолжительность всплесков тока ДОСТАТОЧНО МАЛЕНЬКАЯ . Некоторые компоненты будут более щадящими, чем другие, и, если вам повезет, в техническом описании компонента будет указано, насколько хорошо он может выдерживать скачки тока.
ПРИМЕЧАНИЕ. Вы можете добавить конденсатор в цепь, чтобы усреднить ШИМ и устранить эту проблему.
Вы также должны знать о возможностях выходного контакта, к которому вы подключили свой светодиод. Наиболее важным параметром будет максимальный выходной ток. Для Arduino Uno я считаю, что это 40 мА. Вы должны выбрать рабочий цикл ШИМ, среднее напряжение которого удерживает ток, проходящий через светодиод, ниже 40 мА. Чтобы узнать, какие напряжения будут производить такой большой ток, вам нужно посмотреть на кривую IV светодиодов (график зависимости тока от напряжения). Для типичного светодиода напряжение от 0,7 В (типичное минимальное напряжение, необходимое для излучения света светодиодом) и 1,25 В почти наверняка будет безопасным. Почему 1,25 В, вероятно, безопасно? Ну, большинство светодиодов не превышают 40 мА при 1,25 В даже без токоограничивающего резистора. Еще одна вещь, помогающая защитить кого-то в случае, если они прикладывают слишком большое напряжение, заключается в том, что схема цифрового вывода Arduino будет иметь собственный выходной импеданс, этот выходной импеданс будет низким, но даже выходной импеданс в 20 Ом обеспечит незначительную степень защиты. Arduino Uno имеет сопротивление цифрового выхода около 250 Ом. Короче говоря, если вы управляли светодиодом, используя ШИМ с напряжением 1,0 В на высокой частоте, для типичного светодиода нет никаких шансов, что вы повредите свой цифровой выход на Arduino Uno.
Подход с ШИМ управляет светодиодом в режиме разомкнутого контура (как и при использовании источника питания 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-файле, чтобы увидеть, насколько сложной может быть даже бытовая светодиодная лампочка в наши дни...
Подводя итог: вы должны решить для себя, какой риск вы готовы взять на себя со своей схемой. Использование ШИМ 5 В для управления вашим светодиодом, скорее всего, будет работать нормально (особенно если вы добавите конденсатор, чтобы сгладить прямоугольную волну ШИМ и максимизировать частоту ШИМ). Не бойтесь выводить свою электронику за пределы обычных условий эксплуатации, просто будьте в курсе, когда делаете это, знайте, на какой риск вы идете.
Наслаждаться!
К вашему сведению: я удивлен тем, как много людей сразу переходят к ответу: «ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ТОКООГРАНИЧИТЕЛЬНЫЙ РЕЗИСТОР». Это благонамеренный, но слишком безопасный совет.
Орт
Вы можете использовать встроенные подтягивающие резисторы, как предлагается здесь :
Подтягивающие резисторы обеспечивают достаточный ток, чтобы тускло светить светодиод, подключенный к выводу, который был сконфигурирован как вход.
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%)
МИНУСЫ: я не знаю, подвергается ли компонент нагрузке и сокращается ли срок его службы.
Есть парень, который также провел этот эксперимент в Стэнфорде и разместил некоторую информацию на своем сайте .
analogWrite()
помощью соответствующего контакта. Все еще не уверен, что это хорошая идея, но, по крайней мере, для ИК-светодиодов в спецификациях обычно допускается значительно более высокие пиковые токи для рабочих циклов менее 100%.
Дэн Шеппард