Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ШИМ для "моста" на STM32F103
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Tanker
Здравствуйте!
Задача раскачивать трансформатор, транзисторным мостом. Мне нужно генерировать сигналы управления диагоналями транзисторов (одну диагональ назовём P (положительная), другую N-отрицательная)
Для этого хотел использовать комплиментарную пару TIM1, думал Dead Time есть и ладно.
Чтобы трансформатор не насыщался, длительность P и N импульсов должна быть одинакова (импульсы должны быть симметричны), а при регулировании должно изменятся ширина импульсов (и соответсвенно мертвое время между ними). Период импульсов фиксированный (в нашем случае ~20кГц)
В общем, есть ли волшебные настройки ШИМ у STM32, чтобы получить автоматически симметричные импульсы в комплиментарной паре и с дед-таймом?
Используя прерывания и пересчитывая CCR1-значения для P и N-импульсов, я достиг желаемого, но при наличии такого продвинутого ШИМ модуля чувствую что подход не правильный.
Как эту задачу решить красиво используя продвинутые возможности CORTEX-M3 и STM32 в частности?
Microwatt
кто такие эти CORTEX-M3 и STM32 в частности?
цифровые микроконтроллеры?
Tanker
Цитата(Microwatt @ Feb 24 2010, 18:36) *
кто такие эти CORTEX-M3 и STM32 в частности?
цифровые микроконтроллеры?

Поставленную задачу мы решили в начале на Cyclone II. Следующий Ваш наводящий вопрос будет "Кто такие эти Cyclone II? "
khach
Да, дедтайм можно задать. Только не путайте ядро Cortex и продвинутый модуль таймера- одно с другим никак не связанно, просто серия STM32 затачивалась под управление моторами.
Возьмите у китайцев исходники библиотеки управления моторами и внимательно изучите модуль таймеров. Это лежит где-то тут
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3655960
Tanker
Понятное дело, что есть ядро CORTEX-M3 и перефирия которой окружил это ядро то же STM.
В реализации продвинутого таймера от STM, дед-тайм 8 бит всего, для многих применений более чем достаточно, согласен.
Пока решить задачу симметричности импульсов комплиментарной пары только настройкой модуля таймера мне не удалось, если я, например увеличиваю период канала таймера (в моём случае CH1) то P-импульс удлиняется, а N-укорачивается, т.е. они симметричны только при скважности 50%.

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

Вот думаю если нет прямых путей, посадить P и N ШИМЫ на разные таймеры, рассчитывать для них значения на каждом периоде, и по отсчёту периода таймеров, через DMA новые значения каналам присваивать...
koyodza
Цитата(Tanker @ Feb 24 2010, 19:45) *
Пока решить задачу симметричности импульсов комплиментарной пары только настройкой модуля таймера мне не удалось, если я, например увеличиваю период канала таймера (в моём случае CH1) то P-импульс удлиняется, а N-укорачивается, т.е. они симметричны только при скважности 50%.

Вы что, меняете период, а длительность оставляете неизменной? То так и будет. Кстати, совершенно неясно, зачем менять период.

Цитата(Tanker @ Feb 24 2010, 19:45) *
Я реализовал этот алгоритм на прерываниях таймера, но кроме этого прерывания есть и другие, что на высоких частотах управления транзисторами очень сказывается (например, я собираюсь транзистор включить, а тут по SPI байт пришёл) Поэтому хочу организовать полный автомат, типа записал значение в регистр (напр. ССR1), и вся последовательность автоматически сформировалась.

Что значит "я собираюсь транзистор включить"? А таймер зачем? Пусть он и управляет.
Для очень быстрой смены значений есть DMA, но судя по задаваемым вопросам оно Вам вряд-ли поможет.

Кроме того, Вы неправильно в самом начале определили диагонали моста:
Цитата(Tanker)
Задача раскачивать трансформатор, транзисторным мостом. Мне нужно генерировать сигналы управления диагоналями транзисторов (одну диагональ назовём P (положительная), другую N-отрицательная)

Диагонали - это именно диагонали, а не верхняя и нижняя половины. Или Вы как-то нечётко озвучили свою мысль.
khach
Давайте код инициализации таймера в студию, а то непонятно, что с чем связанно. Вообще то мне человек из саппорта утверждал, что таймер настолько продвинутый, что даже при зависшем ядре мотор будет крутиться без аварии, и можно подхватить мотор по рестарту ядра. Правда, как это сделать он не сказал- типа нужно купить motor control kit.
Microwatt
Цитата(Tanker @ Feb 24 2010, 21:18) *
Поставленную задачу мы решили в начале на Cyclone II. Следующий Ваш наводящий вопрос будет "Кто такие эти Cyclone II? "

Раз решили - рад за Вас. Ученого учить - тоько портить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.