Пока искал сервомоторы с последовательной шиной, нашел интересные шаговые моторы, на которые установлены драйверы с обратной связью (с 14 бит энкодэрами). Драйверы кроме step/dir имеют интерфейсы на выбор: RS485/CAN. На борту самого драйвера процессор на Cortex-M4. Из описания можно до 3000RPM раскрутить. Поддерживается режимы: положения, скорости, крутящего момента.
И я подумал, что использование таких моторов сильно упростит задачу постройки балансирующего робота. Первую попытку я делал на шаговых моторах NEMA17. Но отсутствие энкодэров не давало информации о реальном положении в следствии пропуска шагов. Да и генерировать step с высокой частотой на два мотора тоже не легкая задача для esp32.
В связи с этим возник вопрос: Если подключить 2 мотора по CAN, реально добиться частоты обмена не менее 100 Гц? Если правильно прочитал, то CAN может работать с частотой до 1 МГц. С учетом того, что моторы имеют замкнутый контур, мне не потребуется считывать данные энкодэров. Достаточно отправлять задание скорости (4 байта данных) на два мотора.


