Добавлено: Вс Авг 29, 2010 10:08:14 Заголовок сообщения: Есть вопрос по поводу периода ШИМ
Есть статья по зарядному устройству http://www.gaw.ru/html.cgi/txt/app/Atmel/micros/avr/AVR450.htm
Там идет расчет требуемой индуктивности дросселя для понижающего преобразователя. Используется 8-битный таймер, но почему-то в формуле расчета периода ШИМ используется значение в числителе формулы 510, а не 255. Подняв ДШ на контроллер, я извлек из него то, что изображено на рисунке,и если я все правильно понял, то все же там должно быть значение 255! Где я ошибаюсь? (формула на рисунке - мои имышления, как я понял написанное в ДШ)
На что делить зависит от режима ШИМ. Если таймер работает в режиме fast PWM (быстрый ШИМ), то делить нужно на 256 (а не 255), если работает в режиме phase correct (фазокорректированный) то делить на 510 (а не 512 или 511 как иногда ошибочно считают). И если у Вас выбран режим phase & frenc. correct, то делить нужно на то число которое у Вас внесено в регистр определяющий TOP-значение + 1.
Пример:
Кварц: 7,372`8 МГц
ICR=383
Значит: 7`372`800 Hz/(383+1) = 19`200 Hz _________________ Тротила для дураков не бывает® One
В дш написано примерно следующее: "При двунаправленной работе максимальная частота ШИМ-сигнала меньше, чем при однонаправленной работе, однако, за счет такой особенности, как симметричность в режимах ШИМ с двунаправленной работой, данные режимы предпочитают использовать при решении задач управления приводами."
В чем смысл применения ФЧК для понижающего преобразователя? Почему нельзя/хуже применить обычную быструю шим, при этом повысив частоту и снизив требуемую индуктивность дросселя?
Проблема быстрого ШИМ в том что при минимальном значении в регистре управления (OCR0=0x00;) и прямом (не инверсном) выходе на выводе ШИМ-канала будет не сплошной лог. 0, а "иголка" (лог. 1) составляющая 1/256 периода. При максимальном значении будет сплошная лог. 1. Что-бы избавиться от этой "иголки" при минимальном значении. Включаете канал как инверсный, и в регистр канал пишите инвертированное значение. Тоесть:
Си:
inc up_count ;up_count++
mov PWM_data,up_count ;PWM_data=up_count
com PWM_data ;~PWM_data
out OCR0,PWM_data ;
При этом обновлять OCR0 необходимо по преполнению этого же таймера! По крайней мере так это делаю я. Так работает у меня преобразователь для светодиодного RGB освещения на балконе. _________________ Тротила для дураков не бывает® One
Конкретное применение данной конфигурации - зарядное устройство, при входном напряжении даже 15В, 1/256 это 0,06 В, в которых нет смысла в данной задаче, что если минимальное значение "1" вообще исключить в программе?, ведь даже 10 (0,6В) при зарядке аккумуляторов не имеет практического значения. Чтобы не переходить на "инверсный режим" Мне например проще остановить таймер и сбросить OC0, для прекращения заряда. Что думаете?
Правильное решение, только когда остановите таймер на всякий пожарный, можете отключить канал таймера (disconnect) и сбросить в "0" линию порта на которой висит выход таймера (PORT.x=0;).
Кстати да, чуть не забыл. Если Вам точность не принципиальна, и многошаговость ШИМ-а не нужна, тогда можно использовать ШИМ с урезанием числа ступеней. например TOP-значение таймера установить 100. Таким образом частота ШИМ-а повысится, к примеру 7372800 Гц/100 = 73`728 Гц при невысокой частоте кварца. Или же, потренируйтесь работать с PLL (он имеется в Тане26 или Таня461 Вам поможет). Таким образом можно выжать 64 МГц / 256 = 250`000 Гц.
Что-бы разговор далее был более детальным, укажите тип МК, частоту кварца, а также какой таймер собираетесь использовать. _________________ Тротила для дураков не бывает® One
Думаю повторить указанную выше опорную разработку, только прикрутить дисплей и "Блэк джек со шлюхами" на свой вкус. Мк буду использовать ATmega 88 или 168, чтобы не мелочиться - кварц на 20 МГц. Таймера 0 (8 битный) хватит более чем. Разрядность конечно уменьшу, ни к чему шаг 0,06 В
Да это синтезатор частоты на базе ФАПЧ. Ничего особенного, просто нужно выбрать источник для таймера PLL 64 MHz, и фуз установить для работы PLL. В CVAVR кодевизард сам его проинициализирует. Меня только не устраивает что ФАПЧ есть в некоторых тинях, в них как известно аппаратного умножения нет, а аппаратный множитель по зарез как нужен в некоторых моих задачах. Программное умножение малость тормознутое. Аппаратное умножение есть во всех мегах и в спецефической AT90PWM3B, но этот чип меня не устраивает, он дорог и редкостный. Вот если бы ATmega48 такое могла... _________________ Тротила для дураков не бывает® One
Последний раз редактировалось: One (Вт Авг 31, 2010 09:31:13), всего редактировалось 1 раз
Если вернуться к нашим баранам, то в контексте вышеуказанного применения, в чем принципиальная разница : ШИМ с ФЧК и обычный FastPWM ? Насколько критично?
Фокус быстрого ШИМ относитель фазокорректированного, в том что при изменении заполнения быстрого ШИМ происходит паразитная модуляция по фазе, честно сказать не знаю где это может быть критично. Иначе говоря, при за полнении ШИМ его спад будет двигаться вправо относительно фронта. При ФК ШИМ-е при заполнении импульс будет расширяться в обе стороны, то есть от своего центра в сторону фронта и в сторону спада.
Примерно так _________________ Тротила для дураков не бывает® One
Меня только не устраивает что ФАПЧ есть в некоторых тинях, в них как известно аппаратного умножения нет, а аппаратный множитель по зарез как нужен в некоторых моих задачах. Программное умножение малость тормознутое. Аппаратное умножение есть во всех мегах и в спецефической AT90PWM3B, но этот чип меня не устраивает, он дорог и редкостный. Вот если бы ATmega48 такое могла...
One, если не секрет - а сколько у вас стоят указанные МК от Атмель? Мне почему интересно - набрёл недавно на МК с Cortex-M3 - стоимость младших моделей меньше, чем стоимость младших ATMeg в наших локальных магазинах. Забавно получается - полноценное 32-ух битное ядро, куча перефирии - стоят дешевле, чем уже морально устаревшее 8-ми битное ядро (да, сравнивать цены в разных магазинах не корректно, но всё же).
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы