roboforum.ru

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

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




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

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

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


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

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

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


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

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
А у тебя какая-то болтанка странная с частотой f_cycle/2 - откуда берется, непонятно. А если без регулятора, с фиксированным ШИМ крутить - она есть на показаниях скорости или нету? Если есть, надо искать откуда, если нету - наверное регулятор возбуждается, причем не из-за интеграла, а из-за задержки в цикле. Уменьшать П и Д или увеличивать частоту цикла регулирования.


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

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
boez писал(а):
А у тебя какая-то болтанка странная с частотой f_cycle/2 - откуда берется, непонятно. А если без регулятора, с фиксированным ШИМ крутить - она есть на показаниях скорости или нету? Если есть, надо искать откуда, если нету - наверное регулятор возбуждается, причем не из-за интеграла, а из-за задержки в цикле. Уменьшать П и Д или увеличивать частоту цикла регулирования.

Так, про болтанку. У меня ПИд вызывается каждый раз при переполнении регистра таймера. В этот же момент я фиксирую значение енкодера и вывожу его в консоль. Из значений в консоли строю график в екселе. Т.е. у меня каждое новое значение получается не через f_cycle/2, а с частотой, собственно, обновления.

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

Можно увеличивать частоту, но, соответственно падает число тиков, которые успевает энкодер натикать за период обновления. Можно движок взять побольше - поинертнее.

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


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

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
dccharacter писал(а):
Почему колебания. Потому что движок абсолютно неинертный. Соответственно при недолете мы ШИМим - и за время до следующего обновления движок успевает сильно перелететь, проверяем - ошибка отрицательная, ставим ШИМ в ноль (даже не в обратную сторону!!!! просто в ноль) - и он успевает оттормозиться.
Можно увеличивать частоту, но, соответственно падает число тиков, которые успевает энкодер натикать за период обновления. Можно движок взять побольше - поинертнее.

Ааа, ну тогда полюбому надо частоту регулятора повышать. Пусть будет меньше тиков, но управление станет плавнее. По крайней мере попробовать стоит. Дело в том, что регулятору можно давать задание в нецелых тиках :) Щас попробую объяснить на пальцах. Вот у нас сейчас пусть частота регулирования 30 Гц, задание 57 тиков и скорость тоже 57 тиков. А теперь берем и увеличиваем частоту в 10 раз, до 300 Гц, и число с энкодера перед подачей на регулятор умножаем тоже на 10. За 1/30 секунды энкодер даст 57 тиков, которые раскидаются по циклам 1/300 секунды как 6-6-5-6-6-5-6-6-5-6 или подобным образом. На регулятор в качестве ОС будет подано 7 раз 60 и 3 раза 50. Интеграл 7 раз получит приращение ki*(57-60), в целом -ki*21, а 3 раза ki*(57-50), в целом ki*21. Т.е. за 10 циклов вернется в свое исходное состояние. Пропорционал тоже выдаст 3 раза 7*kp и 7 раз -3*kp на мотор, который массой ротора успешно это усреднит в 0. Дифференциалу от такой скачки будет немного хреновато, но в принципе там на нем фильтр есть, ну а среднее у него тоже будет 0. Таким образом, получаем, что дискретность по скорости не ухудшилась, регулятор как держал 57 тиков за 1/30 сек, так и держит, а скорость отработки возмущений возросла в 10 раз. То есть если с энкодера пришло вдруг 7 тиков - ШИМ уменьшится уже в следующую 1/300 секунды, система не будет дожидаться пока пройдет 1/30 и натикает 70 с лишним тиков.

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

Как минимум - попробуй так сделать и посмотри что получится.


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

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

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


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

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
dccharacter писал(а):
Ощутимо лучше работает, но сужу я об этом только по осциллографу. Так загрузил ПИД мой камень, что байт отослать некогда. А ведь там должно будет ДВА пида крутиться + UART + i2c... Нестыковочка...

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

У меня конкретно этот пид крутился на атмеге 16 МГц совершенно ненапряжно в цикле 1 мс. Причем он там был не один, еще кучка кода была. Параллельно шел обмен с четырьмя слейвами по RS485/RS422, причем с одним по одному протоколу и на 115200, а с тремя другими - по другому и на 19200 :) Полный круг опроса порядка 15 мс. И еще сидел двухканальный ЦАП на SPI, на который собсно шел выход этого пида, там Lenze висели мелкие с асинхронными моторчиками по полкиловатта, и держал этот пид даже не скорость, а фазу вращающегося девайса.


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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь roboforum.ru
СообщениеДобавлено: 10 апр 2011, 19:27 
Не в сети
Аватара пользователя

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

На вот тебе скриншот, посмейся:


Вложения:
orfa.png
orfa.png [ 100.1 КиБ | Просмотров: 2503 ]

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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
(Ща ПИД отделю)

А что, у тебя где ПИД - на МК? Или на ПК?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь roboforum.ru
СообщениеДобавлено: 10 апр 2011, 19:44 
Не в сети
Аватара пользователя

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

А что, у тебя где ПИД - на МК? Или на ПК?

на МК, был бы на ПК - вообще проблем никаких. А с МК я до сих пор не пойму как снять отладочную информацию... То слишком быстро цифры мелькают, то слишком медленно :lol:

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


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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Перенес. А сейчас какая частота выдачи отладки, частота вызова регулятора и частота срабатываний энкодера?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


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

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

вызов регулятора - 32Гц
Частота срабатываний энкодера - 64 грани, при максимальном напряжении и максимальном ШИМе частота следования граней 3,3кГц.
Выдача отладки с частотой вызова регулятора.

Что-то я сам себе вилы построил - загнал себя в протокол установки/запроса одного байта, соответственно инт-переменные передаются двумя запросами. и че-то как-то это совсем некошерно получается. с другой стороны если перейти на два байта, то все переменные надо для простоты перевести в инт...

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


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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А чего у тебя слишком быстро мелькает? Закинь в лог файл, и построй графики. Или так проанализируй.
Ты на ходу что-ли пытаешься понять, чего там мельтешит? :shock:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


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

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

)))))) если честно - да :lol:

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


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 0


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

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