Как изменить микрошаг драйвера

При замене драйверов необходимо выставлять правильное опорное напряжение, оно же Vref. Драйверы шаговых двигателей — это небольшие чипы, отвечающие за...

При замене драйверов необходимо выставлять правильное опорное напряжение, оно же Vref. Драйверы шаговых двигателей — это небольшие чипы, отвечающие за управление приводами на 3D-принтерах, лазерных граверах и других станках с ЧПУ. По сути, они контролируют подачу тока на двигатели.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

A4988, TMC2208 и TMC2209 — распространенные драйверы, устанавливаемые на сменные модули или распаянные непосредственно на платах управления. Сменные модули разнятся от производителя к производителю, но, как правило, имеют схожую форму и совместимую распиновку. Отдельно отметим, что ряд управляющих плат поддерживает программное управление током, для них эта статья неприменима.

В этой статье мы разберемся шаг за шагом с расчетом важной настройки в шаговых двигателях — опорного напряжения или Vref. Инструкции затронут широко распространенные драйверы A4988, а также более продвинутые TMC2208 и TMC2209.

Что такое Vref

Vref означает «опорное напряжение» и измеряется в вольтах. На практике Vref определяет максимальный ток двигателя, точная настройка этого параметра важна для обеспечения правильного функционирования и длительной эксплуатации как драйверов, так и моторов.

У каждого шагового двигателя есть оптимальный диапазон тока. Слишком низкое значение может привести к пропуску шагов и возникновению дефектов в виде сдвига слоёв или пропусков подачи (для экструдера). С другой стороны, слишком высокое может привести к перегреву драйверов, это тоже приводит к пропуску шагов; также превышение допустимого тока может вывести из строя двигатель.

Что понадобится

Чтобы рассчитать правильное значение Vref для конкретного драйвера, первым делом необходимо выяснить значение номинального тока двигателей. Эта информация обычно предоставляется производителем, хотя для некоторых двигателей ее может быть сложно найти.

Сообщество RepRap поддерживает детализированную базу данных по наиболее распространенным двигателям NEMA 17. Здесь можно найти необходимую информацию по маркировке на корпусе мотора. В качестве примера мы будем использовать NEMA 17 42SHDC3025-24B, согласно базе данных рассчитанный на ток силой 0,9 A.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Для настройки значения Vref непосредственно на плате потребуются насколько инструментов:

    • цифровой мультиметр;

    • материнская плата 3D-принтера или ЧПУ-станка с источником питания;

    • пластиковая или керамическая отвертка, обычно на 1,5 мм.

Драйверы A4988

A4988 — один из наиболее распространенных типов драйверов в настольном оборудовании, включая 3D-принтеры. Эти чипы разработаны компанией Allegro MicroSystems и пользуются популярностью ввиду дешевизны.

Как рассчитать Vref

Опорное напряжение рассчитывается по простой формуле:

Vref = I x 8 x Rsense

I — это номинальный ток мотора, а Rsense означает сопротивление токоизмерительного резистора. Rsense — постоянное значение, которое можно определить по маркировке на плате.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Сопротивление токоизмерительных резисторов варьируется от производителя к производителю, обычно в пределах 0,05-0.2 Ом. Найдите два резистора, как показано на иллюстрации выше. В нашем случае это резисторы R100 с сопротивлением 0,1 Ом.

Хотя мы будем использовать шаговый двигатель с номинальным током 0,9 A, выставлять максимальное значение не следует. Желательно понизить силу тока хотя бы на 10%, что в нашем случае означает примерно 0,8 А.

Считаем:

Vref = 0,81 х 8 х 0,1 = 0,64 В

Как настроить Vref с помощью потенциометра

Значение Vref мы рассчитали, осталось выставить его на драйвере. Платы драйверов A4988 оснащаются потенциометрами специально для этой цели.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Как это делается:

   1. Установите драйвер на плату контроллера, не подключая питание. Если вы имеете дело с Ramps 1.4, не забудьте заодно подсоединить Arduino Mega.

    2. Подайте питание на плату через VDD и GND, но не USB.

    3. Выставите на мультиметре напряжение постоянного тока и правильную шкалу — в районе 2 В.

    4. Коснитесь черным щупом GND, как показано на иллюстрации выше.

    5. Красным щупом осторожно коснитесь потенциометра драйвера, чтобы измерить Vref.

Будьте аккуратны при работе с красным щупом: касание не в том месте потенциально может закоротить драйвер или контроллер.

Настройка тока драйверов осуществляется при отключенных моторах.

Теперь мы знаем текущее значение Vref и можем подогнать его под рассчитанное ранее с помощью отвертки. Это операцию может потребоваться провести несколько раз, внося изменения и проверяя результаты, пока не будет получено необходимое значение.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

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

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

Повторите операцию, пока не получите значение, максимально близкое к расчетному. Имейте в виду, что выставить абсолютно точное значение может быть трудной задачей, но чем ближе, тем лучше.

Дальше остается только проделать то же самое с остальными драйверами.

Драйверы TMC2208 и 2209

Драйверы с обозначениями TMC разработаны компанией Trinamic Motion Control. TMC2208 и TMC2209 — очень тихие варианты, поддерживающие дробление шагов до 1:256. Будучи современными драйверами они могут функционировать как самостоятельно, так и в режиме UART.

В режиме UART ток двигателя можно настроить через прошивку, а в самостоятельном режиме изменения необходимо вносить вручную. Процесс довольно схож с настройкой драйверов A4988.

Как рассчитать Vref

Процедура расчета Vref одинакова для TMC2208 и TMC2209. Формула выглядит вот так:

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Irms — среднее квадратичное значение тока, а Rsense — сопротивление токоизмерительного резистора.

Значение Rsense можно выяснить по маркировке, точно так же как с A4988, только на этот раз ищите резисторы на нижней стороне платы. Чтобы рассчитать Irms просто поделите ток шагового двигателя на 1.4 (квадратный корень из двух).

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Для иллюстрации процесса давайте рассчитаем Vref драйвера TMC2209 от BigTreeTech в связке с шаговым двигателем на 0,9 А. Имейте в виду, что максимальное значение тока для TMC2208 не должно превышать 1,2 A.

Rsense для этого драйвера — 0,11 Ом, так как используются резисторы R110. В нашей формуле используются миллиомы, так что берем 110 мОм. Ради безопасности силу тока вновь снижаем примерно на 10% от максимальной и получаем 0,8 А.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Дальше считаем по формуле и получаем значение Vref равное 0,8 В.

Как настроить Vref с помощью потенциометра

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Ручная настройка Vref для TMC2208 и TMC2209 выполняется таким же образом, как для A4988, с той лишь разницей, что красным щупом необходимо замерять в другом месте. Где щупать — показано на иллюстрации выше, на всякий случай все же сначала проверьте документацию от производителя.

Как настроить драйверы шаговых двигателей: рассчитываем Vref

Все остальные шаги и рекомендации по настройке Vref на TMC2208 и TMC2209 точно такие же, как для A4988.

Перевод статьи Vref Calculator: How to Tune Your Stepper Driver. Оригинал размещен на сайте All3DP по этой ссылке. 

#1

OFFLINE
 

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 26 Январь 2014 — 18:44

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

Определние на какой микрошаг настроен драйвер шагового мотора для чайников.
Откройте блок блок управления и найдите место,
где в нём установлены коробочки примерно такого вида:
LinuxCNC.Stepconf.Front-Side_Plane.jpg

Число коробочек и число осей станка должно совпадать.
если есть поворотная ось,то для неё как может быть отдельная коробочка,как и нет.
В этом случае вам при продаже станка должны были сказать,
что поворотная ось подключается вместо одной из линейных осей.
Также на станках улучшенной конструкции на некоторые оси может быть установлен не один мотор,
а два в крайнем положении оси каждый.
Такая конструкция делается для того,чтобы более точно позиционировать инструмент по краям рабочего поля.
При правильном подключении такие моторы подключаются к ЧПУ не зависимо друг от друга и то,
что они управляют одной осью задаётся соответсвующими настройками внутри ЧПУ собственно.
На одной из коробочек найдите таблицу соответствия числа шагов и положения переключателей для настройки микрошага.
Выглядит обычно эта таблица так:
LinuxCNC.Stepconf.Microstep_table.jpg

Первый столбец этой таблицы назван Pulse/Rev,то есть число шагов на один оборот двигателя.
Вообще говоря,хотя угол,на который поворачивается двигатель при одном полном шаге и стандартен,
но в стандарте есть и другие значения угла поворота двигателя при полном шаге.
Например LeadShine производит двухфазные двигатели с углами поворота в 0,9 и 1,8 градуса.
Соответственно на один оборот будет приходиться в первом случае 360/0,9=400 шагов.
Во втором случае только 200.
Но тем не менее в таблице указан не микрошаг,а число шагов на оборот для конкретного двигателя.
Чтобы получить от туда микрошаг разделим число шагов на оборот в каждой строке на число
шагов двигателя для которого сделана таблица.
Для какого двигателя делалась таблица на каробке драйвера не объясняется,поэтому будем его угадывать.
Наиболее распространённый вариант двигателя имеет 200 шагов на оборот.
Делим на него числа из таблицы и получаем последовательность
200:200=2^0=1 (Целый,не дроблёный шаг,в таблице вместо 200 стоит слово default )
400:200=2^1=2
800:200=2^2=4
1600:200=2^3=8
3200:200=2^4=16
6400:200=2^5=32
12800:200=2^6=64
25600:200=2^7=128
Отношения совпадают со степенями двойки,так что похоже,что предположение о том,
что таблица составлена для двигателя с 200 шагами на оборот правильное.
То что указано справа и есть микрошаг — отношение числа микрошагов к одному полному шагу двигателя.
Чтобы определить на какой микрошаг настроен драйвер,посмотрим на названия других столбцов таблицы.
Они называются SW5,SW6 и SW7.
Так обычно называют всякие переключатели и выключатели.
Теперь поищем их,обычно они находятся на верху между двумя группами клем,
но могут быть выведены и в другом месте.
Осматриваем драйвер и находим вот это:
LinuxCNC.Stepconf.Swich.jpg

Переключатель справа круговой,а значит принимать сразу значения из всех трех столбцов не может.
А вот слева есть набор из 8 тумблеров и так как никаких других переключателей у драивера нет,
предпологаем.чтоименно их и имеют ввиду в этой таблице и смотрим на положение 5,6 и 7 тумблера соответственно.
Видим что все они в верхнем положении,но что это значит,ON или OFF?
Слева внизу на тумблере есть надпись ON и указывающая на него стрелка.
Значит положение переключателя внизу означает что он включен (ON).
А все три переключателя в верхнем положении,значит они в состоянии OFF.
Ищем соответствующею строку в таблице и видим,что ей соответствует микрошаг 128.
При таком микрошаге драйвер может работать не стабильно,поэтому уменьшим его 8.
Смотрим в таблице положение выключателей для такого микрошага и видим,
что для перенастройки драйвера на него надо переключатели SW5,SW6 надо оставить в положении OFF,
а переклячатель SW7 опустить в низ в состояние ON.
Выключам станок,коли он у вас был включен и переключаем тумблеры.
Готово,теперь у нас микрошаг 8 и теперь остаётся только соответственно перенастроить ЧПУ,
а то будет изменение маштаба в 128:8 раз.

  • 0

  • Наверх


#2

OFFLINE
 

2ar

2ar

  • Пол:Мужчина
  • Город:Новосибирск
  • Интересы:Сервисное обслуживания станков
  • Из:Новосибирск

Отправлено 26 Январь 2014 — 19:22

Число коробочек и число осей станка должно совпадать.
если есть поворотная ось,то для неё как может быть отдельная коробочка,как и нет.

На станках с большим полем на одну ось может стоять 2 драйвера и два двигателя.

  • 0

  • Наверх


#3

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 26 Январь 2014 — 20:28

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#4

OFFLINE
 

Lodochnik

Lodochnik

  • Пол:Мужчина
  • Из:Королев

Отправлено 26 Январь 2014 — 20:38

Поправь тогда и деление. 400 — это деление на 2. Дефолт — 1 к 1. Самые распространенные моторы имеют шаг 1.8 градуса. С шагом 0.9 редкость.

  • 0

С уважением, Олег.

  • Наверх


#5

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 26 Январь 2014 — 21:33

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

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#6

OFFLINE
 

Lodochnik

Lodochnik

  • Пол:Мужчина
  • Из:Королев

Отправлено 26 Январь 2014 — 21:36

Не надо ничего перебирать, 400 — это полушаг.

  • 0

С уважением, Олег.

  • Наверх


#7

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 26 Январь 2014 — 21:48

Тоесть вы хотите сказать что это Leadshine целыми шагами не ходит,
и деление начинается не с 1:1,а с 2:1?
(Всегда от юзерфрендлииности один только всё только путается и приходится гадать,что там ввиду имели..)

Сообщение отредактировал torvn77: 26 Январь 2014 — 21:49

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#8

OFFLINE
 

Lodochnik

Lodochnik

  • Пол:Мужчина
  • Из:Королев

Отправлено 26 Январь 2014 — 21:51

Первая строчка — дефолт, в данном случае целый шаг.

  • 0

С уважением, Олег.

  • Наверх


#9

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 28 Январь 2014 — 03:07

Первая строчка — дефолт, в данном случае целый шаг.

Спасибо,я понял то,что вы мне оъясняли и пофиксил.
Какие нибудь ещё ошибки есть?

Сообщение отредактировал torvn77: 28 Январь 2014 — 03:08

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#10

OFFLINE
 

belop

belop

    Абитуриент

  • Пользователи
  • Pip

  • 8 сообщений
  • Из:Москва

Отправлено 21 Апрель 2014 — 14:27

Какое назначение данной функции?
Как понять, какой требуется установить микрошаг от чего это зависит?
В дальнейшем какие значения надо установить в Mach3?

Есть драйвер am882, двигатель st86-114, винт ШВП TBI 25мм/об. Рабочее поле 180 см на 150 см. Для обработки дерева.

Как установить правильные настройки?

  • 0

  • Наверх


#11

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 21 Апрель 2014 — 15:03

Микрошагом называется не полное выполнение шага двигателем за счёт искустно подобраного баланса токов обмоток двигателя.
подробнее читайте в википедии.

Выбирается микрошаг исходя из своих соображении по вкусу.
Слишком большой микрошаг может привести к нестабильной работе связки драйвер-двигатель,
потому обычно его делают не больше 16 или 8.
А так единственно где он воооттааак необходим,это работа с микроинструментом,всякими там гравёрами и микрофрезами.
Благодаря тому,что шаг становится малым до неразличимости у таких инструментов не ломаются концы.

Что до остальных вопросов то пречитывайте первый пост,если что не ясно то цитируйте неясно написанную часть текста и задавайте вопрос.

Мачем не пользовался,поэтому подсказать ничего не смогу,но думаю что там можно всё настроить по аналогии.

Сообщение отредактировал torvn77: 21 Апрель 2014 — 15:30

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#12

OFFLINE
 

3D-BiG

3D-BiG

  • Пол:Мужчина
  • Город:Ареал обитания — вся страна, но обычно встречаюсь в Новосибирске…
  • Интересы:Полежать на диване, пофлудить на форуме….
  • Из:СССР

Отправлено 21 Апрель 2014 — 18:41

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

Зря так считаешь:
— есть драйвера у которых обозначена величина микрошага;
— а есть — у которых обозначено Pulse/rev (как на приведенном в качестве примера в первом посту) сколько Step-импульсов надо на полный оборот двигателя в полных 200 шагов на оборот, у которых 1.8град/шаг, а для 400 полношаговых на оборот движков ( резко встречаются такие прецизионники — реально видел только древний из одной армейской халадбудины), то у них угол шага 09град — то у них эта таблица будет врать вдвое…
Кроме того твой обзор НЕ учитывает ни способ запитки двигателей ( униполярное/биполярное), ни схемы запитки и какие преимущества и недостатки этих схем, ни тем более фазность двигателей — здесь ведешь разговор только о двухфазных, а есть еще и трехфазные шаговики, у которых есть явные преимущества перед двухфазными, а у них другие углы поворота на шаг…
Далее по выбору режима микрошаговости пока «фантазии Веснухина»….
Хотя здесь на форуме все это и описывали и даже приводил почти канонический труд Ридико Леонида Ивановича «Контроллер шагового двигателя» или цикл его статей » Раз шажок, два шажок…» ,- в них на достаточно серьезном уровне описана работа шаговых двигателей, их режимы и особенности управления ими на уровне, остаточном для инженерного использования — настоятельно рекомендую найти эти статьи и тщательно изучить… Мог, конечно, и более глубокие трактаты на эту тему привести — была в, как мне помнится, но могу ошибаться, 1973году издана одна книжечка в издательстве «Наука» японских авторов на тему шаговиков,толщиной в половину «Войны и Мир»-а, вот она дает более полное описание шаговиков, включая однофазные, пятифазные и разных устройств, а также их вариантов запитки и применения — вот она тему пережевывает полностью… Но лень искать сей «Гроссбух» у себя в архиве…

Сообщение отредактировал 3D-BiG: 27 Апрель 2014 — 09:33

  • 0

Лужу, паяю, станки ЧПУ починяю….
Еще частенько здесь болтаю: Телеграм сообщество ЧПУшников: t.me/cncunion

  • Наверх


#13

OFFLINE
 

vv92

vv92

  • Пол:Мужчина
  • Город:Н.Новгород
  • Из:Н.Новгород

Отправлено 21 Апрель 2014 — 19:14

А я верю в Тимофея. Вот лет через двести, он создаст станок недоступный вашему пониманию. И вам станет стыдно, ну куда это годится заставлять человека читать что нибудь больше одного листа.

  • 0

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

  • Наверх


#14

OFFLINE
 

3D-BiG

3D-BiG

  • Пол:Мужчина
  • Город:Ареал обитания — вся страна, но обычно встречаюсь в Новосибирске…
  • Интересы:Полежать на диване, пофлудить на форуме….
  • Из:СССР

Отправлено 21 Апрель 2014 — 20:09

Конечно — лет через двести… Я тоже верю в него — поэтому и подсказываю, где глянуть… НО, мне стыдно через двести лет НЕ будет — я буду занят другим делом, а именно спокойно лежать …

  • 0

Лужу, паяю, станки ЧПУ починяю….
Еще частенько здесь болтаю: Телеграм сообщество ЧПУшников: t.me/cncunion

  • Наверх


#15

OFFLINE
 

T-Rex

T-Rex

  • Пол:Мужчина
  • Из:Йошкар-Ола

Отправлено 21 Апрель 2014 — 20:15

А я верю в Тимофея. Вот лет через двести, он создаст станок недоступный вашему пониманию.

Недоступный пониманию, потому что он не сумеет его нормально документировать. Ибо:

куда это годится заставлять человека читать что нибудь больше одного листа.

:crazy:

  • 0

  • Наверх


#16

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 21 Апрель 2014 — 21:12

Т-Рех,с одной стороны название теме я дал амбициозное,
с другой стороны значение этой темы быть частью мануальника по настройке LinuxCNC.
Основная задача поста обяснить,где и как надо брать значения для конфигуратора.
В тему вынесено отдельную потому что есть куча разных драйверов,
и обсуждение их особенностей может вылиться в отдельный зафлуживающии все своим обемом тред.

  • 0

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


#17

OFFLINE
 

vv92

vv92

  • Пол:Мужчина
  • Город:Н.Новгород
  • Из:Н.Новгород

Отправлено 21 Апрель 2014 — 21:26

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

  • 0

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

  • Наверх


#18

OFFLINE
 

T-Rex

T-Rex

  • Пол:Мужчина
  • Из:Йошкар-Ола

Отправлено 22 Апрель 2014 — 02:47

Т-Рех,с одной стороны название теме я дал амбициозное,
с другой стороны значение этой темы быть частью мануальника по настройке LinuxCNC.
Основная задача поста обяснить,где и как надо брать значения для конфигуратора.

Тимофей, вы до сих пор не поняли, почему над вами уже не смеются, а издеваются? Вы амбициозно беретесь судить, а теперь, увы, и писать FAQ на любую тему, в которой сами успели получить лишь крайне поверхностные и сильно искаженные знания, дополнив их наивными и безграмотными домыслами…
Воспользуйтесь советом 3Д-Бига. Изучите сначала статьи Леонида Ридико (вот это настоящий гуру — знает очень много и умеет преподать знания в понятной для новичков форме, ничего не исказив и не упростив сверх меры). Почитать datasheet’ы и аппноты SGS-Thomson, касающиеся шаговых двигателей, тоже не помешает. Проштудировать доступную информацию по драйверам Geckodrive, Leadshine, Yako… И только когда все это в башке сложится в стройную систему, браться за написание FAQ по шаговикам.

  • 0

  • Наверх


#19

OFFLINE
 

T-Rex

T-Rex

  • Пол:Мужчина
  • Из:Йошкар-Ола

Отправлено 22 Апрель 2014 — 09:31

Не надо ничего перебирать, 400 — это полушаг.

…а полный шаг (200 импульсов на оборот) у этого «Лишайника», судя по таблице, кроется под именем «Default»… Все остальные комбинации — деление шага на степень двойки.

на станках улучшенной конструкции на некоторые оси может быть установлен не один мотор,
а два в крайнем положении оси каждый.
Такая конструкция делается для того,чтобы более точно позиционировать инструмент по краям рабочего поля.
При правильном подключении такие моторы подключаются к ЧПУ не зависимо друг от друга и то,
что они управляют одной осью задаётся соответсвующими настройками внутри ЧПУ собственно.

Это не «улучшенная конструкция», а просто чересчур широкий портал, чтобы можно было без потери жесткости (перекоса) таскать его одним мотором (прилагая усилие в одной точке).
Не понял, в чем «правильность» подключения двух шаговых моторов кинематики «gantry axis» к раздельным выходам контроллера CNC, и чем именно плоха известная схема поиска нуля по двум датчикам «Y home», блокирующая подачу импульсов на драйвер той стороны портала, которая уже наехала на датчик (вторая сторона продолжает двигаться до своего датчика, выравнивая перекос портала, сигнал «Home» выдается только при срабатывании двух датчиков). Особенно при дефиците выходов «Step/Dir». Освободившуюся пару выходов куда практичнее использовать для оси А, чтобы ничего не коммутировать при переключении на поворотную ось, «подключая вместо»…

  • 0

  • Наверх


#20

OFFLINE
 

torvn77

torvn77

  • Пол:Мужчина
  • Из:Санкт-Петербурга

Отправлено 26 Апрель 2014 — 19:54

Не понял, в чем «правильность» подключения двух шаговых моторов кинематики «gantry axis» к раздельным выходам контроллера CNC, и чем именно плоха известная схема поиска нуля по двум датчикам «Y home», блокирующая подачу импульсов на драйвер той стороны портала, которая уже наехала на датчик (вторая сторона продолжает двигаться до своего датчика, выравнивая перекос портала, сигнал «Home» выдается только при срабатывании двух датчиков). Особенно при дефиците выходов «Step/Dir». Освободившуюся пару выходов куда практичнее использовать для оси А, чтобы ничего не коммутировать при переключении на поворотную ось, «подключая вместо»…

Вообще говоря дом ищется за несколько наездов и съездов на датчик с постепеным уточнением места срабатывания.
В вашем случае опрос датчика по несколько раз не предусмотрен.

  • 1

Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.

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

  • Наверх


Микрошаг шагового двигателя

Микрошаг — режим деления шага, при работе в котором обмотки шагового двигателя в каждый момент времени запитаны не полным током, а его уровнями, изменяющимися по закону sin в одной фазе и cos во второй. микрошаговый режим шагового двигателя

Такой метод дает возможность фиксировать вал в промежуточных положениях между шагами. Количество таких положений задается настройками драйвера. Скажем, режим микрошага 1:8 означает, что с каждым поданным импульсом STEP драйвер будет перемещать вал примерно на 1/8 полного шага, и для полного оборота вала потребуется подать в 8 раз больше импульсов, чем для режима полного шага.

Применение микрошагового режима


У микрошагового режима может быть несколько применений.
Вначале разберем несколько заблуждений относительно микрошага:

  1. Микрошаг позволяет увеличить точность привода.
    На самом деле это не так. Во-первых, этому мешает геометрическая неидеальность ротора и статора двигателя, неидеальные обмотки, зазоры в подшипниках вала и т.п. В результате двигатель выполняет шаги всегда с некоторой погрешностью(как правило, 5% от величины полного шага), причем абсолютное значение погрешности постоянно для любого выбранного микрошагового режима! Кроме того, во многих драйверах управление двигателем также далеко от идеального, что приводит к дополнительной неравномерности перемещения в режиме микрошага. Дальнейшее деление шага более чем на 5-10 микрошагов приводит только к увеличению разрешающей способности привода, но не точности. То есть вы сможете более дискретно задавать позицию в ЧПУ системе, но не сможете её получить с заданной точностью.
  2. Микрошаг значительно снижает момент двигателя(относительно полношагового режима).
    Момент действительно снижается. Однако, использование микрошага одновременно увеличивает плавность хода двигателя, и снижает резонансные явления, что способствует увеличению момента. Два противоположных влияния на момент в среднем более-менее уравновешивают друг друга. В многих случаях применение микрошага на самом деле увеличивает момент, поэтому целесообразность отказа от микрошагового режима должна определяться в каждом конкретном случае.

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

Выбор оптимального режима деления шага


Оптимальный режим деления шага необходимо выбирать в зависимости от конкретного станка и стоящих задач. Основными факторами являются необходимость снизить резонанс двигателей, уменьшить шум, изменить разрешающую способность станка. В большинстве случаев имеет смысл использовать наибольшее деление шага, при котором станок сможет развивать расчетную максимальную скорость. Ограничением в данном случае будет максимальная частота входных импульсов у драйвера или максимальная частота генерации управляющих импульсов ЧПУ-системой. Скажем, скорость вращения 10 об/сек стандартного двигателя с шагом 1.8 град требует подавать импульсы STEP с частотой 2000 Гц для режима полного шага и с частотой 256 кГц для деления шага 1:128, тогда как, программа Mach3 максимально может генерировать импульсы с частотой 100 кГц.

Микрошаговый режим драйверов Leadshine


Цифровые драйверы Leadshine построены с применением особой технологии — драйверы всегда используют максимальный режим деления шага. Такая технология позволяет добиться максимальной плавности движения при любых установках режима деления шага и максимально устранить вибрации шагового двигателя.

лого darxton

megagad писал(а):Просто слова были вырваны из контекста. Ибо чем выше деление, тем выше параметр pps при тех-же оборотах(скорости), а зависимость момента от ппс у шаговиков вы сами можете найти

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

megagad писал(а):при полном шаге и «скорости» 1 оборот в секунду на шаговик приходит 200 импульсов, момент околомаксимальный. ставим деление 1/4 и при той-же скорости момент станет раза в 4 меньше(а у некоторых и раз в 10) — ведь уже на шаговыик приходит 800ппс. Дальше ещё интересней — после 3000-4000 ппс момент может упасть вообще до 5%(некоторые китай-шаговики теряют до 99% на больших коростях!) от максимального!! именно поэтому придумали «морфинг». именно поэтому советуют управлять шаговиками «с разгоном» — стартануть на 300ппс и 3000ппс — это совсем разные вещи.

Да не изменится момент при изменении микрошага.
Момент падает с ростом скорости — тут уж ничего не сделаешь — так работают шаговые моторы.

Речь была о том, что в режиме полного шага при переходе на новую позицию мотор развивает намного больший крутящий момент, чем в режиме микрошага при переходе на соседнюю позицию микрошага.
Если же в режиме микрошага (например 1/16) потребовать от мотора перейти сразу на 16 позиций микрошага — момент будет такой же, как и в режиме полного шага, т.к. ток в обмотках будет такой же и все будет так же.
Т.е. момент будет зависеть от угла отклонения от целевой позиции. Естественно, что в режиме микрошага при маленьком шажке и повернуться мотору нужно на маленький угол, и услие для этого он создает намного меньшее, чем если бы ему нужно было бы шагнуть на полный шаг.
Глупо сравнивать рубли и доллары и говорить, что доллары намного лучше, т.к. на 1 доллар можно купить намного больше товаров, чем на 1 рубль.
Ваши рассуждения сравнимы с тем, что если человеку начать выплачивать зарплату долларами — он станет намного лучше зарабатывать, и намного лучше жить.

Baha писал(а):выкладываю визуальную информацию, должно хватить школьного знания математики 2-го класса по теме «Площадь фигур. Сравнение площадей.»

А о чем говорит это сравнение площадей? о том, что в втором случае (красный график) мотор будет намного сильнее греться? (учти, что энергия уходящая на нагрев будет в квадратичной зависимости от тока, так что нужно не площадь смотреть, а брать интеграл от I²).
Так, вроде не нужно много ума, чтобы увеличить крутящий момент за счет увеличения рабочего тока шагового мотора. И микрошаг тут совсем ни при чем.

Про всякие TB6560 — вообще не стоит говорить, они в большинстве случаев нормально работают только в режиме крупного шага.

Baha писал(а):должно хватить школьного знания математики 2-го класса


Посчитай, во сколько раз снизился момент моих шаговых моторов на моем станке из за того, что я установил у себя микрошаг 1/64?

Последний раз редактировалось michael-yurov 31 май 2014, 16:47, всего редактировалось 1 раз.

Приветствую.

Для тех, кому лень, в самом конце картинка что куда тыкать.

Задача: Есть плата M2 Nano, нужно подключить внешний драйвер шагового двигателя,
т.к. как встроенные в неё драйвера тянут ну максимум 1 Ампер (без радиадота, с ним край 2) по току,
так что более сильные двигатели не поставить.

Увы, но на этой плате не предусмотрены выходы управляющих сигналов step и dir для шаговых драйверов, поэтому наша задача их найти. Сделать это достаточно просто.

Кстати, сигнал PUL это то же самое, что и STEP, т.е. «ШАГ» двигателя. DIR — направление. Enable нам не нужен («прекращает удержание двигателя в одном положении»).

Взглянем на плату M2 Nano:

 

Легко можем найти две микросхемы встроенных драйверов с наименованием A4988 — она весьма говённая популярна и управляется как раз нужными нам сигналами step и dir, осталось только их найти.
Для этого открываем даташит (распиновку какой контакт за что отвечает): A4988.pdf  и в районе 18 страницы видим назначение каждого контакта чипа:

ВАЖНО:  пин с номером 1 находится физически на самом чипе там, где в углу есть выгравированный/нарисованный круг/скос.
Если смотреть на нашу плату как на первой картинке, то получается чип располагается так:

На нужно припаять проводки к 16 (STEP) и 19 (DIR) пину. Аккуратнее — расстояние между ножками чипа пол миллиметра. Напряжение там всего 5 Вольт, а ток совсем мизерный, поэтому подойдут тонкие провода.  Можно их выдрать из USB кабеля зарядки телефона, если нет под рукой ничего кроме.

Теперь нам нужно выяснить общий провод управления (общий анод/общий катод), это может быть либо GND (ноль/минус питания) либо VCC (5 Вольт), лезем в даташит и выясняем, что это GND, то есть нам нужно припаяться ещё и к GND пину, т.е. управление у нас с общим катодом.

Не обязательно к ножке микроконтроллера, так как это GND, т.е. общий ноль, то он присутствует много где на плате — можно отследить по дорожкам (обязательно замерьте сопротивление между пином у самого чипа и того места, куда планируете — должно быть 0 Ом).

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

Например на драйвере Leadshine DM442 (кстати, именно его я рекомендую. Ссылка на алишку: тынц. Не стоит брать дешманские драйверы — будет только разочарование в итоге)

Как видим, есть сигналы PUL+, PUL- и DIR+,DIR-  это значит, что драйвер поддерживает управление как по общему аноду, так и по общему катоду.

Поэтому  провод от STEP подключаем к PUL+, провод от DIR подключаем к DIR+, а провод от GND подключаем и к PUL- и к DIR- т.к. у нас управление по общему катоду.

Примерно так:

Ну и общая наглядная схема на примере замены для оси X (для Y аналогично):

ПРЕДУПРЕЖДЕНИЕ: Так как я сталкивался уже как минимум с 3 различными вариациями (похоже подделка на подделку) этого недоконтроллера, то рекомендую не бессмысленно повторять, а убедиться в правильности распиновок, т.к. могут быть «повёрнуты» чипы штатных драйверов либо отличаться их модель, отчего распиновка может не соответствовать. Так же убедитесь, что не закоротили при пайке соседние пины на чипе, как минимум необходимо глянуть хотя бы залупой.

ВАЖНО: 

Так как M2 Nano нельзя настроить на произвольный размер шага, то на драйвере нужно правильно выставить дробление шага,
иначе размер не будет соответствовать! Штатный драйвер настроен на дробление 8. Т.е. один шаг состоит из 8 микрошагов.
Для правильной настройки нужно знать количество шагов на оборот Вашего шагового двигателя. У биполярных обычно это 200.
Дальше по таблице на драйвере выставляете в соответствующее положение микропереключатели. 
На примере по таблице драйвера выше это получается 1600 шагов на оборот.
Либо методом подбора —  там всего 16 вариантов.

Если меняете на внешние драйвера по обеим осям, то уже можете выставить наиболее приемлемое по качеству/скорости, главное что бы у обоих оно совпадало (и у движков кол-во шагов на оборот разумеется то же)!

Если на одну из осей ставите так же редуктор, то нужно выставить ещё и в соответствии с коэффициентом редукции. Если на цело не поделится, тогда придётся либо подбирать редуктор с чётным коэффициентом, либо на вторую ось ставить аналогичный, либо страдать и растягивать/сжимать макет.

Исправления/дополнения и т.д. приветствуются, т.к. мог недоглядеть чего.

Общие сведения:

Шаговый двигатель это бесколлекторный двигатель, ротор которого вращается не плавно, а шагами (дискретно). Один оборот ротора (360°) состоит из определённого количества шагов. Количество полных шагов в одном обороте указывается в технической документации двигателя.

Например, ротор шагового двигателя 17HS1352-P4130, за один полный шаг, поворачивается на 1,8°. Значит для поворота ротора на 360° двигатель должен совершить 200 полных шагов.

Для совершения одного полного шага на обмотки двигателя поступает серия сигналов от драйвера (как в полношаговом «1», так и в микрошаговых режимах «2», «4», «8», «16»).

С принципом работы шаговых двигателей можно ознакомиться в разделе Wiki — ШД.

Микрошаг:

Большинство драйверов позволяют разделить полный шаг двигателя на несколько микрошагов. Выбор микрошага устанавливается согласно таблице в инструкции к драйверу. В таблице указывается количество микрошагов на полный шаг «Microstep» (1/2/4/8/16/32/…) и/или количество тактов на полный оборот вала «Pulse/rev» (200/400/800/1600/3200/6400/…).

Если для целого поворота ротора двигателя в режиме 1 микрошаг на полный шаг требуется 200 тактов, то в режиме 4 микрошага на полный шаг, потребуется уже 800 тактов.

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

Ограничение тока фазы:

Большинство драйверов позволяют ограничить ток фазы (ток протекающий через обмотки двигателя). Выбор тока фазы осуществляется согласно таблице в инструкции к драйверу. В таблице указывается действующий ток «Current» и/или пиковый ток «PK Current». Чем выше ток, тем выше отдаваемый момент (сила двигателя).

Слишком большой ток приведёт к перегреву двигателя и может вызвать его поломку, а слишком маленький может привести к пропуску шагов, или нестабильному вращению ротора.

У некоторых драйверов ограничение тока осуществляется поворотом потенциометра.

Ток удержания:

Ток удержания это постоянный ток проходящий через обмотки двигателя, удерживающий вал в неподвижном состоянии. Некоторые драйверы позволяют снизить ток удержания.

Снижение тока удержания приводит к снижению нагрева двигателя при его удержании.

Силовые выводы драйвера:

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

  • Входы «VCC», «GND» / «+V», «GND» / «AC+», «AC-» — предназначены для получения напряжения питания шагового двигателя.
  • Выводы «A+» и «A-» — предназначены для подключения первой обмотки шагового двигателя.
  • Выводы «B+» и «B-» — предназначены для подключения второй обмотки шагового двигателя.

Подключение обмоток двигателя к драйверу зависит от количества выводов у двигателя.

Драйверы DM860H, DM556, TB6600 позволяют работать только с биполярными двигателями. Двигатели с 4 выводами подключаются по схеме А. Двигатели с 6 выводами подключаются по схеме Б или В. Двигатели с 8 выводами подключаются по схеме Г или Д.

Запрещается подключать или отключать обмотки двигателя на включенном драйвере!

Сигналы управления STEP/DIR (PUL/DIR):

  • Вход драйвера «STEP» (он же «PULSE») — предназначен для получения тактовых импульсов. За один импульс ротор двигателя поворачивается на один микрошаг. Вход может работать по фронту или спаду импульса. Чем выше частота импульсов, тем выше скорость вращения ротора.
  • Вход драйвера «DIR» — предназначен для выбора направления вращения двигателя («0» — в одну сторону, «1» — в другую сторону). Смена состояния вывода «DIR» должна осуществляться при отсутствии импульсов на выводе «STEP».
  • Вход драйвера «ENABLE» — разрешает работу двигателя. У большинства драйверов данный вход является инверсным, работа двигателя разрешена при отсутствии напряжения на входе. Некоторые драйверы позволяют вообще не подключать этот вход. Если работа двигателя запрещена, то его обмотки электрически отключаются и вал двигателя не удерживается.

  • Двигатель отключён если на входе «ENABLE» есть напряжение.
    Сигналы на входах «STEP» и «DIR» игнорируются драйвером. Вал двигателя освобождён.
  • Вал поворачивается на один микрошаг с каждым импульсом на входе «STEP», при условии что на входе «ENABLE» нет напряжения.
    Направление поворота вала зависит от состояния на входе «DIR».
  • Вал двигателя удерживается в неподвижном состоянии если на входе «ENABLE» нет напряжения и на вход «STEP» не подаются импульсы.
  • t1: После снятия напряжения со входа «ENABLE» должно пройти не менее 5мкс до изменения уровня на входе «STEP» или «DIR».
  • t2: После изменения состояния на входе «DIR» должно пройти не менее 5мкс до подачи импульса на вход «STEP».
  • t3, t4: Длительность импульса или паузы на входе «STEP» не должна быть меньше 2,5мкс.
  • t5: Автоматическое снижение тока удержания происходит через 1-2 сек после подачи последнего импульса на вход «STEP». Время зависит от типа драйвера.

Сигналы управления CW/CCW:

(Данные сигналы не поддерживаются драйверами DM860H, DM556, TB6600)

  • Вход драйвера «CW» — предназначен для получения тактовых импульсов. За один импульс ротор двигателя поворачивается на один микрошаг. Вход может работать по фронту или спаду импульса. Чем выше частота импульсов, тем выше скорость вращения ротора.
  • Вход драйвера «CCW» — выполняет те же действия что и вход «CW», но ротор двигателя поворачивается в другую сторону.
  • Вход драйвера «ENABLE» — разрешает работу двигателя. У большинства драйверов данный вход является инверсным, работа двигателя разрешена при отсутствии напряжения на входе. Некоторые драйверы позволяют вообще не подключать этот вход. Если работа двигателя запрещена, то его обмотки электрически отключаются и вал двигателя не удерживается.

  • Двигатель отключён если на входе «ENABLE» есть напряжение.
    Сигналы на входах «CW» и «CCW» игнорируются драйвером. Вал двигателя освобождён.
  • Вал поворачивается на один микрошаг с каждым импульсом на входе «CW» или «CCW», при условии что на входе «ENABLE» нет напряжения.
    Направление поворота вала зависит от того, на какой вход поступают импульсы.
  • Вал двигателя удерживается в неподвижном состоянии если на входе «ENABLE» нет напряжения и на входы «CW» и «CCW» не подаются импульсы.
  • t1: После снятия напряжения со входа «ENABLE» должно пройти не менее 5мкс до подачи импульса на вход «CW» или «CCW».
  • t2: После последнего импульса на одном входе должно пройти не менее 5мкс до подачи импульса на дрогой вход.
  • t3, t4: Длительность импульса или паузы не должна быть меньше 2,5мкс.
  • t5: Автоматическое снижение тока удержания происходит через 1-2 сек после подачи последнего импульса. Время зависит от типа драйвера.

Подключение управляющих выводов драйвера:

Для подключения управляющих выводов можно использовать одну их следующих схем:

Допускается подключать драйвер к контроллеру без использования сигнала ENABLE, тогда выводы ENA+ и ENA- остаются свободными (не подключёнными).

  • При уровне логической «1» = 5В, все сопротивления R исключаются из схемы.
  • При уровне логической «1» = 12В, все сопротивления R равны 1кОм.
  • При уровне логической «1» = 24В, все сопротивления R равны 2кОм.

Подключение драйвера к Arduino:

Так как логические уровни Arduino UNO равны 5В, то при подключении управляющих выводов к драйверу, ограничивающие сопротивления R не нужны.

Для подключения драйвера к Arduino воспользуемся схемой где выводы PUL-, DIR-, ENA- подключены к GND контроллера (правая схема на картинке выше).

Если подключить драйвер к Arduino без использования сигнала ENABLE, оставив выводы ENA+ и ENA- не подключёнными, то приведённый ниже скетч не сможет освобождать вал. Вал двигателя будет удерживаться всё время, пока он не вращается.

Выводы драйвера ENA+, DIR+ и PUL+ можно подключить к любым выводам Arduino, их номера указываются в начале скетча. В примере это выводы 2, 3 и 4 соответственно.

Если для подключения драйвера воспользоваться схемой где выводы PUL+, DIR+, ENA+ подключены к 5V контроллера (левая схема на картинке выше), то в скетче нужно изменить логические уровни устанавливаемые функциями digitalWrite().

Управление двигателем при помощи Arduino:

Для работы скетча установите микрошаг 1/4, что соответствует 800 тактов на 1 оборот. Микрошаг устанавливается DIP-переключателями драйвера согласно таблице на его корпусе.

Скетч постоянно повторяет 4 действия:

  • Поворот вала на 2 полных оборота в одну сторону.
  • Остановка двигателя на 5 секунд с удержанием вала.
  • Поворот вала на 2 полных оборота в другую сторону.
  • Остановка двигателя на 5 секунд с освобождением вала.
const uint8_t pin_ENA = 2;                // Вывод Arduino подключённый к входу драйвера ENA+.
const uint8_t pin_DIR = 3;                // Вывод Arduino подключённый к входу драйвера DIR+.
const uint8_t pin_PUL = 4;                // Вывод Arduino подключённый к входу драйвера PUL+.
                                          // Вывод GND Arduino соединён с входами драйвера ENA-, DIR-, PUL-.
uint32_t f = 1000;                        // Определяем частоту следования микрошагов от 1 до 200'000 Гц.
                                          // Чем выше частота, тем выше скорость вращения вала.
void setup(){                             //
     pinMode( pin_ENA, OUTPUT );          // Конфигурируем вывод Arduino как выход.
     pinMode( pin_DIR, OUTPUT );          // Конфигурируем вывод Arduino как выход.
     pinMode( pin_PUL, OUTPUT );          // Конфигурируем вывод Arduino как выход.
}                                         //
                                          //
uint32_t t = 1000000/f/2;                 // Определяем длительность импульсов t3 и пауз t4 в мкс.
                                          //
void loop(){                              //
//   Готовимся к движению вала:           //
     digitalWrite( pin_ENA, 0 );          // Разрешаем работу двигателя.
     delayMicroseconds(5);                // Выполняем задержку t1 (см. график STEP/DIR).
     digitalWrite( pin_DIR, 0 );          // Выбираем направление вращения.
     delayMicroseconds(5);                // Выполняем задержку t2 (см. график STEP/DIR).
//   Поворачиваем вал на 2 оборота:       //
     for(int i=0; i<1600; i++){           // Выполняем 1600 проходов цикла (1 оборот = 800 тактов, 2 оборота = 1600).
         digitalWrite( pin_PUL, 1 );      // Устанавливаем на выводе PUL состояние логической «1».
         delayMicroseconds(t);            // Выполняем задержку t3 (см. график STEP/DIR).
         digitalWrite( pin_PUL, 0 );      // Устанавливаем на выводе PUL состояние логического «0».
         delayMicroseconds(t);            // Выполняем задержку t4 (см. график STEP/DIR).
     }                                    //
//   Останавливаем вал удерживая его:     // Двигатель не вращается, если на вывод PUL не поступают импульсы.
     delay(5000);                         // Ждём 5 секунд. В это время двигатель остановлен, его вал удерживается.
//   Меняем направление движения вала:    //
     digitalWrite( pin_DIR, 1 );          // Меняем логический уровень вывода DIR с 0 на 1.
     delayMicroseconds(5);                // Выполняем задержку t2 (см. график STEP/DIR).
//   Поворачиваем вал на 2 оборота:       //
     for(int i=0; i<1600; i++){           // Выполняем 1600 проходов цикла (1 оборот = 800 тактов, 2 оборота = 1600).
         digitalWrite( pin_PUL, 1 );      // Устанавливаем на выводе PUL состояние логической «1».
         delayMicroseconds(t);            // Выполняем задержку t3 (см. график STEP/DIR).
         digitalWrite( pin_PUL, 0 );      // Устанавливаем на выводе PUL состояние логического «0».
         delayMicroseconds(t);            // Выполняем задержку t4 (см. график STEP/DIR).
     }                                    //
//   Останавливаем вал без удержания:     //
     digitalWrite( pin_ENA, 1 );          // Запрещаем работу двигателя, отключаем токи в обмотках.
     delay(5000);                         // Ждём 5 секунд. В это время двигатель отключен, его вал свободен.
}                                         //
  • Движение вала на 2 оборота в одну сторону:
    Перед началом движения вала мы разрешаем работу двигателя (установив 0 на выводе ENA) и выбираем направление движения (установив 0 или 1 на вывод DIR), далее выполняем движение подачей импульсов на вывод PUL в теле цикла for. Каждый импульс поворачивает ротор на угол одного микрошага. Микрошаг установлен DIP-переключателями в положение 800 тактов на полный оборот. Код цикла выполняется 1600 раз, значит вал повернётся на 2 оборота.
  • Остановка вала с удержанием:
    Двигатель не вращается, если на вывод PUL не поступают импульсы. Значит обычная задержка на 5000 мс приведёт к остановке двигателя на 5 секунд. Так как работа двигателя была разрешена (на выводе ENA ранее был установлен 0), то через обмотки двигателя будет протекать ток удержания вала.
  • Движение вала на 2 оборота в другую сторону:
    Направление движения вала определяется логическим уровнем на выводе DIR. Ранее на нём был установлен 0, значит теперь нужно установить 1. Далее подачей импульсов на вывод PUL мы заставляем вращаться вал, но теперь в другую сторону.
  • Остановка вала без удержания:
    В предыдущий раз мы останавливали двигатель прекращая подавать импульсы на вывод PUL, но не запрещали работу двигателя, в результате через его обмотки протекал ток удержания вала. Теперь мы запретим работу двигателя установив на выводе ENA уровень логической 1, что приведёт к исчезновению токов в обмотках двигателя. Теперь в течении 5 секунд, двигатель будет не только остановлен, но и его вал можно свободно вращать руками.

Управление шаговым двигателем по прерываниям от 2 таймера Arduino:

const uint8_t pin_ENA = 2;                // Вывод Arduino подключённый к входу драйвера ENA+.
const uint8_t pin_DIR = 3;                // Вывод Arduino подключённый к входу драйвера DIR+.
const uint8_t pin_PUL = 4;                // Вывод Arduino подключённый к входу драйвера PUL+.
                                          // Вывод GND Arduino соединён с входами драйвера ENA-, DIR-, PUL-.
volatile uint32_t step=0;                 // Переменная хранит количество микрошагов, которые требуется совершить.
                                          //
void setup(){                             //
     pinMode( pin_ENA, OUTPUT );          // Конфигурируем вывод Arduino как выход.
     pinMode( pin_DIR, OUTPUT );          // Конфигурируем вывод Arduino как выход.
     pinMode( pin_PUL, OUTPUT );          // Конфигурируем вывод Arduino как выход.
     funcSetTimer2( 1000 );               // Запускаем 2 таймер указав частоту следования микрошагов от 1 до 200'000 Гц.
}                                         // Чем выше частота, тем выше скорость вращения вала.
                                          //
void loop(){                              //
//   Готовимся к движению вала:           //
     digitalWrite( pin_ENA, 0 );          // Разрешаем работу двигателя.
     delayMicroseconds(5);                // Выполняем задержку t1 (см. график STEP/DIR).
     digitalWrite( pin_DIR, 0 );          // Выбираем направление вращения.
     delayMicroseconds(5);                // Выполняем задержку t2 (см. график STEP/DIR).
//   Поворачиваем вал на 2 оборота:       //
     step=1600;                           // Указываем количество микрошагов, которые требуется совершить.
     while(step){;}                       // Ждём обнуления переменной.
//   Останавливаем вал удерживая его:     // Двигатель не вращается, если на вывод PUL не поступают импульсы.
     delay(5000);                         // Ждём 5 секунд. В это время двигатель остановлен, его вал удерживается.
//   Меняем направление движения вала:    //
     digitalWrite( pin_DIR, 1 );          // Меняем логический уровень вывода DIR с 0 на 1.
     delayMicroseconds(5);                // Выполняем задержку t2 (см. график STEP/DIR).
//   Поворачиваем вал на 2 оборота:       //
     step=1600;                           // Указываем количество микрошагов, которые требуется совершить.
     while(step){;}                       // Ждём обнуления переменной.
//   Останавливаем вал без удержания:     //
     digitalWrite( pin_ENA, 1 );          // Запрещаем работу двигателя, отключаем токи в обмотках.
     delay(5000);                         // Ждём 5 секунд. В это время двигатель отключен, его вал свободен.
}                                         //
                                          //
//   ОБРАБОТКА ПРЕРЫВАНИЙ 2 ТАЙМЕРА:      //
ISR(TIMER2_COMPA_vect){                   // Функция вызывается по совпадению регистров TCNT2 и OCR2A.
      if( step ){                         // Если требуется выполнять микрошаги, то ...
          bool p = digitalRead(pin_PUL);  // Определяем текущее состояние на выводе PUL.
          digitalWrite(pin_PUL, !p);      // Меняем состояние на выводе PUL.
          if( p ){ step--; }              // Уменьшаем количество требуемых микрошагов.
      }                                   //
}                                         //
                                          //
//    ФУНКЦИЯ НАСТРОЙКИ 2 ТАЙМЕРА:        //
void  funcSetTimer2(uint32_t f){          // Параметр: «f» - частота тактирования ШД от 1 до 200'000 Гц.
      if(f>200000){f=200000;}
//    Определяем значение предделителя:
      uint16_t i; uint8_t  j; f*=2;
      if(f>(F_CPU/255/  1)){i=   1; j=1;}else
      if(f>(F_CPU/255/  8)){i=   8; j=2;}else
      if(f>(F_CPU/255/ 32)){i=  32; j=3;}else
      if(f>(F_CPU/255/ 64)){i=  64; j=4;}else
      if(f>(F_CPU/255/128)){i= 128; j=5;}else
      if(f>(F_CPU/255/256)){i= 256; j=6;}else
                           {i=1024; j=7;}
//    Устанавливаем регистры 2 таймера:
      TCCR2A = 0<<COM2A1 | 0<<COM2A0 | 0<<COM2B1 | 0<<COM2B0 | 1<<WGM21  | 0<<WGM20;
      TCCR2B = 0<<FOC2A  | 0<<FOC2B  | 0<<WGM22  | j;
      OCR2A  = (uint8_t)(F_CPU/(i*f))-1;
      TIMSK2 = 0<<OCIE2B | 1<<OCIE2A | 0<<TOIE2;
      SREG   = 1<<7;
}

Данный скетч выполняет те же действия что и предыдущий. Но подача импульсов на вывод PUL осуществляется не в цикле основного кода, а по прерываниям от таймера.

Как только переменной step присваивается число отличное от 0, то на драйвер начинают поступать импульсы. Значение step убывает с каждым поданным импульсом, пока не достигнет 0, что приведёт к остановке вала двигателя. Частота подачи импульсов в Гц указывается функцией funcSetTimer2().

В данном скетче мы ждём завершение вращения вала проверяя значение step в цикле while, вместо этого можно выполнять другие действия, например, опрашивать концевики, датчики, измерять пройденное расстояние и т.д.

Код работает на Arduino UNO, Pro Mini, Nano, Mega.

Ссылки

  • Шаговые двигатели.
  • Драйвер шагового двигателя, TB6600 (4.0А).
  • Драйвер шагового двигателя DM556 (5.6A).
  • Драйвер шагового двигателя DM860H (7.2A).
  • Wiki — Шаговые двигатели.

Выбор и настройка драйверов шагового двигателя, Часть 2.1 Установка перемычек в режиме DIR / STEP

Итак, в прошлой статье мы выбрали управляющую плату, драйвера шаговых двигателей и моторы. Пора подключаться. В рамках этой статьи мы опишем только установку джамперов для режима DIR/STEP на платах RAMPS, MKS GEN. Описание UART будет в одной из следующих частей. Статья написана для тех, у кого нулевой уровень понимания схемотехники. Платы, которые мы будем описывать сегодня:

  • RAMPS 1.4-1.6 (кроме RAMPS 1.6 PLUS)
  • MKS Gen L / MKS Gen

Драйвера, которые мы затронем:

  • A4988
  • DRV8825
  • TMC2208
  • LV8729
  • TMC2209

Если у вас возникнут вопросы — пишите в комментариях, постараемся оперативно ответить. Если вам необходима информация по платам/драйверам, которых нет в списке — пишите, добавим. Всё, поехали:

Первое фото — определение пинов MS1/MS2/MS3 на примере RAMPS 1.4-1.6, дальше правила установки джамперов. Обратите внимание: настройка программной интерполяции происходит в коде прошивки. Сейчас ваша главная задача — найти на управляющей плате надписи MS1 и MS3 (на некоторых MS0 и MS2). 


Нашли? Пошли дальше: теперь необходимо установить джамперы в соответствии с вашими требованиями и драйверами. Для RAMPS есть простая таблица:


Что она нам говорит? Например, для установки шага в 1/8 необходимо установить: M1:YES, M2:YES, M3:NO. Если перевести на простой язык, то на плате RAMPS и MKS GEN L необходимо пары контактов MS1 и MS2 закрыть джампером, а контакты MS3 оставить открытыми.  Наверное, вы уже заметили, что в таблице  указан размер шага вплоть до 1/128, хотя драйвер A4988 позволяет дробить максимально до 1/16, а DRV8825 до 1/32. Как же будет вести себя система, если вы установили все джамеры (1/128), а драйвера в наличии A4988? Очень просто — начиная с максимального дробления шага драйвера, дальнейшего эффекта происходить не будет. Т.е. для A4988 установка всех джамперов будет действовать как 1/16, а для DRV8825 установка всех перемычек равнозначна 1/32. Вывод простой: ставьте по умолчанию все перемычки. Ниже таблица для всех наших драйверов. Обратите внимание — для драйверов TMC220x значение имеют только перемычки MS1 и MS2. Третья перемычка роли не играет. Для простоты ставьте всегда максимальный шаг. Т.е. если у вас не TMC2209, то ставьте все перемычки. Если TMC2209, то смотрите в таблицу.


На сегодня всё. В следующей статье мы продолжим описывать установку перемычек в рамках режима DIR/STEP для плат MKS SGen L, а также линейки плат BIGTREETECH SKR (1.3, 1.4, PRO, MINI, E3). 

С Уважением,

Мастерская робототехники Human & Gears

Продолжаем разбираться с ЧПУ станком. Настройку прошивки GRBL рассмотрели тут: Прошивка grbl 1.1, настройка — инструкция на русском. Но где же взять параметры для настройки ЧПУ станка? Сегодня в статье рассмотрим, как можно рассчитать винтовую и ременную передачу ЧПУ станка. Но расчет не всегда дает 100% результат. Для проверки и корректировки неточности используется калибровка ЧПУ станка. Как это сделать на практике я уже рассказывал в проекте:ЧПУ плоттер на Arduino своими руками.

При расчете нужно учитывать один немало важный параметр, который мы еще не рассматривали подробно – это Микрошаг.

Для начала, устанавливаем CNC shield v3 на Arduino UNO. Перед установкой драйверов необходимо установить перемычки деления шага.

Что такое микрошаг и как настраивать микрошаг шагового двигателя.

Основной параметр шаговых двигателей (ШД) это количество шагов на 1 оборот. Самое распространённое значение для ШД – 200 шагов на оборот (или 1,8 градуса на шаг). Мы будем использовать это разрешение во всех сегодняшних примерах. Более точную информацию можно узнать в описании к вашему шаговому двигателю. Зачастую 200 шагов на оборот, могут быть недостаточными для достижения необходимой точности. С целью повышения точности можно изменить передаточное число механически (использовать редуктор), а можно включить микрошаг – режим деления шага шагового двигателя, это увеличит число шагов на оборот, с коэффициентом 2n (n — целое число). Драйвер A4988 поддерживает деление шага: 1, 1/2, 1/4, 1/8, 1/16. Подробнее о драйвере A4988 читайте тут: Драйвер шагового двигателя A4988. Драйвер DRV8825 поддерживает деление шага: 1; 1/2; 1/4; 1/8; 1/16; 1/32. Подробнее о драйвере DRV8825 читайте тут: Драйвер шагового двигателя DRV8825.

Драйвер A4988 допускает использование режима микрошага.Давайте рассмотрим пример. Если мы выставим микрошаг 16, что является в 16 раз больше полного шага и в нашем примере даст 3200 (200х16) шагов на оборот. На первый взгляд это отличный результат и почему бы не использовать максимальное деление шага во всех станках. Но тут есть и минус – это падение крутящего момента при увеличении деления шага. Подробнее Микрошаг рассмотрим в следующей статье.

Расчёт винтовой передачи ЧПУ станка.

Винтовая передача ЧПУ, либо ее более продвинутый вариант шарико-винтовая передача (ШВП), являются наиболее часто используемым вариантом перевода вращательного движения вала шагового двигателя в линейное перемещение исполнительного механизма.

шарико-винтовая передача (ШВП)

Для расчёта разрешения нам необходимо знать ШАГ винта, либо шаг винта ШВП. В описании трапецеидальных винтов обычно пишут Tr8x8,Tr10x2, первая цифра говорит нам о диаметре винта, вторая как раз о его шаге в мм. Винты ШВП обычно обозначаются 1204, 1605 и т.п. Первые 2 цифры – это диаметр винта, вторые две – это шаг в мм. В 3d-принтерах обычно используют винт Tr8x8, диаметром 8 мм и с шагом 8 мм. Обзор моего 3d-принтера можно посмотреть тут:Обзор 3D принтера Anet A8. Сборка. Наладка.

Обзор моего 3d-принтера можно посмотреть тут:Обзор 3D принтера Anet A8. Сборка.

Формула расчета винтовой передачи ЧПУ получается следующей, в числителе – количество шагов на оборот, в знаменателе – перемещение за оборот.

Тп = Sшд*Fшд/Pр

где:

  • Тп — точность перемещения, шаг/мм
  • Sшд — количество шагов на оборот для двигателя (в наших примерах 200)
  • Fшд — микрошаг (1, 2, 4, 8 и т. д.)
  • — шаг винта (например, 8 мм)

Рассчитаем пример со следующими параметрами, двигатель 200 шагов на оборот, с 4-кратным микрошагом, с трапецеидальным винтом Tr8x8 даст нам 100 шагов на мм.

200*4/8=100 шагов/мм.

Другими словами, для того чтобы ЧПУ станок переместился на 1 мм, нам нужно сделать 100 шагов двигателя. Что является неплохой точностью.

Расчетные значения нужно указать в прошивке GRBL:

$100=10.000 кол-во шагов на мм для оси Х
$101=10.000 кол-во шагов на мм для оси Y
$102=100.000 кол-во шагов на мм для оси Z
$100=10.000 кол-во шагов на мм для оси Х
$101=10.000 кол-во шагов на мм для оси Y
$102=100.000 кол-во шагов на мм для оси Z

Расчет ременной передачи ЧПУ станка.

Во многих ЧПУ станках используются ремни и шкивы. Ремни и шкивы бывают разных форм и размеров, но одним из распространённых стандартов является GT2.

Ремни и шкивы

Следующие уравнение применимо для цепных и ременных передач, если вы введете правильный шаг. Обратите внимание, что эти уравнения не учитывают люфт.

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

Тлп = Sшд*Fшд/Pр*Nшк

где:

  • Тлп — точность линейного перемещения, шаг/мм
  • Sшд — количество шагов на оборот для двигателя (в наших примерах 200)
  • Fшд — микрошаг (1, 2, 4, 8 и т. д.)
  • — шаг ремня (например, 2 мм)
  • Nшк — количество зубьев на шкиве, на валу двигателя.

Попробуем посчитать для примера с такими параметрами, двигатель 200 шагов на оборот, с 2-кратным микрошагом, 2-миллиметровыми ремнями GT2 и шкивом с 20 зубцами даст нам 10 шагов на мм.

200*2/2*20=10 шагов/мм.

Данный пример подойдет для расчета перемещения 3d-принтера. ЧПУ станков на ремнях: лазерный гравировальный, плоттер и пр.

Расчетные значения нужно указать в прошивке GRBL:

$100=10.000 кол-во шагов на мм для оси Х
$101=10.000 кол-во шагов на мм для оси Y
$102=100.000 кол-во шагов на мм для оси Z
$100=10.000 кол-во шагов на мм для оси Х
$101=10.000 кол-во шагов на мм для оси Y
$102=100.000 кол-во шагов на мм для оси Z

Калибровка ЧПУ станка.

После настройки станка необходимо проверить точность перемещения станка по осям. Для этого нужно отправить команду на перемещение по оси, на относительно большое расстояние. Я чаще всего использую 100 мм. После чего произвести замер перемещения. Если значения не отличаются – это означает, что все работает верно. Но если расстояние перемещения больше или меньше, то нужно внести корректировку – провести калибровку ЧПУ станка. Для этого будем использовать формулу:

Тк = Тп * Kп / Kф

где:

  • Тк – калибровочное значение, шаг/мм.
  • Тп — точность перемещения, шаг/мм (из примера 100 шаг/мм)
  • Kп — заданное значение для перемещения (в моем случае 100 мм.)
  • — фактически, на какое расстояние переместилась ось (допустим на 99 мм.)

Для примера проведем расчёт винтовой придачи, которую рассчитывали выше и выяснили, что нужно совершить 100 шагов для перемещения на 1 мм. Также допустим, что мы отправили команду на перемещение станка на 100 мм, а по факту он переместился на 99 мм. Произведём расчет:

100*100/99=101,01 шагов/мм.

Указываем данное значение в прошивке GRBL и проводим калибровку еще раз. Если ЧПУ станок перемещается на заданное значение, можно пользоваться станком. Иначе проводим повторную калибровку.

Калибровка ЧПУ станка.

Понравился статья Расчет и настройка ремённой и винтовой придачи ЧПУ станка. Калибровка! Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Понравилась статья? Поделить с друзьями:
  • Как изменить микрофон на компе
  • Как изменить микрофлору кишечника на полезную
  • Как изменить микрофлору желудка
  • Как изменить микрофлору влагалища
  • Как изменить микробиом человека