Алгоритмы управления скоростью

Автомат, адаптивный автомат ... разум

Алгоритмы управления скоростью

Сообщение Radist » 22 июл 2009, 07:03

Хочу попробовать сделать обратную связь по скорости для робота с двумя ведущими колесами. Исходные данные:
- 2 сервы HS-311 (переделанные на непрерывное вращение)
- 2 колеса с наклеенным на поверхность черно-белым секторным диском
- 2 отражательных оптрона.
Перед созданием темы я прочитал про ШИМ все, что уже обсуждалось, а вопросы остались. И еще: я понимаю что такое ШИМ, с чем его едят и как его делать, ну и про то как работает энкодер я тоже представляю. Теперь перейдем к сути проблемы.
Я себе так представляю решение задачи управления скоростью: я знаю с какой частотой должны вращаться колеса (это моя уставка), если мне надо ехать точно прямо - то с одинаковой, если надо повернуть - то с разной, радиус поворота зависит от разности скоростей, но не меньше чем когда одно колесо - полный вперед, а второе стоит на месте (я не рассматриваю разворот на месте). Итак, я знаю с какой скоростью надо крутить каждое колесо, кроме того я знаю с какой скоростью в данный момент крутится каждое колесо. Мне надо сформировать ШИМ с такими параметрами, которые мне нужны. Вот тут и возникает вопрос: как связаны параметры ШИМ (частота и скважность) со скоростью? Использовать ли сверх низкочастотный ШИМ (подавать полное питание на не очень короткое время), но при этом робот будет двигаться рывками, хотя с этом случае становится все понятным: средняя скорость прямо пропорциональна скважности. Или же использовать высокочастотный ШИМ, выделять из него постоянную составляющую и питать ей H-мост сервы? Но как узнать, какому напряжению питания какая скорость соответствует? Можно конечно опытным путем, но хотелось бы способом проще, тем более что для разных условий одной скорости будут соответствовать разные напряжения, графиков зависимости скорости от напряжения питания я не нашел. Ну и третий способ регулирования скорости каждого колеса - это использование програмных регуляторов. То есть программа в каждом случае сама подбирает параметры ШИМ, пока уставка скорости не станет равна фактической скорости. Метод труден в реализации, скорость будет меняться достаточно медленно, она будет равна заданной с погрешностью. Итак, обобщу вопросы.
1. Какая частота ШИМ лучше для сервы, очень низкая или высокая? (на основе вашего опыта)
2. Каким методом лучше всего управлять скоростью?
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Алгоритмы управления скоростью

Сообщение =DeaD= » 22 июл 2009, 07:52

Special for you:
[[Перевод статьи "Просто о ПИД-алгоритмах"]]

Частоту ШИМ для серв лучше подсмотреть в проекте http://openservo.org/
.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритмы управления скоростью

Сообщение Radist » 22 июл 2009, 08:50

Спасибо. Жаль, что придется ПИДом заниматься, много экспериментов понадобится. А частоту ШИМа для серв по ссылке не нашел. Там вроде просто в серве заменили начинку, а принцип оставили. Но я склоняюсь к мысли, что нужен именно ВЧ ШИМ с подачей его на питание моста. Мост включаем чтобы ехать в нужную сторону, а скорость управляем напряжением.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Алгоритмы управления скоростью

Сообщение =DeaD= » 22 июл 2009, 09:01

2Radist: Как это не нашли? Там же у них весь исходный код прошивок выложен - из него то 100% можно выцепить частоту ШИМ, но конечно не факт, что это будет за полминуты :) зато 100% рабочее будет.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритмы управления скоростью

Сообщение avr123.nm.ru » 22 июл 2009, 09:11

Radist писал(а):как связаны параметры ШИМ (частота и скважность) со скоростью?

Сложно. Так как и нагрузка меняется.

Советую сделать приводы как servo - т.е. вы наних подаете команду с какой скоростью крутить, а в них уже встроена ОС по энкодерам например которая позволяет им правильно выполнить вашу команду. пример servo ривода с энкодерами РАБОТАЮЩИЕ реально - это апноут микрочип AN696 и он есть в примерах PROTEUS - можно на ПК помоделировать и понять что там и как. Команды принимает по обычному UART. Код на Си так что принцип можно переложить на любой МК.

Добавлено спустя 1 минуту 41 секунду:
Radist писал(а):Спасибо. Жаль, что придется ПИДом заниматься, много экспериментов понадобится.

Да вряд ли вам сильно заморачиваться придется.

Radist писал(а): А частоту ШИМа для серв по ссылке не нашел.

В исходниках наверно.

Radist писал(а): Там вроде просто в серве заменили начинку, а принцип оставили.

Похожу документации вы совсем не понимаете.

Долго придется ...
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва


Вернуться в Алгоритмы

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

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