Шаг + серво на Pluto-P
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Спасибо вроде начало работать.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Правильно ли я понимаю по хал скопу что это проблмы со связью?
Если согласовать с помощью транзистора как на схеме, либо какие спец микросхемы порекомендуете ?
Если согласовать с помощью транзистора как на схеме, либо какие спец микросхемы порекомендуете ?
-
Pavel_M
- Новичок
- Сообщения: 32
- Зарегистрирован: 10 янв 2015, 11:44
- Репутация: 9
- Настоящее имя: Павел
- Контактная информация:
Re: Шаг + серво на Pluto-P
Да, это явно проблемы со связью. А драйвер pluto_servo используется?
-
Pavel_M
- Новичок
- Сообщения: 32
- Зарегистрирован: 10 янв 2015, 11:44
- Репутация: 9
- Настоящее имя: Павел
- Контактная информация:
Re: Шаг + серво на Pluto-P
Такую связку для согласования уровне можно использовать и если есть возможность проконтролировать крутизну фронтов/спадов осциллографом. А у вас силовая часть подсоединена? Если силовая часть используется без гальванической развязки и неудачной разводкой общего провода, то она может быть источником помех.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Драйвер,прошивка с Ваших файлов взят. Силовой части нету только энкодер ВЕ-178А через делитель напряжения стоит. Сегодня гляну осциллографом что происходит на передаче данных.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Шаг + серво на Pluto-P
Такая схема согласования (с общим затвором) имеет высокое выходное сопротивление. Могут быть завалы фронтов и низкая помехоустойчивость, особенно в состоянии лог.1.
Чудес не бывает. Бывают фокусы.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
А если что из серии ADUM1400?
Низкое потребление:
При 5 В питании:
- 1.0 мА на канал на скорости до 2 Мбит/с
- 3.5 мА на канал на скорости 10 Мбит/с
При 3 В питании:
- 0.7 мА на канал на скорости до 2 Мбит/с
- 2.1 мА на канал на скорости 10 Мбит/с
Двунаправленная передача данных
Совместим с 3.3 В и 5.0 В питанием/уровнями логических сигналов
Максимальная рабочая температура 100°C
Высокая скорость передачи данных: от 0 до 100 Мбит/с (NRZ)
временные параметры:
максимальное искажение длительности импульса 2 нс
максимальное временное рассогласование каналов 2 нс
Способность выдерживать воздействие изменяющегося входного синфазного сигнала, имеющего скорость нарастания более 25 кВ/мкс
Функция активизации выходов
Широкий 16 выводной SOIC корпус
Отвечает требования 5 параграфа CSA
Низкое потребление:
При 5 В питании:
- 1.0 мА на канал на скорости до 2 Мбит/с
- 3.5 мА на канал на скорости 10 Мбит/с
При 3 В питании:
- 0.7 мА на канал на скорости до 2 Мбит/с
- 2.1 мА на канал на скорости 10 Мбит/с
Двунаправленная передача данных
Совместим с 3.3 В и 5.0 В питанием/уровнями логических сигналов
Максимальная рабочая температура 100°C
Высокая скорость передачи данных: от 0 до 100 Мбит/с (NRZ)
временные параметры:
максимальное искажение длительности импульса 2 нс
максимальное временное рассогласование каналов 2 нс
Способность выдерживать воздействие изменяющегося входного синфазного сигнала, имеющего скорость нарастания более 25 кВ/мкс
Функция активизации выходов
Широкий 16 выводной SOIC корпус
Отвечает требования 5 параграфа CSA
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Шаг + серво на Pluto-P
А кто, кстати, будет переключать направление передачи данных, если ставить какие-то буфера?
Чудес не бывает. Бывают фокусы.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
ну то что я предложил двунаправленная передача данных.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Шаг + серво на Pluto-P
Которая? Схема на КМОП-транзисторе - да. Но она вряд ли повысит помехоустойчивость. А буферные микросхемы нужно переключать внешними сигналами. Без этого они двунаправленности не обеспечат.Techno писал(а):то что я предложил двунаправленная передача данных.
Чудес не бывает. Бывают фокусы.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Вы правы там надо направление.
А что скажите по поводу TXB0108
8-Bit Bidirectional Voltage-Level Translator
А что скажите по поводу TXB0108
8-Bit Bidirectional Voltage-Level Translator
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Шаг + серво на Pluto-P
Попробовать можно. Теоретически вроде бы должно работать.
Но для начала имеет смысл просто предельно укоротить соединительные провода между портом и платой.
Но для начала имеет смысл просто предельно укоротить соединительные провода между портом и платой.
Чудес не бывает. Бывают фокусы.
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
собрано на соплях максимально близко к плате.
-
Pavel_M
- Новичок
- Сообщения: 32
- Зарегистрирован: 10 янв 2015, 11:44
- Репутация: 9
- Настоящее имя: Павел
- Контактная информация:
Re: Шаг + серво на Pluto-P
Видимо работа порта на моём буке отличается, хотя передача данных работает по исправленной схеме. Если в Новосибирске, то как вариант можно попробывать подключить вашу плату у меня. Кстати ЛПТ используется родной или дочерняя плата? какой версии линукс и линуксцнц? Может попробывать подключить к другому по конфигурации компу?
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Добрый всем вечер или ночь. Наконец то появилось время вернуться к плате.
Начну по порядку.
1.Поменял конфигурацию компьютера к которому подключаю ПЛИС.
2. Поменял энкодер который подключен к ПЛИС (Раньше это был ВЕ-178) сейчас стоит OMRON.
После таких нововведений связь стала стабильной POS-CMD красивая кривая.
Использую прошивку из первого поста, так же настройки linuxcnc из первого поста .
Но как всегда есть НО!
Теперь проблема стоит в другом нету генерации ШИМ на ножках ПЛИС.
По идеи когда я включаю станок и начинаю движение по оси то на соответствующих ножках должен быть ШИМ 20кгц (Но его нету).
Думал что порт приказал долго жить. Нашел прошивку моргания светодиодом переназначил на 72 ножку (Там должен быть ШИМ), сигнал меняется (значит порт жив).
Начну по порядку.
1.Поменял конфигурацию компьютера к которому подключаю ПЛИС.
2. Поменял энкодер который подключен к ПЛИС (Раньше это был ВЕ-178) сейчас стоит OMRON.
После таких нововведений связь стала стабильной POS-CMD красивая кривая.
Использую прошивку из первого поста, так же настройки linuxcnc из первого поста .
Но как всегда есть НО!
Теперь проблема стоит в другом нету генерации ШИМ на ножках ПЛИС.
По идеи когда я включаю станок и начинаю движение по оси то на соответствующих ножках должен быть ШИМ 20кгц (Но его нету).
Думал что порт приказал долго жить. Нашел прошивку моргания светодиодом переназначил на 72 ножку (Там должен быть ШИМ), сигнал меняется (значит порт жив).
Код: Выделить всё
[EMC]
VERSION = $Revision$
MACHINE = LATHE-PLUTO
DEBUG = 0
[DISPLAY]
#PYVCP = vcp.xml
DISPLAY = axis
#LATHE = 1
CYCLE_TIME = 0.200
POSITION_OFFSET = MACHINE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
# Editor to be used with Axis
EDITOR = gedit
[FILTER]
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .NGC rs274ngc files
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
PARAMETER_FILE = emc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 500000
[HAL]
HALFILE = lathe-pluto.hal
HALFILE = axis_manualtoolchange.hal
#POSTGUI_HALFILE = postgui.hal
[TRAJ]
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = 1.0
ANGULAR_UNITS = 1.0
CYCLE_TIME = 0.0010
DEFAULT_VELOCITY = 300
MAX_VELOCITY = 300
DEFAULT_ACCELERATION = 1500
MAX_ACCELERATION = 1500
[AXIS_0]
TYPE = LINEAR
UNITS = 1.0
HOME = 0.0
HOME_SEQUENCE = 0
MAX_VELOCITY = 300
MAX_ACCELERATION = 1500
BACKLASH = 0.00
CYCLE_TIME = 0.001000
INPUT_SCALE = 102.5
OUTPUT_SCALE = 1.000
MIN_LIMIT = 0.0
MAX_LIMIT = 280.50001
FERROR = 10000
MIN_FERROR = 10000
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
P = 75.99
I = 0.76
D = 0.165
BIAS = 0
FF0 = 0.012
FF1 = 0.033
FF2 = 0.002
DEADBAND=.00009
[AXIS_1]
TYPE = LINEAR
UNITS = 1.0
HOME = 0.0
HOME_SEQUENCE = 0
MAX_VELOCITY = 250
MAX_ACCELERATION = 1500
BACKLASH = 0.00
CYCLE_TIME = 0.001000
INPUT_SCALE = 119.7
OUTPUT_SCALE = 1.000
MIN_LIMIT = 0.0
MAX_LIMIT = 280.0
FERROR = 10000
MIN_FERROR = 10000
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
P = 80
I = 1
D = 0.13
BIAS = 0
FF0 = 0.032
FF1 = 0.058
FF2 = 0.001
DEADBAND= .00009
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 15.0
BACKLASH = 0.000
SCALE = -100
OUTPUT_SCALE = 1.000
MIN_LIMIT = 0.0
MAX_LIMIT = 34.0
FERROR = 0.950
MIN_FERROR = 0.910
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = emc.tbl
TOOL_CHANGE_POSITION = 40 0 20
Код: Выделить всё
# load realtime modules
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt pid num_chan=2 debug=1
loadrt ddt count=4
loadrt pluto_servo
loadrt scale
loadrt mux2
loadrt debounce cfg=1
loadrt limit1 count=1
addf pluto-servo.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pluto-servo.write servo-thread
addf ddt.0 servo-thread
addf ddt.1 servo-thread
addf ddt.2 servo-thread
addf ddt.3 servo-thread
addf scale.0 servo-thread
addf mux2.0 servo-thread
addf debounce.0 servo-thread
addf limit1.0 servo-thread
# Step
setp pluto-servo.stepgen.2.scale [AXIS_2]SCALE
net Zpos-cmd axis.2.motor-pos-cmd => pluto-servo.stepgen.2.position-cmd
net Zpos-fb pluto-servo.stepgen.2.position-fb => axis.2.motor-pos-fb
net Zen axis.2.amp-enable-out => pluto-servo.stepgen.2.enable
setp pluto-servo.stepgen.steplen 40000
setp pluto-servo.stepgen.stepspace 40000
setp pluto-servo.stepgen.dirtime 40000
#end Step
setp pluto-servo.encoder.0.scale [AXIS_0]INPUT_SCALE
setp pluto-servo.encoder.1.scale [AXIS_1]INPUT_SCALE
setp pluto-servo.encoder.2.scale -4096
setp pluto-servo.pwm.0.scale 26 # volts supply
setp pluto-servo.pwm.1.scale 26
setp pid.0.maxoutput 26 # volts at motor
setp pid.1.maxoutput 26
# the values below come from the ini
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND
setp pid.1.Pgain [AXIS_1]P
setp pid.1.Igain [AXIS_1]I
setp pid.1.Dgain [AXIS_1]D
setp pid.1.bias [AXIS_1]BIAS
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.deadband [AXIS_1]DEADBAND
net Xpos-fb pluto-servo.encoder.0.position => pid.0.feedback axis.0.motor-pos-fb
net Ypos-fb pluto-servo.encoder.1.position => pid.1.feedback axis.1.motor-pos-fb
net Xpos-cmd axis.0.motor-pos-cmd => pid.0.command ddt.0.in
net Ypos-cmd axis.1.motor-pos-cmd => pid.1.command ddt.2.in
net Xvel-cmd pid.0.output => pluto-servo.pwm.0.value
net Yvel-cmd pid.1.output => pluto-servo.pwm.1.value
net Xvel ddt.0.out => ddt.1.in
net Xacc ddt.1.out
net Yvel ddt.2.out => ddt.3.in
net Yacc ddt.3.out
# machine ON
net Xenable axis.0.amp-enable-out => pid.0.enable pluto-servo.pwm.0.enable pluto-servo.dout.09
net Yenable axis.1.amp-enable-out => pid.1.enable pluto-servo.pwm.1.enable
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
# spindle SSR
# net spindle-fwd motion.spindle-forward pluto-servo.dout.00
setp debounce.0.delay 3
#net Xswitch pluto-servo.din.00-not => debounce.0.0.in
#net Xswitch-debounced debounce.0.0.out => axis.0.home-sw-in axis.0.pos-lim-sw-in
#net Yswitch pluto-servo.din.01-not => debounce.0.1.in
#net Yswitch-debounced debounce.0.1.out => axis.1.home-sw-in axis.1.pos-lim-sw-in
# tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
# spindle speed control
setp pluto-servo.pwm.3.enable 1
# this needs scale/offset to give the right speeds, but 0 should be 0
net spindle-speed-cmd motion.spindle-speed-out => limit1.0.in
net spindle-speed-cmd-limited limit1.0.out => scale.0.in
setp scale.0.gain 0.00026315789 # 1/3800
setp scale.0.offset 0.105
setp mux2.0.in0 0
# setp limit1.0.max 1300
net spindle-speed-scaled scale.0.out => mux2.0.in1
net spindle-fwd motion.spindle-forward => mux2.0.sel pluto-servo.dout.00
net spindle-pwm mux2.0.out => pluto-servo.pwm.3.value
# spindle position, for threading
net spindle-index motion.spindle-index-enable <=> pluto-servo.encoder.2.index-enable
net spindle-pos pluto-servo.encoder.2.position => motion.spindle-revs
net spindle-speed-fb pluto-servo.encoder.2.velocity => motion.spindle-speed-in
-
Pavel_M
- Новичок
- Сообщения: 32
- Зарегистрирован: 10 янв 2015, 11:44
- Репутация: 9
- Настоящее имя: Павел
- Контактная информация:
Re: Шаг + серво на Pluto-P
Здесь сконфигурированы всего 2 координаты х и у. Из сразу увиденного FERROR = 2.9
MIN_FERROR = 2.2 или что то близкое, а не 10000. Методика проверки: 1. научится получать на энкодере минимальный поворот (на несколько единиц). 2. зацепиться на вывод ШИМ х. 3. включить питание платы, запустить линух цнц, нажать виртуальную кнопку активации станка, теперь мы в рабочем режиме и оси у нас вроде как уравновешенны при это у нас шима нет. Если внести рассогласование энкодером с "текущей позицией", !но! пределах MIN_FERROR появится шим в попытке скомпенсировать рассогласование. Если рассогласование превысит MIN_FERROR, то линух цнц вывалится с ошибкой превышения MIN_FERROR (как именно звучит не помню) и шим изчезнет...
MIN_FERROR = 2.2 или что то близкое, а не 10000. Методика проверки: 1. научится получать на энкодере минимальный поворот (на несколько единиц). 2. зацепиться на вывод ШИМ х. 3. включить питание платы, запустить линух цнц, нажать виртуальную кнопку активации станка, теперь мы в рабочем режиме и оси у нас вроде как уравновешенны при это у нас шима нет. Если внести рассогласование энкодером с "текущей позицией", !но! пределах MIN_FERROR появится шим в попытке скомпенсировать рассогласование. Если рассогласование превысит MIN_FERROR, то линух цнц вывалится с ошибкой превышения MIN_FERROR (как именно звучит не помню) и шим изчезнет...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Шаг + серво на Pluto-P
PLUTO_SERVO(9):
pluto-servo.pwm.M.pwmdir bit rw (M=0..3) (default: 0)
Set to TRUE use PWM+direction mode. Set to FALSE to use Up/Down mode.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
Pavel_M
- Новичок
- Сообщения: 32
- Зарегистрирован: 10 янв 2015, 11:44
- Репутация: 9
- Настоящее имя: Павел
- Контактная информация:
Re: Шаг + серво на Pluto-P
Да, действительно забыл упомянуть. Выходов шима 2 и активация конкретного зависит от направления рассогласования, то есть выходы настроены для управления мостом.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Шаг + серво на Pluto-P
Выход ШИМ один. Просто он может работать как ШИМ и не как ШИМ.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Techno
- Кандидат
- Сообщения: 59
- Зарегистрирован: 07 сен 2011, 23:38
- Репутация: 4
- Контактная информация:
Re: Шаг + серво на Pluto-P
Я Ferror специально поставил 10000 что бы можно было давать рассогласование большое (Это неправильно ?).
pluto-servo.pwm.M.pwmdir bit rw (M=0..3) (default: 0)
Set to TRUE use PWM+direction mode. Set to FALSE to use Up/Down mode.
По умолчанию стоит Up/Down mode он мне и нужен (Хочу его потом в +-10В преобразовать)
pluto-servo.pwm.M.pwmdir bit rw (M=0..3) (default: 0)
Set to TRUE use PWM+direction mode. Set to FALSE to use Up/Down mode.
По умолчанию стоит Up/Down mode он мне и нужен (Хочу его потом в +-10В преобразовать)