Как достигается степпинг с чрезвычайно высоким разрешением?

Этот вопрос относится к этому видео, а также к этому видео того же человека, демонстрирующего свои результаты с помощью шагового двигателя (наряду с действительно изящным методом тестирования, включающим лазерное пятно на стене в нескольких метрах!).

Как он добился такого шага с высоким разрешением с шагом <0,04° (с задержкой в ​​1 секунду на каждом шаге) на стандартном безредукторном шаговом двигателе с шагом 1,8°?

Человек утверждает, что использует «синусоидальные шаблоны» с функцией аналоговой записи Arduino.

Я знаком с микрошагом, но:

  • как это сделать в эскизе Arduino и без какого-либо оборудования, такого как DRV8825 или L6470?

  • и как он может удерживать позицию так определенно и точно, что то, о чем обычно предупреждают статьи о микрошаге, не совсем гарантировано?

(Очевидно, что здесь нет четкого способа измерить точность и правильность с ограниченной информацией, предоставленной видео. Однако, аппроксимируя плоскую поверхность стены как часть круга с центром на шаговом двигателе, мы можем видеть, что есть очень тонкие ступени, образованные лазерное пятно, а также довольно небольшое отклонение между ожидаемым и наблюдаемым углом для каждого шага, особенно во втором видео, на которое я ссылаюсь.)

Это невозможно, работает с зеркалом и лазерным указателем, но не с заряженным мотором.
Это просто свет, проходящий по краю линейки. Как вы можете говорить, что он не использует DRV8825 или любую другую технологию, которая может оказаться под рукой?
@Andyaka: В основном основывался на очень ограниченном тексте описания под своим 1-м видео; но не полностью исключаю это - я все еще, по крайней мере, заинтересован в изучении моего второго вопроса выше.
@MarkoBuršič: Но даже ненагруженный степпер будет иметь собственное внутреннее трение и т. д., что, исходя из того, что я читал, предотвратило бы такую ​​​​производительность - я не говорю, что эта демонстрация волшебна или что-то в этом роде, но она действительно противоречит тому, что кажется чтобы быть брошенным относительно микрошага, поэтому я пытаюсь решить это.
Если вы действительно хотите оценить угловую точность, обратите внимание на лазерные трекеры Leica. Но лучше бы не их цена...
@PlasmaHH: Феноменально! Судя по всему, их AT401/402 могут достигать разрешения около 0,07 угловых секунд на расстоянии 160 м.
Это далеко за пределами любой области, где у меня есть опыт. Но я не понимаю, в чем тут дело. Если вы полностью контролируете ток с помощью 10- или 12-битного ЦАП, вы можете настроить магнитное поле двигателя очень маленькими шагами. Трение ротора должно быть довольно низким. Я не понимаю, почему это может быть проблемой. Вероятно, вы могли бы сделать то же самое с шпиндельным двигателем жесткого диска или приводным двигателем RC.
@sasha Это действительно работает, никаких правил не нарушается, крутящий момент в двенадцати полных шагах снижается до нескольких процентов, чего все еще достаточно, чтобы компенсировать трение почти на нулевой скорости, как только вы загружаете, у вас есть люфт до ближайшего полного шага.
@sasha: ну, это то, что вам нужно расположить части а380 в субмилкиметровых диапазонах друг к другу

Ответы (2)

Если вы посмотрите комментарии к видео, вы увидите, что он использует микрошаг. Он прямо заявляет, что управляет шаговым двигателем с помощью синусоидальных волн. Самый простой способ сделать это — использовать выходы ШИМ для управления амплитудой двух драйверов шаговых двигателей.

Начнем с того, что 1,8 градуса, деленные на 0,04 градуса, составляют ~45, а поскольку для завершения цикла стандартной шаговой квадратурной волны требуется 4 шага, это означает разрешение микрошагов 4 x 45, или 180 микрошагов за цикл. На самом деле, довольно ясно, что он использует номинальные 64 микрошага.

Если n — количество шагов на оборот возбуждения (то есть микрошагов на каждые 4 номинальных шага), пусть n = от 0 до 255. Для каждого последующего n найдите угол шага A = 360/n. Затем найдите

Икс "=" 127 грех ( А ) + 128
и
Д "=" 127 потому что ( А ) + 128
и используйте функцию AnalogWrite для создания ШИМ-версий этих величин. Применительно к управляющим входам стандартных шаговых двигателей с шагом 1,8 градуса вы получите номинальный размер шага
С "=" 4 × 1,8 256 "=" 0,028 градусов

Также обратите внимание, что если вы внимательно посмотрите на видео, расстояние между шагами не является постоянным, и этого следует ожидать.

Поскольку используемое зеркало представляет очень маленькую механическую нагрузку, микрошаг имеет некоторую меру точности позиционирования. Когда двигатель загружен, это не выдерживает.

L6470 имеет 128-й шаг микрошага, что составляет около 1,8/128 = 0,014 град/шаг. Существуют библиотеки Arduino для управления этим чипом.

Редактировать: поведение AnalogOut: микрошаг просто аппроксимирует дробный ток или напряжение, разбивая входящий сигнал. Он может просто использовать пару ЦАПов и усилитель вместо микрошагового драйвера. Сам никогда этим не занимался, но не вижу причин, по которым это не сработает.