ESP32 & stepper motor RS485/CAN

Пока искал сервомоторы с последовательной шиной, нашел интересные шаговые моторы, на которые установлены драйверы с обратной связью (с 14 бит энкодэрами). Драйверы кроме step/dir имеют интерфейсы на выбор: RS485/CAN. На борту самого драйвера процессор на Cortex-M4. Из описания можно до 3000RPM раскрутить. Поддерживается режимы: положения, скорости, крутящего момента.

И я подумал, что использование таких моторов сильно упростит задачу постройки балансирующего робота. Первую попытку я делал на шаговых моторах NEMA17. Но отсутствие энкодэров не давало информации о реальном положении в следствии пропуска шагов. Да и генерировать step с высокой частотой на два мотора тоже не легкая задача для esp32.

В связи с этим возник вопрос: Если подключить 2 мотора по CAN, реально добиться частоты обмена не менее 100 Гц? Если правильно прочитал, то CAN может работать с частотой до 1 МГц. С учетом того, что моторы имеют замкнутый контур, мне не потребуется считывать данные энкодэров. Достаточно отправлять задание скорости (4 байта данных) на два мотора.

Прикольный девайс. Однако ж шаговики не могут стартовать мгновенно с максимальными оборотами, в отличии от … Может и не стоит изобретать колесо?

Это понятно. ни какой мотор не может мгновенно стартовать. Всегда есть момент инерции. Если подать сразу большую скорость то шаговик начнет пропускать шаги. А если есть обратная связь, то он дошагает хоть и с небольшим запозданием. Там же энкодер имеется.

Да как раз и не хочется изобретать колесо. Проще использовать мотор с обратной связью. А CAN позволит исключить генерацию step на esp32.

Удавалось кому либо поднять CAN на 1 Мгц на esp32

При такой скорости шины я думаю легко уложиться в цикл 100 Гц.

SERVO42D RS485/CAN

Закал моторы с драйверами с обратной связью. Интерфейс CAN. Заказал CAN трансивер. Обещают через 2 недели привезти.

Посоветуйте проверенную библиотеку CAN для esp32.