Как проверить драйвер шагового двигателя на исправность
Перейти к содержимому

Как проверить драйвер шагового двигателя на исправность

  • автор:

Как проверить, сгорел ли драйвер?

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

1. Отключить от драйвера все имеющиеся соединительные провода (питание, сигнальные провода, а также обмотки электродвигателя).

2. Воспользовавшись мультиметром, определить режим измерения сопротивления (Ом — диапазон измерения).

3. К контакту GND на драйвере следует подключить черный провод. Красный провод необходимо подключать поочередно к контактам обмоток электродвигателя. При этом необходимо следить за показаниями прибора.

В случае, если на одном из контактов значение сопротивления будет равно 0 Ом – в данном контакте сгорел силовой транзистор.

4. Черный провод необходимо подключить к контакту + (плюса) силового питания на драйвере шагового двигателя (серводвигателя). В случае, если на одном из контактов значение сопротивления будет равно 0 Ом – в данном контакте сгорел силовой транзистор.

Когда нужен ремонт

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

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

Сигналы управления драйвера ШД: 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<Данный скетч выполняет те же действия что и предыдущий. Но подача импульсов на вывод PUL осуществляется не в цикле основного кода, а по прерываниям от таймера.

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

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

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

Ссылки

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

Проверка драйвера двигателя L298n без использования Arduino

В данном материале пойдет речь о том, как проверить работоспособность драйвер двигателя на базе L298n без использования микроконтроллера.

  • Блок питания 5 вольт;
  • любой двигатель, рассчитанный на 5 вольт;
  • немного проводов;
  • тестируемый драйвер двигателя L298N;

Перед тем как приступить к проверке, нужно знать назначение разъемов на плате драйвера.

Назначение выводов на плате драйвера L298N

Подключаем двигатели в винтовые зажимы OUT1/OUT2 и OUT3/OUT4. Питание подключаем к разъему Vin и GND. К разъему +5В подключаем провод и поочередно касаемся штыревых разъемов «направление вращения моторов». Если драйвер исправен каждый двигатель должен будет вращаться в нужном направлении

Рекомендуемые товары

Драйвер двигателей на L298N

Драйвер двигателей на L298N

Драйвер моторов использует чип ST L298N, может напрямую управлять двумя двигателями от постоянного т..

Как проверить драйвер BigTreeTech TMC2209 на работоспособность?

Пришли драйверы с Али. Стал подключать проверять, уже третий проверяю — двигатели молчат. Я новичок, но информации имею уже достаточно. Осталась неделя на проверку, через неделю если это драйвера не рабочие открыть спор уже не получится. Выручайте братцы. Всё перепробовал. Драйвера с двигателями молчат родимые.

Я подробно опишу что я делал, а вы скажите где я ошибся! Сам не справился. Обзоры на ютубе и гугле кончились, пользы не приносят, где копать не знаю. Вроде всё делаю правильно, но результата нет. Проверил три драйвера. Все молчат. Другие 9шт пока проверять не хочется, вдруг это я что-то не так делаю и драйверы тупо дохнут. Как-то не верится что все три бракованные.

Пришли с али: BIGTREETECH Ramps 1.6 Plus, драйверы BigTreeTech TMC2209 (12шт), двигатели 17HS24-2104S.

1. Поставил Ramps на Mega2560, перемычки с Ramps ВСЕ убрал (драйверы со всеми убранными перемычками будут работать в режиме step\dir с шагом 8).

2. Поставил один драйвер на X ось . На драйвере выставил напряжение (выставлял разные значения от 0.7V до 1.2V. Я так думаю что в любом случае движки запустятся просто при неправильно выставленном напряжении они либо будут тянуть слабо, либо будут перегреваться).

Вопрос: при подключении двигатели же сразу должны начать потреблять энергию? у меня блок питания 12V который питает Ramps оснащён амперметром, и при включении видно потребление по нулям, чтобы я не делал.

3. Скачал прошивку GRBL для mega. Залил. Включил программу Candle. Она включилась и увидела плату. При нажатии стрелочек видно что программа отрабатывает и посылает сигнал, но двигатель не реагирует. Пробовал другие программы — Grbl Controller, pronterface. Они подключаются и видят плату, но пишут error:20. Вычитал что с моей версией grbl работать будет только Candle, она и работала, на ней и проверял, с разными настройками. По лампочкам на рамсе видно что они реагируют на нажатие стролочек в программе.

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

Вопрос: есть ли ПРОСТОЙ и надёжный способ проверить только драйвер ПРОСТО на работоспособность, например мультиметром? ЖИВОЙ или НЕТ?

Решил проверить самым надёжным способом (насколько я знаю) — напрямую подключить драйвер к движку, запитав его от 12V. А в качестве управляющего сигнал использовать ардуинку.

Амперметр на блоке питания так же при всех вариантах проверки показывал по нулям. В качестве источника сигнала на порт STEP на драйвере использовал Arduino Nano. Всё подключал внимательно, ничего ниразу не перепутал. Положение проводов двигателя тоже менял (хотя двиг и так заработал бы даже при не правильном подключении, просто дёргался бы на месте в худшем случае). Сигнал с ардуинки прозванивал мультиметром — идёт. Всё проверял и перепроверял. Результат одинаковый — двигатель стоит как мёртвый (кстати двигатель тоже проверял конечно, работает. Прозванивал, соединял провода и пробовал крутить — двиг реагировал и тормозился. Подключал к другому двиглу и тот крутился когда крутил первый двигатель рукой)

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

Друзья выручайте! Все фото прилагаю. Очень подробно не стал описывать, вы спрашивайте!!

Добавить комментарий

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