Comments 24
Добро пожаловать в мир ТАУ, тут интересно. :)
Ключевое слово тут — модель и моделирование. Такие задачки как раз удобно решать на модели в симуляции, а потом, когда все отлажено, генерить готовый код для прошивки. Только контроллер должен быть реал-таймовый, а с Ардуино могут быть проблемы в этом месте.
Реал-таймовый контроллер — это тот, который способен выполнять управляющую программу в режиме жесткого реального времени. Если Ардуино так может -то пожалуйста.
Но судя по программе от автора, где производится пересчет от предыдущего времени запуска, функция loop() вызывается не-периодически и вообще непонятно с каким интервалом, а следовательно такая система не соответствует требованиям реал-тайма, так как время отклика данной системы ничем не ограничено, а джиттер огромен.
Чтобы сделать ее реалтаймовой надо бы:
- функция loop должна вызываться по прерыванию таймера или с определенной частотой и гарантированно выполняться за время до следующего прерывания.
- период вызова должен быть выбран таким, чтобы удовлетворял критерию устойчивости и регулируемости системы (чем меньше, тем лучше, ограничение в производительности процессора и I/O)
- все функции, которые могут привести к не детерменируемому времени исполнения функции, должны быть убраны из этого кода (например printы)
- все второстепенные функции должны иметь меньший приоритет, чем вызов управляющей функции и не прерывать ее исполнение.
- Если функция loop не выполняется за указанное время, ватчдог должен сбрасывать контроллер и приводить систему в устойчивое состояние — это отказ.
Применив этот подход, вам будет:
а) легче писать и отлаживать программы для управления такими вещами, и они станут соответствовать моделям (так как модели обычно моделируются с фиксированным шагом симуляции, и у автора, вроде тоже)
б) в железе все начнет работать гораздо лучше, вы сможете повысить частоту работы контроллера, а следовательно сделать его более устойчивым, уменьшить время реакции.
Если парадигма программирования Arduino так не позволяет сделать — то вот вам и проблема.
кто хочет сделать свой обратный маятник.
А можно узнать, зачем хотеть его делать? Честно, интересно.
Я пока вижу два варианта:
1. Игрушка (как на видео)
2. «сегвей».
Или есть еще что-то?
Я бы посмотрел в учебники типа "Автоматизированный электропривод типовых производственных механизмов и технологических комплексов", там и без обратной связи есть автоматизированные схемы управления и уравнения двигателей разнообразных.
Спасибо за статью!
p.s. я тут новенький, кто-нибудь подскажет можно ли вставлять tex-формулы в комментарий?

Здравствуйте, кажется, у Вас в первом уравнении ошибка. Там перед g должен быть минус. Вероятно, опечатка, так как в следующей ниже системе всё записано верно.
Спасибо, за интересную статью!
В образовательных целях решили воссоздать со студентами вашу установку. Просьба подсказать, какие были характеристики мотора (rpm, мощность). Также прошу подсказать нам, какие взять рельсы и каретку. Очень помогли бы несколько фото установки, чтобы понять схему. Можно только вид сзади. Также прошу подсказать модели используемого оборудования. Спасибо за статью, полезный и познавательный материал.
Все, что вы хотели знать об обратном маятнике