![]() |
roboforum.ruТехнический форум по робототехнике. |
|
boez писал(а):А у тебя какая-то болтанка странная с частотой f_cycle/2 - откуда берется, непонятно. А если без регулятора, с фиксированным ШИМ крутить - она есть на показаниях скорости или нету? Если есть, надо искать откуда, если нету - наверное регулятор возбуждается, причем не из-за интеграла, а из-за задержки в цикле. Уменьшать П и Д или увеличивать частоту цикла регулирования.
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 с лишним тиков.dccharacter писал(а):Ощутимо лучше работает, но сужу я об этом только по осциллографу. Так загрузил ПИД мой камень, что байт отослать некогда. А ведь там должно будет ДВА пида крутиться + UART + i2c... Нестыковочка...
Для начала Д составляющую обнули, если сильно хуже не станет - выкидывай нафиг соответствующий код, процентов 50 сэкономишь. А что конкретно за проц? Неужели сильно слабее аврки?
Полный круг опроса порядка 15 мс. И еще сидел двухканальный ЦАП на SPI, на который собсно шел выход этого пида, там Lenze висели мелкие с асинхронными моторчиками по полкиловатта, и держал этот пид даже не скорость, а фазу вращающегося девайса.
))
=DeaD= писал(а):(Ща ПИД отделю)
А что, у тебя где ПИД - на МК? Или на ПК?

=DeaD= писал(а):Перенес. А сейчас какая частота выдачи отладки, частота вызова регулятора и частота срабатываний энкодера?

=DeaD= писал(а):А чего у тебя слишком быстро мелькает? Закинь в лог файл, и построй графики. Или так проанализируй.
Ты на ходу что-ли пытаешься понять, чего там мельтешит?

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