ruxisupport. Управление dc двигателем


Управление DC двигателем - Cообщество любителей Arduino

Управление DC двигателем [Jan. 18th, 2010|01:35 am]

Cообщество любителей Arduino

Всем привет!Только недавно начал программировать на Си++,и никак не могу написать код программы для управлением ШИМом.Задача стоит такая: вот примерно по такой схеме подключения http://www.sin-bad.ru/2avr/7SHIM/Power.gifуправлять, например электродвигателем, двумя кнопками + и -. ну как опция может быть третья кнопка включения.

Ясно что кнопка"+" должна прибавлять, а "-" убавлять значения длительности импульса в ШИМ. Но как это в коде для Андруины то прописать?Может знаете? :)

Comments:

(Deleted comment)

Да я знаю как подключить кнопку и нагрузку к выходам андруины, знаю как написать простейшие программы шима или управления кнопками, итд, я не могу понять как это объединить, и написать программу, которая будет при помощи трех кнопок будет управлять нагрузкой- пока это пусть будет светодиод на 10 выходе. Мне надо заставить его одной кнопкой гореть ярче, другой тусклее, а третьей включать или выключать, независимо от состояния его яркости. К сожалению не профессиональный программист, и не знаю как это сделать...

(Deleted comment)

а как состыковать язык си с языком wiring, на котором пишутся проги для аурдино?

мне проще работать с программой aurdino-ide(та что на яве), а она чистый си не понимает...

From: michael_sl2010-01-18 05:26 am (UTC)

Управление DC двигателем

(Link)

для управления двигателем лучше использовать драйвер для моторов.Если мотор маломощный то подойдет L293D (позволяет управлять 2мя двигателями).

Кнопки на той схеме действительно неправильно подключены.Ножка МК должна быть посажена на землю через резистор, для включения эта же ножка замыкается на +.В L293 точно так же можно управлять скоростью двигателя через функцию AnalogWrite(Значение).

И еще момент , на вашей схеме нету даже диода , что повлечет за собой печальные последствия :)

Вот описание схема подключения L293D http://www.myrobot.ru/stepbystep/el_driver.php.Для сопряжения этой микрухи с ардуиной не потребуется никаких обвязок.Одна микросхема может управлять 2мя моторами , для каждого мотора можно задать скорость вращения и направление вращения. Это займет 4 цифровых выхода ардуины.

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

From: _mebius_2010-01-18 09:33 pm (UTC)

Мимо проходил...

(Link)

Управлять - ну ТУПО можно сделать так:

иниц.N=0 //при Н=0 двигатель стоит

прерывание по кнопке{Есть нажатие на кнопку 1?Да - N~!Есть нажатие на кнопку 2?Да - N++;Нет - все пофиг;Есть нажатие на кнопку3?Да N--;Нет - все пофиг;...}

цикл {

АналогРайт(N)}

Ну вроде так. Смысл - чем больше раз нажмешь на кнопку - тем шире импульс ШИМ, ну и т.д. в обратную сторону...В реале - начинать наверное надо будет не с "1". А включение лучше повесить на какую-нибудь релюху и в проге использовать еще одну переменную...Дело не в коде, а в алгоритме

From: computer_2010-01-19 03:44 am (UTC)

Re: Мимо проходил...

(Link)

ну вот и я как то чувствовал, что это делается при помощи прерываний)спасибо!

From: _mebius_2010-01-19 05:00 am (UTC)

Re: Мимо проходил...

(Link)

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

ru-arduino.livejournal.com

ПИД алгоритм для управления DC двигателем - ruxisupport

Описание алгоритма¶

Управление DC двигателем осуществляется с помощью ПИД регулятора. Регулируемой величиной является координата. Для обеспечения возможности движения, сама регулируемая координата изменяется в соответствии с установленными настройками движения и поступившими командами. Изменяющуюся во времени регулируемую координату далее будем называть бегущей позицией. Управляющим сигналом регулятора является фактор заполнения ШИМ сигнала, подаваемого на обмотку двигателя. Формула для вычисления управляющего воздействия:

, где:

- управляющее воздействие

- разница между бегущей координатой и текущей координатой двигателя

- коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно. Коэффициенты регулятора задаются с помощью соответствующего меню программы XiLab или с помощью вызова функции set_pid_settings(), (см. раздел Руководство по программированию).

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

, где:

- фактор заполнения ШИМ

- номинальное(максимальное) напряжение питания двигателя, (см. раздел Ограничители на двигателях).

- текущее напряжение питания

- разрешение датчика обратной связи в отсчетах/оборот

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

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

Особенности работы алгоритма¶

Коэффициенты ПИД регулятора¶

Для того, чтобы оптимальные коэффициенты ПИД регулятора не выходили из диапазона [0..65535], задаваемые пользователем значения нормируются. Для лучшего понимания работы регулятора, рассмотрим какое влияние оказывают различные составляющие.Будем считать, что напряжение питания постоянно и равно номинальному напряжению мотора . При выполнении данного предположения фактор заполнения ШИМ сигнала будет равен 1 в следующих случаях:
  1. - если целевая позиция превышает реальную позицию на 256 оборотов ротора
  2. - если интеграл, приведенный в формуле выше, равен 52,5 оборотовсек
  3. - если реальная скорость вращения ротора отличается правильной скорости на 96000 об/мин.

Попадание в целевую позицию¶

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

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

Рекомендации по настройке ПИД регулятора¶

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

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

  1. Приступая к настройке ПИД регулятора рекомендуется отключить все ограничения работы DC двигателя, в том числе ускорение.
  2. Настройку регулятора лучше начинать с режима поддержания скорости.
  3. Настройку ПИД регулятора следует начинать с нулевых значений интегрального и дифференциального коэффициентов.
  4. Устанавливаем значение пропорционального коэффициента
  5. Устанавливаем требуемую скорость движения и начинаем движение вправо или влево вдали от концевых выключателей.
  6. Постепенно увеличиваем значение и наблюдаем за графиком текущей скорости. Таким образом получаем оптимальное значение при котором скорость движения поддерживается наилучшим образом и время выхода на неё перестаёт заметно уменьшаться с увеличением . При этом следует обращать внимание на возможный рост шума.
  7. После настройки значения стоит приступить к настройке значения . Интегральный коэффициент ПИД регулятора в большей степени влияет на процесс попадания в целевую позицию.
  8. Устанавливаем значение интегрального коэффициента и приступаем к движениям к позиции. Удобнее всего использовать команду смещения на заданное расстояние.
  9. Лучше всего, чтобы при движении к позиции двигатель успевал разогнаться хотя бы до 20% от требуемой скорости.
  10. Увеличение значения приводит к более быстрой остановке в целевой позиции.
  11. Постепенно увеличивая значение добиваемся быстрого попадания в целевую позицию. Увеличение коэффициента следует прекратить, когда заметно снизится качество попадания в позицию (переколебания, осцилляции) или вырастут шумы. При этом, проскок позиции будет наблюдаться всё равно.
  12. Для улучшения качества попадания в позицию понадобится изменение в большую или меньшую сторону в зависимости от того где переколебаний меньше.
  13. После подстройки стоит проверить качество поддержания постоянной скорости и уровень шумов. При неудовлетворительных показателях качества коэффициенты подстраиваются в направлении предыдущих значений.
  14. После настройки коэффициентов и можно приступить к настройке коэффициента .
  15. Настройку коэффициента лучше начинать в режиме поддержания скорости, проверяя затем остальные параметры качества.
  16. Коэффициент увеличивается пока заметно уменьшение колебаний скорости около требуемого значения.
  17. В случае наличия проскока позиции коэффициент увеличивают. Однако дальнейшее увеличение приводит к колебанием около целевой позиции. Необходимо соблюсти баланс между скоростью попадания и отсутствием колебаний.

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

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

Замечание. Не рекомендуется одновременно изменять более одного коэффициента при настройке ПИД регулятора.

ВАЖНО. Крайне не рекомендуется устанавливать сразу большие значения коэффициентов ПИД регулятора или резко их изменять. Это может привести к самовозбуждению колебаний скорости на вашем двигателе и привести к поломке.

ru.xisupport.com

ПИД алгоритм для управления DC двигателем - Standasupport

Описание алгоритма¶

Управление DC двигателем осуществляется с помощью ПИД регулятора. Регулируемой величиной является координата. Для обеспечения возможности движения, сама регулируемая координата изменяется в соответствии с установленными настройками движения и поступившими командами. Изменяющуюся во времени регулируемую координату далее будем называть бегущей позицией. Управляющим сигналом регулятора является фактор заполнения ШИМ сигнала, подаваемого на обмотку двигателя. Формула для вычисления управляющего воздействия:

, где:

- управляющее воздействие

- разница между бегущей координатой и текущей координатой двигателя

- коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно. Коэффициенты регулятора задаются с помощью соответствующего меню программы XiLab или с помощью вызова функции set_pid_settings(), (см. раздел Руководство по программированию).

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

, где:

- фактор заполнения ШИМ

- номинальное(максимальное) напряжение питания двигателя, (см. раздел Ограничители на двигателях).

- текущее напряжение питания

- разрешение датчика обратной связи в отсчетах/оборот

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

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

Особенности работы алгоритма¶

Коэффициенты ПИД регулятора¶

Для того, чтобы оптимальные коэффициенты ПИД регулятора не выходили из диапазона [0..65535], задаваемые пользователем значения нормируются. Для лучшего понимая работы регулятора, рассмотрим какое влияние оказывают различные составляющие.Будем считать, что напряжение питания постоянно и равно номинальному напряжению мотора . При выполнении данного предположения фактор заполнения ШИМ сигнала будет равен 1 в следующих случаях:
  1. - если целевая позиция превышает реальную позицию на 256 оборотов ротора
  2. - если интеграл, приведенный в формуле выше, равен 52,5 оборотовсек
  3. - если реальная скорость вращения ротора отличается правильной скорости на 96000 об/мин.

Попадание в целевую позицию¶

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

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

Рекомендации по настройке ПИД регулятора¶

  1. Приступая к настройке ПИД регулятора рекомендуется отключить все ограничения работы DC двигателя.
  2. Настройку регулятора лучше начинать с режима поддержания скорости.
  3. Настройку ПИД регулятора следует начинать с нулевых значений интегрального и дифференциального коэффициентов.
  4. Устанавливаем значение пропорционального коэффициента
  5. Устанавливаем требуемую скорость движения и начинаем движение вправо или влево.
  6. Постепенно увеличиваем значение и наблюдаем за графиком текущей скорости. Таким образом получаем оптимальное значение при котором скорость движения поддерживается наилучшим образом.
  7. После настройки значения Kp. Стоит приступить к настройке значения . Интегральный коэффициент ПИД регулятора в большей степени влияет на процесс попадания в целевую позицию.
  8. Устанавливаем значение интегрального коэффициента и приступаем к движениям к позиции. Удобнее всего использовать команду смещения на заданное расстояние.
  9. Лучше всего, чтобы при движении к позиции двигатель успевал разогнаться хотя бы до 20% от требуемой скорости.
  10. Увеличение значения приводит к более быстрому попаданию в целевую точку.
  11. Постепенно увеличивая значение добиваемся быстрого попадания в целевую позицию. Важно, чтобы при этом не возникало переколебаний около целевой позиции. Возможно, что для достижения оптимальных результатов понадобится уменьшение .
  12. Стоит проверить полученные коэффициенты в режиме поддержания постоянной скорости. В случае, если возникли существенные колебания скорости около требуемого значения рекомендуется немного уменьшить оба коэффициента до достижения приемлемого качества поддержания скорости. Данные действия могут замедлить попадание в целевую позицию, но помогут избежать вибраций и шумов во время движения.
  13. После настройки коэффициентов и можно приступить к настройке коэффициента .
  14. Настройку коэффициента лучше производить в режиме поддержания скорости.
  15. Постепенное увеличение значения коэффициента до определенного значения должно приводить к уменьшению колебаний скорости около требуемого значения. Увеличиваем значение для получения оптимального результата.
  16. Проверяем попадание целевую позицию. Если начали возникать колебания, то рекомендуется уменьшить значение дифференциального коэффициента .

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

Замечание. Не рекомендуется изменять более одного коэффициента при настройке ПИД регулятора.

ВАЖНО. Крайне не рекомендуется устанавливать сразу большие значения коэффициентов ПИД регулятора или резко их изменять. Это может привести к самовозбуждению колебаний скорости на вашем двигателе и привести к поломке.

ru.xisupport.com