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

 
 
> Не работает Dead time в stm32f4 должным образом.
sidy
сообщение Nov 3 2017, 15:12
Сообщение #1


Местный
***

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



Господа, добрый день.
Возникла проблема. Есть ШИМ частотой 5 кГц для управления транзисторным модулем для формирования синусоиды 50 Гц. С мертвым временем 5 мкс.
Получается что при выдаче ШИМа в комплиментарные выходы таймера TIM1 значения ШИМа вырождаются в постоянный сигнал,
Прикрепленное изображение

если они меньше мертвого времени и соответственно искажается синусоидальный сигнал.
Прикрепленное изображение

Т.е. получается что у STM32 нет минимального значения мертвого времени?
(Для примера привожу синусоиду сформированную без мертвого времени - искажений нет)
Прикрепленное изображение

Как же тогда с этим работать?

Сообщение отредактировал sidy - Nov 3 2017, 18:17
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sidy
сообщение Nov 28 2017, 13:38
Сообщение #2


Местный
***

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



Вернулся опять к данному вопросу. И выяснил что искажения выходной синусоиды происходят и в тех случаях когда мертвое время не превышает период ШИМа.
Вот формирование таблицы синуса:
for(i=0; i<SIZE; i++) {PWM_Tab[i]=sinf(6.283185f*i/SIZE);}
Вот вывод синуса в таймер:
Ampl=(TIM1->ARR)>>1;
TIM1->CCR1=TIM1->ARR-((Ampl)+K_A*(Ampl)*(PWM_Tab[iA])); iA++; if(iA>=SIZE) iA=0;

Сообщение отредактировал IgorKossak - Nov 28 2017, 18:09
Причина редактирования: бездумное самоцитирование
Go to the top of the page
 
+Quote Post
AVI-crak
сообщение Nov 28 2017, 14:14
Сообщение #3


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

Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894



Слишком долго считает.
Регистры TIM1->CCR1 не имеют теневых аналогов как у TIM1->ARR, записанное в них значение сразу начинает сравниваться.
Но выход есть, завести статическую переменную, в которую считать новое значение, и при прерывании переполнения (не сравнения!!!) - записывать в регистр значение статической переменной. Получится минимальная задержка обновления, и стабильная задержка на один отчёт - которую уже можно компенсировать.
Go to the top of the page
 
+Quote Post



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

 


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


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