#3 Эксперимент «Cтробоскоп с регулируемой яркостью»
Карманный фонарик, наверное есть у каждого. Принцип его работы очень прост: при нажатии на кнопку, лампочка с батареей соединяются в электрическую цепь и лампа начинает светить. В современных фонариках уже давно не используются лампы накаливания, им на замену пришли маленькие, долговечные, мощные и при всём этом, энергоэкономные светодиоды. Сами фонарики, зачастую имеют умную управляющую плату, которая может не только включать и выключать светодиоды, но и добавляет фонарику разнообразные режимы работы. Самые популярные режимы — это режим выбора яркости свечения и режим стробоскопа, который незаменим для подачи сигналов и привлечения внимания. В режиме стробоскопа работают многие велосипедные фонари. Это необходимо для того, чтобы велосипедист акцентировал на себе внимание в тёмное время суток, а с другой стороны помогает сэкономить на заряде батарей, так как мигающий фонарик половину времени своей работы находится в выключенном состоянии, а значит и потреблять будет в два раза меньше энергии. Сегодня мы соберём и запрограммируем такой — универсальный фонарик.
Перед выполнением эксперимента прочтите:
- Светодиод;
- Резистор;
- Потенциометр;
- Входы и выходы Arduino. Цифровой и аналоговый сигналы;
- Широтно-импульсная модуляция.
СБОРКА УСТРОЙСТВА НА МАКЕТНОЙ ПЛАТЕ
Нам понадобятся следующие компоненты:
- Arduino Uno;
- Usb-кабель для подключения к компьютеру;
- Беспаечная макетная плата;
- 3 светодиода любого цвета;
- 3 резистора, номиналом 220 Ом;
- Потенциометр;
- 8 соединительных проводов разных цветов.
Соберите устройство по следующей схеме:
Схема устройства на макетной плате |
![]() |
Принципиальная схема устройства |
![]() |
Обратите внимание: как видно из схемы, наш фонарик будет состоять из 3-х светодиодов и потенциометра — простейшего делителя напряжения. Обратите внимание:
- Все светодиоды нужно включать последовательно с токоограничительными резисторами, т.к. напряжение в 5 В для них слишком велико.
- Зелёные светодиоды мы используем лишь в качестве примера, для реального фонарика лучше использовать прозрачные светодиоды белого свечения.
- В современных фонариках, зачастую вместо одного мощного, используют несколько слабых светодиодов. Это помогает сделать регулировку яркости свечения более плавной. Кроме этого, в ходе работы, мощные светодиоды ощутимо нагреваются и им требуется металлический радиатор для отвода темпла. Использование нескольких маломощных светодиодов решает эту проблему.
- Потенциометр — простейший делитель напряжения, который состоит из токопроводящего слоя, расположенного внутри корпуса и металлического контакта, который может скользить по этому слою в момент поворота ручки потенциометра. Ручка нашего потенциометра, способна поворачиваться на 270º. Потенциометр имеет 3 контакта: крайние контакты подключается к питанию (+) и земле (-). Средний контакт, необходим для получения сигнала, который будет лежать в диапазоне от 0 до 5 В. Таким образом, потенциометр способен плавно изменять напряжение на нагрузке в диапазоне от 0 В, до значения напряжения, которое подано на него (в нашем случае 5 В).
- В нашем случае, потенциометр нужен для того, чтобы управлять не светодиодами напрямую, а подавать сигнал на специальный порт Arduino. Далее, работая с этим сигналом, мы сможем программно выбирать нужный нам режим работы фонарика. Для приёма такого «плавного» сигнала, нам потребуется специальный аналоговый порт.
ПРОГРАММИРОВАНИЕ
Давайте определим алгоритм работы нашего фонарика. Начнём с простого алгоритма:
- Когда ручка потенциометра находится в крайнем левом положении, все светодиоды находятся в выключенном состоянии;
- При вращении ручки по часовой стрелке, светодиоды начинают плавно зажигаться и светят тем ярче, чем на больший угол мы поворачиваем регулятор потенциометра.
- Когда ручка потенциометра достигнет крайнего правого положения, яркость светодиодов должна стать максимальной.
Обратите внимание, на предыдущих занятиях, мы тоже зажигали светодиоды, но мы могли подать на них лишь высокий (HIGH) и низкий (LOW) сигналы. Т.е. просто включить светодиод на полную яркость, или выключить его. Сейчас нам нужно научится контролировать яркость светодиодов. Для того, чтобы управлять их яркостью, нужно использовать широтно-импульсную модуляцию. Это такой режим работы, при котором сигнал с пина Arduino подаётся в прерывистом режиме. Высокий (HIGH) сигнал чередуется с низким (LOW), с очень большой частотой. Изменяя длительность этих «микросигналов» мы можем заставить светиться светодиод как бы не в полную силу. Для того, чтобы подать такой сигнал следует использовать блок [уст. аналоговый порт] из раздела [Порты]:
В данном случае мы подаём сигнал на аналоговый пин под номером 3 (обратите внимание: все выходные аналоговые пины обозначены значком «~», и лишь на этих портах мы можем использовать широтно-импульсную модуляцию). В качестве сигнала, мы можем задать значение, лежащее в диапазоне [0 … 255], где — 0 соответсвует напряжению в 0 В, а 255 — напряжению в 5 В, т.е. максимальному значению сигнала. Не сложно посчитать, что для того, чтобы задать значение напряжение на пине в 2,5 В, нам нужно подать сигнал со значением 127. Давайте посмотрим: как изменяется яркость светодиода, подключенного к пину 3, при подаче различных аналоговых сигналов:
Для того, чтобы все сигналы не сливались в один, мы поставили задержку в 0,4 секунды.
Попробуйте самостоятельно послать такие же аналоговые сигналы на 2-й (5 пин) и 3-й (6 пин) светодиоды. Попробуйте «поэкспериментировать» со значениями аналоговых сигналов. Необязательно подавать на все светодиоды одинаковые сигналы.
При желании, можно сделать так, чтобы один из светодиодов плавно разгорался, а другой в то же время, плавно затухал:
Регулировать яркость светодиодов таким образом — очень утомительное занятие. Давайте задействовать потенциометр. На прошлых занятиях, мы уже научились получать цифровой сигнал (от нажатой кнопки), в этот раз, мы попробуем получить значение «плавного» аналогового сигнала. Для того, чтобы получить сигнал с аналогового пина, нам потребуется блок [аналоговый порт] из раздела [Порты]:
В качестве параметра нужно выбрать номер пина, к которому подключён потенциометр (в нашем случае A0). Всего на плате есть 6 аналоговых входных пинов, которые могут принимать такие сигналы. Такие пины обозначаются буквой A (A0-A5). Опрашивая аналоговый пин мы можем получить значение в диапазоне [0 … 1023], где 0 — низкий сигнал (LOW), а 1023 — высокий сигнал (HIGH). При вращении ручки потенциометра, мы можем изменять сигнал на данном порте, например: если повернуть ручку наполовину, то сигнал на пине примет значение 511. В самом простом случае, мы можем взять значение этого сигнала и подставить его в параметры блока [уст. аналоговый порт], тогда полученный сигнал будет напрямую передаваться нашим светодиодам:
Таким образом мы передали сигнал с потенциометра на светодиод, подключенный к пину 3. Теперь передадим этот сигнал на оставшиеся светодиоды, подключенные к пинам 5 и 6:
Загрузите программу в Arduino и попробуйте вращать ручку потенциометра. Вы обратили внимание на то, что светодиоды сначала плавно загораются, но затем гаснут и начинают загораться по-новой? Всё дело в разных диапазонов входного и выходного сигналов. От потенциометра мы получаем сигнал в диапазоне [0 … 1023], а на светодиоды передаём сигнал в диапазоне [0 … 255]. Для корректной работы, нам нужно преобразовать сигнал потенциометра к формату сигналов, которые подаются на светодиоды. В этом нам поможет блок [Карта] из раздела [Математические операторы]:
В качестве параметра [значение] мы будем использовать блок со значениями сигнала, пришедшего с потенциометра. Блок [Карта] автоматически преобразует сигнал из диапазона [0 … 1023] к диапазону [0 … 255]. Теперь осталось лишь подставить данный блок к блоку [уст. аналоговый порт] для всех 3-х светодиодов:
Загрузите программу в Arduino и убедитесь в правильной работе нашего фонарика. Яркость должна увеличиваться плавно и достигать максимума в крайнем правом положении потенциометра.
Вот мы и разобрались с аналоговыми сигналами и широтно-импульсной модуляцией. В будущем, мы постоянно будем использовать сигналы именно такого вида.
Теперь, осталось заставить наш фонарик мигать, при получении с потенциометра сигнала значением в 1023. Для этого мы будем использовать блок [если] из раздела [Управление].
Внутри блока мы будем проверять — достигло ли значение с аналогового пина A0 значения в 1023:
Внутри блока [если] разместим алгоритм, который заставит наши светодиоды мигать. Включать и выключать светодиоды будем с помощью цифровых сигналов HIGH и LOW (обратите внимание: цифровой и аналоговый сигналы можно комбинировать и использовать в одной программе). Длительность пауз установим в 250 мс, что заставит наши светодиоды включаться и выключаться дважды за одну секунду:
Осталось подставить полученный блок в основную часть программы и наш алгоритм будет готов:
Загрузите программу в Arduino и проверьте её работу. Теперь наш фонарик может не только светить с выбранной нами яркостью, но и работать в режиме стробоскопа! Теперь можно отсоединить наше устройство от Usb-порта компьютера и подключить его к какому-либо источнику питания. Лучше всего подойдёт батарейка типоразмера «Крона» на 9 В. С помощью специального шнура-адаптера из вашего набора, подключите собранный фонарик к батарейке и протестируйте его работу в тёмных местах.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
Задание 1:
Измените программу таким образом, чтобы наш фонарик полностью превратился в стробоскоп, включающий и выключающий светодиоды 5 раз в секунду. При этом, вы должны оставить возможность регулировать яркость вашего стробоскопа. Пример работы требуемого устройства:
|
Задание 2:
Уберите один из светодиодов, а один из оставшихся замените светодиодом красного цвета. Измените программу таким образом, чтобы светодиоды смогли мигать в противофазе, т.е. когда один из светодиодов потушен, другой — горит. Задержку для зажжённого и потухшего светодиодов выставьте в 250 мс. При этом, оставьте возможность плавного регулирования яркости светодиодов. Пример работы требуемого устройства:
|
Задание 3*:
Измените программу первоначально собранного фонарика таким образом, чтобы при повороте ручки потенциометра, загорался сначала 1-й светодиод, затем 2-й и лишь затем 3-й. Режим стробоскопа всё ещё должен работать. Пример работы устройства:
|
Для того, чтобы получить сертификат, подтверждающий успешное прохождение курса — выполняйте тесты в конце занятий. | Пройти проверочный тест |