- PVSM.RU - https://www.pvsm.ru -

ШИМ на AVR микроконтроллере

В данной статье я покажу, как реализуется ШИМ на микроконтроллерах семейства AVR.

ШИМ (широтно-импульсная модуляция) — процесс управления мощностью, которая подводится к нагрузке, при помощи изменения скважности импульсов, при фиксированной частоте.

На микроконтроллерах семейства AVR ШИМ реализуется весьма просто. В этой статье описывается пример реализации на микроконтроллере ATmega8.

Приступим теперь к самой реализации. Для начала нам потребуется электрическая схем.

схема ШИМ на микроконтроллере AVR

Как видно схема весьма простая. Всё что нужно, это подключить последовательную RC-цепочку к пину 17 микроконтроллера AVR ATmega8 (OC2 на рисунке). Напряжение на выходе ШИМ снимается с конденсатора C.

Постоянная времени τ=R*C должна быть много больше периода тактирования, чтобы амплитуда пульсаций на выходе была много меньше напряжения, снимаемого с ШИМ. Сопротивление R резистора должно быть много меньше входного сопротивление последующей цепи, которой будет управлять эта ШИМ, чтобы минимизировать влияние этого входного сопротивления на амплитуду пульсаций и на постоянную составляющую выходного напряжения.

Теперь рассмотрим код:

void pwm_init(void)
{
	DDRB |= 8; // Устанавливаем пин 3 порта B на выход
	OCR2 = 0; // Коэффициент заполнения 0%
	TCCR2 = 0x6C; // Частота ШИМ = clk/(64*256), clk - частота микроконтроллера
			// Fast PWM
			// Сброс OC2 при достижении счётчиком значения OCR2, и установка при достижении счётчиком нуля
}

Код тоже очень простой. Состоит всего из 3-х инструкций на языке C. В первой инструкции пин 17 микроконтроллера AVR ATmega8 делается выходным (output). Затем, записью в регистр TCCR2, включается сам ШИМ, устанавливается его режим и задаётся тактовая частота. В документации на микроконтроллер AVR подробно описаны все режимы, а также как рассчитывается тактовая частота.

После инициализации, записью в 8-битный регистр OCR2 значения, вы можете менять коэффициент заполнения. Это значение постоянно сравнивается со значением 8-битного счётчика, когда значение в счётчике достигает значения равного значению регистра OCR2, сбрасывается состояние выхода OC2 (пин 17); при переполнении счётчика оно устанавливается.

Коэффициент заполнения регулируется простой записью в регистр OCR2. Сразу после записи он меняется в соответствии с числом, которое туда записано.

Например, если записать 0, то получится коэффициент заполнения 0%, если записать 255, получится коэффициент заполнения 100%, а если записать число 114, коэффициент заполнения будет 44.71%. Как известно, постоянная составляющая напряжения на выходе ШИМ пропорциональна коэффициенту заполнения. Таким образом, получается управление напряжением в диапазоне от 0 до Vcc.

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

На этом, пожалуй, всё. Жду интересные комментарии.

Ссылки:

Автор: Жрец

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/pesochnitsa/266364

Ссылки в тексте:

[1] https://ru.wikipedia.org/wiki/Широтно-импульсная_модуляция: https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%80%D0%BE%D1%82%D0%BD%D0%BE-%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F

[2] Источник: http://habrahabr.ru/sandbox/111822/