Использование модулей Fractal для управления шаговыми электроприводами
В настоящее время шаговые электроприводы находят очень широкое применение при решении задач прецизионного позиционирования в системах промышленной автоматизации и робототехнике. Тем не менее, на рынке практически отсутствуют недорогие средства управления ими. Опыт показывает, что многие российские компании, приобретающие шаговые электродвигатели, впоследствии тратят значительное время на самостоятельное проектирование узлов управления. Сюда входят и выбор элементной базы, и схемотехника, и программное обеспечение — как микроконтроллера, так и компьютера (если требуется управление с терминала). Еще больше эти задачи усложняются при необходимости использования сильноточных электродвигателей и микрошагового режима управления — требований, почти неизбежно возникающих при применении электроприводов в промышленности.
Альтернативой самостоятельному проектированию системы управления электроприводом являются модули фирмы Fractal OUT9-1.x. Данные модули предназначены для управления биполярными шаговыми электроприводами с двумя управляющими обмотками (с током до 1 А). Естественно, схема позволяет управлять и униполярными электроприводами (в данном случае не подключаются средние отводы). Плата позволяет управлять как одним, так и двумя шаговыми двигателями, а также подключать один или два датчика позиционирования.
Платы OUT9-1.x принадлежат к модульному направлению средств автоматизации, разрабатываемых ООО «Фрактал». Модульная концепция подразумевает объединение готовых схемотехнических решений (модулей цифрового ввода-вывода, модулей АЦП, ЦАП, силовых и интерфейсных модулей) на шине I2C, централизованное управление которыми осуществляется модулем вычислителя. Более того, управление этими модулями осуществляется программой, написанной на языке высокого уровня — Fractal Basic. Фактически, разработка средств промышленной автоматики с использованием решений Fractal сводится к выбору необходимых модулей и описанию их функционирования на специализированном языке высокого уровня.
Платы OUT9-1.x — одна из серий модулей выходов, построенных по вышеописанной концепции. Расположенный на плате контроллер PIC управляет транзисторными ключами в мостовой схеме, которые переключают обмотки шагового электродвигателя. Программа, зашитая в микроконтроллере, обеспечивает формирование необходимых диаграмм на выходах в зависимости от полученных от модуля-вычислителя параметров. Кроме того, модули могут быть использованы как 8 независимых силовых биполярных выходов.
Простейшая система управления шаговым электроприводом, реализованная средствами Fractal, представлена на рис. 1.
В данном примере используется всего два модуля: вычислитель (например, MCU42-3) и модуль управления шаговым электроприводом OUT9-1.x, объединенные по шине I2C. Обмотки шагового двигателя подключаются к OUT9-1.x, а вычислитель — к COM-порту компьютера для программирования. Питание вычислителя может быть как 5-вольтовым, так и любым в диапазоне от 7 до 30 В, что определяется положением соответствующей перемычки. Питание модуля OUT9-1.x выбирается исходя из характеристик используемого шагового электродвигателя.
Внешний вид описанной системы (кроме подключения к COM-порту компьютера) показан на рис. 2. Здесь объединение модулей осуществляется с помощью специального кросс-модуля Fractal CR-10.5, позволяющего соединять по I2C пять модульных устройств Fractal.
На этом собственно схемотехническая часть заканчивается. В завершение на рис. 3 приводится схема модуля OUT9-1.x. На схеме видно, что управление электроприводами осуществляется по мостовой схеме. Следует отметить, что отдельными цифровыми сигналами с портов микроконтроллера PIC можно переключать как «верхние», так и «нижние» транзисторные ключи, то есть коммутировать нужный выход с землей или питанием. Таким образом, помимо управления электроприводами имеется возможность управления любой сильноточной (до 1 А) нагрузкой.
Программирование вычислителя для управления шаговым электроприводом по заданному алгоритму осуществляется на языке высокого уровня Fractal Basic. Язык прост в освоении, а по синтаксису очень похож на классический Basic. Управление электродвигателем осуществляется путем записи в определенные ячейки памяти контроллера PIC (модуля OUT1-9.x) значений, определяющих скорость, направление и число шагов, на которое необходимо совершить поворот.
Приведем пример простейшей программы, поворачивающей электродвигатель на 100 шагов по часовой стрелке.
new ;очистка памяти 0i2c*54h ;установка адреса для операций по интерфейсу I2C 10 i2cw(54h)=100 ;количество шагов— 100 20 i2cw(21h)=200 ;частота управляющих импульсов — 50 Гц 30 i2c(38h)=6 ;повернуть по часовой стрелке Листинг 1
Директива new очищает память от программ и переменных. Символы, следующие от оператора «;» до конца строки, считаются комментарием. Оператор i2c#54h устанавливает текущее значение Slave Address для операций ввода-вывода с помощью оператора i2c. В нашем случае вычислитель «общается» по I2C с модулем OUT9-1.x, имеющим по умолчанию адрес 54h. Таким образом, операторы i2c и i2cw, передающие по интерфейсу I2C байт и слово соответственно, отправляют информацию модулю управления шаговым электроприводом. Если на одной кросс-шине по интерфейсу I2C объединяется несколько модулей (например, при необходимости одновременного согласованного управления тремя и более шаговыми двигателями), их адреса по умолчанию предварительно изменяются. Следующие строчки программы заносят в память микроконтроллера PIC количество шагов, скорость и направление поворота по адресам 34h, 21h и 38h соответственно. После записи в память направления поворота программа, «зашитая» в микроконтроллере PIC, сама формирует нужные импульсы для переключения транзисторных ключей.
Аналогично осуществляется управление и вторым электродвигателем, с той лишь разницей, что запись управляющих параметров происходит в другие ячейки памяти. Ниже (листинг 2) приведен пример программы, управляющей одновременно двумя шаговыми двигателями. Один из них поворачивается на 50 шагов по часовой стрелке медленно, другой — на 200 шагов против часовой стрелки быстро.
new ;очистка памяти 0i2ff54h ;установка адреса для операций по интерфейсу I2C ;управление первым электроприводом 10 i2cw(54h)=100 ;количество шагов— 100 20 i2cw(21h)=40 ;частота управляющих импульсов — 250 Гц 30 i2c(38h)=6 ;повернуть по часовой стрелке ;управление вторым электроприводом 40 i2cw(36h)=100 ;количество шагов— 100 50i2cw(26h)=1000 ;частота управляющих импульсов— 10 Гц 60 i2c(40h)=2 ;повернуть против часовой стрелки Листинг 2
Богатые возможности языка Fractal Basic позволяют управлять электроприводами по различным алгоритмам. К примеру, программа, приведенная на листинге 3, осуществляет повороты поочередно в разные стороны с увеличением числа шагов на пять в каждой итерации (то есть на 5 шагов по часовой, на 10 — против, на 15 по часовой, на 20 — против и т. д.). По достижении полного оборота (например, 200 шагов) алгоритм меняется на обратный (уменьшение числа шагов на 5 в каждой итерации) до полной остановки. Эти «колебательные» процессы сменяют друг друга до бесконечности.
new 0 i2c*54h 5 num=0:dir=2:flag=0 10 if flagol then num=num+5 else mini=num-5 25 i2cw(34h)=num 30 if dir>2 then dir=2 clscdirt 35 i2c(38h)=dir 40 do:whilc i2cw(34h)X> 45 if num>=200thcnflag=l 50 if num<=0 then flag=0 55 goto 10 Листинг 3
В синтаксисе Fractal Basic оператор «:» является разделителем. Переменные объявляются в любом месте программы и не являются типизированными (строка 5). Переменная num хранит текущее число шагов для поворота, а dir — направление. Следует отметить, что в операторе 40 реализован бесконечный цикл, проверяющий содержимое ячейки 34h. Контроллер PIC платы OUT9-1.x декрементирует ее содержимое после каждого выполненного шага. Таким образом, пустой цикл выполняется до обнуления содержимого памяти по адресу 34h, то есть до завершения поворота. Следующий поворот начинается незамедлительно. Внесение паузы между поворотами (например, 1 секунда) осуществляется одной строчкой (41 time=0:do:while time<1), где time — текущее значение счетчика реального времени. Скорость в этом примере не задается — используется значение по умолчанию (200).
Наличие в модуле вычислителя интерфейса RS-232 позволяет легко осуществлять управление электродвигателем по сигналам компьютера. Прием информации по RS-232 осуществляется с помощью команды input, записывающей полученную информацию в указанную переменную. Приведенная ниже программа работает с любой терминальной программой (например, HyperTerminal) на скорости 19 200. В ответ на соответствующие текстовые сообщения пользователь задает число шагов и направление, после чего происходит поворот электродвигателя.
new 0 i2c*54h 5 stl=0:st2=2 15 input "Введите число шагов (от 0 до 65535) »,stl 20 input "Введите направление (0-по часовой/1-против) »,st2 25 i2cw(34h)=stl 30 if st2>0 then st2=6 else st2=2 35 i2c(38h)=st2 40 timc=0:do:whilci2cw(34h)>0 45 goto 15 Листинг 4
Кроме того, каждый модуль OUT9-1.x имеет возможность подключения четырех датчиков позиционирования, по два на каждый двигатель. Датчики должны быть типа «сухой контакт» или «открытый коллектор» и обеспечивать в состоянии «включено» падение напряжения не более 0,5 В при протекающем токе 3 мА. При использовании датчиков движение осуществляется не на определенное число шагов, а до срабатывания начального или конечного датчика позиционирования.
В заключение приведем другой пример использования модуля OUT9-1.x — как набора ключей, способных коммутировать токи до 1 А. В этом случае вместо шаговых электроприводов к соответствующим разъемам платы OUT9-1.x подключается любая другая нагрузка и не используется встроенная программа формирования импульсов, необходимых для поворота двигателя. На принципиальной схеме (рис. 3) видно, что цифровые сигналы с портов микроконтроллера PIC идут в базы соответствующих ключей. Таким образом, непосредственное управление ключами осуществляется простым изменением содержимого портов цифрового ввода-вывода. Однако при таком управлении необходимо следить, чтобы «верхний» и «нижний» ключи (подключающие питание и землю соответственно) не оказались открытыми одновременно. В этом случае неизбежно произойдет выход ключей из строя. Пример в листинге 5 демонстрирует поочередное подключение питания к выводам разъема для первого двигателя.
new 0 i2c#54h 10 i2c*54h,<86h)=0ri ;закрыть "нижние" ключи 20 i2c£54h,(06h)=l ;открыть первый "верхний" ключ 30 iime=0:do:whilcumc<l ;пауза 40 i2c*54h,(06h)=4 ;открыть второй "верхний" ключ 50 iimc=0:do:whilcumc<l ;пауза 60 i2c£54h>(06h)=16 ;открыть третий "верхний" ключ 70 iimc=0:do:whilcumc<l ;пауза 80 i2c£54h>(06h)=64 ;открыть четвертый "верхний" ключ 90 iimc=0:do:whilcume<l ;пауза 100 goto 20 Листинг 5
Сегодня в арсенале Fractal появилось еще одно решение, позволяющее управлять шаговыми электроприводами: новый узел MCX51-6. Узел служит для управления униполярным или биполярным шаговым двигателем и имеет гальванически развязанный интерфейс RS-485 (CAN). Управление шаговым электроприводом производится в микрошаговом режиме 1/32. Узел позволяет программно задавать максимальный рабочий ток электродвигателя (максимальный ток фазы — до 3 А), имеет входы для подключения датчиков начала и конца, а также энкодерные входы. Узел выполнен в компактном конструктиве на DIN-рейку шириной 35 мм.
- fractal.com.ru /ссылка устарела/
- Описание вычислителя MUC42-3.
- Описание модуля управления шаговыми двигателями OUT9-1.x.
- Справочник по языку Fractal Basic.