Всем привет!
Возможно не сюда пишу, но что-то темы про робототехнику я не нашел, так что извиняйте
Впервые столкнулся с использованием драйвера мотора, поэтому не знаю всех тонкостей. Есть два мотора постоянного тока, ток потребления небольшой - 55 мА, при напряжении питания 12 В. Управляет драйвером STM32F103C8T6, в управлении ничего сложного нет. Но возник один вопрос - как правильно останавливать моторы? Я, так понимаю, нужно свести инерцию к минимуму, она там небольшая, но все же думаю присутствует. Так вот какой из режимов останова использовать Short brake или Stop, и в чем их принципиальное различие? В устройстве данные моторы должны вращаться по часовой стрелке и против в течении какого промежутка времени, для обоих режимов эти промежутки одинаковы Т.е., по идее, при повороте мотора по часовой стрелке на какой то угол в течении, например, 500 мс, при его повороте против часовой стрелки, он должен повернуться на тот же угол, за то же время, и вернуться в точку старта. Но Как показала практика, это не всегда так. При многократных поворотах мотора туда-сюда, накапливается ошибка, если можно так выразиться, т.е. по началу мотор возвращается в точку старта, но уже спустя 10 таких повторений видно, что положение шестеренок относительно старта смещается, и дальше больше. Возможно это связано с режимом останова двигателя, я использую просто режим Stop. Но возможно я принципиально что-то не так делаю. Дело в том, что в этом проекте я впервые решил использовать RTOS, решил, так сказать, посмотреть что это такое и с чем его едят
. Так вот время работы моторов я устанавливаю тупо через задержку - osDelay(isTimeWork), возможно это неправильно, но судя по осциллограммам, временные отрезки формируются точно. В общем надеюсь на Ваши советы.