О точности шаговых двигателей

Судя по статьям по настройке 3d принтеров и драйверов, у людей плотно засели мифы, касающиеся микрошагового режима шагового двигателя. Все смело предполагают, что дискретность перемещений и некое эфемерное понятие «точности» позиционирования пропорционально растут дроблению шага. В общем, попытаемся опровергнуть или подтвердить этот миф. Для этого я взял поверенный энкодер на 80000 импульсов на оборот, устройство индикации к нему и соорудил небольшой стенд.

О точности шаговых двигателей

Двигатель установил наиболее распространенный, FL42STH47-1684A. Постараюсь ввязаться в неблагодарную битву за правду и развеять миф о микрошаговом режиме. Первый драйвер возьмем SMD-1.8 - простой промышленный драйвер, на основе DRV8825. Режим дробления 1/16. К сожалению контроллер, поставляемый к энкодеру, не может снимать данные «на лету», поэтому пока попробуем снять данные в режиме удержания позиции, то есть последовательность следующая шаг-остановка-снятие данных-следующий шаг. Полученные данные свел в таблицу. На таблице слева показана разность между действительным положением ротора и номинальным, накопленная погрешность шага не учитывается. На таблице справа – ошибка приращения.

О точности шаговых двигателей 2

Максимальная погрешность получилась 0,19 градуса, то есть дробление выше 1/8 не дает увеличения точности позиционирования, по крайней мере на DRV8825. Также мы видим, что есть некоторое количество точек, которое выпадает из общей картины – это либо дефект на роторе, либо баг, с этим разберусь на следующих выходных. Предвижу войну в комментариях на тему того, что нужно пробовать на других драйверах – в планах снять графики на популярных драйверах и разных режимах дробления. В идеале, написать свой контроллер, чтобы можно было измерять положение ротора не только в статике, но и в динамике.