Форум клана ЧПУшников
Вы здесь » Форум клана ЧПУшников » Станки с ЧПУ » Самопроизвольное изменение направления вращения шагового двигателя.
Самопроизвольное изменение направления вращения шагового двигателя.
Страница: 1
Сообщений 1 страница 6 из 6
Поделиться113-07-2012 08:30:21
- Автор: Domin
- Местный
- Откуда: Коломна
- Зарегистрирован : 11-08-2011
- Приглашений: 0
- Сообщений: 211
- Уважение: [+56/-0]
- Позитив: [+103/-4]
- Пол: Мужской
- Возраст: 67 [1956-03-04]
- Провел на форуме:
15 дней 20 часов - Последний визит:
Вчера 06:52:44
Вчера я решил на оси Z заменить мотор на новый, давно приобретенный в Питере на Электроприводе модель FL57STH56-2804A.
И столкнулся со странным явлением ОН ВРАЩАЕТСЯ В КАКУЮ ЗАХОЧЕТ СТОРОНУ.
Его направление движения не завит от команд . Подключал к контроллеру другой оси – тоже самое, крутил настройки в Mach не помогло. В режиме полного шага «дрожит» и не вращается.
Контроллеры собраны на TA8435H. Поставил старый управляется нормально , другие шаговики этого класса ведут себя тоже нормально. Контроллеров другого типа нет не могу проверить может он не «живет» с TA8435H.
Может кто-то сталкивался с таким явлением? Или просто шаговик неисправен.
Поделиться213-07-2012 09:28:50
- Автор: valb
- Гуру
- Откуда: Пенза
- Зарегистрирован : 07-12-2009
- Приглашений: 55
- Сообщений: 1525
- Уважение: [+169/-3]
- Позитив: [+293/-5]
- Пол: Мужской
- Возраст: 65 [1958-05-04]
- Провел на форуме:
2 месяца 28 дней - Последний визит:
12-01-2021 00:46:24
Domin написал(а):
В режиме полного шага «дрожит» и не вращается.
Заводской брак. Смещены «зубчики» на роторе.
Поделиться313-07-2012 11:50:30
- Автор: cncuser
- Заблокирован
- Зарегистрирован : 10-07-2012
- Приглашений: 0
- Сообщений: 11
- Уважение: [+8/-0]
- Позитив: [+0/-0]
- Провел на форуме:
6 часов 16 минут - Последний визит:
20-07-2012 19:32:21
Domin написал(а):
Вчера я решил на оси Z заменить мотор на новый, давно приобретенный в Питере на Электроприводе модель FL57STH56-2804A.
И столкнулся со странным явлением ОН ВРАЩАЕТСЯ В КАКУЮ ЗАХОЧЕТ СТОРОНУ.
Его направление движения не завит от команд . Подключал к контроллеру другой оси – тоже самое, крутил настройки в Mach не помогло. В режиме полного шага «дрожит» и не вращается.
Контроллеры собраны на TA8435H. Поставил старый управляется нормально , другие шаговики этого класса ведут себя тоже нормально. Контроллеров другого типа нет не могу проверить может он не «живет» с TA8435H.
Может кто-то сталкивался с таким явлением? Или просто шаговик неисправен.
Попробуйте два провода из четырех выходящих из двига поменять между собой местами, главное чтобы эти два провода были с одной обмотки. Возможно у Вас одна обмотка крутит двиг в одну сторону, а другая в другую.
Как изменить направление вращения шагового двигателя
Віримо в перемогу ЗСУ!
Працюємо з 09:00 до 18:00 Пн-Сб Працюємо з 09:00 до 19:00 Пн-Пт —> Магазин у відпустці до 19.08.2023 —>
- Ваша корзина пуста!
- Главная
- Статьи
- Подключение шагового двигателя
Привет, друзья! Предлагаю вам практический алгоритм, как правильно подключить обмотки шагового двигателя к драйверу. Начинающие, и не только, ардуинщики при работе с шаговыми двигателями часто сталкиваются с проблемой определения, где выводы первой обмотки, где второй, где начало первой обмотки, где второй. Так же часто возникает вопрос как проводами поменять направление вращения двигателя. Давайте в этом видео разберёмся, как с высокой степенью четкости подходить к решению этих вопросов.
Давайте подпишемся на канал, лайкнем это видео и поехали дальше.
В идеальном случае нам может попасться широко известный тип шагового двигателя, у которого имеется стандартный неизменный клеммник, схему подключения которого легко найти в гугл-картинках. Так же желательно, чтобы была и легко находимая схема подключения имеющегося драйвера. Тогда их чаще всего получается подключить с первого раза без ошибок. Хотя я умудрялся и в таких случаях напутать. Но мы будем исходить из того, что двигатель у нас с неизвестной цветовой маркировкой проводов, что часто становится проблемой и схемы подключения обмоток двигателя к имеющемуся драйверу нет.
Кстати насчет схем подключения драйверов, тут тоже есть свои факторы запутывания и непоняток. Вот к примеру обозначения выходов трёх самых популярных драйверов. Кружочками будем обозначать условное начало обмотки двигателя. Все обозначения здесь сильно отличаются у каждого драйвера. Эти отличия начинаются с самих инструкций на микросхемы драйверов. Прямо в pdf на каждую из этих популярных микросхем создатели заложили столько путанины – как тут разобраться без бокала пива!?

По возможности нужно тестировать подключение на ненагруженном шаговом двигателе. Для управления возьмем контроллер Arduino NANO. Будем использовать его просто как задающий генератор. Вы можете взять любой драйвер шагового двигателя. Только разберитесь по документации или по подписям на плате, где находятся пары выходов под каждую обмотку. Я возьму самый популярный драйвер A4988. Вот схема включения для нашего универсального алгоритма подключения обмоток двигателя. От контроллера подается прямоугольный сигнал известной частоты на вход STEP драйвера, который отвечает за запуск шагов. При этом вход DIR, отвечающий за направление вращения ротора, подключен к общему проводу – он нам не понадобится. Так же у конкретного драйвера необходимо подать питание логики (для некоторых драйверов это не нужно). А так же необходимо подать разрешающие вращение сигналы, такие как RESET, SLEEP, ENABLE. Для драйвера A4988 можно просто поставить перемычку между RESET и SLEEP – это переведёт драйвер в рабочий режим. Так же подключаем провода питания двигателя к источнику 12В. А сами катушки двигателя стараемся по имеющимся схемам и документациям подключить хотя бы к своим парам выходов драйвера. Но, если не получается разобраться сразу, не отчаивайтесь – мы здесь разберём все случаи.

Теперь по быстрому обратим внимание на программу, которая будет загружена в Arduino NANO. Я беру стандартный пример Blink, который мигает светодиодом раз в две секунды и назначаю свой выход номер 2, к которому подключен вход STEP. А так же ставлю задержку в 1 миллисекунду. Это означает, что на вход STEP драйвера пойдет прямоугольный сигнал с периодом в 2 миллисекунды или 500 Гц, что для 200-шагового двигателя соответствует 2,5 об./сек или 150 об./мин. Эта скорость и не большая и не маленькая и как по мне хорошо подходит для экспериментов по подключению обмоток двигателя. Кстати вместо контроллера Arduino, вы можете то же самое проделать и при помощи генератора прямоугольных импульсов. Выставьте на нем частоту приблизительно равную 500 Гц. Амплитуда напряжения на выходе должна быть 5В. Соединяете общий провод и выход генератора подключаете ко входу STEP драйвера.
void setup() < pinMode(2, OUTPUT); >void loop() < digitalWrite(2, HIGH); delay(1); digitalWrite(2, LOW); delay(1); >

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

Еще раз более внимательно разберём в графическом виде, что нужно переворачивать. Здесь буквами А и В обозначены пары выходов драйвера. В первом случае нас все устраивает. Во втором случае нам не понравится направление вращения ротора по умолчанию. Для поворота в правильную сторону вам нужно поменять провода на одной из пар выходов драйвера. В третьем случае двигатель дергается на месте, что означает, что нужно поменять местами два провода из разных пар выходов драйвера. В четвертом случае все так же как и в третьем, только направление вращения ротора после замены местами двух проводов нам может не понравиться и тогда мы оказываемся на втором случае и уже знаем как развернуть ротор в другую сторону. В общем, как бы мы не подключили шаговый биполярный двигатель к исправному драйверу, получаем два варианта событий: либо ротор вращается в рабочем режиме, либо дергается на месте. И, чтобы он перестал дергаться и вращался нормально, вам нужно перекинуть два провода. Это и есть алгоритм подключения шагового двигателя.
Спасибо за внимание! Нам очень поможет ваша подписка и лайк!
Сигналы управления драйвера ШД: PUL/DIR, STEP/DIR, CW/CCW. Управление шаговыми драйверами DM860H, DM556, TB6600. с Arduino.
ГЛАВНАЯ / КАтегории / Сигналы управления драйвера ШД: PUL/DIR, STEP/DIR, CW/CCW. Управление шаговыми драйверами DM860H, DM556, TB6600. с Arduino.
Общие сведения:
Шаговый двигатель это бесколлекторный двигатель, ротор которого вращается не плавно, а шагами (дискретно). Один оборот ротора (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// // Останавливаем вал удерживая его: // Двигатель не вращается, если на вывод PUL не поступают импульсы. delay(5000); // Ждём 5 секунд. В это время двигатель остановлен, его вал удерживается. // Меняем направление движения вала: // digitalWrite( pin_DIR, 1 ); // Меняем логический уровень вывода DIR с 0 на 1. delayMicroseconds(5); // Выполняем задержку t2 (см. график STEP/DIR). // Поворачиваем вал на 2 оборота: // for(int i=0; i // // Останавливаем вал без удержания: // 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) // Определяем значение предделителя: uint16_t i; uint8_t j; f*=2; if(f>(F_CPU/255/ 1))else if(f>(F_CPU/255/ 8))else if(f>(F_CPU/255/ 32))else if(f>(F_CPU/255/ 64))else if(f>(F_CPU/255/128))else if(f>(F_CPU/255/256))else // Устанавливаем регистры 2 таймера: TCCR2A = 0<
Как только переменной step присваивается число отличное от 0, то на драйвер начинают поступать импульсы. Значение step убывает с каждым поданным импульсом, пока не достигнет 0, что приведёт к остановке вала двигателя. Частота подачи импульсов в Гц указывается функцией funcSetTimer2().
В данном скетче мы ждём завершение вращения вала проверяя значение step в цикле while, вместо этого можно выполнять другие действия, например, опрашивать концевики, датчики, измерять пройденное расстояние и т.д.
Код работает на Arduino UNO, Pro Mini, Nano, Mega.
Ссылки
- Шаговые двигатели.
- Драйвер шагового двигателя, TB6600 (4.0А).
- Драйвер шагового двигателя DM556 (5.6A).
- Драйвер шагового двигателя DM860H (7.2A).
- Wiki — Шаговые двигатели.
Как изменить направление вращения шагового двигателя
Огромное спасибо! Я честно искал, но вводил “реверс ШД”, а не осей. Вот кому-то может пригодиться еще:
Евгений, там, да не совсем. Ваша картинка необходима в случае если станок работает правильно, а в ноли шурует не туда. А вообще реверс в маче- в портах и пинах, сигнал DIR, направление. Там может стоять крестик, а может птичка. И это вращает в разные стороны.
Понял, спасибо. Я еще начинаю работу со станком, потому как вот буквально только вчера вечером закончир распайку кабелей, поэтому еще не все из документации понятно, вот и приходится спрашивать:).
… там, да не совсем.
Смотрим внимательно на картинку.
Столбец №1 — Reversed — реверс оси.
Столбец №6 — Home negativ. — реверс нуля оси.
То что Вы советуете в пинах — установка активного уровня. То есть, по какому фронту срабатывает схема управления. Оно не совсем то что надо.
“Реверс” переключением обмотки приведет к неработоспособности двигателя
Никогда не задумывался над этим вопросом.Считал ,что направление вращения ШД можно изменить поменяв полярность одной обмотки.Поясните пожалуйста.
Управлене ШД основано на изменении полярности магнитного потока в строгой последовательности. Если Вы поменяете местами выводы ОДНОЙ обмотки, Вы нарушите согласование ее с остальными. То есть она будет работать не правильно. Это же не трехфазник. Загляните по ссылке во втором посте. Не отписка, просто повторять описание работы долго и много.
Реверс ШД достигается изменением ПОРЯДКА следования импульсов на обмотках.
Спасибо.Буду проверять у себя,как подключено.Обмотки местами тоже нельзя менять?
Обмотки шаговых двигателей должны быть включены строго по схеме. Точка на схеме обозначает начало обмотки. “Реверс” переключением обмотки приведет к неработоспособности двигателя.
Не забывайте уточнять что это верно только для униполярных драйверов, для биполярных драйверов концы равнозначны,
а направление вращения в Mach3 задается тут Config > Ports & Pins > Motor Outputs — галка в Dir Low Activ
Понятно. Опять не конкретика в вопросе.
Разные исполнения двигателей, вот и говорим о разном.
Для биполярных, как раз реверс сменой концов реален. Обмотки у них включены параллельно.
Так что не совсем однозначны.
Ну вот все и выяснилось,а то мозг отказывался понимать.
У меня биполярные ШД от Purelogic 57 серии, драйверы Gecko G203V. На самом драйвере G203V, есть обозначение типа А — А и B — B, при этом в описании на драйвер указано, что подключение ШД осуществляется так — на А один провод, на А второй конец провода, вот:
TERMINAL 3 Motor Phase A — Connect one end of your “Phase A” motor winding here.
TERMINAL 4 Motor Phase /A — Connect the other end of your “Phase A” motor winding here.
TERMINAL 5 Motor Phase B — Connect one end of your “Phase B” motor winding here.
TERMINAL 6 Motor Phase /B — Connect the other end of your “Phase B” motor winding here.

Про последовательность обмоток ничего не говориться. А вот по ШД:
Я подключил так — красный * — А, оранжевый — А, зеленый* — B, синий В. Так можно или не правильно?
Спокойно! Мозг — оно подневольное. Должон понимать все. А что бы не сильнно напрягать, положу, все же, картинку. С ней будет понятнее.
Очевидно, что каждая отдельная обмотка должна быть включена так как должна.
У некоторых двигателей соединения обмоток сделаны на заводе. И выведены только концы для подключения в одном варианте.