Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сервопривод на коллекторном моторе.
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Электрические машины, Электропривод и Управление
IgorTT
Добрый день.
Сразу хочу сказать что опыта работы с подобными проектами ранее не имел вообще. (ТАУ)
Да и в программировании я особо не силен (если откровенно).
Решил попробовать реализовать управление, неким сервоприводом своими силами, но увы, оказалось знаний катастрофически не хватает.
А понимание того что ТАУ надо было все таки учить в институте пришло только сейчас.
Хочу сразу сказать что этот проект не коммерческий, а носит только образовательный характер. И большое желание реализовать его правильно.
Лирическое вступление окончено теперь о ТЗ.
Есть некий механизм (исполнения сименс) представленный на фото1.
Нажмите для просмотра прикрепленного файла
Коллекторный мотор постоянного тока на 12вольт (см. пдфку)
Нажмите для просмотра прикрепленного файла
Трехступенчатый шестеренчатый редуктор передаточным соотношением 2:1.
Нажмите для просмотра прикрепленного файла
На выходном валу сидит червячная пара (ходовой винт + ходовая гайка).
Ходовая гайка посредством пальца *тягает за собой* поворотный рычаг (поступательное движение переходит во вращательно) на оси вращения рычага с одной стороны приклеен круговой магнит (для холла)
Нажмите для просмотра прикрепленного файла
,с другом соединительная муфточка для сопряжения с валом.
На выходном валу находится некое *программное колесо (так называю в народе) на фото есть*
Нажмите для просмотра прикрепленного файла
выглядит как сегмент шестерни, который фиксируется пластинчатой пружиной с роликом на конце. фото пружины нет.
хочу сказать что пружина очень жесткая.
Основная задача этого механизма переключение (вращение вала) кулисы выбора передач АКПП.
Выходной вал совершает вращение в диапазоне 0 - 58 гр. (регулируемая величина угол поворота) измеряется датчиком холла.
Всего есть четыре точки (угла), перемещении происходит из одной точки в любую из трёх оставшихся. Совершать эти перемещения необходимо очень быстро.

Трудность с которой я столкнулся это быстро остановиться в заданной точке без недолёта или перелёта. Я попытался реализовать подобие ПИ регулятора и настроил его таким образом, что доход до точки становился вялым и не всегда точка остонова была в разрешенных воротах. При условии когда возникало внешнее воздействие (легкое удержание пальцем) у системы был недолёт, остановка, и только потом интегральная часть наращивала воздействие. Для каждого из рабочих перемещений (а их 9ть) были подобраны Кр и Кд, одним из минусов считаю напряжение с датчика холла, оно не линейно. Решив реализовать правильное определения угла (требуются операции с плавающей точкой и double ) понял что 8 битного пика мало. Решил взять 16 бит пик. А также стал вопрос что надо попросить помощи на форуме. Для выбора правильного метода управления.
На фото видна родная плата управления я решил её оставить, выпаял аккуратно родной ST10F269-T3. На переходнике впаял туда свой пик.
На родной плате есть возможность управлять двигателем (Н-мост), измерять ток мотора, напряжение противо-эдс и угол поворота.
Также прилагаю осциллограмму тока и скорости мотора на которой видно как происходит огибание зубов.
Нажмите для просмотра прикрепленного файла
Прошу прошение за сыр бор в объяснениях о механизме полагаю всё можно скомпенсировать фотографиями sm.gif
Всем откликнувшимся спасибо.
amaora
Быстрее всего будет если дать максимальный ток, а перед остановкой сменить ему знак. Я бы начал с ПД регулятора с большой пропорциональной частью, так чтобы была лишь небольшая линейная область (на уровне требуемой точности), а основная работа шла в насыщении. Д проше всего подобрать наблюдая переходный процесс при торможении. Ток тоже полезно регулировать, чтобы использовать максимальный момент без опасности превысить максимально допустимый ток.

Кстати пульсирующий момент нагрузки (как я понял из текста и картинок) дает интересную возможность оценки/отслеживания положения без датчика положения.
IgorTT
Добрый день.
amaora спасибо за ответ.
Не знаю правильно ли я вас понял .
Пропорциональную часть берем с большим запасом, что бы по мере приближения к цели (уменьшение ошибки) воздействие не сводилось к нулю. Правильно?
По поводу дифф. части у меня немного непонимание. Я начал разбираться с управлением прочитав вот эту статью:
http://we.easyelectronics.ru/Theory/pid-re...-praktikov.html
Используя вот эти формулы:
u(t) = P (t) + I (t) + D (t);
P (t) = Kp * e (t);
I (t) = I (t — 1) + Ki * e (t);
D (t) = Kd * {e (t) — e (t — 1)};
В моем понимании дифф. часть (не накапливается как интегральная ) а воспроизводит как бы *тормозящий эффект* на суммарное воздействие.
Правильно ли я понимаю?
И еще вопросик,а как правильно выбрать (рассчитать, подобрать) момент начала торможения?
Из вашего совета я понял что тормозить надо противовключением?
Tanya
Цитата(IgorTT @ Mar 7 2014, 19:15) *
хочу сказать что пружина очень жесткая.
понял что 8 битного пика мало. Решил взять 16 бит пик.

Пружина - это хорошо.
А поняли Вы неправильно.
Вам еще надо бы поставить шунт для измерения тока. И поискать по форуму.
Такое много раз уже обсуждалось.
IgorTT
Цитата(Tanya @ Mar 11 2014, 09:57) *
Пружина - это хорошо.
А поняли Вы неправильно.
Вам еще надо бы поставить шунт для измерения тока. И поискать по форуму.
Такое много раз уже обсуждалось.

По поводу 8 бит пика
Время перемещения между позициями на 50% мощности составляет 100 мс.
А время измерения и расчета угла 3,1 мс. А еще расчет воздействия и скорость на 100% мощности , вот из этих выводов я понял что необходимо 16 бит. да по шустрее. Я могу ошибаться и хотел бы узнать где я не прав.
Балластный резистор стоит я же привёл диаграмму тока.
Все 23 страниц я просмотрел.
А чем пружина хорошо?
Спасибо.
Tanya
Цитата(IgorTT @ Mar 11 2014, 14:18) *
А время измерения и расчета угла 3,1 мс. А еще расчет воздействия и скорость на 100% мощности , вот из этих

Все 23 страниц я просмотрел.

А чем пружина хорошо?

Почему и что Вы так долго измеряете?
Какие Вы посмотрели страницы, непонятно.
Пружина хороша тем, что создает точку равновесия. Если она там, где я ее придумала.
А шунт нужен для того, чтобы управлять током, а не напряжением... ШИМом или как-нибудь еще. Момент ведь пропорционален току. А напряжению мешает противоэдс.
amaora
IgorTT
Для избавления от таких вопросов полезно будет попробовать численно моделировать (в matlab, в C, можно даже на бумаге) двойной интегратор, добавить обратную связь и смотреть на фазовые траектории.
IgorTT
Добрый день.
Цитата(Tanya @ Mar 11 2014, 14:20) *
Почему и что Вы так долго измеряете?

два измерения АЦП занимают 50мкс.
Все остальное расчет угла тета.
Нажмите для просмотра прикрепленного файла

amaora
буду разбираться, спасибо.
Tanya
Цитата(IgorTT @ Mar 12 2014, 08:41) *
Добрый день.

два измерения АЦП занимают 50мкс.
Все остальное расчет угла тета.

А почему так долго? Таблицы не используете?
Могу Вам еще посоветовать. Для перескока из одного состояния в другое включаете мотор на полную и интегрируете ток до табличного значения. Потом включаете ПИД. С интегральным членом из таблицы.
Если поставить еще один простой датчик до редуктора?
Herz
Цитата(IgorTT @ Mar 12 2014, 06:41) *
Добрый день.

два измерения АЦП занимают 50мкс.
Все остальное расчет угла тета.

Просто невероятно долго. Что за ПИК, частота, алгоритм? Уверен, что никакого 16-разрядного не нужно.
IgorTT
Цитата(Herz @ Mar 12 2014, 07:32) *
Просто невероятно долго. Что за ПИК, частота, алгоритм? Уверен, что никакого 16-разрядного не нужно.

Поигравшись настройками, время одного преобразования снизилось до 8мкс .
Но меня больше волнует вот эта функция:
double atan (double x);
потом для удобства я перевожу из радиан в угол.
и всё это занимает около 2мс.
мк. PIC18F4680,OSC=32MHz.
По поводу алгоритма немного не понял? Что именно надо laughing.gif
Tanya
Цитата(IgorTT @ Mar 12 2014, 11:23) *
double atan (double x);
потом для удобства я перевожу из радиан в угол.

Что Вы во что переводите и зачем?
А Вы нарисуйте эту функцию на бумаге...
IgorTT
Цитата(Tanya @ Mar 12 2014, 09:39) *
Что Вы во что переводите и зачем?
А Вы нарисуйте эту функцию на бумаге...

Для определения положения (угол тета) по датчику холла необходимо решить вот это:
VoutA = Vs*S*sin(2θ) + VosA,
VoutB = Vs*S*cos(2θ) + VosB
для решения необходимо взять arctan отношения напруг.
в добавок результат я получаю в радианах , перевожу в градусы.
Я ещё точно не определился с какой точностью необходимо получать результат :град,минут,секунд или еще точнее.
аргумент функции меняется в пределах: 0,61 - 40,66
А можете объяснить по поводу бумаги?
Вы имеете в виду пересчитать вручную и построить таблицу? Или я опять не правильно всё понял?
Tanya
Цитата(IgorTT @ Mar 12 2014, 11:58) *
аргумент функции меняется в пределах: 0,61 - 40,66
А можете объяснить по поводу бумаги?
Вы имеете в виду пересчитать вручную и построить таблицу? Или я опять не правильно всё понял?

На бумаге видно, что максимальная производная меньше единицы - медленно меняется - легко аппроксимируется. Еще легче - кусочно. Вам же нужны какие-то фиксированные точки финиша?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.