Светодиод
Цель работы
Знакомство с работой АЦП и ШИМ.
Задачи работы
- Разработать скетч для управления яркостью светодиода при помощи потенциометра через Arduino.
- Собрать схему со светодиодом и потенциометром на макетной плате.
Инструменты для выполения работы
- Компьютер с подключением к сети Internet.
- Плата Arduino с USB выходом (например, Arduino Uno).
- Макетная плата для беспаечного монтажа.
- Светодиод.
- Резистор на 220 Ом.
- Потенциометр.
- Провода.
Теоретическая часть
Потенциометр - это переменный резистор с регулируемым сопротивлением. При вращении ручки потенциометра его сопротивление меняется от 0 до некоторого максимального значения.
АЦП (аналогово-цифровой преобразователь) - микросхема, преобразующая аналоговое значение напряжения в цифровое.
На платах Arduino присутствует несколько встроенных АЦП, доступных программно с помощью функции analogRead(), принимающей номер порта АЦП (A0 - A5). Так как в Arduino используются 8-разрядные АЦП, на выходе получаются значения от 0 до 1024 для напряжения на входе, соответственно, от 0 до 5 В.
ШИМ (PWM, широтно-импульсная модуляция) - процесс генерации прямоугольных импульсов с меняющейся шириной импульса.
T - период ШИМ (в Arduino используется 490 Гц, иногда бывает 980 Гц)
t - длительность импульса, изменяется в пределах от 0 до T
Отношение t/T называется скважностью импульса. На микроконтроллерах Arduino ШИМ доступна на некоторых цифровых пинах, при этом запускается она при помощи функции analogWrite(). Функции передается параметр, принимающий значения от 0 до 255, которых регулирует длительность импульса от 0 до T, и соответственно скважность импульса от 0 до 1.
Выполнение работы
Создаем новый скетч и сохраняем его с названием LedBrightness. Проверяем, что выбрана правильная плата и порт.
Собираем установку, подключаем светодиод к порту платы с поддержкой ШИМ (обозначены символом "~"), например к 11-у порту. Потенциометр подключает крайними контактами к Vcc и Gnd на плате, средним контактом к аналоговому входу, например, к A0.
Для использования ШИМ и АЦП на Arduino не нужна дополнительная настройка пинов, единственное, что нужно - в функции loop считывать значение с аналогового входа и устанавливать соответствующую скважность импульса.
analogWrite(11,analogRead(A0)/4);
Загружаем скетч и проверяем, что при вращении ручки потенциометра яркость светодиода изменяется от 0 до некоторого максимального значения.
Скважность импульса