Bollywood HungamaMohit Suri buys Mercedes-Benz EQS worth over Rs 1.60 crore, adds luxury EV to his garagePunchUS tightens green card rules with stricter public charge testESPNTransfer rumors, news: Al Hilal eye shock move for KaneDaily MaverickKyrgios provisionally suspended after testing positive for cocaineRTP DesportoMédio Rodrigo Mora deixa FC Porto para reforçar Romaוואלהתשתית מוכנה ושלטי חוצות: עופר וינטר בדרך להקמת מפלגת ימין חדשהThe Jerusalem Post'You're a clown': Ben-Gvir faces verbal assault from residents during visit to northern IsraelInquirer EntertainmentBTS’ ‘Swim’ nominated for Song of the Year at MTV VMAs01netGTA 6 : un énorme leak de gameplay circule avant la présentation Netflix du 27 aoûtInquirerHouse panel to assess whether to present Madriaga in Duterte trialCBS NewsIran's top diplomat and Trump cast doubt on any hope for a peace dealNumeramaCette grosse promotion sur la Switch 2 tombe juste avant la hausse de septembre
The Daily Newsstand · Free, Always
Wednesday, August 19, 2026

Драйвер шагового двигателя с векторным управлением

Translate

В рамках этой статьи я детально расскажу о разработке драйвера шагового двигателя. Я уже много лет держал в голове этот проект и хотел им заняться. Наконец такая возможность появилась: этот проект стал моей дипломной работой.

Выбор архитектуры

Тема диплома звучала так: “Проектирование системы управления шаговым двигателем”. Под эту формулировку подходит не только драйвер, но я сразу понял, что буду делать именно его.

Археологическая находка

Археологическая находка

Я согласовал тему с научным руководителем и отправился мучить DeepSeek вопросами, как же работают такие драйвера. Моё понимание принципов работы драйвера ШД на этом этапе было примерно на уровне схем, основанных на L297 и L298.

Засранец, который гадит в линию питания

Засранец, который гадит в линию питания

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

Там всё было достаточно подробно написано, но меня смутила система стабилизации тока. В таких драйверах ток регулируется довольно топорно. Компаратор сравнивает падение напряжения на шунте с опорным напряжением и отключает ключи на фиксированный интервал времени. Причём для улучшения характеристик такой схемы были введены некоторые решения, которые выглядят как костыли. В зависимости от каких-то условий может меняться скорость спада тока, так называемый Fast Decay и Low Decay режим. Мало того, что такое решение просто некрасивое, оно еще и сомнительное с точки зрения электромагнитной совместимости. Уверен, специалисты в этой теме меня поправят, но мне кажется, что подобные непредсказуемые и нерегулярные переключения ключей приводят к ужасным широкополосным помехам, которые не отфильтруешь. Мне такое категорически не понравилось, и я решил искать схемы, в которых стабилизация тока работает плавно и с использованием ШИМ сигнала фиксированной и высокой частоты. Драйверы с таким принципом работы были быстро обнаружены в более старшем сегменте. Все они управляются микроконтроллерами или сигнальными процессорами, которые в реальном времени, на несущей частоте ШИМ сигнала, регулируют ток и вращают токи в фазах. Чтобы было не скучно, я решил разрабатывать драйвер с векторно-ориентированным принципом управления синхронной машиной с постоянными магнитами. Разрабатывать драйвер с полного нуля я не стал, а взял за основу драйвера DM556 и 2HSS57.

DM556 и 2HSS57

DM556 и 2HSS57

Функционал я хотел получить как у драйвера 2HSS57, но в качестве донора корпуса я приобрёл самый дешёвый клон DM556. Вот такое чудо там было:

Поддельный DM556

Поддельный DM556

Не делайте так в ПЧ пжлст

Не делайте так в ПЧ пжлст

Посмотрим на архитектуру типичного драйвера. В левой половине платы находится силовая часть схемы: разъём, предохранитель, резистор, какая-то кринжатина на месте компенсирующего и шунтирующего конденсатора, шунты, два полных транзисторных моста. Кучка SMD-деталей, размазанных тонким слоем в середине платы — это импровизированный драйвер затворов ключей на дискретных элементах. Синий блок переключателей служит для выбора конфигурации драйвера. В правой части платы расположены понижающие преобразователи, микроконтроллер STM8(бедняга, помолимся за него) и интерфейс управления.

С архитектурой палёного DM556 всё понятно. Но я собирался делать аналог драйвера 2HSS57, а не DM556. Драйвер 2HSS57 устроен аналогично, но имеет отдельный разъём для подключения энкодера, отдельный интерфейс связи для настройки конфигурации, более продвинутый микроконтроллер и специализированные микросхемы для управления затворами ключей. При разработке своего драйвера я придерживался более продвинутой архитектуры драйвера 2HSS57. Примерно так она выглядит в моём исполнении:

Архитектура драйвера с обратной связью по положению

Архитектура драйвера с обратной связью по положению

Для задания положения используется стандартный интерфейс STEP/DIR, в котором сигнал STEP сообщает драйверу о необходимости сделать шаг, а сигнал DIR определяет направление шага. Интерфейс управления содержит дополнительный вход ENABLE (для выключения драйвера) и выход ALERT (выдаёт сигнал тревоги при внутренней ошибке драйвера). Интерфейс энкодера содержит выход питания 5 вольт и два входа для импульсов A и B. Для конфигурации предусмотрен USB-порт, через который драйвер подключается к ПК для тонкой настройки параметров. Настраиваемые параметры могут быть сохранены в ПЗУ. Многие элементы выбираются только после проведения предварительных расчётов, поэтому в первую очередь определяются те элементы, которые можно выбрать без сложных расчётов, опираясь только на основные целевые характеристики и обоснованные предположения.

Выбор микроконтроллера

Одним из важнейших компонентов драйвера, который выбирается в первую очередь, является микроконтроллер. Он должен обслуживать задачи с достаточной скоростью и детерминированностью. Для систем реального времени предпочтительны специализированные промышленные микроконтроллеры и DSP, а не микроконтроллеры общего назначения. Основные критерии выбора: наличие специализированной периферии (продвинутые таймеры с ШИМ, квадратурные счётчики для энкодера, быстрый АЦП, встроенные компараторы и усилители), производительное ядро, развитая система прерываний, математические ускорители и высокая тактовая частота.

В качестве основного микроконтроллера выбран STM32G431RBT6. Данный микроконтроллер полностью удовлетворяет всем перечисленным требованиям: он обладает необходимой периферией, производительным ядром и развитой системой прерываний. Кроме того, он является достаточно современным, распространённым, доступным по цене и не дефицитным.

Параметр

Значение

Ядро

Cortex-M4

Производительность, DMIPS

213

Частота тактирования, МГц

170

Объём ПЗУ, кБ

128

Объём ОЗУ, кБ

32

Скорость преобразования АЦП, мкс

0.25

Разрешение АЦП, бит

12-16

Математические ускорители

DSP, FPU, CORDIC, FMAC

Количество таймеров

14

Количество продвинутых таймеров

4

Напряжение питания, В

1.71 – 3.6

Максимальный ток потребления, мА

150

Выбор усилителя датчика тока

Следующим ключевым элементом схемы является усилитель сигнала с датчика тока. Для измерения тока используется шунт, установленный после H-моста. Такая топология позволяет измерять величину и направление тока в обмотке в любой момент времени. Однако прямое измерение падения напряжения на шунте встроенным АЦП микроконтроллера в данной точке невозможно, так как напряжение на шунте относительно общей массы достигает напряжения силового питания.

Для решения этой задачи был выбран специализированный усилитель INA240A1. Он способен измерять дифференциальное напряжение на шунте в широком диапазоне напряжений. Микросхема усиливает сигнал с фиксированным коэффициентом усиления и формирует однополярное выходное напряжение, смещенное на половину опорного, что позволяет измерять как положительный, так и отрицательный ток. Максимальное напряжение питания драйвера составляет 60 вольт, а микросхема INA240A1 допускает синфазное напряжение до 80. Целевая частота ШИМ составляет 50 кГц, а полоса пропускания усилителя по уровню –3 дБ равна 400 кГц, что почти на порядок превышает частоту сигнала, гарантируя передачу формы тока без критических искажений.

Параметр

Значение

Синфазное напряжение, В

-4 – 80

Коэффициент усиления

20

Полоса пропускания (–3 дБ), кГц

400

Напряжение питания, В

2.7 – 5.5

Максимальный ток потребления, мА

1.8

Выбор ПЗУ

Конфигурация драйвера должна храниться в ПЗУ, но в микроконтроллере STM32G431RBT6 нет EEPROM памяти, есть только FLASH, но её неудобно использовать. Учитывая низкую цену и простоту внешних микросхем EEPROM памяти, принято решение использовать микросхему M24C02.

Параметр

Значение

Тип

EEPROM

Интерфейс

I2C

Объём, Б

256 x 8

Напряжение питания, В

2.7 – 5.5

Максимальный ток потребления, мА

5

Выбор оптопар

Для интерфейса энкодера и для интерфейса STEP/DIR нужны высокоскоростные оптопары с логическими уровнями на выходе. При мелком микрошаге и максимальной скорости вращения двигателя частота следования импульсов может достигать сотен килогерц, поэтому необходимо выбрать оптопары, скорость работы которых достаточна для пропускания такой высокой частоты. Сигналы ENABLE и ALERT могут быть переданы с помощью обычных низкоскоростных оптопар.

В качестве высокоскоростных оптопар выбраны двухканальные оптопары HCPL2631M, а в качестве низкоскоростных – PC817.

Параметр

Значение для HCPL2631M

Значение для PC817

Напряжение питания, В

4.5 – 5.5

-

Ток потребления, мА

15

-

Ток диода, мА

10 – 15

10 – 30

Время переключения, нс

45 – 100

4000 – 18000

Выбор преобразователя интерфейсов

Далее нужно выбрать USB-UART преобразователь. Эта микросхема служит только для перепрошивки и конфигурации, поэтому к ней предъявляются пониженные требования. Гальваническая развязка, высокая точность, высокая термостабильность и электрическая защита не требуется. Возможно использование микросхемы CH340N.

Параметр

Значение

Скорость передачи данных, бит/с

50 – 2000000

Напряжение питания, В

4.0 – 5.3

Максимальный ток потребления, мА

20

На этом элементы, не требующие расчётов, закончились. Далее выбор элемента должен сопровождаться расчётом или математической моделью или качественным обоснованием.

Расчёт ключей и драйвера ключей

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

Параметр

Значение

Максимальное напряжение питания Umax, В

60

Максимальный ток обмотки Imax, А

5

Частота ШИМ PWMf , кГц

50

Максимальный коэффициент заполнения ШИМ PWMkmax, %

95

Минимальный коэффициент заполнения ШИМ PWMkmin, %

5

Температура окружающей среды Tamb, °C

30

Температура кристалла транзистора максимальная Tmax, °C

90

Необходимо выбрать N-канальный MOSFET транзистор с максимальным напряжением порядка 100 вольт и током в несколько раз больше максимального тока обмотки. Рассматривается возможность применения транзистора IRF540NPBF. Заявленное максимальное напряжение транзистора 100 вольт и с ростом температуры оно не уменьшается. Согласно графику зависимости максимального тока от температуры, максимальный ток при Tmax = 90°C находится на уровне 24 ампер. Запас по току многократный.

График зависимости максимального тока от температуры

График зависимости максимального тока от температуры

Расчет дальнейших параметров ключа следует проводить совместно с расчетом параметров микросхемы драйвера для управления этим ключом. В качестве драйвера ключей выбрана микросхема IR2104, которая представляет собой драйвер верхнего и нижнего ключа полумоста. Этот драйвер поддерживает логические уровни 3.3 вольта, имеет встроенную защиту от сквозного тока и аппаратную задержку при переключении (dead time).

Дополнительные данные представлены в таблице ниже, эти данные взяты из официальной документации на микросхему IR2104 и на ключи IRF540NPBF. В соответствии с графиками выбрано сопротивление перехода сток-исток, значение параметров CISS, CRSS и рекомендованное значение сопротивления токоограничительного резистора на затворе. Сопротивление подтягивающего резистора на затворе ключа указано 10 МОм, потому что этот резистор не установлен.

График зависимости коэффициента увеличения сопротивления перехода сток-исток от температуры

График зависимости коэффициента увеличения сопротивления перехода сток-исток от температуры

График зависимости ёмкости от напряжения

График зависимости ёмкости от напряжения

Параметр

Значение

Напряжение питания драйвера ключей UDRV, В

12

Суммарный заряд включения силового ключа QG, нКл

50

Заряд восстановления обратного сопротивления QRR, нКл

760

Сопротивление между затвором и истоком RGS, кОм

10000

Падение напряжения на бутстрепном диоде UF, В

1

Величина пульсаций напряжения на бутстрепном конденсаторе ΔUBST, В

1

Ток схемы сдвига уровня ILK, мкА

50

Ток питания драйвера IQBS, мкА

55

Ток утечки затвора силового транзистора IGS, нА

100

Ток утечки бутстрепного диода при максимальном входном напряжении ILKD, мкА

10

Сопротивление токоограничительного резистора на затворе ROR и ROF, Ом

33

Пороговое напряжение затвор – исток UGSth, В

2

Напряжение, при котором наступает эффект «Миллера» UGP, В

5.5

Сопротивление перехода сток-исток с учетом температурного коэффициента RDS, мОм

70.4

Входная емкость транзистора CISS, пФ

1960

Обратная переходная емкость транзистора CRSS, пФ

40

Внутреннее сопротивление затвора RG, Ом

5.1

Тепловое сопротивление кристалл – подложка RthJC

1.15

Тепловое сопротивление подложка - диэлектрическая прокладка – радиатор RthCS

1.5

Максимальное напряжение затвор-исток:

Ток утечки:

Минимальная емкость бутстрепного конденсатора:

Ток через бутстрепный диод:

В качестве бутстрепного конденсатора выбран керамический конденсатор GRM21BR61H475KE51L ёмкостью 4.7мкФ.

В качестве бутстрепного диода выбран быстродействующий диод ES1D-E3/61T на средний ток 1A.

Напряжение затвор-исток:

Время включения транзистора:

Время выключения транзистора:

При частоте 50 кГц и при минимальном коэффициенте заполнения 5% время удержания транзистора в фиксированном состоянии должно быть больше времени необходимого на включение и выключение.

Время включения и выключения:

Минимальное время удержания транзистора:

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

Расчёт радиатора

Мощность потерь:

Разница температур кристалл – среда:

Тепловое сопротивление радиатора:

Коэффициент теплоотдачи от радиатора в окружающую среду σ = 1.5.

Эмпирическая формула расчёта площади радиатора:

В каждом Н-мосте единовременно открыты только 2 ключа, поэтому необходимо увеличить полученную для одного ключа площадь радиатора в 4 раза. Минимальная необходимая площадь радиатора:

Выбран радиатор от драйвера DM556, который имеет площадь ребристой поверхности 350 см2.

Расчёт компенсирующего конденсатора

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

Прежде, чем приступить к выбору конденсатора необходимо посчитать необходимую ёмкость и величину тока.

Параметр

Значение

Максимальное напряжение питания Umax, В

60

Максимальный ток обмотки Imax, А

5

Частота ШИМ PWMf , кГц

50

Коэффициент пульсаций напряжения ku

0.2

Максимальный коэффициент заполнения ШИМ PWMk_max, %

95

Минимальный коэффициент заполнения ШИМ PWMk_min, %

5

Амплитуда пульсаций напряжения на компенсирующем конденсаторе:

Ёмкость компенсирующего конденсатора:

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

Минимальная ёмкость компенсирующего конденсатора:

Максимальный импульсный ток через конденсатор:

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

Рассмотрим возможность использования сборки из конденсаторов К73-17, JFB02A475K275000B.

К73-17

К73-17

Параметр

Значение

Максимальное напряжение Uк, В

100

Емкость Ск, мкФ

4.7

Тангенс угла потерь tg(δ)к

0.008

 Эквивалентное последовательное сопротивление:

Для оценки максимального тока таким методом необходимо предположить рассеиваемую мощность корпуса конденсатора. В документации рассеиваемая мощность не указана, но известны габариты 27.5мм*20мм 30мм. Это достаточно крупный корпус, можно грубо оценить рассеиваемую мощность в 1 Вт

Формула расчёта мощности:

Мощность будет выделяться на конденсаторе только в момент зарядки и разрядки, поэтому формула расчёта выделившейся мощности может быть записана так:

Тогда:

При заданных условиях один конденсатор К73-17, JFB02A475K275000B способен пропустить приблизительно 43 ампера импульсного тока. Для достижения требуемого импульсного тока в 134,4 ампера и требуемой ёмкости 11.2 мкФ необходимо собрать сборку из 4х параллельно подключенных конденсаторов.

Выбор шунтирующих конденсаторов

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

Керамический конденсатор

Керамический конденсатор

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

Минимальные требуемые параметры и ожидаемые характеристики от конденсаторной сборки:

Параметр

Минимальное значение

Ожидаемое значение

Напряжение, В

100

100

Ёмкость, мкФ

11.2

18.8 (20.6)

Импульсный ток, А

134.4

172

Выбор системы питания

На данном этапе надо определиться с системой питания. Драйвер требует 4 уровня напряжения. Силовое питание составляет 18 – 60 вольт, питание драйверов ключей составляет 12 вольт, питание оптопар и USB-UART преобразователя составляет 5 вольт, питание микроконтроллера, усилителей и памяти составляет 3.3 вольта. Топология выбрана последовательная. Напряжение 18 – 60 будет понижено до 12 вольт с помощью импульсного DC-DC преобразователя, затем напряжение 12 вольт будет понижено до 5 вольт с помощью линейного стабилизатора и, наконец, напряжение 5 вольт будет понижено до 3.3 вольт с помощью второго линейного стабилизатора.

Выбор стабилизатора напряжения линии 3.3В

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

Потребитель

Ток потребления одного потребителя, мА

Количество, шт

Суммарный ток, мА

STM32G431RBT6

150

1

150

INA240A1

1.8

2

3.6

M24C32

5

1

5

Итого:

158.6

Максимальный ток потребления всех потребителей на шине 3.3 вольта не превышает 158.6 мА. Выделяемая мощность  на корпусе линейного стабилизатора рассчитывается по формуле:

где Uвх – напряжение на входе стабилизатора,

Uвых – напряжение на выходе стабилизатора,

I – ток.

В качестве линейного стабилизатора на 3.3 вольта выбран стабилизатор LD1117S33CTR. Стабилизатор выбран в корпусе SOT-223, этот корпус имеет теплоотводящую подложку, которая отводит тепло на плату. Стабилизатор взят с многократным запасом по мощности.

Параметр

Значение

Максимальное входное напряжение, В

15

Минимальное входное напряжение, В

4.5

Выходное напряжение, В

3.3

Максимальный ток, мА

800

Выбор стабилизатора напряжения линии 5.0В

Напряжение 5 вольт тоже обеспечивается линейным стабилизатором. Важно учесть не только ток потребления микросхем на линии 5 вольт, но и ток потребления всей линии 3.3 вольта, который был посчитан выше. Помимо потребителей на плате, от 5 вольт питается энкодер внутри двигателя. Ток потребления оптического инкрементального энкодера не превышает 100 мА.

Потребитель

Ток потребления одного потребителя, мА

Количество, шт

Суммарный ток, мА

HCPL2631M

15

2

30

CH340N

20

1

20

LD1117S33CTR

158.6

1

158.6

Энкодер

0.1

1

100

Итого:

308.6

Максимальный ток потребления всех потребителей на линии 5 вольт не превышает 308.6 мА. Выделяемая мощность P(ст 5.0) на корпусе линейного стабилизатора рассчитывается по формуле:

где Uвх – напряжение на входе стабилизатора, Uвых – напряжение на выходе стабилизатора, I – ток. В качестве линейного стабилизатора на 5 вольт выбран стабилизатор L7805ABD2T-TR. Стабилизатор выбран в корпусе D2PAK, этот корпус имеет теплоотводящую подложку, которая отводит тепло на плату. Размер платы 100x70 мм, площадь платы 70 см^2. Основываясь на информации из технической документации и учитывая, что на плате имеется ещё несколько источников тепла, тепловое сопротивление кристалл – среда RθJA принято равным 30 °C/Вт.

Температура кристалла может быть найдена по формуле:

Согласно документации, максимальная допустимая температура кристалла 125 °C. Соответственно стабилизатор выбран правильно.

Параметр

Значение

Максимальное входное напряжение, В

35

Минимальное входное напряжение, В

7

Выходное напряжение, В

5

Максимальный ток, мА

1500

Выбор стабилизатора напряжения линии 12В

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

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

Потребитель

Ток потребления одного потребителя, мА

Количество, шт

Суммарный ток, мА

Затворы ключей полумоста

162

4

648

L7805ABD2T-TR

308.6

1

308.6

Итого:

956.6

Расчёт показал, что ток потребления на линии 12 вольт не превышает 956.6 мА. Необходимо выбрать импульсный DC-DC стабилизатор, номинальный ток которого не менее 1 ампера. Выбрана микросхема LM5164DDAR. В технической документации есть типовая схема подключения с рекомендованными номиналами компонентов, поэтому их расчёт не требуется.

Преобразователь

Преобразователь

Обозначение на схеме

Номинал

CIN

3x0.47 мкФ, 250 В

СBST

2.2 нФ, 250 В

СA

3.3 нФ, 100 В

CB

100 пФ, 100 В

COUT

3x22 мкФ, 25 В

RA

453 кОм, 0.25 Вт

RFB1

453 кОм, 0.125 Вт

RFB2

49.9 кОм, 0.125 Вт

RRON

100 кОм, 0.125 Вт

L0

68 мкГн, 1.7 А

Параметр

Значение

Максимальное входное напряжение, В

100

Минимальное входное напряжение, В

15

Выходное напряжение, В

12

Максимальный ток, мА

1000

Дополнительные компоненты системы питания

Система питания такого устройства, как драйвер двигателя, нуждается в дополнительной защите. Необходимо установить плавкий предохранитель и защитный TVS диод на линию 18 – 60 вольт. Предохранитель защищает схему от возгорания при коротких замыканиях, а TVS диод работает как мощный стабилитрон, который не позволяет напряжению на линии питания подняться выше определенного порога. В момент резкого торможения, собственная ЭДС двигателя представляет угрозу для полупроводниковых элементов схемы, поэтому установка TVS диода обязательна. Самым низковольтным элементом в силовой цепи является усилитель INA240A1, его максимальное заявленное напряжение составляет 80 вольт. Защитный TVS диод должен быть подобран таким образом, чтобы напряжение не могло подняться выше 80 вольт.  

В качестве защитного TVS диода выбран диод 1.5KE56A. В таблице представлены основные характеристики диода.

Параметр

Значение

Типовое рабочее напряжение, В

56

Максимальное напряжение фиксации, В

77

Максимальный импульсный ток, А

200

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

где Iсп – ток собственного потребления,

Iо – ток обмотки.

Ток собственного потребления должен быть рассчитан при минимальном напряжении питания. Этот ток можно найти через мощность импульсного стабилизатора по формуле:

где Uвых – выходное напряжение стабилизатора,

Iвых – выходной ток стабилизатора,

Uвхмин – минимальное входное напряжение стабилизатора,

u – КПД принят за 92%.

Расчёт максимального тока собственного потребления драйвера:

Расчёт максимального входного тока драйвера:

В качестве плавкого предохранителя выбран предохранитель 0451008.MRL

В таблице представлены основные характеристики предохранителя 0451008.MRL.

Параметр

Значение

Максимальное рабочее напряжение, В

125

Номинальный ток, А

8

Линия 5 вольт выведена на клеммы для подключения энкодера. Длинные провода питания энкодера подвержены воздействию электромагнитных помех. Случайный пик наведённого напряжения может вывести из строя энкодер или другие элементы запитанные от линии 5 вольт.  Для защиты от перенапряжения необходимо установить защитный TVS диод. Для защиты линии 5 вольт выбран диод SMBJ5.0A. В таблице представлены основные характеристики диода SMBJ5.0A.

Параметр

Значение

Типовое рабочее напряжение, В

5

Пробивное напряжение, В

6.4

Максимальный импульсный ток, А

65.2

Проектирование полной схемы и печатной платы

На данном этапе архитектура драйвера определена и основные компоненты подобраны. Необходимо спроектировать полную схему устройства и трассировать печатную плату. Разработка печатной платы ведётся с использованием специализированного программного обеспечения для автоматизированного проектирования KiCad. Схема разбита на функциональные блоки. Функциональные блоки располагаются на нижнем уровне иерархии. Соединение функциональных блоков между собой выполняется на верхнем уровне иерархии.

Схема системы питания

На входе системы питания устанавливается предохранитель и защитный TVS диод. Линия питания 18 – 60 вольт разделяется на две ветви. Первая ветвь силовая, она напрямую подключается к силовой части преобразователя частоты. Параллельно к силовой ветви подключен делитель напряжения, этот делитель необходим для измерения напряжения питания. Напряжение силового питания может меняться в очень широких пределах, система управления двигателем должна учитывать это изменение. Средняя точка делителя подключена к одному из входов АЦП микроконтроллера.  Вторая ветвь слаботочная, она предназначена для собственного питания драйвера. Слаботочная ветвь отделена от силовой последовательно включенным диодом. Этот диод отделяет ёмкость компенсирующих конденсаторов и ёмкости входных конденсаторов DC-DC преобразователя. Этот диод уменьшает влияние двух ветвей друг на друга.

Схема системы питания

Схема системы питания

Схема преобразователя интерфейсов

Для прошивки и конфигурации через USB интерфейс установлен преобразователь интерфейсов CH340N. Этот преобразователь имеет высокую степень интеграции и не требует большого количества внешних элементов. Требуется установка только двух керамических конденсаторов емкостью 2.2 мкФ на линии питания 5 и 3.3 вольта. Линия 3.3 вольта микросхемы CH340N является выходом, а не входом. Эта линия не используется и не подключена, потому что в схеме уже имеется отдельный стабилизатор на 3.3 вольта.

Схема преобразователя интерфейсов

Схема преобразователя интерфейсов

Схема подключения микросхемы EEPROM памяти

Для хранения конфигурируемых параметров применяется микросхема EEPROM памяти M24C02. Для передачи данных используется интерфейс I2C. Этот интерфейс подключается к микроконтроллеру напрямую. Для корректной работы необходимо использовать подтягивающие резисторы на каналах SDA и SCL. Микроконтроллеры STM32 имеют внутренние подтягивающие резисторы, которые могут быть программно подключены, поэтому установка внешних резисторов не обязательна. Вблизи микросхемы рекомендуется установить керамический конденсатор ёмкостью 2.2 мкФ на линию питания 3.3 вольта.

Схема подключения памяти

Схема подключения памяти

Схема подключения оптопар

Опторазвязка в первую очередь обеспечивает корректную работу дифференциальных каналов. Наведенная помеха не оказывает значительного влияния на дифференциальную гальванически разомкнутую линию передачи сигналов. Напряжение сигнальных линий Uс=5 В. Необходима установка токоограничительных резисторов. Сопротивление токоограничительных резисторов рассчитывается по формуле:

где Uс – напряжение сигналов,

Uд – напряжение диода,

Iд – ток диода.

Согласно документации Uд=1.15 В, Iд=15 мА.

Сопротивление токоограничительных резисторов:

Номинал токоограничительных резисторов выбран равным 220 Ом.

Для увеличения скорости включения и выключения диода рекомендуется установка конденсатора параллельно токоограничительному резистору. Рекомендованное значение ёмкости 10 нФ.

Каждый выход оптопары с открытым коллектором требует установки подтягивающего резистора к линии +3.3 вольта. Микроконтроллер имеет внутренние подтягивающие резисторы, но их сопротивление слишком велико. Фронт сигнала сильно завален при таком сопротивлении. Рекомендуется установка внешних подтягивающих резисторов для обеспечения тока подтяжки Iп порядка 5 мА.

Расчет сопротивления подтягивающих резисторов:

Номинал подтягивающих резисторов выбран равным 680 Ом.

Схема подключения оптопар для интерфейса STEP/DIR/ENABLE/ALERT и интерфейса энкодера.

Схема подключения оптопар для интерфейса STEP/DIR/ENABLE/ALERT и интерфейса энкодера.

Схема подключения усилителей

Микросхема INA240A1 не требует установки внешних элементов, кроме шунтов. Шунты являются частью силовой цепи и подключаются к входам A_IN_SENS+ и A_IN_SENS-. На рисунке представлена схема подключения усилителей, но шунты расположены в другом функциональном блоке. Схема включения соответствует сценарию, когда опорным напряжением является напряжение питания 3.3 вольта. Для АЦП микроконтроллера это напряжение также является опорным. Абсолютное значение опорного напряжения не влияет на соотношение тока в обмотках двигателя и соответственно не влияет на точность позиционирования. Линейный стабилизатор обеспечивает достаточную стабильность питающего напряжения.

Cхема подключения усилителей

Cхема подключения усилителей

Схема подключения микроконтроллера

Первым делом к микроконтроллеру необходимо подвести питание. Далее необходимо подключить контакты специального назначения. Контакт NRST должен быть подтянут к напряжению питания подтягивающим резистором и шунтирован конденсатором. Контакт BOOT0 должен быть подтянут подтягивающим резистором к минусу питания.

Для перепрошивки устройства планируется использовать стандартный загрузчик, который позволяет перепрошивать микроконтроллер через последовательный интерфейс. Для введения микроконтроллера в режим перепрошивки необходимо удерживать контакт BOOT0 в состоянии логической единицы в момент сброса. Сброс микроконтроллера может быть выполнен программно, а вот вход в режим перепрошивки, при использовании стандартного загрузчика, программно быть выполнен не может. Для решения этой проблемы к контакту BOOT0 подключен конденсатор и один из выходов GPIO через диод. Такое дополнение позволяет программно-аппаратно вводить микроконтроллер в режим перепрошивки без ручного вмешательства. Команда на перепрошивку может быть получена любым удобным способом, например, через последовательный порт. Выход GPIO устанавливает на контакте BOOT0 логическую единицу, а конденсатор удерживает эту логическую единицу в течение определённого времени. В то же самое время производится программный сброс микроконтроллера. Таким образом выполняются все необходимые условия для входа в режим перепрошивки. Так нельзя перепрошить микроконтроллер в первый раз, зато можно перепрошивать в последующем. Предполагается, что таким образом будет производиться обновление прошивки драйвера пользователем, а не производителем.

Cхема подключения микроконтроллера

Cхема подключения микроконтроллера

Схема подключения драйверов ключей

Микросхема IR2104 требует установки бутстрепного конденсатора, диода и токоограничительных резисторов. Параметры этих компонентов были рассчитаны ранее.

Схема подключения драйверов ключей

Схема подключения драйверов ключей

Силовая схема

Силовая часть схемы состоит из двух H-мостов, компенсирующих конденсаторов и токоизмерительных шунтов. Компенсирующие и шунтирующие конденсаторы должны быть расположены максимально близко к ножкам ключей. Расположение токопроводящих дорожек должно быть выбрано таким образом, чтобы площадь сечения цепей была минимальной.

Силовая схема

Силовая схема

Схема связей между функциональными блоками

Схема связей блоков

Схема связей блоков

Трассировка печатной платы

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

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

Рекомендуемое количество слоёв для такой печатной платы от 2 до 4. Использование четырёхслойной платы позволило бы расположить токопроводящие дорожки значительно более удачным образом, чем при использовании двухслойной платы, но прототип решено трассировать с использованием только двух слоёв.

Передний слой печатной платы

Передний слой печатной платы

Задний слой печатной платы

Задний слой печатной платы

3D модель печатной платы

3D модель печатной платы

3D модель печатной платы

3D модель печатной платы

3D модель печатной платы

3D модель печатной платы

Система управления

Для шагового двигателя с обратной связью по положению подходит векторно-ориентированный принцип управления. Суть векторно-ориентированного управления заключается в том, чтобы для поддержания момента на валу двигателя отклонять вектор магнитного поля статора на определённый угол относительно магнитного поля ротора. Угол поворота вала шагового двигателя зависит от соотношения тока в обмотках. В отличие от трехфазных двигателей, шаговый двигатель имеет две раздельные обмотки. Это позволяет установить два независимых регулятора тока. Ток в первой обмотке должен быть пропорционален синусу угла поворота, а во второй косинусу угла поворота. При этом все углы поворота векторов удобно представить в виде целого числа, которое соответствует номеру дискретного шага. На рисунке (а) электрический угол 90° эквивалентен смещению ведущего вектора на 20 шагов энкодера, а на рисунке (б) электрический угол 0° эквивалентен смещению ведущего вектора на 0 шагов энкодера.

Изображение векторов для случая максимального и минимального момента

Изображение векторов для случая максимального и минимального момента

Система управления состоит из пропорционально-интегрального (ПИ) регулятора положения, который на выходе выдаёт нормализованное вещественное значение требуемого момента от -1.0 до +1.0, где -1.0 — полный назад, 0.0 — отсутствие момента, +1.0 — полный вперёд. Полученное значение умножается на количество дискретных шагов, эквивалентное электрическому углу 90°, и суммируется с текущим дискретным положением вала. Таким образом получается механический угол поворота ведущего вектора поля статора выраженный в дискретных шагах.

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

Для получения целевых токов в фазах необходимо сделать следующие действия:

-    преобразовать механический угол поворота ведущего вектора в электрический угол поворота ведущего вектора путем нахождения остатка от деления на отношение количества шагов в механическом периоде к количеству шагов в электрическом периоде;

-    использовать получившийся электрический угол, выраженный в дискретных шагах, в качестве аргумента в таблице поиска синусов и косинусов;

-    умножить получившиеся значения синуса и косинуса на номинальное значение тока обмотки.

Затем происходит поиск ошибки между целевыми значениями тока и измеренными значениями тока. Эта ошибка поступает на входы ПИ регуляторов тока, которые стремятся поддерживать заданный ток в каждой обмотке. Для обеспечения одинаковой реакции регуляторов при разном напряжении питания происходит деление выходных значений регуляторов на напряжение питания. Получившиеся значения поступают в блок генератора ШИМ сигнала. Регулятор тока работает на двойной частоте ШИМ — 100 кГц, а регулятор положения — на частоте 10–50 кГц.

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

В системе нет петли обратной связи по скорости, потому что этот драйвер не является полноценным контроллером сервопривода, ему не нужно планировать или поддерживать скорость. Интерфейс STEP/DIR требует от драйвера только одного - сделать шаг точно и быстро. Драйверу не нужно делать шаг с какой-то определённой скоростью. Количество импульсов на канале STEP определяет количество шагов, а частота их следования определяет скорость вращения. Планированием траектории, заданием скорости и положения управляет внешний контроллер, а не драйвер двигателя.

В среде MATLAB Simulink выполнено моделирование части системы. На рисунке представлена система, моделирующая работу шагового двигателя в микрошаговом режиме с двумя независимыми регуляторами тока, которые поддерживают в обмотках ток синусоидальной и косинусоидальной формы. Для моделирования электрической цепи использована библиотека Simscape. Схема состоит из источника постоянного напряжения, компенсирующего конденсатора, двух H-мостов, двух датчиков тока, шагового двигателя, генератора симметричного ШИМ сигнала, системы управления током и системы компенсации входного напряжения.

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

Модель системы управления (полная)

Модель системы управления (полная)

Модель регулятора тока в Simulink (не полная)

Модель регулятора тока в Simulink (не полная)

График заданного и измеренного тока в двух обмотках двигателя

График заданного и измеренного тока в двух обмотках двигателя

График заданного и измеренного тока в двух обмотках двигателя

График заданного и измеренного тока в двух обмотках двигателя

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

Разработка прошивки для микроконтроллера

Микроконтроллер STM32G431RBT6 содержит в себе много специализированных периферийных устройств, которые необходимы для управления электроприводом. Кроме того, имеется возможность выбирать способы взаимодействия периферийных устройств между собой для достижений максимальной производительности системы. Для измерения тока используется АЦП ADC1. Для генерации ШИМ сигнала используется продвинутый таймер TIM1. Для подсчёта задающих импульсов STEP/DIR и импульсов энкодера A/B используются таймеры TIM3 и TIM4.

Таймер TIM1 способен генерировать ШИМ сигнал сразу на нескольких каналах с прямым и инверсным выходом. Внутренний счётчик генератора сигнала настроен таким образом, чтобы первую половину периода счёт шёл вверх, а вторую половину шёл вниз. В момент смены направления счёта срабатывает аппаратный триггер, который запускает чтение каналов АЦП. Момент срабатывания триггера никогда не совпадает с моментом коммутации ключей. АЦП запускается ровно в тот момент, когда ток в обмотках стабильно нарастает или стабильно спадает. Измерение тока в определённые моменты времени по команде таймера, который управляет ключами, позволяет с достаточной точностью получить среднее за период ШИМ значение тока в обмотке.

На рисунке показана диаграмма тока в обмотке (зелёная линия) и диаграмма значений счётчика таймера (красная линия). На временной шкале отмечен момент начала и окончания чтения аналоговых входов. Важно, чтобы в момент чтения аналоговых входов не произошло коммутации. Это условие накладывает ограничение на максимальный и минимальный коэффициент заполнения ШИМ сигнала. Из документации на микроконтроллер известно, что чтение трёх каналов АЦП занимает порядка 1 микросекунды. При частоте ШИМ сигнала 50 килогерц длительность периода составляет 20 микросекунд. При симметричном ШИМ это означает, что минимальный коэффициент заполнения 5%, а максимальный 95%.

Диаграмма, демонстрирующая момент чтения каналов АЦП

Диаграмма, демонстрирующая момент чтения каналов АЦП

Запуск АЦП происходит аппаратно без участия процессора, поэтому необходимо использовать контроллер DMA, который автоматически записывает считанные значения в специально выделенную область памяти. В момент, когда DMA завершает передачу данных в память, вызывается прерывание. На момент входа в вектор прерывания данные с АЦП уже готовы и ожидают обработки.

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

При таких жёстких ограничениях по времени необходимо использовать любые доступные способы оптимизации. Большим преимуществом микроконтроллера STM32G431RBT6 является наличие блока FPU, который предназначен для выполнения операций с числами с плавающей запятой. Кроме того, в микроконтроллере имеется аппаратный ускоритель математических функций CORDIC, который может быть использован для расчёта синуса и косинуса. Однако микрошаговый режим управления двигателем позволяет применить другой способ получения значений тригонометрических функций – таблицы поиска (lookup table). Таблицы поиска занимают много памяти, но дают максимальный выигрыш в скорости. Во время инициализации таблицы поиска заполняются предрассчитанными значениями синуса и косинуса с выбранной точностью. Кроме того, механический угол поворота вала двигателя выражен в дискретных микрошагах, которые представлены в виде целого беззнакового числа, которое без дополнительных преобразований может быть использовано в качестве индекса в таблице поиска.

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

Блок-схема системы управления

Блок-схема системы управления

Программный код вектора прерывания на C

Программный код вектора прерывания на C

Я реализовал необходимый минимум в прошивке для работы двигателя. Я решил вырезать из проекта всё, что не касается непосредственно управления двигателем, чтобы не перегружать проект. Из проекта вырезан модуль передачи данных по UART и модуль для сохранения настроек в ПЗУ. Задел для самостоятельной реализации остался.

Изготовление и сборка прототипа

Неотъемлемой частью разработки является прототипирование. Математическая модель практически никогда не бывает полной и точной. Проверка работы алгоритма и всей системы целиком возможна только на реальном оборудовании. Необходимо изготовить печатную плату, собрать драйвер и установить его в испытательный стенд. Печатная плата для прототипа изготовлена в домашних условиях.

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

Заготовка платы

Заготовка платы

После проявки печатная плата помещается в раствор кислоты, в котором происходит растворение непокрытых пленкой областей и зачистка поверхности.

Плата после травления

Плата после травления

Вид снизу

Вид снизу

Собранный прототип драйвера без пластикового кожуха

Собранный прототип драйвера без пластикового кожуха

К установленному на стенд драйверу подключается источник питания на 58 вольт, лабораторный генератор импульсов, осциллограф и компьютер. Производится настройка конфигурации и подготовка к испытаниям.

Стенд

Стенд

Испытания прототипа на стенде

Во время испытаний снимаются осциллограммы с важных точек схемы и измеряются различные параметры. Важно проконтролировать, что характеристики драйвера близки к ожидаемым. Условия испытаний приведены в таблицах.

Параметр

Значение

Температура воздуха, С°

25

Напряжение питания, В

58

Модель двигателя

57HSE2N-D25

Частота импульсов STEP, кГц

0 - 100

Параметр

Значение

Количество пар полюсов

50

Разрешение инкрементального энкодера

4000

Коэффициент интерполяции

20

Номинальный ток обмотки, А

4.2

Критическая ошибка позиционирования

1000

Инвертировать направление вращения двигателя

НЕТ

Инвертировать направление вращения энкодера

НЕТ

Инвертировать вход ENABLE

НЕТ

Инвертировать выход ALERT

НЕТ

Снимать ток с обмоток при ENABLE = FALSE

НЕТ

Снимать ток с обмоток при ALERT = TRUE

ДА

Пропорциональный коэффициент регулятора тока

0.6

Интегральный коэффициент регулятора тока

0.002

Интегральный лимит регулятора тока

1.0

Пропорциональный коэффициент регулятора положения

0.05

Интегральный коэффициент регулятора положения

0.00001

Интегральный лимит регулятора положения

1.0

Результаты измерений:

Параметр

Значение

Коэффициент пульсаций напряжения питания

0.1

Предел скорости вращения двигателя, Об/мин

1500

Температура радиатора через 1 час работы, С°

38

Абсолютная погрешность стабилизатора тока, %

2

Фазовый сдвиг между заданным и измеренным значением тока, мкс

200

Время выполнения программы в векторе прерывания, мкс

3.0-3.8

Тут синей линией обозначен момент работы вектора прерывания, а жёлтой линией выделен один из каналов генератора ШИМ сигнала. Масштаб временной сетки 1 мкс/кл. По этой осциллограмме можно сделать вывод, что чтение каналов АЦП занимает около 1.1 мкс, а выполнения вектора прерывания занимает 3.0-3.8 мкс.

Осциллограмма ШИМ сигнала и отладочного вывода

Осциллограмма ШИМ сигнала и отладочного вывода

А тут виден фазовый сдвиг между заданным и измеренным значением тока. Масштаб временной сетки 1 мс/кл. Осциллограмма снята во время равномерного вращения двигателя. Величина фазового сдвига не зависит от частоты вращения вала и составляет порядка 200 мкс.

Заданное и измеренное значение тока в одной из обмоток

Заданное и измеренное значение тока в одной из обмоток

Ниже показана реакция системы стабилизатора тока на ступенчатое воздействие. Масштаб временной сетки 100 мкс/кл. Заданное значение тока изменилось с 0 до 1 ампера. Видно, что переходный процесс апериодический.

Реакция системы и регулятора тока на ступенчатое воздействие

Реакция системы и регулятора тока на ступенчатое воздействие

Демонстрация

Видео-демонстрация на Ютубе

Архив проекта

Яндекс Диск

Заключение

Фух, я устал. Проект не лишён недостатков, но надеюсь он кому-то понравится) Учтите, что готовой методички у меня не было, методика расчёта является плодом моей фантазии, простите мои ошибки и заблуждения. Спасибо всем, кто дочитал, обязательно оставляйте комментарии!

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.