Управление шаговым двигателем

Материал из cnc-club
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

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

В этом случае можно воспользоваться несколькими вариантами организации управления.

Используя компонент stepgen

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

Прописывается этот компонент с файле .hal:

  loadrt stepgen step_type=0,0 ctrl_type=p,v

Здесь видим, что запущены два компонента stepgen: stepgen.0 - в режиме линейном, а stepgen.1 - в режиме скорости.

Далее прописываем компонент stepgen.1 :

  setp stepgen.1.position-scale 1600
  setp stepgen.1.steplen 1
  setp stepgen.1.stepspace 0
  setp stepgen.1.dirhold 55000
  setp stepgen.1.dirsetup 55000
  setp stepgen.1.maxaccel 33
  net astep <= stepgen.1.step
  net adir <= stepgen.1.dir

Для запуска генерации в режиме скорости необходимо установить пин stepgen.1.enable , например, "привязав" его к пину halui.machine.is-on

  net ext-raz   halui.machine.is-on  stepgen.1.enable

и задав скорость "привязав" пин stepgen.1.velocity-cmd с "ползунком" нашей визуальной панели mygui.hal_hscale1 :

  net ext-reg        mygui.hal_hscale1      stepgen.1.velocity-cmd

Вот и всё. Осталось вывести сигналы STEP и DIR на пины LPT-порта:

  net  astep     parport.0.pin-02-out
  net  adir      parport.0.pin-06-out

Можно управлять шаговым двигателем.

Управление через halui.jog.N.analog

Halui это основанный на HAL интерфейс пользователя для LinuxCNC.

halui.jog.<n>.analog (float, in) - ввод для аналогового задания скорости ручного перемещения.

Т.е. подавая некоторое значение на halui.jog.<n>.analog , например, с "ползунка" нашей визуальной панели mygui.hal_hscale1 :

  net ext-reg        mygui.hal_hscale1      halui.jog.0.analog

мы получим движение по оси 0 (Х) с соответствующей скоростью.

Есть только несколько но...

1. Необходимо задать ненулевое значение halui.jog-speed (float, in) - пину для установки скорости перемещения для положительного и отрицательного джогинга. Например, так:

   setp   halui.jog-speed   100

2. Необходимо в INI при задании параметров оси не указывать значения MIN_LIMIT и MAX_LIMIT (минимальный предел и максимальный предел для движений оси в единицах измерения станка. Когда эти пределы превышаются, контроллер прекращает движение оси. Например, так (здесь строки для наглядности закомментированы):

    [AXIS_0]
    TYPE = LINEAR
    HOME = 0.0
    MAX_VELOCITY = 250.0
    MAX_ACCELERATION = 10.0
    STEPGEN_MAXACCEL = 33.0
    SCALE = 160
    FERROR = 0.5
    MIN_FERROR = 0.1
    #MIN_LIMIT = -0.001
    #MAX_LIMIT = 2600.0
    HOME_OFFSET = 0.0

Все остальные настройки такие же как при использовании шагового двигателя в качестве одной из осей перемещения станка (линейной или поворотной).

Можно управлять шаговым двигателем.