Здравствуйте.
Сделал я балансирующего робота:
Вернее, делаю.
В сравнении с моим первым механизмом он, конечно, живчик.
Но в сравнении с этим
Мой - просто увалень.
Аппаратная часть взята почти полностью здесь. Моторы только поменьше (дешевле в два раза ), да контроллер из того, что было (ATmega8A).
Программу пытаюсь сбацать сам. Взял из оригинала то, что позволили знания С+ (почти нулевые).
На этом форуме были аналогичные темы, но там я не нашёл ответа на свои вопросы.
Да и вообще нигде не нашёл. В рунете практически тишина. За бугром - языками не владеем.
Собственно вопрос: какой должен быть алгоритм управления?
Не в смысле удержания в вертикальном положении, а в смысле управления движением.
Сейчас алгоритм того, что на первом видео такой:
Зелёным - то, что держит его в вертикальном положении. Тут всё достаточно просто, понятно, предсказуемо. Просто ПИД регулятор.
Все реакции на изменения коэффициентов соответствуют ожидаемым. Стоит себе, покачиваясь, на горизонтальной (примерно) поверхности.
И катится, разгоняясь, по наклонной. Разогнавшись до максимума (своего) падает. Всё как положено. В точке А подключается собственно управление.
А вот с нижней, красной петлёй обратной связи всё сложнее.
Понимаю, что нужно управлять "нужным углом". Т.е. "наклонять" его, скажем так, внутреннюю вертикаль, чтобы он ехал в нужном направлении.
Но вот как управлять? Алгоритм? Свой крутил/вертел... Коэффициенты менял... Составляющие ПИД2 подключал/отключал... Хуже делается. Лучшее - на первом видео.
Ужель всё дело в тонких настройках коэффициентов? Или таки алгоритм не совсем "правильный"?
Подглядел кое что тут.
Тут ребята сами с собой поговорили. Высшая математика.
Мне бы "на пальцах"... Понять бы физику/математику процесса. А реализовать - дело техники, что ASM что C, да что угодно.
Склоняюсь уже к тому, что в моём варианте недостаточная "энерговооружённость".
Моторы поменьше (послабее), да и токи на моторах я ограничил до 150ма на каждом, чтобы батареек мал мал хватало.