Фильтр по тематике

Современные 32-разрядные ARM-микроконтроллеры серии STM32: ШИМ

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

25.12.2016 328 0
Современные 32-разрядные ARM-микроконтроллеры серии STM32: ШИМ

Введение

Широтно-импульсная модуляция (ШИМ), или на английском языке Pulse-Width Modulation (PWM), представляет собой процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте.

Широтно-импульсная модуляция давно и активно внедряется в микроконтроллеры мировых производителей. Благодаря своей простоте и универсальности данный вид управления надёжно закрепился в микроконтроллерной технике и часто используется для регулирования различных процессов.

Микроконтроллеры серии STM32 компании STMicroelectronics [1] также имеют в своём составе блоки ШИМ.

Пример использования

Рассмотрим функционирование ШИМ в микроконтроллерах серии STM32 на примере управления трёхцветным светодиодом RGB. Такой светодиод позволяет изменять свою яркость и цвет во всём видимом цветовом диапазоне путём смешивания трёх цветов (красного, зелёного и синего) с различной интенсивностью свечения. С помощью ШИМ можно плавно управлять интенсивностью каждого цвета и добиться при этом плавной смены оттенка свечения всего светодиода. Вместо одного трёхцветного светодиода можно также использовать три одноцветных светодиода.

Реализация

Подключать выводы светодиода необходимо к тем выводам микроконтроллера, которые связаны с таймером, формирующим ШИМ-регулирование. Например, при использовании второго таймера подойдут выводы TIM2_CH1…TIM2_CH4 микроконтроллера.

Схема подключения светодиодов к микроконтроллеру приведена на рисунке.

Для активации указанных выводов необходимо сконфигурировать их как выходы с альтернативной функцией, и разрешить в настройках таймера управлять этими выводами для генерации сигналов ШИМ.

Для такой настройки используется внутренний регистр микроконтроллера с сокращённым названием CCER, приведённый в таблице 1.

Здесь и далее символы RW обозначают разрешение чтения и записи.

При установке в единичное состояние битов CC1E…CC3E таймеру будет разрешено использовать соответствующий вывод для управления ШИМ.

Кроме того, необходимо выбрать режим работы ШИМ: в прямом или обратном управлении. При прямом управлении коэффициент заполнения ШИМ увеличивается от 0 до 100% при увеличении числа в регистре сравнения, а при обратном – уменьшается от 100 до 0%.

Для выбора режима используются два регистра – CCMR1 и CCMR2, приведённые в таблицах 2 и 3, соответственно.


За выбор режима ШИМ в этих регистрах отвечают биты OC1M[2:0]…OC3M[2:0].

Биты IC1PSC[1:0]…IC3PSC[1:0] и IC1F[3:0]…IC3F[3:0] позволяют произвести аналогичную настройку, но уже в режиме захвата сигнала.

В таблице 4 приведено состояние битов для прямого и обратного режима ШИМ для любого из каналов n.

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

Инверсный режим ШИМ удобно использовать для трёхцветных светодиодов с общим анодом, поскольку при включении коэффициент заполнения ШИМ будет равен 100% и светодиод будет погашен за счёт приложения к катодам высокого уровня напряжения.

После настройки каналов ШИМ необходимо запустить таймер, установив бит CEN в регистре TIM2_CR1. Интенсивность свечения светодио­да зависит от заполнения импульсов ШИМ, т.е. от скважности. Регулировать эту скважность можно путём записи числа от 0x0000 до 0xFFFF в регистры CCRn таймера, где n – номер канала.

Для создания эффекта плавного изменения цвета необходимо с определённой периодичностью производить запись в указанный регистр нарастающих и убывающих чисел.

В листинге приведён код программы, демонстрирующей данный алгоритм управления трёхцветным светодиодом.

После трансляции и загрузки программы в микроконтроллер можно будет наблюдать, как плавно изменяется цвет и яркость светодиода. Данный процесс повторяется циклично и смотрится эффектно и красиво.

По аналогии можно написать программу, которая, например, позволит управлять мощностью нагревателя с целью поддержания заданной температуры, или скоростью какого-либо объекта.

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

Литература

  1. www.st.com

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

25.12.2016 328 0
Комментарии
Рекомендуем

  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться