Главная » Статьи » Прочее |
В основном, микроконтроллеры не могут выдавать на выходе произвольные напряжения. В Arduino в основном используется напряжение питания 5В и 0В (земля). Но как быть, если нам нужно, чтобы светодиод горел в пол силы, или двигатель крутился с небольшими оборотами? Вот тут на помощь приходит Широтно-импульсная модуляция (ШИМ).
Широтно-импульсная модуляция применяется в цифровых устройствах, для получения изменяющегося аналогового значения. Мы на выходе получаем прямоугольные импульсы, которые постоянно переключается между максимальным и минимальным значениями. Выход микроконтроллера переключается между землёй и максимальным напряжением питания (5В) тысячи раз в секунду (т.е с частотой в тысячи герц (Гц)). Глаз не замечает мерцания более 50 Гц, поэтому мы не видим как мерцает светодиод, а видим только то, что он горит вполсилы.
Длительность включения максимального значения называется шириной импульса (длительностью). Для получения различных аналоговых величин изменяется ширина импульса. При достаточно быстрой смене периодов включения-выключения можно подавать постоянный сигнал между 0 и 5 В на светодиод, тем самым управляя яркостью его свечения.
![]() На графике зеленые линии отмечают постоянные временные периоды. Длительность периода обратно пропорциональна частоте ШИМ. Т.е. если частота ШИМ составляет 500 Гц, то зеленые линии будут отмечать интервалы длительностью в 2 миллисекунды каждый. Вызов функции analogWrite() с масштабом 0 – 255 означает, что значение analogWrite(255) будет соответствовать 100% рабочему циклу (постоянное включение 5 В), а значение analogWrite(127) – 50% рабочему циклу.
Надеюсь тема была вам полезной и вы узнали для себя что-нибудь новое. Все интересующие вас вопросы вы можете оставить либо в комментариях, либо на форуме.
←Предыдущая тема | Следующая тема→
| |
Просмотров: 1367 | | |
Всего комментариев: 0 | |