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

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

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

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

Назначение выводов также сопряжено с определенными сложностями. В нашей плате есть отдельные разрешающие выводы для каждой оси. Такой вариант в мастере настройки не предусмотрен, поэтому для нормальной работы надо внести следующие строки в файл custom.hal.
net xenable => parport.0.pin-14-out
net yenable => parport.0.pin-02-out
net zenable => parport.0.pin-06-out
Входы я пока не настраивал, хотя, по-хорошему, туда надо подключить ограничительные датчики.

Наконец, выполняется настройка осей. В данном случае я все настройки применил к оси 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 писк двигателя минимален.
В результате изучения двигателей и их драйвера я сделал несколько выводов.
- Качество драйвера и двигателей — удовлетворительное. Хороший драйвер и хороший двигатель позволяют получать скорости вращения в несколько раз выше, чем эта комбинация.
- Драйвер примерно соответствует двигателям. Нельзя сказать, что узкое место в драйвере или в двигателях.
- Наиболее стабильно работает комбинация быстрого затухания и полушагового режима движения.
- На максимальных оборотах двигатель работает более плавно, чем на малых оборотах. Возможно, у системы есть какая-то резонансная частота, но чтобы ее определить нужны отдельные эксперименты.
- Вращательного момента двигателя даже на минимальном токе достаточно, чтобы перемещать каретку.
- За время эксперимента двигатели нагрелись едва ощутимо.
- Мощность БП значительно превосходит требования системы.