Современная электроника №3/2025
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 21 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 3 / 2025 Программная реализация импульсной модуляции сигналов регулирования Рис. 1. Окно транслятора Приведено описание программного способа импульсной модуляции сигналов для автоматических систем регулирования на примере программ, разработанных автором статьи. Олег Вальпа Введение Импульсная модуляция являет ся одним из самых распространён ных способов регулирования в авто матических системах. Поскольку импульсная модуляция применяет ся для ключевых режимов регулиро вания, она позволяет получить высо кий коэффициент полезного действия и часто является единственно воз можным способом регулирования. Это относится, например, к регулято рам мощных токовых установок или нагревательного оборудования. Мно гие микропроцессоры имеют встро енные аппаратные средства широт но-импульсной модуляции (ШИМ). Но в случае нехватки количества таких средств или их полном отсут ствии можно воспользоваться про граммным способом импульсной модуляции. Данный способ позволя ет сформировать не только необходи мое количество каналов регулирова ния, но и задать вид модуляции. Широтно-импульсная модуляция Рассмотрим несколько способов программной реализации импульс ной модуляции регулирующего сиг нала на основе конкретных примеров программ. Одним из самых распро странённых видов модуляции явля ется широтно-импульсная модуля ция. Для её реализации программным путём потребуется один таймер для формирования регулярных отсчё тов времени и несколько регистров. Пример такой программы на языке С с подробными комментариями для восьмиканального регулятора приве дён в листинге 1. Листинг 1. Программа широтно- импульсной модуляции #include <iostream> // Подключение библиотеки ввода- вывода #include <string> // Подключение строковой библиотеки #include <math.h> // Подключение математической библиотеки unsigned short n, k; // Индексныe регистры программы unsigned short pwm_c=0; // Регистр счётчика импульсов от 0 до 100% unsigned short pwm_r[8]; // Регистры регуляторы unsigned short pwm_ do[]={0,0,0,0,0,0,0,0}; // Регистры выходных сигналов // Функция обработчика прерывания таймера int irq_tim() { unsigned short i; // Индексный регистр прерывания ШИМ for(i=0;i<=7;i++) // Организация Дополнительные материалы к этой статье можно скачать, перейдя по ссылке в QR-коде
RkJQdWJsaXNoZXIy MTQ4NjUy