ДВС РОТОРНЫЙ EMDRIVE РАСКОКСОВКА HONDAВИДЫ

ЧПУ фрезерный станок с автономным контроллером на STM32. Шаговый двигатель stm32


Управление шаговым мотором. Силовая часть.

Дата: 22 Марта 2014. Автор: Алексей
Всем привет! Наконец-то пришла весна, потеплело и солнышко стало прогревать. Птички запели )) Ну ладно, хватит лирики. Продолжаю писать про шаговые двигатели. А точнее не про них, а как я с ними работаю. Может кому-то будет полезно, а кому нет, решать вам. Поехали. В прошлой статье я писал как подключить ШД к силовому драйверу на базе микросхемы L298N. Получил я тут на днях посылочку вот с такими моторами. Шаговые моторы. А на моторах написано: "1.8° 2.5А". Вот эти 2.5А меня озадачили, ток как при подключении к выше описанным драйверам, микросхемам поплохело через минуту. Ну думал, думал и нашел в своих запасах MOSFEты. Я ими в свою очередь пытался управлять мотором на фрезерном станке, но так все и заглохло. С передачей 1:2 обороты регулировать просто не понадобилось. Вот я и подумал, а не собрать ли свой силовой драйвер для шаговиков на этих транзисторах. Смотрим на картинку ниже. (это из даташита на L298). Схема L298.
Давайте разберемся по подробнее. Ножка +Vs получает напряжения для мотора. +Vss питание схемы. In1...In4 задают управляющие сигналы. EnA, EnB задают ШИМ. SENSE A, SENSE B нужны для определения протекающего тока. Для этих целей стоят два резистора Rsa и Rsb. OUT1...OUT4 соответственно идут к выводам мотора. Посмотрев на схему я решил сделать такую же но на рассыпухе. Биполярные транзисторы заменил на MOSFET IRFZ44, они самые распространенные. Логику для управления сначала хотел сделать на биполярникак, но нашел им замену в виде готового драйвера от той же фирмы IR2104. Драйвер конечно хороший, но... Жутко боится статики. Сжег 7 микросхем. Понял когда уже со злости перепаивал седьмую микросхему, на нервном срыве выключил музыку и при полной тишине касаясь жалом до ножки микросхемы, слышу "чпок". Следующие ноги сделали тоже самое. От сюда вывод, паять только феном. Второй касяк, драйверы боятся быть грязными. Убил уйму времени пока не помыл в УЗ ванне. Если оставить флюс на плате, то осцил такое выдает )) В связи с копированием данной схемы, решил логику работы переложить на специализированную микросхему L297. Они в принципе созданы друг для друга. Смотрим схему.
На схеме справа внизу видно разъем для подключения вентилятора охлаждения, но при испытани я заметил что транзисторы не греются вообще, а стабилизатор на 12в греется. Также добавил режим тока удержания. Это нужно для того чтобы в момент простоя мотора ток был минимален. Мотор не греется, экономия электроэнергии )) Если требуется держать вал мотора намертво, можно резистор R16 выкинуть из схемы, а выводы замкнуть между собой. После сборки регулировка не требуется. Точнее требуется. Если стоят два резистора то регулировать нужно так: Сначала нужно вычислить опорное напряжение. Для этого нужно по закону Ома умножить сопротивление резистора R9, это тот 5-ти ваттный, на требуемый ток. Например мне нужно 2,5А. 0.22Ом * 2,5А = 0,55В. То есть требуется подать на ногу 15 Vref микросхемы L297 0.55В. Чтобы это сделать нужно на разъеме J10 на вывод "Ток удержания" подать 5В, а на вывод "Диагностика Vref" повесить тестер. Вращая регулировочный винт резистора R17 добиться 0.55В. Далее не отключая тестер, снять 5В и прижать к земле. Напряжение должно упасть. Далее вычислить ток удержания. Я решил дать 0,75А. Вал сам не провернется но и если что, то рукой можно провернуть. Для моих целей то что надо. 0,22Ом * 0,75А = 0,165В. Значит вращаем резистор R16 до получения требуемого напряжения. Потом снова подаем 5В и корректируем до 0,55В. Подать 0В и проверить ток удержания, если убежал, подправить. Ну короче переключать и регулировать пока требуемые напряжения не установятся. Подаем 5В на вывод "Ток удержания", получаем 0,55В. Подаем 0В, получаем 0,165В. Есть одно но... После остановки мотора, ток удержания сразу уменьшать не надо. Мотор остановили, подождали пол секунды, а потом смело уменьшаем. Да, вот еще один плюс к уменьшению тока, мотор при удержании вала с рабочим током сильно пищит. Если ток уменьшить писк пропадает. Внизу будет видео работы всего этого безобразия и там это хорошо слышно. Резюме: Для того чтобы мотор сделал шаг, нужно на вывод "Ток удержания" подать 1. На вывод "Направление" подать 1 или 0, в зависимости от направления и подать импульс на вывод "Шаги". Один импульс, один шаг. Затем подождать пол секунды и подать 0 на вывод "Ток удержания". Вот весь алгоритм для управления мотором. Ой, чуть не забыл! Разъём J8 нужен для выбора режима Шаг/Полушаг. Если джампера нет, то полношаговый режим, если установлен то полушаговый. Также можно управлять режимом с МК. Если подать 0 на вывод №2 будет шаг, если 1 то полушаг. Страссированную плату не дам. Я не жадный, я просто ее делал для тестов и отработки схемы. В ней много чего есть, что не нужно для работы мотора. Что-то вроде тестовых подсхем )) Не, поделюсь )) Я выкинул из нее все лишние и перетрассировал. Как она будет выглядеть можно посмотреть на 3D модель ниже. Плата 3D модель.
Это реальная плата, но с добавками. Плата реальная модель. Вот архив с проектом в DipTrace. Да, я предал P-CAD. Меня купили за 3D-модели )) Архив с проектом. На плате нет ни одной перемычки. Все детали у которых можно подлезть с паяльником к ножке, обязательно пропаять. Разъёмы J5, J8, J9, J10 паять таким образом: Поднять корпус по выводам до самого верха, затем вставить в отверстия таким образом чтобы выводы с другой стороны вылезли на 1 мм и пропаять их. Затем перевернуть плату и пропаять сверху. Затем опустить корпус вниз. Корпус сядет прямо на плату. Это из-за того что в корпусе снизу есть канавка, припой не помешает. Ну вроде все. Будут вопросы, пишите. Вот конечный результат. Три платы на три оси. Платы страссированны в более компактном варианте.Архив с новым проектом. Драйверы ДШИ трех осей.

JW Player goes here



www.avrki.ru

ЧПУ фрезерный станок с автономным контроллером на STM32 / Хабр

Поскольку я давно собрал для себя ЧПУ станок и давно и регулярно эксплуатирую его для хоббийных целей, то мой опыт, надеюсь, будет полезен, как и исходные коды контроллера.

Постарался написать только те моменты, которые лично мне показались важными.

Ссылка на исходники контроллера и настроенную оболочку Eclipse+gcc и пр. лежат там же, где ролик:

Регулярно сталкиваясь, с необходимостью сделать ту или иную мелкую «штучку» сложной формы, первоначально задумался о 3D принтере. И даже начал его делать. Но почитал форумы и оценив скорость работы 3D принтера, качество и точность результата, процент брака и конструкционные свойства термопластмассы, понял, то это не более чем игрушка.

Заказ на комплектующие из Китая пришел за месяц. И уже через 2 недели станок работал с управлением от LinuxCNC. Собирал из всякой фигни, что была под рукой, поскольку хотелось побыстрее (профиль + шпильки). Собирался потом переделать, но, как оказалось, станок получился достаточно жесткий, и гайки на шпильках не пришлось подтягивать ни разу. Так что конструкция осталась без изменений.

Начальная эксплуатация станка показала что:

  1. Использовать в качестве шпинделя бормашинку “china noname” на 220V не лучшая идея. Перегревается и жутко громко работает. Боковой люфт фрезы (подшипников?) ощущается руками.
  2. Бормашинка Proxon работает тихо. Люфт не ощутим. Но перегревается и выключатся через 5 минут.
  3. Компьютер, взятый на время, с LPT двунаправленным портом — не удобен. Взят на время (найти PCI-LPT оказалось проблемой). Занимает место. И вообще..
После первоначальной эксплуатации заказал шпиндель с водяным охлаждением и решил сделать контроллер для автономной работы на самом дешевом варианте STM32F103, продаваемом в комплекте с 320x240 LCD экраном. Почему народ до сих пор упорно мучает 8-и разрядные ATMega для относительно сложных задач, да еще через Arduino для меня загадка. Наверное любят трудности.

Разработка контроллера

Программу создавал после вдумчивого просмотра исходников LinuxCNC и gbrl. Однако ни те, ни те исходники расчета траектории не взял. Захотелось попробовать написать модуль расчета без использования float. Исключительно на 32-х разрядной арифметике. Результат меня устраивает для всех режимов эксплуатации и прошивку не трогал уже давно. Скорость максимальная, подобранная экспериментально: X:2000мм/мин Y:1600 Z:700 (1600 step/mm. режим 1/8). Но ограничена не ресурсами контроллера. Просто выше уже мерзкий звук пропуска шагов даже прямых участках по воздуху. Бюджетная китайская плата управления шаговиками на TB6560 не самый лучший вариант. Фактически скорость по дереву (бук, 5мм заглубления,d=1мм фреза, шаг 0.15мм) больше 1200 мм не ставлю. Возрастает вероятность поломки фрезы.

В результате получился контроллер со следующим функционалом:

Контроллер подключатся к плате управления шаговиками через тот же разъем LPT. Т.е. он выполняет роль управляющего компьютера с LinuxCNC/Mach4 и взаимозаменяем с ним.

После творческих экспериментов по вырезанию собственноручно нарисованных рельефов на дереве, и экспериментов с настройками ускорений в программе, захотел дополнительно еще и энкодеры на осях. Как раз на e-bay нашел относительно дешевые оптически экодеры (1/512), шаг деления которых для моих ШВП был 5/512= 0.0098мм. Кстати, использование оптических энкодеров высокого разрешения, без аппаратной схемы работы с ними (в STM32 она есть) – бессмысленно. Ни обработка по прерыванию, ни, тем более, программный опрос никогда не справятся с «дребезгом» (это говорю для любителей ATMega).

В первую очередь, я хотел для следующих задач:

  1. Ручное позиционирование на столе с высокой точностью.
  2. Контроль пропуска шагов с контролем отклонение траектории от расчетной.

Однако, нашел им еще одно применение, пусть и в довольно узкой задаче.

Заметил, что при вырезании рельефа, при задании ускорения по Z больше определенной величины, ось Z начинает медленно, но уверенно ползти вниз. Но, время вырезания рельефа при этом ускорении на 20% меньше. По окончанию вырезания рельефа 17x20 см с шагом 0.1мм фреза может уйти вниз на 1-2 мм от расчетной траектории. Анализ ситуации в динамике по энкодерам, показал, что при подъеме фрезы иногда теряется 1-2 шага. Простой алгоритм коррекции шагов с использованием энкодера дает отклонение не более 0.03 мм и позволяет уменьшить время обработки на 20%. А даже 0.1 мм выступ на дереве заметить сложно.

Идеальным вариантом для хоббийных целей посчитал настольный вариант с полем чуть больше чем A4. И до сих пор мне этого хватает.

Подвижный стол

Для меня до сих пор остается загадкой, почему все выбирают для настольных станков конструкцию с подвижным порталом. Единственное её преимущество – возможность обработать по частям очень длинную доску или, если приходится регулярно обрабатывать материал вес которого больше веса портала.

За все время эксплуатации ни разу не было необходимость выпилить по частям рельеф на 3-х метровой доске или сделать гравировку на каменной плите.

Подвижный стол обладает следующими преимуществами для настольных станков:

  1. Конструкция проще и, в общем случае, конструкция более жесткая.
  2. На неподвижный портал навешиваются все потроха (блоки питания, платы и пр.) и станок получается компактнее и удобнее для переноски.
  3. Масса стола и куска типичного материала для обработки существенно ниже чем масса портала и шпинделя.
  4. Практически исчезает проблема с кабелями и шлангами водяного охлаждения шпинделя.

Шпиндель

Хотел бы заметить, что данный станок не для силовой обработки. ЧПУ станок для силовой обработки проще всего сделать на базе обычного фрезерного станка.

На мой взгляд, станок для силовой обработки металла и станок с высоко оборотистым шпинделем для обработки дерева/пластмасс — это совершенно разные типы оборудования.

Создать в домашних условия универсальный станок как минимум не имеет смысла.

Выбор шпинделя для станка с данным типом ШВП и направляющими с линейными подшипниками однозначен. Это высоко оборотистый шпиндель.

Для типичного высоко оборотистого шпинделя (20000 об/мин) фрезеровка цветных металлов (про сталь даже речи не идет) – это экстремальный режим для шпинделя. Ну, разве что очень надо и тогда съем по 0.3 мм за проход с поливом ОЖ. Шпиндель для станка рекомендовал бы с водяным охлаждением. С ним слышно во время работы только «пение» шаговых двигателей и бульканье аквариумного насоса в контуре охлаждения.

В первую очередь у меня ушла проблема корпусов. Любой формы корпус фрезеруется из «оргстекла» и по идеально по гладким срезам склеивается растворителем.

Стеклотекстолит отказался универсальным материалом. Точность станка позволяет вырезать посадочное место под подшипник, в которое он холодный зайдет, как положено с легким натягом, а после уже не вытащить. Шестерни из текстолита отлично вырезаются с честным эвольвентным профилем.

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

Вот только ювелирку не пробовал. Негде опоки прокаливать/плавить/лить. Хотя брусок ювелирного воска ждет своего часа.

habr.com

управление шаговыми двигателями / Силовая электроника / Сообщество EasyElectronics.ru

Общий вид

Прошло уже примерно три года, как я купил у Purelogic станочек PLRA4, и почти с самого начала меня не покидала идея сделать к нему свой контроллер с работой по USB. Началось всё с простого переходника USB-LPT на ATMEGA с софтовым USB и жуткими тормозами, потом AT90USB162, потом AT91SAM7S. Недавно случилось чудо — в наш город завезли L6474 и я решил, что теперь смогу сделать свой драйвер. Микросхемка оказалась очень маленькая, но с приличными амбициями: до 3А, до 45В, 16 микрошагов, куча защит. В процессе макетирования я сжёг два экземпляра и решил обратиться к ЛУТ. Вот, что получилось: Схема ПлатаПлата L6474test Вид снизу К сожалению, осталось маловато места для радиатора, который планировалось припаять прямо на микросхему снизу, через отверстие в плате, поэтому я на него забил. Для управления драйвером использовалась плата STM32VLDISCOVERY, прошивку можно взять здесь и здесь. Без радиатора и с напряжением 16В микросхема работала секунд 20, уходя, видимо, в thermal shutdown. Однако, микросхема, припаянная к большому прямоугольному паду с металлизированными отверстиями работает достаточно неплохо даже без радиатора.

В следующий раз я планирую рассказать о дальнейшей разработке драйвера ШД с использованием STM32F051:

К топику прикреплен проект платы в KiCAD.

we.easyelectronics.ru

STM32 – PMSM Control – Управление PMSM с помощью STM32

Управление PMSM с помощью STM32

Изложенный ниже материал основан на документации AVR447 от фирмы Atmel. Пример управления PMSM двигателем с тремя датчиками Холла для микроконтроллера STM32 базируется на информации, изложенной в этой документации.

Существует некоторая путаница в терминологии связанной с бесколлекторными двигателями. Само понятие “бесколлекторный двигатель” – весьма обширное и включает в себя несколько групп двигателей, в том числе и бесколлекторные двигатели с постоянными магнитами. Далее подразумевается бесколлекторные двигатели с постоянными магнитами.

В большинстве литературных источников двигатели с постоянными магнитами разделены на две категории по форме обратной ЭДС. Обратная ЭДС может быть трапецивидной или синусоидальной. Хотя терминология в литературе иногда противоречива, в большинстве случаев считается, что бесколлекторный двигатель постоянного тока (BLDC) имеют трапецивидную обратную ЭДС, а синхронный двигатель с постоянными магнитами (PMSM) имеет синусоидальную обратную ЭДС. И BLDC и PMSM могут возбуждаться синусоидальными токами.

Конструктивные отличия PMSM и BLDC Motors

PMSM и BLDC могут иметь некоторые конструктивные отличия. Так как при работе BLDC возникают пульсации момента на валу, BLDC двигатели проектируют таким образом, чтобы снизить пульсации момента. Тем не менее, PMSM и BLDC могут возбуждаться как трапецивидным так и синусоидальными токами. Можно сказать, что возбуждая BLDC двигатель синусоидальным напряжением, мы превращаем его в PMSM. Если Вы считаете что для превращения BLDC в PMSM нужно обязательно внести в него конструктивные изменения, то замена регулятора – это и может быть тем самым необходимым конструктивным изменением.

Ожидаемый эффект

Если BLDC двигатель возбуждать синусоидальными токами, ожидается увеличение момента на валу, снижение вибрации, снижение шума, увеличение максимальных оборотов. Почему так происходит? Вспомним, как работает система управления BLDC двигателем. Для его управления используется блочная коммутация (block commutation). Т.е. При достижении определенного положения ротора происходит коммутация (напряжение подается на определенные обмотки) и магнитное поле статора смещается и остается неподвижным до момента следующей коммутации пока ротор не провернется до определенного положения. Таким образом, магнитное поле статора вращается не плавно, а шагами. Это доступно продемонстрировано на этом фрагменте видео.

Наглядно это можно объяснить с помощью двух магнитов. Магнит статора как бы тянет к себе ротор. При этом магнит статора перемещается скачками и ждет пока ротор приблизиться, потом совершает следующий скачок. При этом в момент скачка дистанция между магнитами увеличивается, а их магнитное взаимодействие снижается, а при приближении магнитное взаимодействие увеличивается. Из-за этого и получаются пульсации момента. Если сделать движение более равномерным, выдерживая между “магнитами” постоянную дистанцию, усилие между магнитами пульсировать не будет, и движение будет происходить с меньшими потерями. Благодаря синусоидальному возбуждению, и достигается плавность вращения магнитного поля статора, что и дает эффект.

Как генерировать синусоиду?

Возникает вопрос, как получить трехфазную синусоиду с управляемой частотой и амплитудой? Чтобы управлять трехфазным двигателем с помощью синусоидальных токов, для каждой фазы требуется генерировать независимые напряжения. Это делается с помощью трех полумостов, по одному на каждый вывод двигателя. Каждый полумост состоит из двух ключей (верхний и нижний), обычно это MOSFET транзисторы.

Для генерации определенного уровня напряжения используется ШИМ (PWM). В зависимости от скважности ШИМ можно управлять средним напряжением Vout. Но форма сигнала Vout будет повторять сигнал ШИМ, т.е. будет прямоугольной как ШИМ сигнал, а не гладкой. Если это напряжение подать на низкочастотный фильтр, то на выходе фильтра будет напряжение пропорциональное коэффициенту заполнения ШИМ верхнего ключа. Управляя скважностью ШИМ можно получить произвольную форму напряжения на выходе, в том числе и требуемое напряжение синусоидальной формы.

По некоторым причинам, в устройствах управления двигателем не используют фильтры низких частот. Во-первых, сам двигатель действует как фильтр. Индуктивность и сопротивление обмоток двигателя создают RL фильтр. К тому же механическая инерция двигателя и нагрузка создают “механический” фильтр низких частот. При достаточно большой частоте PWM, флуктуации скорости ротора будут абсолютно не значительные. Во-вторых, Протекание тока через низкочастотный фильтр, например RC-фильтр, привело бы к существенным потерям мощности на самом фильтре.

Поскольку при генерации PWM используется комплементарная работа двух ключей (верхнего и нижнего) нужно учесть тот факт, что для закрытия ключа требуется некоторое время. Поэтому нужно выключать открытый ключ, и через некоторое время, необходимое для его закрытия, открывать комплементарный ключ. Это время получило термин Dead-time. У микроконтроллера STM32 этот вопрос решает таймер, который занимается генерацией PWM.

Теперь перейдем непосредственно к генерации синусоиды. Зная положение ротора в данный момент времени, можно математическим путем вычислять амплитуду (скважность PWM) для каждой из трех фаз. Однако математические вычисления занимают много времени и поэтому поступают иначе. Можно создать таблицу, в которую поместить заранее вычисленную синусоиду для всех трех фаз.

Генерировать синусоиды для каждой фазы – это прямой метод, но есть более эффективный способ. Мы будем генерировать три синусоидальных напряжения вывод-вывод (дифференциальное напряжение между двумя выводами) со сдвигом фазы на 120 градусов между ними. Таблицы 3-1 3-2 показывают, как этого можно достичь, не делая полные синусоиды для каждого вывода двигателя.

На рисунке 3-3 наглядно изображен этот алгоритм в сравнении с блочной коммутацией (как для BLDC).

У такого подхода есть два преимущества:1) максимальная амплитуда сгенерированного напряжения выше, чем при генерации чистой синусоиды на каждой фазе. Как следствие получим более высокий вращающий момент и скорость.2) Каждый вывод двигателя треть времени подключен к земле, что сокращает потери мощности на коммутацию.

При создании таблицы значений нужно найти компромисс между объемом таблицы и скоростью работы с ней. Поскольку форма волны одинакова для всех трех фаз, и отличается только сдвигом на 120 градусов, то можно сохранять в таблице только одну волну и использовать ее для расчета всех трех выходных напряжений. Однако, для сокращения времени на вычисления, принято решение сохранить в таблице значения для всех трех фаз. Так обеспечивается наиболее быстрая обработка данных. Используемая в примере таблица «синусов» имеет 192 значения для каждой фазы. Т.е. генерируемый сигнал будет разбит на секции и меть ступенчатую форму.

Этого вполне достаточно. При необходимости Вы можете скорректировать таблицу.

Таким образом, за один электрический оборот нам придется 192 раза вычислять и изменять значение PWM для каждой из трех фаз.

При расчете PWM для каждой фазы, нужно учитывать и величину подаваемой на двигатель мощности. В примере в качестве регулятора мощности используется сигнал с потенциометра. При реализации замкнутой системы, например, со стабилизаций оборотов, этот показатель будет вычисляться математически с учетом текущей нагрузки, требуемых оборотов и параметров ПИД регулятора.

Датчики положения и их использование

Было бы идеально, если датчик положения ротора мог в любой момент информировать микроконтроллер о текущем положении ротора. В данном случае мы не имеем такой возможности. Три датчика Холла изменяют свое состояние 6 раз за один электрический оборот. Между этими событиями положение ротора достоверно не известно. Для определения текущего положения ротора между срабатываниями датчиков, мы вынуждены производить вычисления с учетом текущей скорости вращения ротора.

Определение скорости вращения

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

Фазовая подстройка

Удобнее всего фазовую подстройку выполнять, когда контроллер точно знает реальное положение ротора. В случае с тремя датчиками Холла – это момент изменения состояния датчиков. Именно в этот момент можно узнать точный угол ротора. Подстройка выполняется путем коррекции индекса положения в таблице выходных значений (в таблице синусов).

Блочная коммутация

В момент старта скорость ротора не известна до тех пор, пока не произойдет последовательно два изменения состояния датчиков холла. Чтобы обеспечить нормальный запуск двигателя, пока скорость вращения ротора не известна, применяется блочная коммутация. Т.е. контроллер управляет двигателем как (BLDC). Этот метод был описан ране. Пример для STM32 найдете здесь. Карта напряжений, используемая в режиме блочной коммутации, показана на рис.3-3(штриховая синяя линия) на фоне с синусоидальным напряжением. Как только скорость вращения ротора будет определена, происходит переход к синусоидальному возбуждению.

Управление углом опережением коммутации

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

Программная реализация для STM32F103

Скачать пример можно по этой ссылке: https://github.com/avislab/STM32F103/tree/master/Example_PMSM

Генерация PWM (TIM1)

Как и в предыдущем примере таймер TIM1 занимается генерированием PWM сигналов для 6 ключей. Так же TIM1 обеспечивает Dead-Time и отключает выходы таймера, генерирующие PWM сигналы, при перегрузке по току. Сигнал о перегрузке по току подается на вход таймера TIM1_BKIN.

Генерирование выходного напряжения (синусоид) (TIM4)

Генерирование выходных напряжений заданной формы для трех фаз двигателя выполняется путем изменения скважности PWM. В таблице PMSM_SINTABLE храниться 192 значений. Т.е. за один электрический оборот нужно 192 раза изменять скважность PWM для каждой из трех фаз. Таймер TIM4 отмеряет требуемое время и вызывает обработчик прерывания TIM4_IRQHandler, где и выполняются необходимые вычисления и установка новых значений PWM для всех трех фаз, и выполняется приращение индекса положения в таблице синусов PMSM_SinTableIndex.

Определение скорости вращения (TIM3)

Для того чтобы сообщить таймеру TIM4 необходимое время, нужно знать с какой скоростью вращается ротор. Таймер TIM3 используется для определения скорости вращения. Таймеры TIM3 и TIM4 тактируются одинаково. Это упрощает работу с ними. Таймер TIM4 должен “шагать” по таблице синусов (PMSM_SINTABLE) с такой скоростью, чтобы пройти все 192 пункта таблицы за один полный электрический оборот.

Поскольку у нас есть датчики положения, мы можем в определенном положении запустить таймер счетчик TIM3 и считать с него счетчик при завершении полного оборота. Затем значение этого счетчика разделить на 192 и получить число, которое нужно задать таймеру TIM4. Поскольку TIM3 и TIM4 настроены на одинаковую частоту, прерывание TIM4 будет срабатывать 192 раза за электрический оборот. Что и требуется.

Поскольку датчики положения изменяют свое состояние 6 раз за электрический оборот, мы можем измерять время необходимое для прохождения не полного оборота, а 1/6 оборота. И делить значение счетчика на 32 (192/6=32). Таким образом, измерение скорости будет выполняться 6 раз за один электрический оборот.

Датчики холла (EXTI9_5_IRQ)

Сигналы датчиков Холла генерируют прерывания. Обработчик прерывания определяет текущее актуальное положение ротора, считывает данные с таймера TIM3, корректирует скорость работы TIM4, и выполняет фазовую подстройку путем смещения индекса положения в таблице синусов PMSM_SinTableIndex. Поскольку частота вращения ротора изменяется, работа таймера TIM4 может вызывать смещение выходного напряжения по фазе. Т.е. выходная синусоида будет отставать или опережать актуальное положение ротора. Для устранения этого эффекта применяется фазовая подстройка. Поскольку в момент изменения состояния датчиков Холла мы точно знаем актуальное положение ротора, можно скорректировать текущее положение в таблице синусов путем коррекции PMSM_SinTableIndex. Соответствие данных датчиков Холла и положение в таблице синусов определено в таблицах PMSM_STATE_TABLE_INDEX_FORWARD и PMSM_STATE_TABLE_INDEX_BACKWARD для прямого и обратного направления вращения ротора.

Структурная схема

Схема и двигатели, используемые в этом примере точно такие же, как и в предыдущем примере. Это позволит сравнить эффективность двух способов управления бесколлекторными двигателями с постоянными магнитами.

Примечание: Вопросы проектирования силовой части регулятора в этой статье не рассматриваются. Статья затрагивает лишь вопросы программной реализации управления PMSM. Пример принципиальной схема силовой части будет рассмотрен отдельно.

Видео

BLDC Motors и PMSM. Выводы

Возбуждение бесколлекторного двигателя с постоянными магнитами синусоидальными токами имеет несомненные преимущества. И позволяет повысить эффективность работы двигателя. Коррекция угла опережения (timing), позволяет находить компромисс между максимальным моментом на валу и скоростью вращения ротора.

Схема керування безколекторним двигуном BLDC, PMSM на STM32

Скачать пример можно по этой ссылке: https://github.com/avislab/STM32F103/tree/master/Example_PMSM

Смотри также ВИДЕО:

Бесколлекторные моторы “на пальцах”

Что такое бесколлекторные моторы и как управлять бесколлекторными моторами:

Успехов.

Смотри также:

Статьи по бесколлекторным двигателям:

Смотри также:

www.avislab.com

Решения компании STMicroelectronics для управляемого электропривода

 

С объектами, приводимыми в движение электрическими машинами, человек постоянно сталкивается как в сфере промышленности и транспорта, так и в быту. Устройства с электроприводом — это стиральная машина, вентилятор, кофемолка, пылесос и т.д.

Так как основным средством приведения в движение рабочих машин является электрический двигатель, то, соответственно, основным типом привода служит электрический привод или сокращенно электропривод.

Основные элементы управляемого электропривода представлены на рисунке 1.

 

Обобщенная схема управляемого электропривода

 

Рис. 1. Обобщенная схема управляемого электропривода

Требуемые значения регулируемых переменных задаются с помощью задающего устройства.

На основании этих значений и сигналов обратной связи устройство управления формирует сигналы на силовой преобразователь (драйвер), предназначенный для создания регулирующего воздействия на электродвигатель.

Электродвигатель преобразует электрическую энергию в механическую. В качестве электродвигателя могут использоваться асинхронные и синхронные двигатели, двигатели постоянного тока, шаговые двигатели и др.

Механическая энергия от электродвигателя передается к исполнительному механизму через механическое передаточное устройство (механический редуктор, цепная передача, ходовая пара «винт-гайка» и т.д.). Оно позволяет, при необходимости, согласовать выходные параметры двигателя (частоту вращения и момент) в параметры, требуемые для приведения в движение исполнительного механизма. Например, преобразовать вращение вала двигателя в линейное перемещение каретки.

Датчики обратной связи Д1 и Д2 возвращают в устройство управления информацию, соответственно, о состоянии двигателя и исполнительного механизма. Строго говоря, во многих системах используется только один из этих датчиков.

Отметим, что часто под приводом понимают только устройство управления, силовой преобразователь и датчик обратной связи Д1.

Ключевым элементом управляемого электропривода является устройство управления. В современных приборах это, как правило, микроконтроллер. Решения на жесткой логике и аналоговые решения, популярные до 90-х годов, теоретически возможны, но выглядят явным анахронизмом.

 

Требования к микроконтроллерам, как к устройствам управления электроприводом

Прежде чем рассматривать линейку микроконтроллеров, рекомендуемых компанией STMicroelectronics для задач управления приводами, попытаемся сформулировать некоторые основные требования к ним:

1. Устройство управления должно получать от задающего устройства некую информацию. Это могут быть: требуемая скорость движения исполнительного механизма, выбор варианта режима работы, коэффициенты автоматического регулирования и любая другая информация, необходимая для автономного управления приводом. В качестве задающего устройства могут быть компьютер, другие контроллеры многопроцессорной системы, пульт дистанционного управления и другие, вплоть до нескольких кнопок или регуляторов бытового прибора. В первом случае нужен стандартный интерфейс: USB, SPI, I2C. Во втором, оптимальным вариантом представляется протокол CAN. Для пульта дистанционного управление необходим IrDA — канал передачи данных в инфракрасном диапазоне. Для кнопок и регуляторов — наличие цифровых линий ввода-вывода и аналогового ввода.

2. Устройство управления должно получать информацию от датчиков обратной связи и выдавать управляющие воздействия на электродвигатель через силовой драйвер. Поскольку эти процессы проходят непрерывно, то желательно минимизировать вычислительную нагрузку от этих операций на микроконтроллер. Именно для автономной реализации этих задач во многих микропроцессорах (не только STMicroelectronics) используются модули захвата/сравнения/ШИМ (или Capture/Compare/PWM). При выборе микроконтроллера необходимо соотносить требования решаемой задачи и параметры таймерной системы: количество входов захвата, выходов сравнения, выходов сигналов с широтно-импульсной модуляцией, а также количество и разрядность внутренних таймеров общего назначения.

3. В большинстве случаев при подключении электродвигателя используют падение напряжения на токовом датчике. Эти сигналы редко применяются в контуре управления, но их желательно использовать в качестве сигналов аварийного отключения. Соответственно, микроконтроллер, используемый как устройство управления электроприводом, должен иметь достаточное количество входов аналогового ввода (АЦП или аналоговых компараторов).

Рассуждения о том, какая разрядность (8, 16 или 32 бита) и форма представления данных (фиксированная или плавающая точка) оптимальны для задач управления приводом, имеют долгую историю. В основе алгоритмов автоматического регулирования лежит операция свертки — арифметическая сумма произведений. По мнению автора, восьми разрядов достаточно для представления коэффициентов и непосредственно данных. Но их произведение и свертка, в целом, уже будут 16-разрядными.

Казалось бы — 8-разрядные микропроцессоры должны отживать. Но это не совсем так. Применение отечественными разработчиками микроконтроллеров для управления приводами началось в конце 80-х годов. Причем, альтернативы отечественным 8-ми разрядным микроконтроллерам 1816ВЕ51 (аналог — Intel8051) просто не было. Но практически сразу появилась программная библиотека 16-разрядной арифметики, которая подключалась к основной программе при сборке. Конечно, это было вынужденное решение, но к моменту доступности 16-разрядных микроконтроллеров (середина 90-х) у всех фирм, работавших «по приводам», был весьма объемный багаж программных наработок именно для 8-разрядных устройств, отбросить который было непросто, да и незачем. Кроме того, в обработке сигналов существует принцип нормирования данных — если на входе используются 8-разрядные данные, но и на выходе должны быть 8-разрядные данные. А тогда разрядность промежуточных данных — внутренний вопрос алгоритмов обработки. Отсюда вытекает вывод — в тех задачах управления приводами, где достаточно восьми разрядов для представления данных, оптимальным представляется применение именно 8-разрядных микроконтроллеров при обязательном наличии в системе команд операций 16-разрядной арифметики.

Основная область применения 32-разрядных микроконтроллеров (для управления приводами) будет рассмотрена ниже.

В линейке компании STMicroelectronics представлены как 8-, так и 16- и 32-разрядные микроконтроллеры. Остановимся на наиболее современных их них: 8-разрядном семействе STM8S и 32-разрядном семействе STM32F.

 

Семейство 8-разрядныхмикроконтроллеров STM8S

Архитектура данного семейства довольно подробно рассмотрена в [1]. Мы рассмотрим их с точки зрения управления приводами. Состав семейства и технические характеристики входящих в него микросхем также представлены в [1]. На рисунке 2 приведена карта этого семейства.

 

Микроконтроллеры семейства STM8S

 

Рис. 2. Микроконтроллеры семейства STM8S

В семействе можно выделить два подмножества: экономичная линия (S105) и производительная линия (S207 и S208).

Экономичная линия: Flash-память для хранения программ: 16К или 32К; ОЗУ данных — 2К; EEPROM-память данных — 1К (используется для хранения постоянных значений: коэффициентов, таблиц пересчета и пр.). Корпуса — 32, 44 или 48 Производительная линия: Flash-память для хранения программ: 32К, 64К или 128К, ОЗУ данных — 2К, 4К или 6К; EEPROM-память данных — 1К; 1,5К или 2К. Корпуса — 32, 44, 48, 64 или 80 выводов.

Ключевые параметры:

Отметим следующее: внутренняя структура периферии отдельных представителей этого семейства в целом идентична, но различное число внешних выводов накладывает ограничение на количество универсальных линий ввода/вывода и одновременное использование ряда периферийных устройств. То есть многие линии имеют альтернативное использование. Кроме того, для микросхем с малым числом внешних выводов имеется основная и ряд альтернативных конфигураций периферийных модулей, переключаемых путем настройки соответствующих программных регистров.

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

Отметим также ожидаемое в ближайшее время появление на рынке экономичной серии S103 с объемом Flash-памяти 4К и 8К в 20- и 32-выводных корпусах. Микроконтроллеры этой серии ориентированы на наиболее простые и экономичные приложения.

 

Семейство 32-разрядныхмикроконтроллеров STM32F

Семейство микроконтроллеров STM32F, в котором используется ARM-ядро CORTEX-M3, — один из первых случаев внедрения 32-разрядной ARM-архитектуры в приложения управления приводами, где до этого применялись в основном 8-ми или 16-ти разрядные микроконтроллеры. Особенности архитектуры этого семейства подробно рассматривались в [2]. В настоящее время это семейство насчитывает более 50 микроконтроллеров, технические характеристики которых приведены в [3]. На рисунке 3 приведена карта этого семейства.

 

Микроконтроллеры семейства STM32F

 

Рис. 3. Микроконтроллеры семейства STM32F

Отличительные особенности архитектуры семейства STM32F с точки зрения задач управления приводами (помимо ARM-ядра):

Область применения 32-разрядных микроконтроллеров — прецизионные приводы, а именно — оборудование для точной механики, оптических систем, научного приборостроения. Еще 15 лет назад принципу «один двигатель — один микроконтроллер» альтернативы не было. Кроме того, ограниченные вычислительные ресурсы не позволяли реализовывать уже существовавшие алгоритмы нетривиального регулирования (адаптивные, с изменяемыми параметрами и прочие) даже для одного привода. Разработчики сложных систем стремились «положить» в один микроконтроллер управление несколькими приводами, поскольку это избавляло от необходимости строить многопроцессорную систему. Но даже если состав периферии позволял это сделать, то камнем преткновения становился вычислительный ресурс.

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

 

Силовой преобразователь (драйвер)

Силовые преобразователи компании STMicroelectronics можно разбить на две основные группы. К первой относятся одинарные мосты — L6201/02/03, которые, как правило, используются для управления однофазными двигателями постоянного тока. При этом электрические параметры существенно зависят от типа используемого корпуса. В таблице 1 представлены основные параметры одинарных мостов.

Таблица 1. Одинарные мосты STMicroelectronics

Наименование Рабочий ток, А Рассеиваемая мощность, Вт при t = 70°С Сопротивлениетранзисторов, Ом
L6201 1 0,9 0,3
L6202 1,5 1,3 0,3
L6203 4 2,3 0,3

Ко второй группе относятся двойные мосты — L6204/05/06/07. Их используют для управления двухфазными двигателями, например, шаговыми. В таблице 2 приведены основные параметры двойных мостов.

Таблица 2. Двойные мосты STMicroelectronics  

Наименование Рабочий ток, А Рассеиваемая мощность, Вт при t = 70°С Сопротивлениетранзисторов, Ом
L6204 0,5 1,23 1,2
L6205/06*/07** 2,8 0,3
* L6206 отличается от L6205 наличием встроенной программируемой защиты по току. ** L6207 имеет два интегрированных ШИМ контроллера.

В принципе силовой преобразователь — компонент, в значительной степени зависящий от типа используемого электродвигателя. В качестве примера рассмотрим управление коллекторным (щеточным) двигателем постоянного тока. Частота вращения вала такого двигателя зависит от величины напряжения, приложенного к обмоткам, а направление — от его полярности. В настоящее время редко регулируют именно величину напряжения — используют сигнал с максимальной амплитудой, но с широтно-импульсной модуляцией (ШИМ). Скважность ШИМ-сигнала определяет частоту вращения. Обобщенная структура привода (полный мост) коллекторного двигателя постоянного тока приведена на рисунке 4.

 

Структура привода коллекторного двигателя постоянного тока

 

Рис. 4. Структура привода коллекторного двигателя постоянного тока

Очевидно, что транзисторы по отношению к микросхеме драйвера могут быть как внешними (при работе с мощными двигателями), так и интегрированными. В качестве примера рассмотрим полномостовой драйвер L6203 компании STMicro с рабочим током до 4 А. Его структура и таблица состояний представлены на рисунке 5.

 

Структура полномостового драйвера L6203

 

Рис. 5. Структура полномостового драйвера L6203

Если на вход разрешения ENABLE подан высокий уровень напряжения, а состояния входов IN1 и IN2 различны, то через двигатель протекает ток и происходит вращение вала. Если состояния на входах одинаковы, то обмотки двигателя замкнуты между собой через землю или питание (режим динамического торможения). Будем считать, что протекание тока от OUT1 к OUT2 — это прямое вращение, а наоборот — обратное.

Таким образом, если двигатель управляется от высокого уровня логического сигнала, то для его прямого включения необходимо подать ШИМ на вход IN1 и низкий уровень на вход IN2. Для обратного вращения — наоборот. Останов — два низких уровня. Если двигатель управляется от низкого логического сигнала, то для его прямого включения необходимо подать ШИМ на вход IN1 и низкий уровень на вход IN2. Останов — два высоких уровня.

Возможно также управление через вход разрешения ENABLE, но это менее эффективно, поскольку при простом выключении всех транзисторов обмотки двигателя просто «повисают в воздухе» и вал продолжает вращаться по инерции. При этом и останов, и выход двигателя на заданный режим занимают существенно большее время.

Принцип использования драйверов с внешними транзисторами идентичен. С силовыми компонентами (драйвера, MOSFET- и IGBT-транзисторы, IGBT-модули), выпускаемыми компанией STMicroelectronics, можно познакомиться в [4].

Мы рассмотрели управление простейшим однофазным двигателем. При управлении многофазными (например, шаговыми) двигателями необходимо несколько ШИМ-сигналов, сдвинутых по отношению друг к другу определенным образом. Напомним, что генерация ШИМ-сигналов в микроконтроллерах, а также увязка их в заданную временную циклограмму осуществляется средствами модулей захвата/сравнения/ШИМ.

 

Несколько слов о датчиках обратной связи

Если обратная связь снимается с вала двигателя (датчик Д1 на рис. 1), то для стабилизации частоты вращения в качестве датчиков обратной связи используются либо тахогенераторы (аналоговый сигнал, пропорциональный угловой скорости), либо частотные датчики. В качестве частотных датчиков главным образом применяются датчики Холла либо оптоэлектронные датчики. Здесь выходной сигнал имеет прямоугольную форму. Есть два способа измерения: измерение периода импульса (частоты) и подсчет числа импульсов за определенный период времени (измерение угловой скорости). Оба эти способа в микроконтроллерах также реализуются средствами модулей захвата/сравнения/ШИМ.

 

Инструментарий, используемый для изучения и отладки решений

Компания STMicroelectronics поддерживает свои изделия комплексом программных и аппаратных средств разработки. Стартовые наборы STM8/128-MCKIT и STM3210B-MCKIT являются недорогими платформами, спроектированными для ускорения разработки приложений управления приводами, основанных на микроконтроллерах семейств STM8S и STM32F, соответственно.

В комплект набора STM3210B-MCKIT входят следующие модули:

 

Заключение

Компания STMicroelectronics предлагает широкий спектр компонентов, предназначенных для построения управляемых электрических приводов: микропроцессоры, специализированные микросхемы, активные дискретные компоненты, а также инструментальные средства, способствующие ускорению освоения как конкретной модели микроконтроллера, так и определенной области его применения.

 

Литература

1. Савичев А. Новые 8-битные микроконтроллеры семейства STM8S// Новости электроники. 2009. №2.

2. Бородулин А. STM32 — универсальное решение на ARM-ядре// Новости электроники. 2008. №8.

3. STM32 MCU Family// brstm320808.pdf — документ, доступный на сайте компании ST Microelectronics.

4. Motor Control. Selection Guide// sgmotor1008.pdf- документ, доступный на сайте компании ST Microelectronics.

Получение технической информации, заказ образцов, поставка — e-mail: [email protected]

Наши информационные каналы

Рубрика: новинки элементной базы Метки: ARM, STM, Supervisor, Микроконтроллеры, Управление питанием

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

www.compel.ru

X-NUCLEO-IHM03A1 — плата расширения для платформы STM32 Nucleo со схемой управления биполярным шаговым двигателем высокой мощности powerSTEP01

Автор: admin

18 Ноя

Плата X-NUCLEO-IHM03A1 представляет собой высокопроизводительное и надёжное решение, обеспечивающее полностью цифровое управление движением за счёт формирования профиля скорости, вычисления позиционирования и полного набора функций защиты.

Устройство совместимо с разъёмом Arduino UNO R3, а также поддерживает возможность добавления дополнительных дочерних плат для совместного управления тремя шаговыми двигателями с помощью одной платы STM32 Nucleo.

Внутренняя архитектура Системы-в-Корпусе powerSTEP01

Отличительные особенности платы powerSTEP01:

Область применения:

 

Запросить образцы, средства разработки или техническую поддержку

 

Документация на плату расширения X-NUCLEO-IHM03A1 (англ.)

Документация на powerSTEP01 (англ.)

 

  • Рубрика: STMicroelectronics
  • www.ebvnews.ru