roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 май 2025, 10:29

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: ПИД (на ПИКе)
СообщениеДобавлено: 29 мар 2011, 22:37 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Начал разбираться с ПИДом, и что-то уперся сам не пойму во что. Объясните логику, плз.

Имеем - движок с энкодером, энкодер считает количество фронтов в одинаковый промежуток времени (actual). Мы задаем количество фронтов, которые надо крутить (target). Алгоритм сравнивает target vs actual, получаем ошибку (error). Если error положительная, то имеем недолет по оборотам, алгоритм задает некий положительный ШИМ, который по идее должен раскрутить движок, чтобы достичть желаемых оборотов (target). ЧТо происходит, когда у нас перелет (error < 0)??? Отключаем ШИМ, чтобы движок сам притормозил до нужных оборотов?

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

Добавлено спустя 2 минуты 14 секунд:
Хм, только что дошло, что у меня движок малоинерционный, и он скорее похож не на мотор с редуктором из статьи из вики о ПИДах, а скорее на систему точного позиционирования. ВОт у меня его и качает тудыть-растудыть...

Добавлено спустя 3 минуты 14 секунд:
Вот так выглядит раскачка, причем идет она ниже target-уровня. И чем меньше p-коэффициент, тем сильнее отклонение от target.


Вложения:
PID.png
PID.png [ 106.83 КиБ | Просмотров: 3224 ]

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 29 мар 2011, 22:38 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
эхх, как бы я был рад, еслиб у всех стоял матлаб с симулинком..

разница между заданием и ОС подается на регулятор, тот в свою очередь обязан сделать все, чтобы она была равна нулю..

регулятор можно настроить по разному.. если есть перелеты - значит есть перерегулирование...

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

мой слегка сонный моск такое вот сумбурное объяснение родил..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 29 мар 2011, 22:55 
Не в сети
Аватара пользователя

Зарегистрирован: 23 апр 2009, 17:03
Сообщения: 2639
Откуда: Москва, Самара
прог. языки: C#
По идее настраивать надо постоянно.
В процессе работы батарея садится,
напряжение просело.
И то что раньше работало хорошо,
пойдет вразнос.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 29 мар 2011, 23:00 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Duhas писал(а):
обычно система настраивается так, что при близком подходе регулятор уже дает на разогнанный двигатель отрицательное напряжение, и тормозит его.

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

Добавлено спустя 59 секунд:
AndreiSk писал(а):
По идее настраивать надо постоянно.
До этого мне еще ой как нескоро... Тут пока в лабораторных условиях движок до потолка скачет...

Добавлено спустя 56 секунд:
Duhas писал(а):
эхх, как бы я был рад, еслиб у всех стоял матлаб с симулинком..

На картинке график из экселя.... Матлаб в руках уже лет 12-ть не держал.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 29 мар 2011, 23:07 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
конечно активно.. все просто, пишите регулятор чтобы он мог давать как положительное так и отрицательное задание на двигатель.. для начала просто П регулятор... потом И добавить..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:21 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Никак все-таки не пойму, что происходит, смотрите:

target = 40 (коеффициент только пропорциональный)

actual error P CCPRxL
.054, -014, -030, 030
.056, -016, -033, 033
.054, -014, -030, 030
.056, -016, -033, 033
.054, -014, -030, 030
.056, -016, -033, 033
.054, -014, -030, 030
.056, -016, -033, 033
.054, -014, -030, 030
.056, -016, -033, 033

Ну и вот так оно пляшет вокруг 55. Почему вокруг 55 - не пойму. По идее, если я неправильно направление движка задаю, оно долно улетать к границе регулирования, если правильно - то плясать должно вокруг target.... Бред какой-то.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:28 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
ну в таких разрешениях ничего наверно особо и не нарегулируется.... код регулятора бы еще ...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:37 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Duhas писал(а):
ну в таких разрешениях ничего наверно особо и не нарегулируется.... код регулятора бы еще ...

да прям из вики скопировал, только double поменял на int....

Код:
signed int UpdatePID(SPid * pid, signed int error, signed int position)
{
  signed int pTerm, dTerm, iTerm, Term;

  pTerm = (pid->pGain * error);    // calculate the proportional term
  pid->iState += error;          // calculate the integral state with appropriate limiting

  if (pid->iState > pid->iMax)
      pid->iState = pid->iMax;     
  else if (pid->iState < pid->iMin)
      pid->iState = pid->iMin;
  iTerm = pid->iGain * pid->iState;    // calculate the integral term
  dTerm = pid->dGain * (position - pid->dState);
  pid->dState = position;
  return (pTerm);
}

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:41 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
чес слова муть для меня какая-то

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:44 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
для меня тоже :-(((

Добавлено спустя 2 минуты:
Но смотри, я использую только P-cjcтавляющую, т.е. функция тупо возвращает ошибку помноженную на коэффициент и я результат тупо пихаю в CCPRxL (дьюти ШИМа). Т.е. чем больше ошибка, тем сильнее должны шимить. Если знак ошибки поменялся - изменили направление шима. Господи, блуждать-то не где, я четвертый час бьюсь. Ей-ей дерево.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 00:48 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
предлагаю свернуть в трубочку и раскурить... у них описано все адекватно.. если с английским все плохо завтра могет найду лекции по тау...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 01:00 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
с английским все значительно лучше чем со всем остальным вместе взятым :P

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 09:54 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
dccharacter писал(а):
Начал разбираться с ПИДом, и что-то уперся сам не пойму во что. Объясните логику, плз.


www.PIDcontrol.narod.ru там и логика кратко и примеры с кодом и моделированием.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 11:21 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
avr123.nm.ru писал(а):

avr123, за что тебя еще очень люблю, так это за тонкое чувство цвета, кегля и стиля :-)))
:beer:

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПИД (на ПИКе)
СообщениеДобавлено: 30 мар 2011, 12:06 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Ща без кегля никуда ! :)

_________________
Читайте !


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO