ШИМ

Материал из me-robotics wiki

Что такое ШИМ?

Широтно-импульсная модуляция - процесс управления мощностью методом периодической подачи высокого и низкого уровня сигнала. В этом методе преобразуется сигнал, при котором изменяется длительность импульса, частота при этом постоянна. Другими словами, ШИМ – это сигнал с различными интервалами включения(on) и выключения(off) сигнала (различными продолжительностями включения). Время, в течение которого сигнал имеет высокий уровень, называется временем включения, а время, в течение которого сигнал имеет низкий уровень - время выключения.

Область применения

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

Коэффициент заполнения (скважность) ШИМ

Процент времени, в течение которого ШИМ сигнал имеет высокий уровень, называется коэффициентом заполнения (скважностью). К примеру, коэффициент заполнения ШИМ сигнала с периодом (длительностью) 100 мс, в котором в течение 50 мс сигнал имеет высокий уровень и в течение 50 мс имеет низкий уровень, равен 50%. Аналогично, если для такой же длительности (100 мс) сигнал 35 мс остается на высоком уровне и 65 мс на низком, то коэффициент заполнения для такого сигнала будет равен 35%. Для его определения нам необходимо знать только длительность высокого уровня сигнала. Более наглядно ШИМ сигнал представлен на следующем рисунке.

ШИМ сигнал

Формула для расчета коэффициента заполнения(скважности) выглядит следующим образом: Скважность = Время включения/Период

Выбор режима ШИМ

Существует три типа ШИМ:

- Быстрая ШИМ (Fast PWM).

- ШИМ с коррекцией фазы (Phase Correct PWM).

- ШИМ с коррекцией фазы и частоты (Phase and Frequency Correct PWM).

Быстрая ШИМ используется в случаях когда нам не важна фаза импульсов, например, управление скоростью вращения двигателя или яркостью свечения светодиода.

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

Рассмотрим программирование ШИМ сигнала на микроконтроллере AVR ATmega32

void timer(void)
{
	
	TCCR0|=(1<<WGM00)|(1<<WGM01)|(1<<COM01);// установка ШИМ сигнала, определение механизма изменения состояния ножки
	OCR0=255; //число сравнения, от 1 до 255 в зависимости от необходимой полученной мощности
	TCCR0|=(1<<CS00); //предделитель
}

Программирование ШИМ сигнала на Arduino

Микроконтроллер Arduino также имеет возможность функционировать в режиме ШИМ. Для этого следует вызвать функцию AnalogWrite() с указанием в скобках значения от 0 до 255. Ноль соответствует 0В, а 255 – 5В. Промежуточные значения рассчитываются пропорционально.