Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 3

Управление шаговым двигателем с помощью Arduino

024640.jpg

  • Цена: US $8.89

Опять я, к вам со своими обзорами, по ЧПУ. Ну мало ли, может кому и интересно будет, про ЧПУ строение. Для начала кто не знает, или просто знает такие слова, как контролер, драйвер и опторазвязка. В чем их отличие? Контролер, есть универсальный, на несколько осей, обычно под небольшие токи, на нем и опторазвязку обычно ставят, релюхи всякие и т.д. и т.п. Универсальный стоит подороже и если что полетит, то трудней причину искать будет. Есть более простой контролер, там отсутствуют драйвера. Так как двигатели могут разной мощности быть, ну и под них разные драйвера. Так же на осях различных могут шаговые движки разные стоять. На разный ток. То есть драйвер. самый нам нужный, чтобы ШД управлять. Там обычно перемычками, переключателями мы и выставляем ток и микрошаг для ШД. Сейчас драйвера идут почти сплошь, уже с оптронами, то есть с опторазвязкой. Но кто не знает, по привычке покупает, контролер с опторазвязкой на нем, а к ним уже драйвера подключает. Я тоже кстати сглупил, заказал такой. Он по хорошему не сильно то и нужен. Раб. поле я свое знаю, поэтому детали сразу под него разрабатываю. Конечники не сильно и нужны. Включение шпинделя, мне тоже как то не нужно. Кто его знает, глюканет там контролер и пока я фрезу на мощном фрезере меняю, он возьмет и включится. Пальцы как с куста, улетят. В общем теории немного, вам дал. Еще немного схемотехники по подключению драйверов на порты. Есть 2 такие основные схемы подключения.7645da.jpg Китайцы в основном как один первую советуют. Но она не всегда срабатывает. Я уже писал обзор покупки TB6600, а на самом деле там оказалась TB67S109AFTG. Микруха намного мелкоскопичней чем первая. И по даташиту вроде как более слабая по току. Обзор мой здесь mysku.ru/blog/aliexpress/41551.html Там подробно вроде всё обсудили. Поэтому после него я опять заказал драйвера на TB6600, где уже наглядно на фото видно, что стоит именно эта микруха. Также выбирал, чтобы ток перемеником не накручивать, а то ошибка и спалить можно. Так как есть и такого исполнения, они немного подешевле будут. А есть закрытого типа, они подороже. Ну и радиатор там помощней. В общем описываю, что я заказал и получил. Продавец хороший, быстро отправил и через пару недель, получил на почте, хотя вроде по деньгам и недорого. Был нормальный трек, который всю дорогу бился. Границу как по маслу проскочил, а также таможню Екатеринбург. Даже удивительно, обычно там «черная яма». Видно от трека зависит. Пришло в сером пакете, хорошо замотанным скотчем, упаковкой с пупырушками и сами драйвера в картонных коробках, без всяких надписей. Картон хороший.58ebbb.jpg Сами драйвера, неплохо выполненные. Пайка приличная. Емкость немного кривовато стояло на одном. Не стал выправлять. Термопасты под TB6600 тоже не пожалели, даже с лишком, ваткой лишнее убрал с боков. Для любителей рассматривать детали еще вид, крупно. Там и таблица переключателей, чтобы получать различные микрошаги и токи на драйвере. Ну и еще пару вам видов с боку.

Думаю по самой железке теперь у вас представление есть. Теорию всё могут и по обзору предыдущему посмотреть и по Инет детали. Но практика как оказалась, совсем другую картину дает. Во первых по первым мной заказанным драйверам на TB67S109AFTG, схема подключения которые китайцы дают. То есть вверху №1 Не работает. Мучился, что только не делал и с подключением и настройками в Масн. Крутила зараза лишь в одну сторону. Пока не подключил по схеме №2. Тогда всё стало на свои места и заработало как положено. Единственно опасаюсь на драйвере ток больше 2.6А давать. Хотя схему охлаждения по своему переделал. Заводская совсем не вдохновила. Так вот сегодня пробывал и первые драйвера и вторые, на одних и тех же режимах. То есть ток 2.6А и микрошаг 1/16 И здесь все теории и даташиты к чертям просто полетели. Первый заказанный драйвер, просто шуршит осями. А вот второй на оригинальной TB6600 скрип, дерганье какое то. Чувствуется, что движок как бы рывками крутит. Вот вам и Термобутерброд. Он то оказался намного лучше. Конечно ещё нужно поэксперементировать. Но уже видно. Так как перекидывал оси, один шепчет, другой скрипит.Вот такие пироги. Всем Долгих лет жизни и удачи. Спрашиваем не стесняемся. Любители минусовать, имейте все же хоть немного совести, прежде чем по кнопке тыкать. Ну и бонусы.Бонусы от меня  Статьи    7    30.11.2015    30.12.2017

Содержание

Основанная на чипе TB6600HG новая модель драйвера BL-TB6600-V1.2 пришла на замену популярному драйверу BL-TB6560-V2.0.Этот драйвер-контроллер подойдет для построения не только любительских систем ЧПУ, но и профессиональных, основаных на двигателях высокой мощности. Если сравнивать с предыдущим поколением драйвера TB6560AHG, то выходная мощность у TB6600HG возросла до 200Вт (как видим практическое удвоение по значению мощности), рабочее напряжение поднято с 35В (TB6560AHG) до 50В, рабочий ток увеличен до 4.5А (5А пиковое значение). Увеличена максимальная рабочая частота. Добавлены схемы защиты.

К основной «вкусности» данного драйвера можно отнести интеллектуальное управление током и использование ШИМ моделяции, благодаря чему есть возможность подключать к драйверу шаговые двигатели любого напряжения питания и тока — на установленном уровне микросхема сама ограничит максимальный ток.

Основные характеристики:
Свойства Параметры
Входное напряжение силовой части от 8В до 50В постоянного напряжения (36В рекомендуется)
Выходной ток от 0.3А до 4.5А (пиковое значение 5А)
Микрошаг 1 .. 2 .. 8 .. 16
Максимальная частота ШИМ 200кГц
1.1А .. 2.2А .. 3.3А .. 4.5А
50% или 100%
Температура эксплуатации от -10 до +45° С
Размеры 80мм*50мм*35мм
Вес 118.3г

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

Разъемы на плате
Маркировка Описание
24V+ Положительный контакт для подключения блока питания (питания шагового двигателя) постоянное напряжение
GND Отрицательный контакты для подключения блока питания (питания шагового двигателя) постоянное напряжение
CLK- Вход для шаговых импульсов STEP (рабочим является передний фронт, длительность > 10мкс)
CW- Вход для управления направлением вращения вала шагового двигателя (DIR)
EN- Вход для включения/выключения шагового двигателя (ENABLE)
+5V Общий сигнальный провод
A+,A- Контакты для подключения I фазной обмотки шагового двигателя
B+,B- Контакты для подключения II фазной обмотки шагового двигателя

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

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

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

Примечание:

Значение сопротивлений R_CLK, R_CW, R_EN зависят от напряжения питания VCC:

  • При VCC = 5В, R_CLK = R_CW = R_EN = 0;
  • При VCC = 12В, R_CLK = R_CW = 1кОм, R_EN = 1.5кОм;
  • При VCC = 24В, R_CLK = R_CW = 2кОм, R_EN = 3кОм;

Более подробно о интерфейсной плате BL-MACH-V1.1 можно узнать по ссылке Плата коммутационная (контроллер) BL-MACH-V1.1

СТАТЬЯ В ПРОЦЕССЕ НАПИСАНИЯ

Обновлено: 30.12.2017

Driver_TB6560_V2_2.jpg В уроке подключим STEP/DIR драйвер TB6560-V2 к плате Ардуино. Научимся управлять им с помощью библиотеки StepDirDriver.

Предыдущий урок     Список уроков     Следующий урок

TB6560-V2 недорогой драйвер шаговых двигателей поддерживающий все типичные режимы и функции STEP/DIR драйверов.

В уроке будем подключать его к плате Ардуино. Все схемы и программы урока подойдут к любому другому STEP/DIR драйверу.

Подключение драйвера к плате Ардуино.

 В статье о модуле TB6560-V2 есть две схемы подключения к микроконтроллеру. Будем использовать эту.

Driver_TB6560_V2_6.jpgПри высоком уровне сигнала (+5 В) через светодиод входного оптрона течет ток, и модуль воспринимает это как активный управляющий уровень. Резисторы 330 Ом ограничивают ток светодиодов. Т.е. драйвером можно управлять сигналами непосредственно с выводов микроконтроллеров.

С учетом этого схема подключения драйвера TB6560-V2 к плате Ардуино выглядит так.

Lesson35_6.pngОбратите внимание на плавкий предохранитель. Я настоятельно рекомендую его поставить. В схемах с простыми драйверами при сгорании ключей через двигатель течет рабочий ток, ограниченный либо сопротивлением обмотки, либо дополнительным резистором. В драйверах со стабилизацией тока ток регулируется за счет ШИМ модуляции. Если в подобных устройствах сгорают выходные ключи, то на двигатель может попасть полное напряжение питания. Это приведет к недопустимому току и сгоранию шагового двигателя. Процесс это медленный, поэтому от выхода из строя привода спасет любой предохранитель – плавкий или самовосстанавливающийся.

Параметры драйвера задаются переключателями на плате модуля. Я задал ток фазы 1 А.

Lesson35_4.jpg

Переключателями S3 иS4 выбирается режим коммутации фаз.

Состояние переключателей Режим
S3 S4
OFF OFF шаговый
ON OFF полу шаговый
ON ON
OFF ON

Для начала я задал шаговый режим, потом проверил все остальные. Все режимы описаны в статье о модуле TB6560-V2. Там же показано, как задавать их переключателями модуля.

Собранная схема у меня выглядит так.

Lesson35_3.jpgОсталось научиться управлять такой системой.

Библиотека StepDirDriver.

Эту библиотеку я разработал для управления STEP/DIR драйверами. Она полностью совместима по функциям с библиотекой StepMotor (урок 29). Только 2 отличия:

  • Конструктор имеет другие аргументы. Просто для STEP/DIR драйвера требуются другие сигналы управления и другое количество сигналов.
  • В функции установки режима setMode() игнорируется параметр stepMode – режим коммутации. Режим задается переключателями на драйвере.

Загрузить библиотеку StepDirDriver можно по этой ссылке:

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

Описание класса StepDirDriver.

У класса следующие public методы.

class StepDirDriver {

  public:    StepDirDriver(byte pinStep, byte pinDir, byte pinEn); // конструктор    void  control();  // управление, функция должна вызываться регулярно с максимальной частотой коммутации фаз    void  step(int steps);  // инициирует поворот ротора на заданное число шагов    void  setMode(byte stepMode, boolean fixStop);  // задает режимы коммутации фаз и остановки    void  setDivider(int divider);  // установка делителя частоты для коммутации фаз    int readSteps();  // чтение оставшихся шагов    } ;

Нетрудно догадаться, о назначении аргументов конструктора:

  • pinStep — вывод сигнала STEP;
  • pinDir — вывод сигнала DIR;
  • pinEn — вывод сигнала ENABLE.

StepDirDriver myMotor1(10, 11, 12);  // создаем объект StepDirDriver, задаем выводы для сигналов STEP, DIR, ENABLE

Описание методов библиотеки StepDirDriver.

void control()

Необходимо вызывать метод регулярно в параллельном процессе (прерывании по таймеру). В нем вырабатываются управляющие сигналы, определяющие коммутацию фаз. Частота вызова функции control() вместе с делителем, задаваемым функцией setDivider, определяет скорость вращения двигателя.

// обработчик прерывания 200 мкс void  timerInt () {    myMotor1.control(); // управление двигателем  }

void step(int steps)

Метод инициирует поворот двигателя на заданное число шагов. В микро шаговых режимах речь идет не о физических шагах двигателя, а о микро шагах. Параметр steps с положительным значением инициирует поворот против часовой стрелки, с отрицательным значением – по часовой стрелке.

Запустив вращение функцией step()

myMotor1.step(300);  // сделать 300 шагов против часовой стрелки

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

myMotor1.step(0);  // остановить привод

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

myMotor1.step(30000);  // постоянное вращение

О том, что двигатель остановился можно узнать с помощью метода readSteps().

void setMode(byte stepMode, boolean fixStop)

Метод задает состояние двигателя при остановке.

  • Если fixStop = true, то при остановке на обмотки двигателя подается ток удержания, положение ротора зафиксировано.
  • При fixStop = false, напряжение с обмоток двигателя при остановке снимается.

Аргумент stepMode игнорируется. Он добавлен для совместимости с такой же функцией библиотеки StepMotor.

myMotor1.setMode(0, true);  // myMotor1.setMode(0, false);  // двигатель полностью отключен

void setDivider(int divider)

Функция задает коэффициент деления частоты вызова метода control(), а значит, определяет скорость вращения двигателя. Скорость вращения можно вычислить по следующей формуле:

Rpm = 60 000  /   ( divider  * Tcontrol * Nдвигателя  ) / Nмикрошагов

  • Rpm – скорость вращения в оборотах в минуту;
  • Tcontrol – период вызова метода control() в мс;
  • Nдвигателя – число шагов двигателя на полный оборот;
  • Nмикрошагов – число микро шагов двигателя на одну фазу.

Для шагового режима Nмикрошагов = 1, для полу шагового Nмикрошагов = 2 и т.д.

myMotor1.setDivider(5);     // делитель частоты 5

int readSteps()

Метод считывает количество шагов, оставшихся до остановки двигателя. Возврат 0 означает, что двигатель остановлен.

if (myMoto1r.readSteps() == 0)  {  // двигатель остановлен}

Примеры использования библиотеки StepDirDriver.

Использование новой библиотеки ничем не отличается от применения функций библиотеки StepMotor из предыдущих уроков.

Всего два отличия:

  • Подключение библиотеки #include   вместо #include <stepmotor>.
  • Другой формат конструктора StepDirDriver myMotor(10, 11, 12);вместо StepMotor myMotor(10, 11, 12, 13).

</stepmotor></span></li></ul>

В программе меняются всего 2 строки. 

Можете загрузить и проверить скетч программы

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

, которая заставляет сделать двигатель 2 оборота по часовой стрелке со скоростью 1 оборот в секунду, затем пауза 1 секунда, 2 оборота против часовой стрелки, опять пауза на секунду и так в цикле. Он похож на примеры из предыдущих уроков для библиотеки StepMotor. Не забудьте установить библиотеку StepDirDriver:

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

Проверка драйвера шагового двигателя с AT командами.

Я заменил две строчки программы драйвера с управлением от компьютера из Урока31 и получилось новое устройство для работы с шаговым двигателем. Загрузить новый драйвер с управлением по протоколу AT команд можно по этой ссылке:

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

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

Задал микро шаговый режим с 16 микро шагами. У меня двигатель имеет 400 физических шагов. В микро шаговом режиме получился двигатель, имеющий целых 6400 шагов на оборот! Попробовал управлять программой верхнего уровня StepMotor (урок 31).

Lesson35_1.jpgВсе работает. Точность установки просто невероятная.

Проверил и работу следящего электропривода из урока 32.

Lesson35_2.jpgРазрешающая способность положения ротора почти 0,05 °!

Другие варианты библиотеки StepDirDriver.

Библиотека StepDirDriver вырабатывает сигналы управления с высокими активными уровнями. Если STEP/DIR драйвер подключить к плате Ардуино непосредственно, без оптронов, то необходимы управляющие сигналы с низкими активными уровнями. Я сделал такой вариант библиотеки.

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

Есть еще один вариант библиотеки с типом данных long для свойства step.

 Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта! 

Наверное, в последних двух уроках я убедительно показал преимущества STEP/DIR драйверов. Но какой драйвер применять в конкретном случае решать разработчику. Что важнее низкая цена простого драйвера из ключей или функциональность STEP/DIR драйвера.

Бывают очень серьезные разработки с простыми драйверами. Например, практически все шаговые двигатели в фасовочном оборудовании НПП ”РОСТ” работают в униполярном режиме с простыми драйверами-ключами. Из-за этого у двигателей уменьшился крутящий момент, снизилась максимальная скорость вращения, но зато значительно упала цена системы управления. Для устройств с 7-10 шаговыми двигателями это важно.

Надо выбирать оптимальный вариант. В каких-то случаях без STEP/DIR драйвера не обойтись, в других проектах вполне удачно будут работать простые драйверы.

Предыдущий урок     Список уроков     Следующий урок

Coin.png Поддержать проектИспользуемые источники:

  • https://mysku.ru/blog/aliexpress/42324.html
  • http://totcnc.com/tblog/20_instr
  • http://mypractic.ru/urok-35-podklyuchenie-stepdir-drajverov-shagovyx-dvigatelej-k-arduino-biblioteka-stepdirdriver.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации