Шим и AVR таймер.Общие сведение.
Цифровые устройства, какмикроконтроллер, может легко работать с входами и выходами, который имееттолько два состояния включен и выключен. Такимобразом, вы можете легко использовать ее для контроля состояния светодиода то есть вкл. или выкл..Таким же образом вы можете использовать его для управления любымэлектрическим прибором вкл / выкл, при использование надлежащих драйверов(транзистор, тиристор, реле ит.д.). Но иногда нужно больше, чем просто " включено" и"выключено" контроль над устройством. Если вы хотите контролироватьяркость светодиода (или лампы), или скорости двигателя постоянного тока, тоцифровые (вкл / выкл) сигналы просто не могут это сделать. Этузадачу можно решить с помощью метода называемого PWM или широтно-импульсноймодуляция.
PWMявляется метод, используемый для генерации аналоговых сигналов от цифровыхустройств, как MCU. Почти всесовременные микроконтроллеры обладают аппаратной генерацией сигнала ШИМ. В этомуроке мы будем изучать основы техники PWM и позже мы увидим, как осуществитьгенерацию PWM в микроконтроллерах AVR.
Цифровыеустройства, как и микроконтроллер, могут генерировать только два уровня на выходе,High = 5В и LOW = 0В. Но что,если мы хотим, чтобы генерировать 2,5 В или 3.1v или напряжение между 0-5 вольтна выходе? Для этих видов требования вместо того,чтобы генерировать постоянное выходное напряжение мы генерируем квадратную волну, которая имеет.High= 5В и LOW = 0В (см. рисунок 1).
Нарисунке вы можете увидеть PWM сигнал. Каквы можете видеть, что это только цифровой сигнал (может быть легко сгенерерованMCU). Но позвольте мне прояснитьнекоторые его свойства.
Сигналостается "ON" в течение некоторого времени и "OFF" в течение некоторого времени.
- Ton = Время выхода остается High.
- Toff = Время выхода остается Low.
- Когда мощность высока, напряжение 5В
- Когда мощность низка, напряжение – 0В
- T = период времени = Toff + Ton
Рабочийцикл.
Онопределяется:
![](http://avr.ru/int/Files/Picture/pwm/duty_cycle.gif)
Таким образом выможете увидеть, что это просто процент от полного периода времени. На рисунке выше (рис. 1) можно увидеть, что Ton = Toff = половина периода времени. Таким образом производительность составляет 50%. Если частота таких волн достаточно велика (скажем, 500 Гц), мощность, которую мы получим на выходе, является половина5V т.е. 2,5 вольт. Таким образом, если этот выход связан с двигателем,то онбудет работать на 50% его полной скорости. ТехникаPWM используется, чтобы генерировать любое напряжение между двумя напряжениями(например,между 0-12В). Хитрость заключается в том, чтобы изменять рабочий цикл между0-100% и получить тот же процент входного напряжения на выход. Нижеприведены некоторые примеры PWM сигналов при различных нагрузках.
Итак,вы только что видели, как мы можем генерировать аналоговые напряжения с цифровой системы с помощью PWM техники. Еслина выход поставить R / C фильтр вы получите чистый уровней сигналов постоянноготока, а не квадратные волны. Ноэто не является обязательным для приводных двигателей или длярегулирования яркости светодиодов.
AVRТаймер
Таймерстандартные функции практически каждого микроконтроллера.Таким образом очень важно изучать их использование. МикроконтроллерAVR имеет очень мощные и многофункциональные таймеры. Поэтому этот раздел описывает лишь основныесведения.
Таймеры, какправило, имеют разрешение 8 или 16 бит. Такимобразом, 8 бит таймера могу удерживать значения в пределах 0-255. Ноэтот регистр имеет магическое свойство! Егозначение возрастает или уменьшается автоматически в заданное скорости. Иэта операция не требует вмешательство центрального процессора.
Использование 8 BIT Таймер (Timer0)
Одно кристальный микроконтроллер ATmega16 и AtMega32 есть три различных таймера,из которых самый простым является TIMER0.Его разрешение составляет 8 BIT т. е. он может рассчитывать от 0 до 255. Делитель частоты - механизм для того, чтобы генерировать синхроимпульсы для таймера центрального процессора. Делитель частоты обычно используется, чтобы разделить эту тактовую частоту и произвести синхроимпульсы для таймера.Регистры таймеров, приводятся ниже.TCCR0- счетчик времени Регистр управления. Эта информация будет использоватьсядля настройки таймера.
Каквы можете видеть есть 8 бит каждый из которых используется для определенныхцелей. Для этого урока я буду акцентировать внимание только на последние трибита CS02 CS01 CS00. Онииспользуются для создания предварительного делителя потаймеру
Этотрегистр используется для включения / выключения прерываний, связанных стаймерами. Этот регистр управления прерываниями всех трех таймеров. Последние два бита (BIT BIT 1 и 0)Управление прерываний Timer0. Timer0имеет два прерывания, но в этой статье я расскажу вам только об одом. Это бит, когда установлен в положение"1" позволяет вызвать прерывания. Теперьнаступило время для практических занятий. Мы увеличим переменную "счет" при каждом прерывание,если "счет" достигнет 61, то мы будемпереключать PORTC0, который подключен со светодиодом вновь установим значение "счет" в ноль.Синхронизирующий вход Timer0 = 16MHz/1024=15625 Гц. Частотапереполнения = 15625 / 256 = 61,0352 Гц.
Настройка Timer0
Предварительного делителя = FCPU/1024 TCCR0 | = (1 <<CS02) | (1 <<CS00);
Включить переполнения разрешения прерывания TIMSK | = (1 <<TOIE0);
Инициализировать счетчик TCNT0 = 0;
ПРИЛОЖЕНИЯ:
- Исходный код смотрите в архиве