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

LPT-контроллер Maxxtro

Эпопея началась с LPT-порта. Не обнаружив его у себя на материнской плате, я решил, как во времена 386-х компьютеров стандарта AT, обзавестись платой расширения. Чудо инженерной мысли под шину PCI на микросхеме MCS9805 производства компании Maxxtro обошлось мне в $15. К сожалению, потом я понял, что один LPT-порт у меня в компьютере все-таки был, только не с разъемом DB-25, а в виде штырьков для подключения шлейфа. Но так как плату к тому моменту я уже купил, пришлось разбираться с ней. Под Windows она определилась сразу же и немедленно заработала. Под Linux все оказалось сложнее. Тем не менее, после того, как нашелся подходящий драйвер, он быстро установился и устройство заработало.

LinuxCNC

В качестве программного средства CAM (или, если кому-то так нравится больше, АСУТП) я выбрал программный комплекс LinuxCNC (предыдущее название — EMC2). Ни покупать ставший стандартом де-факто MACH3, ни связываться с защитой от копирования мне не хотелось, поэтому я выбрал именно эту программу.

LinuxCNC распространяется в виде загрузочного диска Ubuntu. Как оказалось, обычное ядро для этой программы не подходит, поэтому она сразу распространяется вместе с операционной системой, в которой установлено ядро реального времени. Обновление ядра системы приводит к тому, что LinuxCNC перестает запускаться. Разумеется, я узнал об этом выполнив обновление ядра, а не прочитав инструкцию, где явно указано это не делать. :) Пришлось еще раз переставить систему.

Настройка программы начинается с запуска LinuxCNC Stepconf Wizard. Эта утилита позволяет создать профиль используемого станка: задать параметры драйвера шаговых двигателей, а также свойства осей: пределы перемещения, передаточное число, и т .п.

Настройка LinuxCNC - общие параметры

Параметры Driver Timing Settings определяются исходя из характеристик драйвера. На сайте LinuxCNC в таблице драйверов наш драйвер обозначен как “китайские синие платы”. Разработчик рекомендует установить всем параметрам значение 150000. Я решил несколько снизить требования, и установить значение 135000, которое позволяет делать шаги с частотой около 3,3 кГц.

Настройка LinuxCNC - назначение выводов порта

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

net xenable => parport.0.pin-14-out
net yenable => parport.0.pin-02-out
net zenable => parport.0.pin-06-out

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

Настройка LinuxCNC - настройка параметров оси

Наконец, выполняется настройка осей. В данном случае я все настройки применил к оси X. Шаговый двигатель у нас с шагом 1,8°, так что количество шагов на оборот - 200. При этом драйвер стоит в полушаговом режиме, поэтому в следующем поле стоит значение 2. Никаких редуторов у нас нет, значит дальше отношение 1:1. Шаг ШВП — 5 мм на оборот. Максимальную скорость я получил экспериментально — это самая большая скорость, при которой двигатель не пропускает шаги и плавно вращается. Получилось 40 мм/с, или 40/5×60=480 об/мин. Чтобы экспериментам не мешали программные ограничения, диапазон оси задан от -2000 до 2000 миллиметров.

Настроив параметры я в свое удовольствие пожужал моторчиком и подвигал каретку туда-сюда, а потом перешел к измерению токов. Чтобы измерить ток потребления системы, был собран следующий стенд. Напряжение источника питания — около 20 В. Предельная мощность источника позволяет выдавать токи до 14,6 А. В разрыв цепи питания включен обычный школьный амперметр на 2 А.

Испытание шагового двигателя

Непосредственно после того, как на плату драйвера подается питание, она начинает потреблять ток около 100 мА. На плате установлено два линейных стабилизатора, на 12 В и на 5 В. По всей видимости, весь этот ток идет через них, из-за чего они очень сильно разогреваются, несмотря на наличие радиаторов. После запуска LinuxCNC, потребляемый ток резко возрастает. Так происходит потому, что на ШД, подключенный к плате, подается удерживающий ток. Результаты измерений я свел в таблицу.


Ограничение по току Ток в различных режимах, мА
Удержание 480 об/мин 60 об/мин
25% 150 400 450
50% 300 400 550
75% 450 400 650
100% 700 400 800

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

В результате изучения двигателей и их драйвера я сделал несколько выводов.

  1. Качество драйвера и двигателей — удовлетворительное. Хороший драйвер и хороший двигатель позволяют получать скорости вращения в несколько раз выше, чем эта комбинация.
  2. Драйвер примерно соответствует двигателям. Нельзя сказать, что узкое место в драйвере или в двигателях.
  3. Наиболее стабильно работает комбинация быстрого затухания и полушагового режима движения.
  4. На максимальных оборотах двигатель работает более плавно, чем на малых оборотах. Возможно, у системы есть какая-то резонансная частота, но чтобы ее определить нужны отдельные эксперименты.
  5. Вращательного момента двигателя даже на минимальном  токе достаточно, чтобы перемещать каретку.
  6. За время эксперимента двигатели нагрелись едва ощутимо.
  7. Мощность БП значительно превосходит требования системы.