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

Сверхточная стабилизация скорости вращения вала электродвигателя.

Короче говоря, модернизирую трехмоторный прямой привод БС-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 Гц.

12701900.jpg

В первом приближении гипотеза заключается в том, что магнит ротора плохо намагничен. И тут возникла идея обучения и последующей компенсации. Скажем, за пару оборотов запомнить в каких местах двигатель тормозит, а потом, точно зная количество зубов в датчике энкодера, использовать эту информацию для упреждающей коррекции на следующем обороте. В связи с чем возникает вопрос - это я пытаюсь изобрести велосипед или так ещё никто не делал? Интересует, конечно, первый вариант, потому что из него следует, что об этом уже где-то написано, тогда мне нужны ключевые слова, чтобы гуглить. Ну второй вариант тоже неплох, можно будет статейку об этом написать, но в "грызении гранита науки" мне требуется "помощь зала" - вопрос заключается в том, какую именно информацию мне надо запоминать с текущего оборота, чтобы использовать её для упреждающей предкоррекции на следующем, и как именно эту предкоррекцию осуществлять, учитывая скромные ресурсы меги328. Я сейчас пытаюсь придумать модель двигателя с этим дефектом, чтобы понять, какой параметр двигателя "плавает" 2 раза за оборот, какую информацию хранить и какую величину и каким образом корректировать.

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


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

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

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

Изменено пользователем novikovfb

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


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

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

 

Ну у меня всего 134 зуба. Держать в памяти массив из 134 интов, флоатов или даже даблов ресурсы есть.

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


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

Гость TSerg
Ну у меня всего 134 зуба

Вероятно дело не столько в разной намагниченности, сколько в точности деления (размещения) зубов по окружности + катушек.

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


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

Ну у меня всего 134 зуба. Держать в памяти массив из 134 интов, флоатов или даже даблов ресурсы есть.

А снять синхронно ток в двигателе. Если ток не меняется, то магнитная аномалия...

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


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

Вероятно дело не столько в разной намагниченности, сколько в точности деления (размещения) зубов по окружности + катушек.

 

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

 

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

 

А снять синхронно ток в двигателе. Если ток не меняется, то магнитная аномалия...

 

Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц.

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


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

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

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


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

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

 

Увы, нет такой возможности.

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


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

Ток в двигателе снимать смысла нет, поскольку я его задаю своим регулятором. Да, я могу его вывести и посмотреть, и выводил, и смотрел, там именно то, что и должен делать регулятор - пытаться компенсировать отклонение. Ну там не совсем синусоида, но с той же периодичностью 12 Гц.

Вот и посмотрите, соответствует ли ускорение току. Вы его задаете, а как он отрабатывается?

Я бы в петле регулятора тока поставила аналоговый интегратор. Вы схему не привели, но полагаю, что у Вас периодически сравнивается интеграл от тока с интегралом от управляющего воздействия. И в зависимости от знака включается мост. Так?

А как тормозите? Закорачиванием? Еще можно подать постоянное воздействие, убрав все управление кроме тока - задать постоянный ток.

Будут колебания?

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


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

Вот и посмотрите, соответствует ли ускорение току. Вы его задаете, а как он отрабатывается?

Я бы в петле регулятора тока поставила аналоговый интегратор. Вы схему не привели, но полагаю, что у Вас периодически сравнивается интеграл от тока с интегралом от управляющего воздействия. И в зависимости от знака включается мост. Так?

 

Нет, не так.

 

Схема вот.

15661.gif

 

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

 

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

 

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

 

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

 

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

 

А как тормозите? Закорачиванием? Еще можно подать постоянное воздействие, убрав все управление кроме тока - задать постоянный ток.

Будут колебания?

 

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

12661999.jpg

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

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


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

Нет, не так.

 

Схема вот.

 

Вы же раньше писали, что сделали по книжке. В книжке есть регулятор тока. А у Вас?

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

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


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

Вы же раньше писали, что сделали по книжке. В книжке есть регулятор тока. А у Вас?

Регулятор тока сделан на микросхеме DA2 и транзисторах VT2, VT3, VT5, VT6. Чисто пропорционально напряжению на базе VT10 (с учётом угла поворота ротора).

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

У МЕНЯ НЕТ МОСТА! Если бы я делал привод для металлопрокатного стана, то я бы тоже запустил ШИМ на двигатели через мост, но у меня - магнитофон. От электромагнитных помех от ШИМа с двигателя я потом как фильтроваться буду?

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


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

Регулятор тока сделан на микросхеме DA2 и транзисторах VT2, VT3, VT5, VT6. Чисто пропорционально напряжению на базе VT10 (с учётом угла поворота ротора).

Честно скажу... Глаза мои отказываются разглядывать Вашу картинку. Вот там какие-то загадочные квадратики с крестиками перед ОУ стоят. Это что?

А помехи... там ток не будет скакать сильно - индуктивность мешает. От щеток сильнее, наверное.

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


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

Квадратики это датчики Холла, коммутируют токи при повороте ротора.

В общем схема это P регулятор со смещенным нулем, с коэффициентом 1.5 В/мс на базе VT10.

Или безразмерно 256*5/(20150*1.5).

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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