EMC2 прикрутить к ШД с датчиком
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
EMC2 прикрутить к ШД с датчиком
Здравствуйте.
Возникла необходимость переоборудовать станок. Задача на первый взгляд не сложная.
Главный критерий подбора материалов - дешевизна. Остановился на ШД с датчиком (энкодер).
Почитал много всего про ШД и управление, в том числе здесь на форуме. Возникло много вопросов... по порядку:
1. Нашёл схемку http://easyelectronics.ru/upravlenie-sh ... telem.html
Микрухи недорогие, сборка проста, но у неё очень много входов. Я с EMC2 на выходе имею только направление/шаг на картинке я так понимаю направление=direction, шаг=clock с Half/full, Enable вроде ясно. Кто такой RESET, Vref, Control, Sync и home?
2. EMC2 установил, разобрался. Чтобы подключить датчик нужно работать с шаговиком как с сервой
pid работает сам по себе или в обойме со stepgen?
Есть pid.0.output а где же пины направление/шаг? Вот тут совсем запутался.
Спасибо за помощь.
Возникла необходимость переоборудовать станок. Задача на первый взгляд не сложная.
Главный критерий подбора материалов - дешевизна. Остановился на ШД с датчиком (энкодер).
Почитал много всего про ШД и управление, в том числе здесь на форуме. Возникло много вопросов... по порядку:
1. Нашёл схемку http://easyelectronics.ru/upravlenie-sh ... telem.html
Микрухи недорогие, сборка проста, но у неё очень много входов. Я с EMC2 на выходе имею только направление/шаг на картинке я так понимаю направление=direction, шаг=clock с Half/full, Enable вроде ясно. Кто такой RESET, Vref, Control, Sync и home?
2. EMC2 установил, разобрался. Чтобы подключить датчик нужно работать с шаговиком как с сервой
pid работает сам по себе или в обойме со stepgen?
Есть pid.0.output а где же пины направление/шаг? Вот тут совсем запутался.
Спасибо за помощь.
-
sandman
- Мастер
- Сообщения: 257
- Зарегистрирован: 31 мар 2011, 19:09
- Репутация: 19
- Откуда: Германия, Horb am Neckar
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Шаг и Направление подключается на парпорт (LPT) для EMC, а всё остальное делается на плате. Посмотри здесь : http://vri-cnc.ru/forum/viewtopic.php?f ... lit=3axLPT
вот ещё схема одного канала : http://www.cuteminds.com/immagini/ELETT ... 97-298.png
Я сам собрал такой как здесь в самом низу, работает замечательно, причём я и униполярные моторы поставил. http://vri-cnc.ru/forum/viewtopic.php?f ... &start=315
А по поводу датчика- не вижу смысла на шаговик датчик ставить... Если сервомотор - то тогда ясно зачем.
вот ещё схема одного канала : http://www.cuteminds.com/immagini/ELETT ... 97-298.png
Я сам собрал такой как здесь в самом низу, работает замечательно, причём я и униполярные моторы поставил. http://vri-cnc.ru/forum/viewtopic.php?f ... &start=315
А по поводу датчика- не вижу смысла на шаговик датчик ставить... Если сервомотор - то тогда ясно зачем.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Энкодер к шаговому двигателю имеет смысл подключать только если хочешь использовать шаговик в запредельных режимах, когда возможен пропуск шагов. В обычной жизни пропусков быть не должно.
есть компонент axis, у него есть command и feedback. В стандартной настройке они подключены к stepgen, но если мы хотим добавить pid и энкодер, то делаем так:
axis.N.motor-pos-cmd заводим в pid.
из pid берем pid.N.output и передаем в stepgen.N.cmd
из энкодера берем обратную связь и подключаем ее к pid и axis.N.motor-pos-fb
Тут все должно быть так:de-signer писал(а):2. EMC2 установил, разобрался. Чтобы подключить датчик нужно работать с шаговиком как с сервойpid работает сам по себе или в обойме со stepgen?Есть pid.0.output а где же пины направление/шаг? Вот тут совсем запутался.
есть компонент axis, у него есть command и feedback. В стандартной настройке они подключены к stepgen, но если мы хотим добавить pid и энкодер, то делаем так:
axis.N.motor-pos-cmd заводим в pid.
из pid берем pid.N.output и передаем в stepgen.N.cmd
из энкодера берем обратную связь и подключаем ее к pid и axis.N.motor-pos-fb
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
прочитай вот эту тему, по моему это одно и тоже
http://cnc-club.ru/forum/viewtopic.php?f=15&t=1072
http://cnc-club.ru/forum/viewtopic.php?f=15&t=1072
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Спасибо за советы. Обязательно прочитаю ссылки.
Скажите, в чём разница между управлением скоростью (velocity mode) и положением (position mode)?
Ведь в любом случае имеет значение перемещение привода (position) тогда причём здесь скорость?
Скажите, в чём разница между управлением скоростью (velocity mode) и положением (position mode)?
Ведь в любом случае имеет значение перемещение привода (position) тогда причём здесь скорость?
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Здравствуйте.
Закупился ШД, драйвером, датчиком и блоком питания.
Почитал форум, настроил EMC, шаговик крутится, датчик верно показывает позицию, всё замечательно, но, как обычно камень преткновения нашёлся.
Схема: axis <-> pid <-> encoder <-> stepgen настроена, но вот stepgen получая задания от pid егог успешно отрабатывает, а если без задания от EMC провернуть шаговик рукой (ШД держит примерно 2 кг усилия), то датчик изменение положения видит, pid даёт на вход stepgen задание, а сам stepgen искренне верит, что данное задание уже выполнено и ничего на драйвер шаговика не посылает. Хотя по идее должен вернуть шаговик в положение до моего физического вмешательства.
Мучаюсь уже второй день. Подскажите, может не там копаю.
Вот hal (уже в пятой редакции =( ):
Благодарю за любую помощь.
Закупился ШД, драйвером, датчиком и блоком питания.
Почитал форум, настроил EMC, шаговик крутится, датчик верно показывает позицию, всё замечательно, но, как обычно камень преткновения нашёлся.
Схема: axis <-> pid <-> encoder <-> stepgen настроена, но вот stepgen получая задания от pid егог успешно отрабатывает, а если без задания от EMC провернуть шаговик рукой (ШД держит примерно 2 кг усилия), то датчик изменение положения видит, pid даёт на вход stepgen задание, а сам stepgen искренне верит, что данное задание уже выполнено и ничего на драйвер шаговика не посылает. Хотя по идее должен вернуть шаговик в положение до моего физического вмешательства.
Мучаюсь уже второй день. Подскажите, может не там копаю.
Вот hal (уже в пятой редакции =( ):
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=0
loadrt encoder num_chan=1
loadrt pid num_chan=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf encoder.update-counters base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
addf encoder.capture-position servo-thread
addf pid.0.do-pid-calcs servo-thread
net spindle-cmd <= motion.spindle-speed-out => pwmgen.0.value
net spindle-enable <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
setp pwmgen.0.dither-pwm true
net spindle-cw <= motion.spindle-forward
net estop-out => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
net spindle-cw => parport.0.pin-14-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out
net Xencoder-phaseA <= parport.0.pin-10-in => encoder.0.phase-A
net Xencoder-phaseB <= parport.0.pin-11-in => encoder.0.phase-B
net Xencoder-phaseZ <= parport.0.pin-12-in => encoder.0.phase-Z
setp pid.0.Pgain 1
setp pid.0.Igain 0
setp pid.0.Dgain 0
setp pid.0.FF0 0
setp pid.0.FF1 0
setp pid.0.FF2 0
setp pid.0.deadband 0.0
#setp pid.0.maxoutput 0.01
setp encoder.0.position-scale -750
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 50000
setp stepgen.0.dirsetup 50000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => pid.0.command
net xpos-cmd2 pid.0.output => stepgen.0.position-cmd
net xpos-fb axis.0.motor-pos-fb <= encoder.0.position => pid.0.feedback
#net xpos-fb axis.0.motor-pos-fb <= stepgen.0.position-fb => pid.0.feedback
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable => pid.0.enable
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 45000
setp stepgen.1.dirsetup 45000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 45000
setp stepgen.2.dirsetup 45000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
stepgen-ом надо управлять в режиме скорости, иначе никак. Иначе значение на входе PID будет постоянным вне зависимости от значения обратной связи.
Т.е. ты сказал едем в 100, PID сказал шаговику - едем в 100, шаговик приехал. На входе постоянно 100. Тут ты поворачиваешь шаговик вручную, PID видит, что положение сместилось, и говорит шаговику, едь назад в 100, на что шаговик уверенно стоит в своем текущем положении.
А если управляем скоростью, то шаговику будет даваться непосредственная команда к перемещению.
Общая проблема в том, что у самого stepgen нет обратной связи.
В общем делать надо так:
loadrt stepgen step_type=0,0,0 ctrl_type=v,v,v
И команду переписать:
net xvel-cmd pid.0.output => stepgen.0.velocity-cmd
Также наверное настройки pid поменяются.
Т.е. ты сказал едем в 100, PID сказал шаговику - едем в 100, шаговик приехал. На входе постоянно 100. Тут ты поворачиваешь шаговик вручную, PID видит, что положение сместилось, и говорит шаговику, едь назад в 100, на что шаговик уверенно стоит в своем текущем положении.
А если управляем скоростью, то шаговику будет даваться непосредственная команда к перемещению.
Общая проблема в том, что у самого stepgen нет обратной связи.
В общем делать надо так:
loadrt stepgen step_type=0,0,0 ctrl_type=v,v,v
И команду переписать:
net xvel-cmd pid.0.output => stepgen.0.velocity-cmd
Также наверное настройки pid поменяются.
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
После долгих мучений было выяснено, что проворот не видит энкодер. Сначала решил, что провернул вал на движке. Разобрал: всё на месте. Собрал. Вечерок поразбирался с HAL-скопом. Разобрался. Сигнал с датчика на момент движения двигателя ровный, а на момент проворота руками с датчика идёт какая-то лажа. Разбираюсь дальше.
Попробую в режиме скорости, но сначала доразберусь с датчиком.
Тут ещё вот какая петрушка: шагов на двигателе 200 на оборот, на драйвере установлен микрошаг в 25000 на оборот (как он его реализует для меня загадка), а энкодер 3000 на оборот
Попробую в режиме скорости, но сначала доразберусь с датчиком.
Тут ещё вот какая петрушка: шагов на двигателе 200 на оборот, на драйвере установлен микрошаг в 25000 на оборот (как он его реализует для меня загадка), а энкодер 3000 на оборот
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Там же момнета на движке вообще не останется с таким микрошагом...de-signer писал(а): 25000 на оборот
Ну вообще, то, что разные у всех значения не страшно, у всех есть параметр scale, в котором можно все величины к одному знаменателю привести.
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Проверился ещ пару раз. Я был неправ. Датчик отрабатывает мой проворот чётко.
Переключил в режим управления скоростью - та же петрушка. Показания координаты во время проворота меняются, и потом возвращаются в исходное положение - всё вроде так, но физически шаговик не возвращается в то положение с которого я его свернул =(
Переключил в режим управления скоростью - та же петрушка. Показания координаты во время проворота меняются, и потом возвращаются в исходное положение - всё вроде так, но физически шаговик не возвращается в то положение с которого я его свернул =(
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Скинь еще раз hal целиком.
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 1
loadrt stepgen step_type=0,0,0 ctrl_type=v,p,p
loadrt pwmgen output_type=0
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net spindle-cmd <= motion.spindle-speed-out => pwmgen.0.value
net spindle-enable <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
setp pwmgen.0.dither-pwm true
net spindle-cw <= motion.spindle-forward
net estop-out => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
net spindle-cw => parport.0.pin-14-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 18000
setp stepgen.0.dirsetup 18000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
# pid_section net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
#net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 18000
setp stepgen.1.dirsetup 18000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 18000
setp stepgen.2.dirsetup 18000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# Рто обязательно
loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
net Xencoder-phaseA <= parport.0.pin-10-in => encoder.0.phase-A
net Xencoder-phaseB <= parport.0.pin-11-in => encoder.0.phase-B
net Xencoder-phaseZ <= parport.0.pin-12-in => encoder.0.phase-Z
setp encoder.0.position-scale -750
# pid_section net xpos-fb axis.0.motor-pos-fb <= encoder.0.position => stepgen.0.realposition-fb
# PID
loadrt pid num_chan=1
net xenable => pid.0.enable
addf pid.0.do-pid-calcs servo-thread
setp pid.0.Pgain 1.0
setp pid.0.Igain 0.0
setp pid.0.Dgain 0.1
setp pid.0.FF0 0
setp pid.0.FF1 0
setp pid.0.FF2 0
setp pid.0.deadband 0
#link
net xpos-cmd-pid axis.0.motor-pos-cmd => pid.0.command
#net xpos-cmd-step pid.0.output => stepgen.0.position-cmd
net xpos-cmd-step pid.0.output => stepgen.0.velocity-cmd
net xpos-fb axis.0.motor-pos-fb <= encoder.0.position => pid.0.feedback
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Погоди. Как-то это совсем странно, получается, что показания положения возвращаются в исходное значение, но при этом ЭНКОДЕР не вращается? Это как?de-signer писал(а): Показания координаты во время проворота меняются, и потом возвращаются в исходное положение - всё вроде так, но физически шаговик не возвращается в то положение с которого я его свернул =(
Посмотри, что происходит на пинах положения энкодера и на пине выхода pid и на пине обратной связи stepgen, можешь через hal meter, или лучше даже через hal scope и скрин добавь.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
А сколько говоришь у энкодера тиков на оборот? Может скорости порта не хватает?
Не нравится то, что фаза А совпадает с фазой В?
Не нравится то, что фаза А совпадает с фазой В?
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
3000 на оборот. А не нравится то, что фаза А тикает, а В молчит.... Типа движок пытается удержать автоколебания настолько точно, что энкодер не успевает зарегистрировать переход на другую фазу. Может драйвер загрубить? Сейчас попробую.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Может там фаза B просто под фазой A спрятана. Попробуй масштаб фазы B изменить.
Какой у тебя base period? Просто 3000 импульсов на оборот это дофига для LPT! На быстрых перемещениях linuxCNC может не успевать считывать сигнал с пинов энкодера. Для таких случаев надо будет брать платы MESA.
Какой у тебя base period? Просто 3000 импульсов на оборот это дофига для LPT! На быстрых перемещениях linuxCNC может не успевать считывать сигнал с пинов энкодера. Для таких случаев надо будет брать платы MESA.
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Загрубление только увеличило автоколебания и срыв с координаты. Видимо 24 kHz съёма данных с датчика действительно не хватает на такой точный датчик. Буду думать дальше.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
А если просто медленно поворачивать двигатель? Но вообще странно, ты говоришь, что двигатель не двигается, а в halscope есть сигналы от энкодера?
-
de-signer
- Кандидат
- Сообщения: 63
- Зарегистрирован: 20 дек 2011, 19:10
- Репутация: 0
- Контактная информация:
Re: EMC2 прикрутить к ШД с датчиком
Есть ли сигналы? Там на скриншоте подписаны phase-A и phase-B
Вручную "медленно" провернуть ШД не получится. Всё-равно при срыве с шага и торможении на следующем шаге будут мелкие колебания удержания ШД на этом шаге. Вот их-то и не видит EMC из-за медленного порта.
Загрубил PID, т.е. его пропорциональную составляющую. ШД стал удерживать координату "медленнее". После проворота вручную он возвращает ШД назад в нужную сторону, но не до конца (точнее совсем чуть-чуть) - это подтверждает мысль о том, что LPT порт не успевает оцифровывать быстрые перемещения энкодера.
Скажи, MESA платы под USB выход есть? И вообще EMC с USB дружит?
Вручную "медленно" провернуть ШД не получится. Всё-равно при срыве с шага и торможении на следующем шаге будут мелкие колебания удержания ШД на этом шаге. Вот их-то и не видит EMC из-за медленного порта.
Загрубил PID, т.е. его пропорциональную составляющую. ШД стал удерживать координату "медленнее". После проворота вручную он возвращает ШД назад в нужную сторону, но не до конца (точнее совсем чуть-чуть) - это подтверждает мысль о том, что LPT порт не успевает оцифровывать быстрые перемещения энкодера.
Скажи, MESA платы под USB выход есть? И вообще EMC с USB дружит?
