Страница 1 из 1

Поиск нуля кольцом

Добавлено: 23 ноя 2013, 11:57
Urx
Здравствуйте! В общем, эту штуку сделали в Маче макросами, вот видео. Хочу сделать в LinuxCNC.
https://www.youtube.com/watch?v=bCeQ0WlSXmc
Преимущество, имхо в том, что точность в 2 раза выше обычного метода с простым касанием.
Конструкцию думаю делать такой: серебряное кольцо 925 пробы, тонкий короткий щуп из того же материала. Серебро - так как усилие контакта небольшое по сравнению с парой медь-фреза, и его возникающие в эксплуатации окислы имеют такую же проводимость как и металл.
Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.

Вот набросал алгоритм:
-1. Устанавливаем вручную щуп внутри кольца. Делаем как обычно хоминг, но в пределах стенок кольца, далее запускаем нижеследующий код.
0. Переходим на относительные координаты.
1. Едем по Z, до касания с потолком датчика.
2. Едем обратно, 2мм.
3. Обнуляем переменные.
4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с датчиком - стенками кольца.
5. На малой скорости – уточняем.
6. Едем расстояние R1, в обратном направлении.
7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с датчиком – стенками кольца.
8. На малой скорости – уточняем.
9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
10. Едем вперед на расстояние R3.
11. То же самое но по оси X.
12. Поднимаемся по Z, чтобы освободить щуп из кольца.
13. Делаем программное смещение.
14. Переходим на абсолютные координаты.

Я понимаю, что всё можно сделать с помощью О-кодов. У меня вопрос к уважаемым знатокам, как мне отловить в цикле событие – щуп сконтачил с кольцом. Желательно, чтобы щуп электрически был соединен с лимитом, так как один из лимитов у меня на станке – HOME, и таким образом его можно будет использовать и для хоминга вручную.

Re: Поиск нуля кольцом

Добавлено: 23 ноя 2013, 12:24
Сергей Саныч
Urx писал(а):как мне отловить в цикле событие – щуп сконтачил с кольцом.
Его нет необходимости ловить в цикле - в LCNC есть G38.

Re: Поиск нуля кольцом

Добавлено: 23 ноя 2013, 12:55
Urx
А G38 только с probe работает? А с Home? Просто не хочется всякий раз перетыкать штепсель датчика из home в probe, забуду и будет неприятность.

Re: Поиск нуля кольцом

Добавлено: 23 ноя 2013, 13:12
Сергей Саныч
Urx писал(а):А G38 только с probe работает? А с Home?
Куда подключишь (на уровне hal), с тем и будет работать. Нет препятствий подключить к одному источнику сигнала два входа, конечно, если Home не используется как аппаратный лимит.

Re: Поиск нуля кольцом

Добавлено: 23 ноя 2013, 17:07
solo
Классная идея хом выполнять кольцом. тогда получается вообще датчики нома не нужны если допустим кольцо закрепить стационарно на столе.
А можно один и тот же вывод ЛПТ порта использовать как пробе и Хом.
Urx писал(а):9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
Мне кажется что можно после этой операции достаточно переместиться в относительной системе координат в реверсом направлении после последней пробы на расстояние R3=(R1+R2)/2 без учета диаметра инструмента.

Re: Поиск нуля кольцом

Добавлено: 25 ноя 2013, 14:56
Nick
Погоди, так что ты хочешь таким образом делать, искать параметры инструмента, или нули станка?

Re: Поиск нуля кольцом

Добавлено: 02 июн 2014, 21:58
Urx
Вот написал код, сегодня проверил, ругается на строку с ROUND, типа не понимает выражение.

Код: Выделить всё

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F10
G38.4 Z3 F1
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F10
G38.4 Y-3 F1
#<R1>=#<CurY>

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F10
G38.4 Y3 F1
#<R2>=#<CurY>

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3>= ROUND[(#<R1>+#<R2>)/2]-1
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F10
G38.4 X -3 F1
#<R1>=#<CurX>
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F10
G38.4 X3 F1
#<R2>=#<CurX>
#<R3>= ROUND[(#<R1>+#<R2>)/2]-1
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z5

;14. Переходим на абсолютные координаты.
G90

Re: Поиск нуля кольцом

Добавлено: 02 июн 2014, 22:20
nkp

Код: Выделить всё

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F10
G38.4 Z3 F1
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F10
G38.4 Y-3 F1
#<R1>=#<CurY>

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F10
G38.4 Y3 F1
#<R2>=#<CurY>

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F10
G38.4 X -3 F1
#<R1>=#<CurX>
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F10
G38.4 X3 F1
#<R2>=#<CurX>
#<R3>= ROUND[[[#<R1>+#<R2>]/2]-1]
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z5

;14. Переходим на абсолютные координаты.
G90
m2
зы совсем не вникал в содержание - смотрел только синтаксис...

Re: Поиск нуля кольцом

Добавлено: 02 июн 2014, 22:38
nkp
не прослеживая алгоритм , я мог не правильно расставить скобки...
поправь , если что...

Re: Поиск нуля кольцом

Добавлено: 02 июн 2014, 22:50
Urx
Спасибо, nkp! Проверил - больше не ругается, а скобки я расставлю как надо.

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 08:53
Nick
nkp +1!
На всякий случай, все математические выражения должны быть в []. Т.е. не
#1 = 2 + 3
а
#1 = [2 + 3]

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 08:55
Nick
;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]
Если R3 это центр кольца, то надо просто [[#<R1> + #<R2>]/2]... И кстати, зачем в измерениях ROUND?

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 09:45
Serb01
Urx писал(а):Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.
Стабильности не будет. Всё должно быть жестко. Примерно так.

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 20:43
Urx
Сегодня после долгих и упорных испытаний, в том числе станка и датчика на прочность, получил работающий код:

Код: Выделить всё

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F100
G38.4 Z3 F10
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F100
G38.4 Y-3 F10
#<CurY> = #5421
#<R1>=ABS[#<CurY>]
(DEBUG, "R1y ", #<R1>)

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F100
G38.4 Y3 F10
#<CurY> = #5421
#<R2>=ABS[#<CurY>]
(DEBUG, "R2y ", #<R2>)

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = [[#<R1> + #<R2>]/2]
(DEBUG, "R3y ", #<R3>)
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F100
G38.4 X -3 F10
#<CurX> = #5420
#<R1>=ABS[#<CurX>]
(DEBUG, "R1x ", #<R1>)
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F100
G38.4 X3 F10
#<CurX> = #5420
#<R2>=ABS[#<CurX>]
(DEBUG, "R2x ", #<R2>)
#<R3>= [[#<R1> + #<R2>]/2]
(DEBUG, "R3x ", #<R3>)
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z15

;14. Переходим на абсолютные координаты.
G90
(DEBUG, "X ", #5420)
(DEBUG, "Y ", #5421)
(DEBUG, "Z ", #5422)
m2
Следующим усовершенствованием будет избавление от периодического перетыкивания датчика с HOME на PROBE, сдуру бывает забываешь перетыкнуть и хорошо еще что прога останавливается, или гибкость станка не позволяет сразу поломать фрезу или дорогостоящий датчик. Так как кольцо я использую еще и для начального хоминга. Задействую выход который включает пылесос, этот выход не использую все равно, он будет релюшкой переключать датчик с PROBE на HOME в программе. Еще второе усовершенствование - эта прога будет запускаться при старте Axes вместо рисующей надпись "LinuxCNC". Ну и смещение сделаю нормальное, чтобы ноль был не в центре кольца а там где он должен быть, в начале работы.

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 20:46
Urx
Nick писал(а):
;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]
Если R3 это центр кольца, то надо просто [[#<R1> + #<R2>]/2]... И кстати, зачем в измерениях ROUND?
Да, абсолютно не нужен, я уже дошел до этой истины практическим путем.

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 20:52
Urx
Serb01 писал(а):
Urx писал(а):Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.
Стабильности не будет. Всё должно быть жестко. Примерно так.
Да, только я собрал свой пружинящий щуп, как понял его минусы, и ставить не стал. Использую фрезу в качестве щупа. Интересная у вас конструкция. Это дело надо устанавливать в патрон вместо фрезы?

Re: Поиск нуля кольцом

Добавлено: 03 июн 2014, 22:07
Serb01
Да, вставляется в цангу.

Re: Поиск нуля кольцом

Добавлено: 05 июн 2014, 17:33
Urx
А как выбрать другой код который запускается при запуске Axes? Тот который рисует "LinuxCNC". Или может быть этот файл можно как то отредактировать чтобы вставить свой код - поиск нуля кольцом?

Re: Поиск нуля кольцом

Добавлено: 05 июн 2014, 17:53
Serb01
Nick перевёл руководсво EMC2 Integrators Manual Перевод на русский язык http://cnc-club.ru/forum/viewtopic.php?f=15&t=150#p1496
В ini файле в разделе DISPLAY строка

Код: Выделить всё

OPEN_FILE = /full/path/to/file.ngc
файл который будет загружен при старте AXIS. Используйте пустую строку "" и никакого файла не будет загружено.

Re: Поиск нуля кольцом

Добавлено: 05 июн 2014, 18:21
Urx
Serb01 писал(а):Nick перевёл руководсво EMC2 Integrators Manual Перевод на русский язык http://cnc-club.ru/forum/viewtopic.php?f=15&t=150#p1496
В ini файле в разделе DISPLAY строка

Код: Выделить всё

OPEN_FILE = /full/path/to/file.ngc
файл который будет загружен при старте AXIS. Используйте пустую строку "" и никакого файла не будет загружено.
Большое спасибо вам и Nick-у.