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

Программная реализация импульсной модуляции сигналов регулирования

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

01.03.2025 250 0
Программная реализация импульсной модуляции сигналов регулирования

Введение

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

Широтно-импульсная модуляция

Рассмотрим несколько способов программной реализации импульсной модуляции регулирующего сигнала на основе конкретных примеров программ. Одним из самых распространённых видов модуляции является широтно-импульсная модуляция. Для её реализации программным путём потребуется один таймер для формирования регулярных отсчётов времени и несколько регистров. Пример такой программы на языке С с подробными комментариями для восьмиканального регулятора приведён в листинге 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++) // Организация цикла каналов регулирования
{
if(pwm_r[i] > pwm_c) pwm_do[i]=1; else pwm_do[i]=0; // Модуляция выходных сигналов
}
pwm_c++; // Увеличение счетчика импульсов
if(pwm_c > 100) pwm_c=0; // Циклическое ограничение счётчика импульсов
return 0;
}
// Главная функция программы
int main()
{
// Код основной программы
for(k=0;k<=7;k++) pwm_r[k]=k; // Задать значения регуляторов ШИМ для всех каналов от 0 до 7 %
std::cout << "pwm_do: 01234567" << '\n';
for(n=0;n<=9;n++) // Организовать цикл для отображения ШИМ выходов
{
std::cout << "pwm_c=" << pwm_c << ' ';
irq_tim(); // Эмуляция прерывания таймера
for(k=0;k<=7;k++) std::cout << pwm_do[k]; // Вывод каналов регулирования
std::cout << '\n';
}
return 0;
}

Для проверки работы программы и её редактирования можно использовать онлайн-редактор с транслятором языка С, например, C++Shell [1]. Окно этого транслятора показано на рис. 1.


В первое поле редактирования необходимо скопировать приведённую программу и нажать программную кнопку «Run». Программа автоматически транслируется, и результат её работы отобразится в окне вывода. Из результата видно значение всех восьми выходных сигналов для десяти значений внутреннего счётчика импульсов программы. Как и следовало ожидать, произошло заполнение сигналов регулирования единичными значениями в соответствии с их предварительно заданными значениями от 0 до 7 процентов.

Параметры таймера в приведённой программе должны определяться характером регулируемого устройства. Например, для систем нагрева от промышленной сети переменного тока с синусоидальной частотой 50 Гц длительность активной фазы нагрева составляет 10 мс, как показано на рис. 2.


Не рекомендуется задавать период таймера меньше 10 мс, поскольку при этом будет происходить коммутация нагрузки на активном участке напряжения, а не при переходе через ноль. Это приводит к формированию мощных высоковольтных импульсных выбросов напряжения в питающую сеть и электромагнитных импульсов, способных нарушить работу приборов, находящихся рядом. К таким приборам относятся радио- и телевизионные приёмники, процессорные системы и медицинское оборудование, сбой которого опасен для жизни пациентов.

Большинство твердотельных реле для переключения больших токов имеют в своём составе схему коммутации при переходе через ноль, которая исключает формирование вредных и мощных импульсов перенапряжения.

Частотно-импульсная модуляция

Для формирования регулирующего ШИМ-сигнала в диапазоне от 0 до 100% минимальный период таймера составит: Т = 10 мс × 100 = 1 с. Получается, что для 50% сигнала ШИМ в течение половины секунды нагреватель будет включён на полную мощность, а вторую половину секунды полностью отключён. Такой режим нагрузки промышленной сети не всегда допустим. Например, для маломощных генераторов питающей сети это приводит либо к выходу этих генераторов из строя, либо к их нестабильной работе.

В таком случае рекомендуется применять частотно-импульсную модуляцию (ЧИМ) регулирующего сигнала. Основное отличие данного вида модуляции состоит в том, что заполнение всего периода регулирующего сигнала происходит равномерно. Поэтому для 50% сигнала ЧИМ время включения и отключения нагревателя будет чередоваться каждые 10 мс. Таким образом, нагрузка на питающую сеть будет более сбалансированной.

Для формирования ЧИМ-сигнала удобно использовать функцию синуса, задавая её период в соответствии с процентным значением и формируя импульсный выходной сигнал длительностью 10 мс при переходе функции через ноль.

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

Листинг 2. Функция обработчика прерывания таймера ЧИМ
int irq_tim()
{
unsigned short i; // Индексный регистр прерывания
unsigned short b[]={0,0,0,0,0,0,0,0}; // Переменные прерывания
float f[8], PI=3.14159265;
for(i=0;i<=7;i++) // Организация цикла каналов регулирования
{
f[i]=sin((2.0*PI*pwm_r[i]*pwm_c)/100.0);
if(f[i]>0 and b[i]==0) {pwm_do[i]=1; b[i]=1;} else {pwm_do[i]=0;} // Модуляция выходных сигналов
if(f[i]<0) b[i]=0;
}
pwm_c++; // Увеличение счетчика импульсов
if(pwm_c > 100) pwm_c=0; // Циклическое ограничение счётчика импульсов
return 0;
}

Для наглядности результата необходимо также заменить в основной программе строку «pwm_r[k]=k;» на строку «pwm_r[k]=k*10;», увеличив тем самым заданные значения регуляторов ШИМ для всех каналов в 10 раз.

Теперь, после трансляции и выполнения новой программы, получится результат, представленный на рис. 3.


Как видно из результата, например, для пятого канала с заданным значением 50% выходной сигнал чередуется значениями 0 и 1. Суммарное количество единиц, соответствующих включению выходного ключа канала, будет равно 50 из 100 частей. Таким образом, регулирующий сигнал обеспечивает равномерную нагрузку на промышленную питающую сеть во время работы.

Заключение

Приведённые выше программы можно скачать с сайта редакции [2] и модернизировать их для реализации конкретной задачи автоматического регулирования.

Импульсные регулирующие сигналы легко преобразуются в аналоговые регулирующие сигналы при необходимости. Для этого они подключаются к RC-фильтру низких частот, на выходе которого будет сформирован аналоговый сигнал с амплитудой от 0 до физического значения напряжения логической единицы, обычно до 5 вольт. Таким образом, можно получить необходимое количество аналоговых сигналов регулирования без использования цифро-аналоговых преобразователей.

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

Литература

  1. URL: https://cpp.sh.
  2. URL: https://cta.ru.

© СТА-ПРЕСС, 2025

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

01.03.2025 250 0
Комментарии
Рекомендуем
Современная электроника и искусственный интеллект Часть 1. Что такое искусственный интеллект,  и что он может

Современная электроника и искусственный интеллект Часть 1. Что такое искусственный интеллект, и что он может

Проявления искусственного интеллекта (ИИ) мы замечаем всё чаще как в повседневной жизни, так и в самых различных областях науки, техники, медицины, транспорта и т.д. Общая цель нескольких частей этой статьи заключается в том, чтобы попытаться объяснить, с одной стороны, какую роль играет современная электроника в ИИ, а с другой – как развитие современной электроники влияет на прогресс ИИ. В первой части статьи простыми словами рассказано, что такое ИИ, и как он работает. На основе анализа статей ведущих экспертов в области искусственного интеллекта автор постарался выделить несколько наиболее крупных фирм, продукция которых представляется наиболее перспективной. В первой части приведён краткий обзор больших языковых моделей (LLM) этих фирм. В следующей части статьи планируется рассмотреть специализированные модели искусственного интеллекта.
01.04.2025 218 0
Инновационные токопроводящие плёнки с элементами TFT как способ зарядки от теплового и вибрационного датчика QOT для носимых электронных устройств

Инновационные токопроводящие плёнки с элементами TFT как способ зарядки от теплового и вибрационного датчика QOT для носимых электронных устройств

Учёные многих стран мира работают над преобразованием энергии тепла в электрический ток с конца XIX века, когда контроль над электрическим током ощущался таким же прогрессом, как сегодня Интернет, цифровизация и ИИ. Гибкая РЭА применяется в различных областях, таких как панельные дисплеи, электронные датчики, шлейфы и устройства накопления данных, что стимулирует значительный интерес к новым материалам и технологиям их обработки. Сегодня за неполных два века можно говорить о том, что разработчикам удалось создать ультратонкую гибкую плёнку для подзарядки электронных устройств небольшой мощности на основе TFT, в частности, для подзарядки аккумуляторов смартфонов непосредственно от тепла тела человека. Такие электронные датчики пока размещают на кожном покрове, а в ближайшем будущем будут встраивать в умную одежду человека. В статье рассматриваются инновации в тонкоплёночных транзисторах (TFT), которые являются важнейшими компонентами, позволяющими создавать электронные схемы на гибких подложках, а разработка элементов TFT с высокой производительностью и с механической гибкостью для РЭА – предмет перспективных исследований.
01.04.2025 137 0

ООО «БД СЕНСОРС РУС»  ИНН 7718542411 erid = 2SDnjc4CpRr
ООО «БД СЕНСОРС РУС»  ИНН 7718542411 erid = 2SDnjcfnXC8
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться