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

 
 
> двухтактный ШИМ на 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
 
Start new topic
Ответов
MK2
сообщение Jan 23 2013, 12:22
Сообщение #2


Местный
***

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



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


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

Группа: Участник
Сообщений: 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
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 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
Сообщение #5


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

Группа: Участник
Сообщений: 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

Сообщений в этой теме
- dimone   двухтактный ШИМ на STM32   Jan 23 2013, 08:21
- - MK2   по-другому кроме как через dead time и не придумае...   Jan 23 2013, 08:56
|- - dimone   Цитата(MK2 @ Jan 23 2013, 12:56) ... табл...   Jan 23 2013, 09:11
|- - MK2   Цитата(dimone @ Jan 23 2013, 12:11) Я пре...   Jan 23 2013, 10:21
|- - dimone   Цитата(MK2 @ Jan 23 2013, 14:21) ... скор...   Jan 23 2013, 10:53
- - khach   Подскажите, как рулить этим PWM при регулировке мо...   Jan 24 2013, 10:16
- - dimone   Цитата(khach @ Jan 24 2013, 13:16) Подска...   Jan 24 2013, 10:44
- - khach   Цитата(dimone @ Jan 24 2013, 12:44) -Если...   Jan 24 2013, 11:50
- - MK2   Цитата(dimone @ Jan 24 2013, 13:44) Выдер...   Jan 24 2013, 15:47
- - koyodza   Лучше всего по-моему использовать два канала любог...   Jan 24 2013, 17:33
- - khach   Цитата(MK2 @ Jan 24 2013, 18:47) И еще кв...   Jan 24 2013, 20:33
- - dimone   Цитата(MK2 @ Jan 24 2013, 18:47) P.S, под...   Jan 24 2013, 21:29


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 22:56
Рейтинг@Mail.ru


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