Микросекундная пауза в ШИМ на таймере T0.

Обсуждаем контроллеры компании Atmel.
Ответить
feodorsumkin
Родился
Сообщения: 17
Зарегистрирован: Ср дек 05, 2012 03:27:08

Микросекундная пауза в ШИМ на таймере T0.

Сообщение feodorsumkin »

Здравствуйте, уважаемые Коты! У меня неприятность, и я снова прибегаю к вам попрошайничать :))

Помогите пожалуйста разобраться.

Запускаю микроконтроллер atmega8515 (в редакторе code vision avr) в режиме шим-модуляции.
Вывожу шим на ножку OC0/T0. Работаю на частоте 1 МГц.

Выставляю вручную число в регистре сравнения OCR0 и регулирую скважность шим-сигнала.
Программка простейшая:

#include <mega8515.h>

void main(void)
{
DDRB = 0b00000001; // Настраиваем 0-пин порта B на вывод сигнала (для ШИМа).


TCCR0 = 0b01111001; // TCCR0=0b01 11 1 001 - настраиваем таймер на режим Fast PWM.


while(1) // Бесконечный цикл.
{
OCR0 = 0; // Выставляем вручную значение в регистре сравнения. Чем ближе к 0, тем шире импульс и короче пауза.
}

}



При OCR0 = 0 скважность, по идее, должна отсутствовать, и должен идти сплошной сигнал (максимальная мощность).
Однако через каждые 254 микросекунды сплошной сигнал прерывается на 1 микросекунду (1 такт микроконтроллера).

Погонял программу в AVR Studio. Оказалось, при сбросе счетного регистра (который длится как раз 1 такт) порт почему-то отключается, и тут же включается снова.

Подскажите пожалуйста, отчего такое происходит? Может какие-то дополнительные настройки режима требуются?

Хочу использовать шим-модуляцию для управления киловаттными электродвигателями через мощные мосфет-транзисторы. Поэтому любые подобные провалы сигнала (на такой большой мощности и на такой высокой частоте) приведут к ненужному открыванию транзисторов и к дополнительному перегреву.

ИзображениеШИМ в режиме сравнения.JPG
Реклама
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение ИС-пытатель »

Даташит прочтите. Все правильно там работает.
Реклама
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение uk8amk »

Вам следует выбирать не режим ШИМ с выравниванием по фронту, а с выравниванием по центру(Phase/Frequency correct). Он в два раза медленнее т.к. счетчик делает два прохода.

А вообще вы выбрали под задачу не самый подходящий камень. Рекомендую обратить внимание на серию AT90PWM (модуль PSC), STM8, STM32(есть Advanced control timers). Они более приспособлены под управление моторами.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение Леонид Иванович »

feodorsumkin писал(а):При OCR0 = 0 скважность, по идее, должна отсутствовать
Я же Вам ответил на изя-электроник. Это документированная особенность, которая логически вытекает из того, что в регистре сравнения можно задать только 256 различных комбинаций, а ШИМ из 256 квантов имеет 257 состояний.
feodorsumkin писал(а):Хочу использовать шим-модуляцию для управления киловаттными электродвигателями
+1 предыдущему оратору, для этих целей лучше подойдет PWM3 с его PSC. Например, там deadtime программируется, потом есть аварийное отключение.
Реклама
Эиком - электронные компоненты и радиодетали
feodorsumkin
Родился
Сообщения: 17
Зарегистрирован: Ср дек 05, 2012 03:27:08

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение feodorsumkin »

Спасибо, парни!
Особенно Вам, uk8amk - действительно, в режиме шима с коррекцией фазы подобной проблемы нет:

TCCR0 = 0b01110001;

Частота при этом в два раза ниже, но мне это без разницы. Даже лучше. Мощные ключи не любят быстрых и частых переключений.

Так же спасибо за подсказки насчет чипов со встроенным PWM-модулем. Надо будет выкроить время и почитать :))
Реклама
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение Леонид Иванович »

8-битный Phase Correct PWM состоит из 255 квантов, а не из 256, поэтому там такой проблемы нет. Но частота в 2 раза ниже. В данной конкретной задаче важнее всего аппаратная реализация защиты, чего нет в m8515, но есть в PWM3.
Реклама
feodorsumkin
Родился
Сообщения: 17
Зарегистрирован: Ср дек 05, 2012 03:27:08

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение feodorsumkin »

Спасибо :)

А как там защита устроена? Типа встроенное АЦП, которое следит за током на каком-нибудь шунте или датчике Холла, и отключает чип при превышении тока? Или скважность шима уменьшает до почти нуля?

А PSC - это что такое? Извините за тупые вопросы, я пока не очень гуру в этом...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Микросекундная пауза в ШИМ на таймере T0.

Сообщение uk8amk »

Обычно один внешний вход и несколько внутренних источников, при достижении определенного условия на которых(например изменение лог. уровня) срабатывает мертвое время, выходы отключаются и переводятся в неактивное состояние.

http://www.gaw.ru/html.cgi/txt/app/moto ... _motor.htm

В STM к примеру еще имеется функция автоперезапуска, которая используется для регулировки ШИМ(но все равно скважность меняется программно) при наступлении условия BREAK.
Ответить

Вернуться в «AVR»