реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> двухтактный ШИМ на STM32
dimone
сообщение Jan 23 2013, 08:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Подскажите, как оптимально генерировать ШИМ на STM для полумостового преобразователя, как это делает tl494. Не нашел очевидного варианта..Заработал вариант на основе PWM6 при скважности 0.5 управлять дедтаймом sm.gif, следущий вариант делать связку таймеров мастер -слейв, вершина -табличный синтез черз DMA

Сообщение отредактировал dimone - Jan 23 2013, 08:30
Go to the top of the page
 
+Quote Post
MK2
сообщение Jan 23 2013, 08:56
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



по-другому кроме как через dead time и не придумаешь и при этом учтите в точке сброса-конца счета мы этот самый дедтайм и теряем. посмотрите в сторону F3 там таймеры имеют навороты.
вариант мастер-слейв пересчетов придется делать дофига как бы тоже не очень практично. гимор.
табличный синтез мне кажется тоже бесполезен как вы в таком случае обеспечите синхронизацию таймеров?
недавно для ИП тоже непростая задача встала для таймеров, и решили на стм не делать попробывать TMS320f28027 там хоть компараторы есть
Go to the top of the page
 
+Quote Post
dimone
сообщение Jan 23 2013, 09:11
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(MK2 @ Jan 23 2013, 12:56) *
...
табличный синтез мне кажется тоже бесполезен как вы в таком случае обеспечите синхронизацию таймеров?

-тут совсем не обязательно использовать таймера... wink.gif Уйдет туча памяти и цап-ы, зато траекторию переключения можно синтезировать, что нафиг не надо;
Вариант мастер -слейв тоже некошерный -два отдельных таймера..
Я предполагал что 6 -канальный ШИМ должен позволять организовать сдвиг фаз между парами, но вупор не догоняю как (

Сообщение отредактировал dimone - Jan 23 2013, 09:21
Go to the top of the page
 
+Quote Post
MK2
сообщение Jan 23 2013, 10:21
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Цитата(dimone @ Jan 23 2013, 12:11) *
Я предполагал что 6 -канальный ШИМ должен позволять организовать сдвиг фаз между парами, но вупор не догоняю как (

Да, он организовывает сдвиг фаз, но делает он это программно через прерывание таймера! это режим для шаговых движков посмотрите пример из STM32F10x Standard Peripherals Firmware Library
посмотрите еще этот документ
кстати вариант с мастер слейвом лишит вас аппаратного dead time, так что опасно это ((
скорее все приготовьтесь менять либо контроллер либо схему.

Go to the top of the page
 
+Quote Post
dimone
сообщение Jan 23 2013, 10:53
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(MK2 @ Jan 23 2013, 14:21) *
...
скорее все приготовьтесь менять либо контроллер либо схему.

-кошмар, вот так люди и разочаровываются в камнях, меня в sam7 достало, что DMA не имеет циркуляции,
теперь в STM оказывается нагородили кучу щита типа 6-канального ШИМ-а а чтоб примитивщину типа
скалярного частотника на них сделать и фазы на 120 разнести вариант лишь "софтовый" и надо переписывать состояние всех выходов "in advance"
с частотой дискретизации? А если это какой -нибудь несчастный сварочный инвертор, где на мост 40-50 кГц надо,
то толку от всей этой перефирии лишь нейтрализация джиттера sm.gif теневыми регистрами? Похоже им не только софт
индюки делают...

Сообщение отредактировал dimone - Jan 23 2013, 11:20
Go to the top of the page
 
+Quote Post
MK2
сообщение Jan 23 2013, 12:22
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



частотник можно замутить... векторный шим никто не отменял, у ST полно на эту тему апноутов
обычный мост тоже можно сделать, фазный наверно только на F3 серии можно.
индусы врятли тут участвовали им самим поменьше работы было бы... тут уже маркетологи пытаются накрутить "силовую категорию" что бы пропихнуть везде
Go to the top of the page
 
+Quote Post
dimone
сообщение Jan 23 2013, 13:52
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(MK2 @ Jan 23 2013, 16:22) *
частотник можно замутить... векторный шим никто не отменял, у ST полно на эту тему апноутов
обычный мост тоже можно сделать, фазный наверно только на F3 серии можно.

Чегоито я совсем потерялся.. -хотелось разумным аппаратным способом получить два попеременных
видеоимпульса с одинаковым периодом повторения и регулируемой длительностью. В подсказанном вами апноте
на 7 ст. -как понимаю реализовано аппаратн о, но импульсы выровняны, т.е. не подходит,
на ст. 9 -то что нужно, но реализовано с помощью sysTick прерываний , но на частоте в десятки килогерц такой
вариант сдается не оптимальным, т.е. сделать можно, это так или еще как-то?
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jan 23 2013, 16:31
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



А если так (на stm32f10x):
Ставите таймер в Center-aligned mode (up/down counting).
Ставите два канала сравнения с выходами.
Один, с меньшим значением регистра сравнения, с выдачей выхода если текущее значение меньше уставки.
Другой, с большим значением регистра сравнения, с выдачей выхода если текущее значение больше уставки.
То есть например:

TIM2_CR1: CMS=0b11 CEN=1
TIM2_ARR=300;
TIM2_CCR1=100;
TIM2_CCR2=200;
TIM2_CCER: CC1P=0 CC1E=1 CC2P=0 CC2E=1
TIM2_CCMR1: CC1S=0 CC2S=0 OC1M=0b110 OC2M=0b111

Код
счётчик
0    100     200    300      200    100     0    100     200    300      200    100
выход 1:
------+                              +------------+                              +-----
      |                              |            |                              |
      +------------------------------+            +------------------------------+
выход 2:
              +---------------+                           +---------------+
              |               |                           |               |
--------------+               +---------------------------+               +------------


Сообщение отредактировал maksimp - Jan 23 2013, 16:32
Go to the top of the page
 
+Quote Post
dimone
сообщение Jan 23 2013, 19:10
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



-вот- вот, и я думал, что не сошелось клином на pwm -моде а d.t.gap -ы можно косвенно оргнизовывать, спасибо всем огромное за помощь beer.gif

Код
uint16_t tauVal;
uint16_t dutVal;

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OCInitStructure.TIM_Pulse = dutVal>>1;
  TIM_OC3Init(TIM3, &TIM_OCInitStructure);
  TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
    
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    
  TIM_OCInitStructure.TIM_Pulse = (tauVal-(dutVal>>1));
  TIM_OC4Init(TIM3, &TIM_OCInitStructure);
  TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);


-получилось супер, если dutVal=tauVal -выходит чистый меандр, dutVal<tauVal появляется зазор для (полу)мостов,
если dutVal>tauVal то позволяет перекрывать импльсы, бывает полезно когда отдельные первички на ключ,
а потенцальная возможность отдельно управляя каналами бороть ДС -подмагничивание наверно очевидна...
maksimp - персонально a14.gif !

Сообщение отредактировал dimone - Jan 23 2013, 20:56
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 24 2013, 10:16
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Подскажите, как рулить этим PWM при регулировке моста? Т.е какой параметр отвечает за мощность и какие ограничения надо проверять в цикле регулировки, чтобы не взорвать силовой мост?
И второй вопрос- все тоже самое, но мост квазирезонансный, и рулить надо частотой. Как организовать процесс управления, чтобы никакое несчастное прерывание не сбило симметрию моста и не устроило вейерверк из 10 квт инвертора?
Go to the top of the page
 
+Quote Post
dimone
сообщение Jan 24 2013, 10:44
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(khach @ Jan 24 2013, 13:16) *
Подскажите, как рулить этим PWM при регулировке моста?

-Если на моеи реализации, то tauVal -грубо говоря задает частоту, dutVal -характеризует активное состояние ключа. Выдерживая корректное условие dutVal<=tauVal/dT, где (dT-максимально разрешенная доля заполнения от tauVal) вы убережете мост от сквозных токов. Установив -работает аппаратно , а остальное думается относится к вашему алгоритму управления и обртной связи..
п.с. для квазирезонансного варианта по датчику "зеро кросс" можно организовывать синхронный сброс, или регулировать частоту в режиме puls-to-pulse по ошибке между вышупомянутым датчиком и выходным сигналом

Сообщение отредактировал dimone - Jan 24 2013, 11:02
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 24 2013, 11:50
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(dimone @ Jan 24 2013, 12:44) *
-Если на моеи реализации, то tauVal -грубо говоря задает частоту, dutVal -характеризует активное состояние ключа. Выдерживая корректное условие dutVal<=tauVal/dT, где (dT-максимально разрешенная доля заполнения от tauVal) вы убережете мост от сквозных токов. Установив -работает аппаратно , а остальное думается относится к вашему алгоритму управления и обртной связи..
п.с. для квазирезонансного варианта по датчику "зеро кросс" можно организовывать синхронный сброс, или регулировать частоту в режиме puls-to-pulse по ошибке между вышупомянутым датчиком и выходным сигналом

Это понятно. Интересовали готовые куски кода, ответственные за изменение параметров управляющей цепи. С обсуждением, что менять, насколько можно менять за один шаг, Какую быструю, простую и безопасную математику использовать, какие условия проверять для безопасности процесса управления, как грузить регистры таймеров приготовленными данными чтобы было безопасно, как избежать несимметрии силового моста. Есть кое-кикие наработки по этому поводу, но хотелось бы начать публичное обсуждение, а не навязывать свою точку зрения.
Можно для начала что-нибудь простенькое, типа сварочного инвертора обсудить. Как раз хороший макет для отработки алгоритмов управления и всем доступен и недорог, если взорвется.
Зато куча интересных режимов управления возможна= ХХ, поджиг (возможно резонансный), стабилизация напряжения, тока, мощности дуги, КЗ, ограничения по скорости изменения мощности, иначе трансформатор можно перемагнитить из-за ассиметрии управления.
ЗЫ STM подало аппликацию на патент на таймер с триггерами US20120112814- значит скоро конец мучений.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
MK2
сообщение Jan 24 2013, 15:47
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Цитата(dimone @ Jan 24 2013, 13:44) *
Выдерживая корректное условие dutVal<=tauVal/dT, где (dT-максимально разрешенная доля заполнения от tauVal) вы убережете мост от сквозных токов. Установив -работает аппаратно
....
п.с. для квазирезонансного варианта по датчику "зеро кросс" можно организовывать синхронный сброс, или регулировать частоту в режиме puls-to-pulse по ошибке между вышупомянутым датчиком и выходным сигналом

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

P.S, под "zero cross" вы имеету ввиду датчик тока?! вроде ТТ? не очень понятно если вы делаете по датчику сброс таймеров то ошибки с выходным сигналом быть не должно. И еще квазирезонансный мост это phase shift bridge ? Если да то управление идет там не частотой...
Go to the top of the page
 
+Quote Post
koyodza
сообщение Jan 24 2013, 17:33
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Лучше всего по-моему использовать два канала любого таймера, один в режиме ШИМ, второй в TOGGLE
Выход первого подключается ко входу SD драйвера типа IR2104, выход второго - ко входу IN
Если драйвер не нужен, вместо этого можно использовать любую внешнюю логику, достаточно половинки 74х139, одной 74х138, трёх элементов 74х00 / 74х02 или массы других вариантов.
Преимущество такого способа - генерирование происходит аппаратно, без использования DMA, ширина импульсов одинакова (если не происходит изменения), изменение скважности происходит записью только в один регистр, изменение частоты повторения также только одним регистром.
Если где-то будете использовать, особенно в публикациях, не забывайте правильно упоминать авторство wink.gif
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 24 2013, 20:33
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(MK2 @ Jan 24 2013, 18:47) *
И еще квазирезонансный мост это phase shift bridge ? Если да то управление идет там не частотой...

Нет, не фазосдвиговый мост. Квазирезонансный мост у меня- это инвертор для индукционного нагрева. В этих инверторах доботность контура достигает 10 и более. Если первичке при этом мощность 10-20 квт, то во вторичке циркулирует 200 КВАр. И при потере управления инвертором все это выделяется в транзисторах. Транзисторы работают на пределе по току, поэтому жесткая коммутация для них недопустима. Только режим ZVS-ZVC. Но тут еще одна ловушка- частота резонанса меняется в зависимости от того, что вставлено в индуктор нагревателя. А нагрузка меняется и во времени - работчий деталь вставил-вынул или нагрели выше точки Кюри- индуктивность изменилась почти скачком. Т.е необходма глубокая регулировка по частоте, как минимум в 2 раза.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01686 секунд с 7
ELECTRONIX ©2004-2016