В данной статье я покажу, как реализуется ШИМ на микроконтроллерах семейства AVR.
ШИМ (широтно-импульсная модуляция) — процесс управления мощностью, которая подводится к нагрузке, при помощи изменения скважности импульсов, при фиксированной частоте.
На микроконтроллерах семейства AVR ШИМ реализуется весьма просто. В этой статье описывается пример реализации на микроконтроллере ATmega8.
Приступим теперь к самой реализации. Для начала нам потребуется электрическая схем.
Как видно схема весьма простая. Всё что нужно, это подключить последовательную 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.
ШИМ используют, например, для регулировки яркости подсветки ЖК дисплеев, для регулировки скорости вращения электрического двигателя, для регулировки громкости в автомагнитолах. Эту схему, в частности, вы можете использовать в перечисленных и других областях электроники.
На этом, пожалуй, всё. Жду интересные комментарии.
Ссылки:
Автор: Жрец