Нелинейность PWM STM32F103

Блоки питания, преобразователи напряжения, UPS'ы - это здесь :)
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

AVI-crak, сам ф шоке , все флаги прерываний DMA чистятся по ардуински на авось в mainloop.


Здесь видимо каналы в режиме toggle c софтовой попыткой изобразить из них PWM .
Вообщем закат солнца вручную...
Последний раз редактировалось dosikus Ср авг 09, 2017 23:30:04, всего редактировалось 1 раз.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

[uquote="AVI-crak",url="/forum/viewtopic.php?p=3159391#p3159391"]После срабатывания необходимо чистить флаги DMA_IFCR.
Ничего похожего в коде не вижу. Как он вообще работает???[/uquote]

Хорошая внимательность!
Да, когда переносил из основной программы забыл строчку

DMA1->regs->IFCR = 0xFFFF; //Clear interrupt status bit

Но оно работает... как-то. Может ардуина сама добавляет, но это странно, я согласен.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Если ардунья сама это добавила ...
void loop() {
boolean b_state = !digitalRead(PB0);

if ((b_state) && (b_stoped)) { //ON switch
digitalWrite(PC13, LOW);
delay(500);
u16_cnt = 0; //reset main cntr
b_stoped = false; //disable STOP flag
GPIOB->regs->BSRR = Pol1;
delayMicroseconds(32); //one periods delay
DMA1->regs->IFCR = 0xFFFF; //reset DMA interrupt flag
TIMER1_BASE->SR = 0; //reset TIMER1 interrupt flag
TIMER1_BASE-> CR1 |= 0x0001; //Enable ON counter
TIMER1_BASE->BDTR |= PWMon;
}
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Мил человек, ну не шариш в теме, зачем лезть и выпячивать свою безграмотность?

Блок включения и выключения срабатывают только один раз при смене состояния, т.к. есть флаг, учитываемый при переключении.
Последний раз редактировалось AlekseyEnergo Чт авг 10, 2017 12:00:31, всего редактировалось 1 раз.
Причина: Нарушение п2.7 правил форума. Исправил.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Боже упаси шарить в таких простынях.
Вердикт то остается тот же - ниже плинтуса., плюс добавляется полное отсутствие знания железа...
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Изначально грешил на контроллер, но он оказался не причем. Посему попросил модератора перенсти тему в этот раздел.

Вот схема силовой части и управления. Самый обычный мост. В целом всё работает хорошо, за пределами этого нелинейного участка.
Странность в том, что не зависимо от длительности пилы проявляется эта флуктуация (см. первый пост).

Изображение

Вот осциллограммы напряжений на затворе и на КЭ ключа. На остальных тоже самое.
Изображение Изображение

Интересуют хотя бы возможные причины.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Расследование продолжается. Оказывается сигнал теряется где-то между затвором и стоком.

В тех же условиях, ступенчатого увеличения коэффициента заполнения 0-1-2-4-8-...-1024 (период 1152 отсчета), оказалось, что на затворах сдвиг фазы наблюдается отчетливо, а вот на выходе, в диагонали моста, при значениях около 32 сигнал остается на уровне значения 16.

Затвор и выход при значении 16 и 32.
Изображение

Выход при различных значениях.
Изображение

Трудность в том, что немогу померить напряжение на нужных транзисторах одновременно из-за связи через осциллограф.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Друг Кота
Сообщения: 3028
Зарегистрирован: Чт июн 26, 2014 00:04:37

Сообщение DC-AC »

При малых длительностях может сказываться задержка переключения. А вот второй, обратный ход ШИМ с нижних ключей на верхние отрабатывается? Если по стойкам просто делать - на одной меандр, а на второй сдвигать такой-же меандр - то на выходе будет переменка ШИМ, с шириной импульсов в зависимости от сдвига. У вас видно пилу, она всё-же есть - так как именно работает обратный ход?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Да, согласен, что на малых временах влияет много факторов. Но интересно то, что 4, 8 и 16 - работают как нужно, больше тоже, но вот посредине 32 - ни в какую.

Начал детально анализировать тайминги в этом процессе. Все промерил осциллографом, и был неприятно удивлен, что транзистор закрывается целых 700нс, несмотря на минимальное сопротивление в цепи затвора - 10 ом. Вероятно из-за того, что в даташите указано время (260нс) для 600В напряжения КЭ, а у меня только 320, т.к. работаю от сети 230В.
Изображение

Дедтайм у меня стоял на 500нС, отсюда получается, что должны были быть сквозняки. Но ничего подозрительного не было. Ни нагрева, ни просадок напряжения (видно из осциллограммы). Всё ровно.

Померить одновременно верхний и соответствующий нижний ключ на номинальном напряжение не получается из-за связи щупов осциллографа. На более низком, теством питании около 35 В вот картина перехода:
Изображение

Была мысль, что какой-то выброс переключения совпадает с определенным сдвигом и вызывает этот глюк.
Переписал прошивку под обычный, не фазосдвигающий ШИМ. Подключил на низкое напряжение 35В. И получил вот такую картину...
Изображение

Получается есть какая-то "магическая" длительность рабочего импульса, которая не зависит от:
1. напряжения питания
2. типа широтно-импульсной модуляции. Фазосдвиг или классический.
3. Не зависит от сопротивления Rg затвора
4. Не зависит от нагрузки.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Друг Кота
Сообщения: 3028
Зарегистрирован: Чт июн 26, 2014 00:04:37

Сообщение DC-AC »

Alex-lab писал(а):неприятно удивлен, что транзистор закрывается целых 700нс
Чтоб об этом судить, нужно смотреть ток транзистора и напряжение на нём. RC цепи по схеме стоят, они могут затягивать и если нет или слабый ток нагрузки, пока не откроется противоположный ключ, напряжение к-э на том, который закрывается не изменится.
Мне не понятен ваш алгоритм ШИМ. На выходе моста будет разность того, что есть на стойках. Если при 16 и 32 что-то меняется, но разность остаётся одинаковой - то так и будет.
Можно перейти временно на полумост - искусственную среднюю точку из конденсаторов и относительно неё посмотреть то-же самое, но с каждой стойки отдельно и сравнить.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Согласен, что реальное время закрытия так не увидишь. Ток действительно сильно меньше номинала транзистора. Дело в том, что всё уже распаяно на плате и переключить схему уже почти не возможно. Устройство уже было в тестовой эксплуатации (мной), когда это все полезло.

Алгоритм ШИМ очень простой. На первую и вторую ветку моста подается меандр с учетом дедтайма. При необходимости регулировать, фаза одной ветки сдвигается относительно другой, статичной. Что в этом хорошего? Хорошо то, что всегда какой-нибудь транзистор открыт, транзисторы открываются на полную длительность, удобное реализовывать на контроллере. Хотят тут нужно оговориться, что не любой для этого подойдет. Изначально, как дремучий ардуинщик, я пробовал сделать это на Ардуино Due на процессоре SAM3, но у него весьма скудная конструкция таймеров, пришлось переходить на STM32. Ооднако даже на простых ардуинах, на Атмега 328 все прекрасно работало, только разрешение ШИМ было низковатым (с учетом дед тайма), и не хватало времени на доп.обработку.

Но дело вроде сдвинулось с мертвой точки. Обнаружил, что добавление RC цепочки в парралель первичной обмотки трансформатора оказывает нужное влияние и раздвигает два слипшихся уровня. Видимо трансформатор намотан не очень удачно и паразитная емкость с индуктивностью рассеяния дают специфические колебания на определенной величине сдвига.
Изображение

Теперь вместо S-образной формы, пила приобрела монотонный вид. начальная нелинейность видимо вызвана перекрыванием фронтов импульсов отдельных ветвей моста, а как известно, площадь двух постепенно перекрывающихся треугольников имеет квадратичный закон. Что мы и видим на осциллографе.
Изображение
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

А Вы Alex-lab не рассматривали, для декларируемых целей, сравнить STM32F103 c таким кристаллом как dsPIC33EP64GS502 он специально позиционируется как SMPS Family (Для Цифровых источников питания), или TMS32F28027 Piccolo switched mode power supply. Тоже для сравнения годиться. Вот ,к примеру, я делал viewtopic.php?f=11&t=139007 покритикуйте за одно, тема подходящая.
Последний раз редактировалось astrahard Сб авг 12, 2017 17:12:56, всего редактировалось 1 раз.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Я начинающий, мне такие дебри ни к чему, да и с архитектурой PIC и прочих не знаком. На АВР работал под ассеблером раньше, щас перешел на ардуину, под ней же работаю с СТМ32. С контроллерами, как оказалось, никаких проблем нет, всё работает как и долджно. Хитрость в силовой части, связанная с собственной частотой трансформатора.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

[uquote="Alex-lab",url="/forum/viewtopic.php?p=3161069#p3161069"]Я начинающий, мне такие дебри ни к чему, да и с архитектурой PIC и прочих не знаком. На АВР работал под ассеблером раньше, щас перешел на ардуину, под ней же работаю с СТМ32. С контроллерами, как оказалось, никаких проблем нет, всё работает как и долджно. Хитрость в силовой части, связанная с собственной частотой трансформатора.[/uquote]
Жаль, просто Вы говорили о дискретности ШИМ, так у dsPIC33EP64GS502-I/SO разрешение ШИМ 1.04 нс, а у TMS320F28027 0.15 нс, лучше чем у STM32F103 в десятки раз, и ADC c Компараторами быстрее в разы и по количеству устройств (ADC & Comparator) больше. А dsPIC33EP64GS502-I/SO Еще корпус SO-28 c шагом 1.27 удобнее и, тактирование ШИМ на частоте 960 Мгц, а ядра 140 Мгц 70 MIPS. Архитектура проще чем ARM.
Последний раз редактировалось AlekseyEnergo Сб авг 12, 2017 20:04:02, всего редактировалось 1 раз.
Причина: Нарушение п2.7 правил форума. Предупрежден.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 308
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Откуда: Манчестер

Сообщение Alex-lab »

Спасибо за рекомендацию, преимущества несомненны!
Может быть в следующем проекте попробую, этот уже не буду менять.
При решение наиболее сложных задач, большинство, как правило, ошибается...
Контактная информация:
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт авг 20, 2019 19:00:41

Сообщение Олег Олегович »

Всем привет !!! Вопрос можно ли здвинуть каналы шим на tim1 относительно друг друга и если да то как ?
Ответить

Вернуться в «Питание»