Перейти к содержанию
    

STM32+PMSM+FOC+resolver

Добрый день!

Помогите оценить выполнимость задачи. Необходимо создать контроллер сервопривода на базе PMSM или BLDC мотора. В качестве "мозгов" выбран STM32. При использовании библиотек MCKIT 2.0 макет прекрасно работает как в режиме sensorless, так и с внешним квадратурным энкодером. Но вот задачу расширили на использование сервоприводов с встроенным ресолвером (синус-косинусный трансформатор). И вот возни вопрос. В принципе, и у TI(spra605) и у Freescale (AN1942) есть аппликухи по обсчету ресолвера силами ДСП. У ST таких аппликух нет, но все достаточно легко клонировалось. Но вот теперь вопрос- хватит ли ресурсов процессора и на алгоритмы FOC, и на обсчет ресолвера? Аппаратные ресурсы вроде есть, только надо каналы встроенных АЦП вовремя переключать с датчиков тока BLDC на синус-косинусные выходы ресолвера. Или ставить внешнее АЦП двухканальное. А вот с ресурсами процессора напряг пока- не получается обсчет ресолвера засунуть внутрь риалтаймовой задачи FOC.

Вопрос залу- кто нибудь встречал реализацию такого сервоконтроллера без отдельного внешнего контроллера ресолвера типа AD2S90 или подобных. Т.е возможно ли теоретически впихнуть все в один камень или надо делить задачу на два камня? Даже с двумя STM32 цена не напрягает, но становится трудно с местом на плате.

post-1741-1328090618_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если честно, со спецификой задачи не знаком, но зато есть опыт использования STM32. Так что комментирую со своей колокольни.

 

В принципе, и у TI(spra605) и у Freescale (AN1942) есть аппликухи по обсчету ресолвера силами ДСП. У ST таких аппликух нет, но все достаточно легко клонировалось. Но вот теперь вопрос- хватит ли ресурсов процессора и на алгоритмы FOC, и на обсчет ресолвера?

Если это DSP-шная задача, то можно заложится на STM32F4xx. Там ядро Cortex-M4F (DSP инструкции и аппаратный Float), частота 168 МГц и есть в наличии оптимизированные DSP библиотеки в составе CMSIS от ARM.

 

Аппаратные ресурсы вроде есть, только надо каналы встроенных АЦП вовремя переключать с датчиков тока BLDC на синус-косинусные выходы ресолвера. Или ставить внешнее АЦП двухканальное.

В том же STM32F4xx на борту 3 АЦП, которые могут работать параллельно.

 

А вот с ресурсами процессора напряг пока- не получается обсчет ресолвера засунуть внутрь риалтаймовой задачи FOC.

Снова: посмотрите в сторону STM32F4xx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос залу- кто нибудь встречал реализацию такого сервоконтроллера без отдельного внешнего контроллера ресолвера типа AD2S90 или подобных.
Зависит от необходимой точности и времени реакции. Делал на меге88 - генерил 8-битным ШИМом 400Гц, подавал их на СКТ, на пиках синусоиды оцифровывал (получается частота отсчетов 200Гц), вычислял арктангенс (вычисления с фиксированной точкой) по таблице + интерполяция, считал ПИД и генерил ШИМом управляющий сигнал 400Гц для двигателя. На частоте 16МГц успевал, точность с 10-битным АЦП порядка градуса.

 

Вашу задачу решить можно двумя способами:

1) STM может гененрить напряжение возбуждения при помощи DMA и ЦАП|ШИМ, измерять амплитуду синусной и косинусной обмоток, считать арктангенс, вычислять ошибку и далее считать сигнал управления двигателем. Учитывая наличие умножителя и 32-битное ядро должно получиться значительно быстрее, чем на меге.

2) при помощи двух ЦАП|ШИМ генерить напряжения для синусной и косинусной обмоток исходя из желаемого положения сервы, а на АЦП подать сигнал с обмотки возбуждения. Измеряя его амплитуду будете иметь сразу сигнал, пропорциональный ошибке практически без участия ядра.

У меня не хватало выходов ШИМ, пришлось идти первым путем.

 

P.S. возможно вам будет полезна книжка "Synchro/Resolver Conversion Handbook"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если это DSP-шная задача, то можно заложится на STM32F4xx. Там ядро Cortex-M4F (DSP инструкции и аппаратный Float), частота 168 МГц и есть в наличии оптимизированные DSP библиотеки в составе CMSIS от ARM.

Задача DSP-конечно, но с самим ресолвером обычный STM32 справляется "одной левой". Но вот скрестить в одном ядре две ДСПшные задачи пока невыходит - FOC 3х-фазным мотором с ПИДами по моменту и скорости с обсчетом ресолвера, и все это в риалтайме, а если неуспеть- то будет большой бум из трехфазного инвертора (все таки 2.2 квт мощи). Чем может помочь ядро F4- пока неясно. С одной стороны библиотека FOC написана без использования фич Cortex-M4F, по крайне мере версия 2. А для третьей версии нет исходников в свободном доступе. Притом самого обсчета ресолвера там не особо много- пара тригонометрий табличных. Для FOC загрузка ядра 30-40% в зависимости от частоты ШИМ. Вроде ресурс еще есть, но пока упихать все в одно, т.е найти в библиотеке FOC места, где есть резерв времени, перехватить управление АЦП, пересчитать позицию и вернуть вовремя управление- пока неполучается.

PS. Вот есть у STM такая штука http://www.st.com/internet/analog/product/250558.jsp SPIMD20- как раз то, что нам надо по функционалу. Построена на базе FPGA (Altera Cyclone III type) and the two microprocessors STM32F103 series. Так вот вопрос- зачем там два проца и ПЛИС, если по харду все, (ну кроме двух эзернетов) влазит в один и без ПЛИСы? Модуль контроллера должен крепится прямо на серводвигатель- так что габариты весьма критичны. А там еще и тепло и с 3-х фазного инвертора рассеивать надо.

post-1741-1328103117_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...