|
Сверхточная стабилизация скорости вращения вала электродвигателя. |
|
|
|
Jan 18 2017, 09:19
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Короче говоря, модернизирую трехмоторный прямой привод БС-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 раза за оборот, какую информацию хранить и какую величину и каким образом корректировать.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 27)
|
Jan 18 2017, 10:19
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(novikovfb @ Jan 18 2017, 16:32)  Получилось движение плавнее, чем было до коррекции, но полностью сгладить неравномерность вращения не удалось: каждый шаг имеет немного отличающийся профиль, а на все микрошаги оборота памяти не хватило. Ну у меня всего 134 зуба. Держать в памяти массив из 134 интов, флоатов или даже даблов ресурсы есть.
|
|
|
|
Guest_TSerg_*
|
Jan 18 2017, 10:37
|
Guests

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

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(TSerg @ Jan 18 2017, 17:37)  Вероятно дело не столько в разной намагниченности, сколько в точности деления (размещения) зубов по окружности + катушек. Нет, зубья по окружности очень точно размещены, плюс датчик не простой, а с гребёнкой - по 10 зубам сразу усредняет. Катушки и датчики Холла да, могут быть расположены неточно, но это я совершенно точно переделывать не буду. Так что рабочая гипотеза остаётся - неидеальная намагниченность постоянного магнита ротора. Впрочем, это не очень важно. Есть ещё одна гипотеза - это просто частота автоколебаний в контуре регулирования, а то, что оно оказалось кратно частоте вращения вала двигателя - ну так случайно совпало. Цитата(Tanya @ Jan 18 2017, 17:54)  А снять синхронно ток в двигателе. Если ток не меняется, то магнитная аномалия... Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц.
|
|
|
|
|
Jan 18 2017, 11:55
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(alexunder @ Jan 18 2017, 18:39)  Есть возможность сравнить результаты с другим аналогичным магнитофоном? Неравномерность намагниченности, если наличиствует должна заметно отличаться от образца к образцу, будет разный паттерн, кмк. Увы, нет такой возможности.
|
|
|
|
|
Jan 18 2017, 13:10
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Vitaly_N @ Jan 18 2017, 14:37)  Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц. Вот и посмотрите, соответствует ли ускорение току. Вы его задаете, а как он отрабатывается? Я бы в петле регулятора тока поставила аналоговый интегратор. Вы схему не привели, но полагаю, что у Вас периодически сравнивается интеграл от тока с интегралом от управляющего воздействия. И в зависимости от знака включается мост. Так? А как тормозите? Закорачиванием? Еще можно подать постоянное воздействие, убрав все управление кроме тока - задать постоянный ток. Будут колебания?
|
|
|
|
|
Jan 18 2017, 13:42
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(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. Вот относительно него и колеблемся.  Во-первых, видно что тут не совсем синусоида, а во-вторых, видно, что она не точно равна второй гармонике. Т.е. это, скорее всего, не дефект двигателя, а автоколебания в контуре обратной связи.
|
|
|
|
|
Jan 18 2017, 14:08
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

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

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Vitaly_N @ Jan 18 2017, 11:19)  На роторе используется 4-полюсный постоянный магнит, на статоре две пары катушек и два датчика Холла для управления ими, на катушках статора частота 24 Гц. Ого, 2-х фазный BLDC. Первый раз вижу. Начать надо со съема напряжения обратной ЭДС. Покрутите дрелью мотор и запишите осциллограмму. Скорее всего там будет нечто несинусоидальное. Значит управление должно быть нелинейным. Потом выкинтье те датчики холла и поставьте нормальный абсолютный энкодер. Например магнитный. TLE5012 - класная штука. Потом выкиньте всю схему от VB1 до VT5, VT6 и поставьте туда два полных моста с ШИМ управлением. ATmega не потянет, возьмите ARM Cortex-M4. Могу рекомендовать серию Kinetis от NXP. И просто от энкодера рулите 2-я ШИМ мостами согласно форме записанной ЭДС. В литературе отдельно такой случай с мотором не рассматривают поскольку все вырождается в управление траекторным движением.
|
|
|
|
|
Jan 19 2017, 05:43
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

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

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(Tanya @ Jan 18 2017, 15:56)  Вы бы схему обрезали, чтобы влезла. +1! Цитата(Vitaly_N @ Jan 19 2017, 07:43)  Вот привод в сборе И на что любоваться в этой огромной картинке? На количество потенциометров? Для чего она? Цитата(khach @ Jan 21 2017, 13:47)  Есть вопрос- тормоз-натяжитель подающего узла электронный (мотор в противотяге) или обычный механический? Судя по тому, что привод трёх-двигательный, логично предположить первое.
|
|
|
|
|
Jan 24 2017, 08:12
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(khach @ Jan 21 2017, 18:47)  Есть вопрос- тормоз-натяжитель подающего узла электронный (мотор в противотяге) или обычный механический? В режиме воспроизведения подающий узел подтормаживается механически, двигатель перемотки назад неактивен.
|
|
|
|
|
Jan 26 2017, 14:26
|
Знающий
   
Группа: Свой
Сообщений: 869
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595

|
Цитата(Vitaly_N @ Jan 18 2017, 14:37)  ... Есть ещё одна гипотеза - это просто частота автоколебаний в контуре регулирования, а то, что оно оказалось кратно частоте вращения вала двигателя - ну так случайно совпало. ... Если действительно что-то из этой серии, то навряд ли случайно. Как вариант, могут появляться проблемы на частотах, кратных полу-частоте регулирования. С ними регулятор может сильно чудить. Попробуйте настроить ПИД-регулятор, подавая на него усреднение последних двух измерений. Если "колебания" исчезнут, значит оно неслучайное и было. Смысл этих действий в том, что такой хреновый фильтр проваливает сигнал в "0" на полу-частоте и кратных частотах при минимально возможной задержке. Сам регулятор станет несколько хуже, но результат может улучшится.
|
|
|
|
|
Jan 28 2017, 13:57
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 15-10-10
Из: г. Москва
Пользователь №: 60 179

|
Цитата Я в упор тут никакого ПИД не вижу на схеме Тем не менее он есть. Не ПИД, а П регулятор. На DA1.2. Дискретный. VT9 схема выборки хранения. Остальное усилитель тока и формирователь фаз. Цитата Схема стабилизации оборотов это какой-то хитрый ШИМ. ШИМ в этой схеме нет. По сути это есть векторный привод. Датчики Холла похоже линейные и формируют вектор момента. Линейный усилитель, напрямую управляет моментом. ПИД в целом может улучшить стабилизацию, но в случае грамотной реализации. Поскольку требуется вычисление дискретной производной и интеграла при плавающей частоте дискретизации. Более эффективным видится,как было сказано выше, подход комбинирующий Цитата управление траекторным движением и несложный пропорциональный регулятор. В целях упрощения отладки, достаточно сохранять вход и выход регулятора Данная конструкция хороша тем, что на номинальной частоте вращения 6 Гц не создает помех в аудиотракте.
|
|
|
|
|
Jan 30 2017, 05:11
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(khach @ Jan 27 2017, 17:20)  Я в упор тут никакого ПИД не вижу на схеме. Вполне естественно - потому что это родная схема. А что сделал я - описано сразу под схемой. Повторяю: Цитата Я выбросил всё от коллектора VT1 до базы VT10 - между ними стоит мой регулятор. Таймер 0 (8-битный) у меня используется как PWM для формирования выходного напряжения. Выход с него, отфильтрованный через ФНЧ с частотой 1 кГц, подаётся на базу VT10. Таймер 1 (16 битный) используется для измерения периода и сдвига фаз двух внешних сигналов. Сигнал опорной частоты 800 Гц я завёл на INT0. По прерыванию с него считываю счётчик таймера 1 (16-битного). Тут соображение такое, что пусть я программно его не очень точно захватываю, зато я знаю, что он регулярный, могу усреднить и подкорректировать. Сигнал с таходатчика (коллектор VT1) завёл на ICP. Тут всё железно - по сигналу счётчик захватывается в ICR, оттуда в обработчике прерывания спокойно вычитываю и обрабатываю.
|
|
|
|
|
Jan 31 2017, 04:36
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Взял датчик Холла из флопповода и посмотрел им на магнит ротора. Имеется 8 полюсов - 4 S и 4 N, приблизительно равномерно расположенных и приблизительно одинаково намагниченных.
Взял программу SimInTech, задал в ней свою систему и добавил округление до целого (регистр ШИМ 8-битный). Если без округления переходный процесс довольно быстро устаканивался, то с округлением до целого процесс не устаканивается, а на нём образуется "пила" малой амплитуды. Т.е. мой цифровой ПИД-регулятор привносит грубость в управление, что приводит к возникновению автоколебаний ещё и по этой причине.
|
|
|
|
|
Feb 1 2017, 12:32
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 15-10-10
Из: г. Москва
Пользователь №: 60 179

|
Цитата Таймер 0 (8-битный) у меня используется как PWM для формирования выходного напряжения. Выход с него, отфильтрованный через ФНЧ с частотой 1 кГц, подаётся на базу VT10. Таймер 1 (16 битный) используется для измерения периода и сдвига фаз двух внешних сигналов. Сигнал опорной частоты 800 Гц я завёл на INT0. По прерыванию с него считываю счётчик таймера 1 (16-битного). Тут соображение такое, что пусть я программно его не очень точно захватываю, зато я знаю, что он регулярный, могу усреднить и подкорректировать. Ок. На Таймер1 можно делать точный захват длительности и генерировать прерывание 800Гц. Комбинируя Таймер0 и Таймер2 внешней логикой можно сгенерить более чем 8-ми битный ШИМ. Или ЦАП уже прикрутить самый доступный. Или даже собрать его, благо ног свободных достаточно.
|
|
|
|
|
Feb 3 2017, 13:53
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Всё! Задача решена! Частота и фаза стоят, как вкопанные! Подобрал коэффициенты ПИД-регулятора, правда, сильно задрал П-компоненту, в результате управляющий сигнал на двигатель сильно скачет, но зато вал крутится очень равномерно и стабильно. Даже при старте воспроизведения с кассетой уползание фазы пренебрежимо мало. Потом как-нибудь аккуратно померю девиацию - доложу. А пока результат меня абсолютно устраивает. https://youtu.be/6T1rNlHNHKU
Сообщение отредактировал Vitaly_N - Feb 3 2017, 15:20
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|