Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сверхточная стабилизация скорости вращения вала электродвигателя.
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Обратная Связь, Стабилизация, Регулирование, Компенсация
Vitaly_N
Короче говоря, модернизирую трехмоторный прямой привод БС-02 от кассетного магнитофона Вега МП-122. Там я много чего уже сделал (ИК ДУ, оптический автостоп, подсчёт метража по квадратурным сигналам с правого двигателя подмотки, вывод на индикатор HCMS-2903 от Avago и т.д.), сейчас занимаюсь стабилизацией скорости вращения ведущего двигателя. В двух словах. На роторе двигателя сделаны 134 зуба и стоит магнитная головка, получается таходатчик. Двигатель должен крутиться со скоростью примерно 6 оборотов в секунду, частота с таходатчика примерно 800 Гц. Родная схема стабилизации скорости состояла из преобразователя частота-напряжение (на двух одновибраторах, собранных из К561ЛА7) и компаратора на К157УД2. Если длительность периода, выраженная в напряжении на конденсаторе, больше заданного подстроечником - управляющее напряжение, задающее ток в обмотках, увеличивается, если меньше - уменьшается. В статье A. W. Moore "Phase-locked loops for motor-speed control", 1973 предлагается использовать принципы ФАПЧ для стабилизации скорости вращения. Скорость задаётся эталонной частотой, получаемой из кварцевого осциллятора, фазо-частотным детектором сравнивается, результат сравнения подаётся на управление двигателем. Немного разобравшись в теме я понял, что как в статье предлагается, так мне не пойдёт, а тут надо чуть сложнее. Проблема в том, что у меня очень тормозной двигатель - измеренная механическая постоянная времени двигателя составила аж 2.5 секунды. Если делать, как написано в В.Ф.Самосейко "Теоретические основы управления электроприводом", 2007, стр.239-240, то там время выхода на режим составит 2 * пи * 2.5 с = 16 секунд. Долго. Не пойдёт. Поэтому я решил делать по схеме, изложенной в книге Башарин А.В., Новиков В.А., Соколовский Г.Г. Управление электроприводами. 1982 на стр.182 рис 5-10. Там сначала грубо сравниваются частоты (периоды) и форсированно выходим на приближённое равенство скоростей, а только потом подключается ПИД-регулятор по фазе. Сначала я хотел сделать на рассыпухе, но потом сдался и сделал на ATmega328P и как выяснилось, совсем не зря - от меги сейчас потребуется весь её интеллект. В общем, сделал программный эквивалент схемы из книжки Башарина и Ко. В первом приближении всё работает, выход на устойчивый захват по частоте за 1.5-2 секунды от подачи питания, что меня полностью устраивает. Долговременная стабильность скорости достигнута, определяется кварцевым генератором. Начальная точность установки скорости 0.3%, что в три раза лучше, чем требования ГОСТ 24863-87 "Магнитофоны бытовые. Общие технические условия" для 0-й группы сложности (определяется разрядностью 8-битного счётчика, использованного для этой цели). Хватание вала пальцами на осциллограмме даёт только слегка заметный сдвиг по фазе, в общем, регулятор переменную нагрузку отрабатывает, как положено. А вот с девиацией дело плохо. Наблюдается размашистый такой джиттер, и никакие игрища с коэффициентами ПИД-регулятора не помогают его подавить. Вывел измеренный сдвиг фаз через USART в комп и посмотрел на графике - наблюдается отчётливая синусоида с частотой 12 Гц. Частота вращения вала - 6 Гц. На роторе используется 4-полюсный постоянный магнит, на статоре две пары катушек и два датчика Холла для управления ими, на катушках статора частота 24 Гц.

В первом приближении гипотеза заключается в том, что магнит ротора плохо намагничен. И тут возникла идея обучения и последующей компенсации. Скажем, за пару оборотов запомнить в каких местах двигатель тормозит, а потом, точно зная количество зубов в датчике энкодера, использовать эту информацию для упреждающей коррекции на следующем обороте. В связи с чем возникает вопрос - это я пытаюсь изобрести велосипед или так ещё никто не делал? Интересует, конечно, первый вариант, потому что из него следует, что об этом уже где-то написано, тогда мне нужны ключевые слова, чтобы гуглить. Ну второй вариант тоже неплох, можно будет статейку об этом написать, но в "грызении гранита науки" мне требуется "помощь зала" - вопрос заключается в том, какую именно информацию мне надо запоминать с текущего оборота, чтобы использовать её для упреждающей предкоррекции на следующем, и как именно эту предкоррекцию осуществлять, учитывая скромные ресурсы меги328. Я сейчас пытаюсь придумать модель двигателя с этим дефектом, чтобы понять, какой параметр двигателя "плавает" 2 раза за оборот, какую информацию хранить и какую величину и каким образом корректировать.
novikovfb
Пробовал делать подобное обучение для улучшения точности шагового двигателя в микрошаговом режиме. Уровни токов в обмотках для каждого значения счетчика положения определялись через таблицу синуса, для коррекции делал смещение указателя в таблице от значения счетчика на корректирующую величину, т.е. измерял опережение/запаздывание для каждого микрошага, на следующем шаге применял это опережение/запаздывание с противоположным знаком и понижающим коэффициентом и опять измерял. Получается, что накапливалась таблица с поправочными значениями корректировки фазы с осреднением (за счет понижающего коэффициента).
Получилось движение плавнее, чем было до коррекции, но полностью сгладить неравномерность вращения не удалось: каждый шаг имеет немного отличающийся профиль, а на все микрошаги оборота памяти не хватило.
Vitaly_N
Цитата(novikovfb @ Jan 18 2017, 16:32) *
Получилось движение плавнее, чем было до коррекции, но полностью сгладить неравномерность вращения не удалось: каждый шаг имеет немного отличающийся профиль, а на все микрошаги оборота памяти не хватило.


Ну у меня всего 134 зуба. Держать в памяти массив из 134 интов, флоатов или даже даблов ресурсы есть.
TSerg
Цитата(Vitaly_N @ Jan 18 2017, 13:19) *
Ну у меня всего 134 зуба

Вероятно дело не столько в разной намагниченности, сколько в точности деления (размещения) зубов по окружности + катушек.
Tanya
Цитата(Vitaly_N @ Jan 18 2017, 13:19) *
Ну у меня всего 134 зуба. Держать в памяти массив из 134 интов, флоатов или даже даблов ресурсы есть.

А снять синхронно ток в двигателе. Если ток не меняется, то магнитная аномалия...
Vitaly_N
Цитата(TSerg @ Jan 18 2017, 17:37) *
Вероятно дело не столько в разной намагниченности, сколько в точности деления (размещения) зубов по окружности + катушек.


Нет, зубья по окружности очень точно размещены, плюс датчик не простой, а с гребёнкой - по 10 зубам сразу усредняет. Катушки и датчики Холла да, могут быть расположены неточно, но это я совершенно точно переделывать не буду. Так что рабочая гипотеза остаётся - неидеальная намагниченность постоянного магнита ротора. Впрочем, это не очень важно.

Есть ещё одна гипотеза - это просто частота автоколебаний в контуре регулирования, а то, что оно оказалось кратно частоте вращения вала двигателя - ну так случайно совпало.

Цитата(Tanya @ Jan 18 2017, 17:54) *
А снять синхронно ток в двигателе. Если ток не меняется, то магнитная аномалия...


Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц.
alexunder
Есть возможность сравнить результаты с другим аналогичным магнитофоном? Неравномерность намагниченности, если наличиствует должна заметно отличаться от образца к образцу, будет разный паттерн, кмк.
Vitaly_N
Цитата(alexunder @ Jan 18 2017, 18:39) *
Есть возможность сравнить результаты с другим аналогичным магнитофоном? Неравномерность намагниченности, если наличиствует должна заметно отличаться от образца к образцу, будет разный паттерн, кмк.


Увы, нет такой возможности.
Tanya
Цитата(Vitaly_N @ Jan 18 2017, 14:37) *
Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц.

Вот и посмотрите, соответствует ли ускорение току. Вы его задаете, а как он отрабатывается?
Я бы в петле регулятора тока поставила аналоговый интегратор. Вы схему не привели, но полагаю, что у Вас периодически сравнивается интеграл от тока с интегралом от управляющего воздействия. И в зависимости от знака включается мост. Так?
А как тормозите? Закорачиванием? Еще можно подать постоянное воздействие, убрав все управление кроме тока - задать постоянный ток.
Будут колебания?
Vitaly_N
Цитата(Tanya @ Jan 18 2017, 20:10) *
Вот и посмотрите, соответствует ли ускорение току. Вы его задаете, а как он отрабатывается?
Я бы в петле регулятора тока поставила аналоговый интегратор. Вы схему не привели, но полагаю, что у Вас периодически сравнивается интеграл от тока с интегралом от управляющего воздействия. И в зависимости от знака включается мост. Так?


Нет, не так.

Схема вот.


Внизу схема регулятора блока ведущего двигателя (БВД). Я выбросил всё от коллектора VT1 до базы VT10 - между ними стоит мой регулятор.

Таймер 0 (8-битный) у меня используется как PWM для формирования выходного напряжения. Выход с него, отфильтрованный через ФНЧ с частотой 1 кГц, подаётся на базу VT10.

Таймер 1 (16 битный) используется для измерения периода и сдвига фаз двух внешних сигналов.

Сигнал опорной частоты 800 Гц я завёл на INT0. По прерыванию с него считываю счётчик таймера 1 (16-битного). Тут соображение такое, что пусть я программно его не очень точно захватываю, зато я знаю, что он регулярный, могу усреднить и подкорректировать.

Сигнал с таходатчика (коллектор VT1) завёл на ICP. Тут всё железно - по сигналу счётчик захватывается в ICR, оттуда в обработчике прерывания спокойно вычитываю и обрабатываю.

Цитата(Tanya @ Jan 18 2017, 20:10) *
А как тормозите? Закорачиванием? Еще можно подать постоянное воздействие, убрав все управление кроме тока - задать постоянный ток.
Будут колебания?


У меня новые соображения. Вот 10 периодов (1340 отсчётов). Выводится сдвиг фаз. Период составляет примерно 20150 отсчётов, целевой сдвиг фазы - половина периода (чтобы фронты были не одновременно), т.е. примерно 10075. Вот относительно него и колеблемся.

Во-первых, видно что тут не совсем синусоида, а во-вторых, видно, что она не точно равна второй гармонике. Т.е. это, скорее всего, не дефект двигателя, а автоколебания в контуре обратной связи.
Tanya
Цитата(Vitaly_N @ Jan 18 2017, 16:42) *
Нет, не так.

Схема вот.


Вы же раньше писали, что сделали по книжке. В книжке есть регулятор тока. А у Вас?
Я бы сделала так. Ваш сигнал управления преобразуется в аналоговый или ШИМ, который поступает на один вход интегратора, на второй подается сигнал с датчика тока обратной, естественно, полярности. По таймеру смотрите выход интегратора и включаете или не включаете мост. Получается сигма-дельта модулятор. Вы бы схему обрезали, чтобы влезла.
Vitaly_N
Цитата(Tanya @ Jan 18 2017, 20:56) *
Вы же раньше писали, что сделали по книжке. В книжке есть регулятор тока. А у Вас?

Регулятор тока сделан на микросхеме DA2 и транзисторах VT2, VT3, VT5, VT6. Чисто пропорционально напряжению на базе VT10 (с учётом угла поворота ротора).
Цитата(Tanya @ Jan 18 2017, 20:56) *
Я бы сделала так. Ваш сигнал управления преобразуется в аналоговый или ШИМ, который поступает на один вход интегратора, на второй подается сигнал с датчика тока обратной, естественно, полярности. По таймеру смотрите выход интегратора и включаете или не включаете мост. Получается сигма-дельта модулятор. Вы бы схему обрезали, чтобы влезла.

У МЕНЯ НЕТ МОСТА! Если бы я делал привод для металлопрокатного стана, то я бы тоже запустил ШИМ на двигатели через мост, но у меня - магнитофон. От электромагнитных помех от ШИМа с двигателя я потом как фильтроваться буду?
MrAlex
Все-таки вход и выход на одном графике было бы уместно нарисовать.
Tanya
Цитата(Vitaly_N @ Jan 18 2017, 17:08) *
Регулятор тока сделан на микросхеме DA2 и транзисторах VT2, VT3, VT5, VT6. Чисто пропорционально напряжению на базе VT10 (с учётом угла поворота ротора).

Честно скажу... Глаза мои отказываются разглядывать Вашу картинку. Вот там какие-то загадочные квадратики с крестиками перед ОУ стоят. Это что?
А помехи... там ток не будет скакать сильно - индуктивность мешает. От щеток сильнее, наверное.
MrAlex
Квадратики это датчики Холла, коммутируют токи при повороте ротора.
В общем схема это P регулятор со смещенным нулем, с коэффициентом 1.5 В/мс на базе VT10.
Или безразмерно 256*5/(20150*1.5).
amaora
В контуре тока эта пульсация будет если отключить ОС по таходатчику?
Отключенный двигатель имеет пульсацию момента (cogging torque)?
Управление как осуществляется, несколько фиксированных положений вектора тока статора или он вращается?
AlexandrY
Цитата(Vitaly_N @ Jan 18 2017, 11:19) *
На роторе используется 4-полюсный постоянный магнит, на статоре две пары катушек и два датчика Холла для управления ими, на катушках статора частота 24 Гц.

Ого, 2-х фазный BLDC. Первый раз вижу.

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

Потом выкинтье те датчики холла и поставьте нормальный абсолютный энкодер.
Например магнитный. TLE5012 - класная штука.

Потом выкиньте всю схему от VB1 до VT5, VT6 и поставьте туда два полных моста с ШИМ управлением.
ATmega не потянет, возьмите ARM Cortex-M4. Могу рекомендовать серию Kinetis от NXP.
И просто от энкодера рулите 2-я ШИМ мостами согласно форме записанной ЭДС.

В литературе отдельно такой случай с мотором не рассматривают поскольку все вырождается в управление траекторным движением.
Vitaly_N
Цитата(AlexandrY @ Jan 19 2017, 05:00) *
Ого, 2-х фазный BLDC. Первый раз вижу.

В вентиляторе кулера на процессоре такой же 2-х фазный BLDC стоит.

Вот плата с катушками статора, датчиками Холла и всей остальной электроникой.


Вот ротор


Вот привод в сборе
khach
Есть вопрос- тормоз-натяжитель подающего узла электронный (мотор в противотяге) или обычный механический? Потому что даже с энкодерами и современными процессорами управления моторами обеспечить работу двух двигателей в синхронной паре когда один создает момент торможения для ленты- нетривиальная задача. Особенно начальный момент когда выбирается слабина ленты после пуска лентотяги.
Колебания в системе как раз могут возникать из-за механического растяжения- сжатия ленты, например смена ленты на другую толщину подложки может снять проблему. Т.е лентотяга на советскую толстую ленту не переваривала западную тонкую.
Herz
Цитата(Tanya @ Jan 18 2017, 15:56) *
Вы бы схему обрезали, чтобы влезла.

+1!
Цитата(Vitaly_N @ Jan 19 2017, 07:43) *
Вот привод в сборе

И на что любоваться в этой огромной картинке? На количество потенциометров? Для чего она?
Цитата(khach @ Jan 21 2017, 13:47) *
Есть вопрос- тормоз-натяжитель подающего узла электронный (мотор в противотяге) или обычный механический?

Судя по тому, что привод трёх-двигательный, логично предположить первое.
Vitaly_N
Цитата(khach @ Jan 21 2017, 18:47) *
Есть вопрос- тормоз-натяжитель подающего узла электронный (мотор в противотяге) или обычный механический?


В режиме воспроизведения подающий узел подтормаживается механически, двигатель перемотки назад неактивен.
prig
Цитата(Vitaly_N @ Jan 18 2017, 14:37) *
...
Есть ещё одна гипотеза - это просто частота автоколебаний в контуре регулирования, а то, что оно оказалось кратно частоте вращения вала двигателя - ну так случайно совпало.
...


Если действительно что-то из этой серии, то навряд ли случайно.
Как вариант, могут появляться проблемы на частотах, кратных полу-частоте регулирования. С ними регулятор может сильно чудить.
Попробуйте настроить ПИД-регулятор, подавая на него усреднение последних двух измерений. Если "колебания" исчезнут, значит оно неслучайное и было.

Смысл этих действий в том, что такой хреновый фильтр проваливает сигнал в "0" на полу-частоте и кратных частотах при минимально возможной задержке.
Сам регулятор станет несколько хуже, но результат может улучшится.
khach
Я в упор тут никакого ПИД не вижу на схеме. Регулировка привода тонвала идет через управление током возбуждения датчиков холла. Т.к датчики холла имеют линейную характеристику относительно возбуждения, то меняется ток обмоток привода. Т.е регулирока идет по моменту, а сам двигатель это автоколебательнв электромеханическая система жестко сфазированная позицией датчиков холла относительно полюсов ротора.
Приводы подмоточных узлов- просто линейные усилители с заданным коэффициентом передачи, т.е постоянным моментом. Конечно надо отбалансировать обе половинки каждого привода.
Схема стабилизации оборотов это какой-то хитрый ШИМ. Если можно- осциллограммы крупным планом в тех точках что на схеме показаны снять, желательно при различных нагрузках на лентотягу.
А если не стоит задача настройки готового узла- то я бы векторый привод на том же STM32 собрал. Вот только готового примера для двухфазных синхронных моторов нет, прийдется все преобразования кларка-парка переписывать.
MrAlex
Цитата
Я в упор тут никакого ПИД не вижу на схеме

Тем не менее он есть. Не ПИД, а П регулятор. На DA1.2. Дискретный. VT9 схема выборки хранения. Остальное усилитель тока и формирователь фаз.
Цитата
Схема стабилизации оборотов это какой-то хитрый ШИМ.

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

Данная конструкция хороша тем, что на номинальной частоте вращения 6 Гц не создает помех в аудиотракте.
Vitaly_N
Цитата(khach @ Jan 27 2017, 17:20) *
Я в упор тут никакого ПИД не вижу на схеме.

Вполне естественно - потому что это родная схема. А что сделал я - описано сразу под схемой. Повторяю:
Цитата
Я выбросил всё от коллектора VT1 до базы VT10 - между ними стоит мой регулятор.
Таймер 0 (8-битный) у меня используется как PWM для формирования выходного напряжения. Выход с него, отфильтрованный через ФНЧ с частотой 1 кГц, подаётся на базу VT10.
Таймер 1 (16 битный) используется для измерения периода и сдвига фаз двух внешних сигналов.
Сигнал опорной частоты 800 Гц я завёл на INT0. По прерыванию с него считываю счётчик таймера 1 (16-битного). Тут соображение такое, что пусть я программно его не очень точно захватываю, зато я знаю, что он регулярный, могу усреднить и подкорректировать.
Сигнал с таходатчика (коллектор VT1) завёл на ICP. Тут всё железно - по сигналу счётчик захватывается в ICR, оттуда в обработчике прерывания спокойно вычитываю и обрабатываю.
Vitaly_N
Взял датчик Холла из флопповода и посмотрел им на магнит ротора. Имеется 8 полюсов - 4 S и 4 N, приблизительно равномерно расположенных и приблизительно одинаково намагниченных.

Взял программу SimInTech, задал в ней свою систему и добавил округление до целого (регистр ШИМ 8-битный). Если без округления переходный процесс довольно быстро устаканивался, то с округлением до целого процесс не устаканивается, а на нём образуется "пила" малой амплитуды. Т.е. мой цифровой ПИД-регулятор привносит грубость в управление, что приводит к возникновению автоколебаний ещё и по этой причине.
MrAlex
Цитата
Таймер 0 (8-битный) у меня используется как PWM для формирования выходного напряжения. Выход с него, отфильтрованный через ФНЧ с частотой 1 кГц, подаётся на базу VT10.
Таймер 1 (16 битный) используется для измерения периода и сдвига фаз двух внешних сигналов.
Сигнал опорной частоты 800 Гц я завёл на INT0. По прерыванию с него считываю счётчик таймера 1 (16-битного). Тут соображение такое, что пусть я программно его не очень точно захватываю, зато я знаю, что он регулярный, могу усреднить и подкорректировать.

Ок. На Таймер1 можно делать точный захват длительности и генерировать прерывание 800Гц. Комбинируя Таймер0 и Таймер2 внешней логикой можно сгенерить более чем 8-ми битный ШИМ.
Или ЦАП уже прикрутить самый доступный. Или даже собрать его, благо ног свободных достаточно.
Vitaly_N
Всё! Задача решена! Частота и фаза стоят, как вкопанные! Подобрал коэффициенты ПИД-регулятора, правда, сильно задрал П-компоненту, в результате управляющий сигнал на двигатель сильно скачет, но зато вал крутится очень равномерно и стабильно. Даже при старте воспроизведения с кассетой уползание фазы пренебрежимо мало. Потом как-нибудь аккуратно померю девиацию - доложу. А пока результат меня абсолютно устраивает.

https://youtu.be/6T1rNlHNHKU
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.