Как G-командами определить сколько проехала каретка до хоума?

Подписаться на 3Dtoday
vadik1000
Идет загрузка
Загрузка
27 Февраля 2018
673
27
Вопросы и Ответы
Добрый день!
Вопрос такой.
Каретка ну или ось находится в какой-то, заранее неизвестной позиции.
Я её посылаю домой.
Мне нужно определить, сколько мм она проехала до дома.
Получить текущие координаты не пойдёт - были пропуски шагов и текущая позиция каретки неверная - не соответствует, тому, что думает принтер.
Нужно определить именно реальное расстояние которое она проехала из текущий позиции в хоум.
Как это сделать через G-команды? Прошивка наверняка(?) это считает, но как это извлечь через G-команды?
Можно конечно красться к концевику по 0,1 мм и считывать его статус, но хочется более элегантного решения.
Спасибо.
Ответы на вопрос

Ответы

27.02.18 в 16:57
0
Сильно сомневаюсь, что прошивка это считает. Скорее всего там конструкция вида "ехать по оси, пока не сработает концевик"
27.02.18 в 17:02
0
G код это код для принтера, а не программный код. У аговых двигателей нет обратной связи, поэтому при пропуске шагов принтер теряется в пространстве. Для возобновления печати он вначале ползет, пока не сработает концевик, считать расстояние я думаю ему и не нужно, он потом от полученного нуля сползает в координату последней выполненной команды и продолжает печатать.
27.02.18 в 17:14
печатает на Flyingbear P902
0
Как выше уже написали - прошивка просто даёт команду "копать от меня и до обеда" и далее занимается своими делами... а что уж там "накопали" ей не ведомо.
27.02.18 в 17:42
печатает на Delta-X
0
До парковки и пока башка в движении - никак. После парковки и пока двигатели на удержании (в промежутках между командами движения) узнать положении можно командой M114. Как только выключается удержание прошивка считает что позиция не известна (мало ли кто там что руками передвинул) и на экране принтера начинают мигать ???
27.02.18 в 19:29
печатает на ZAV-MAX-PRO
0
узнать положении можно командой M114
у ТС вопрос про как узнать при пропуске шагов, а M114 выведет только то, что подавал контроллер в последний раз, а двигался ли движок или пропускал шаги не ведомо
27.02.18 в 22:23
печатает на Delta-X
0
Точно пропуск шагов или текущую позицию определить, даже если энекодер будет стоять, нет возможности.
Судя по ТЗ, ТС нужен ультраточный сонар... Главный вопрос - нахрена? (сори за майн энглиш)
27.02.18 в 18:03
0
Ну почему, ну почему?? Хочу, хочу, хочу.....
27.02.18 в 18:28
0
27.02.18 в 19:17
0
Команда хорошая, но как она мне поможет?
Ещё раз попытаюсь сформулировать, что мне нужно:
Мне нужно определить, сколько проезжает каретка из текущий позиции, если послать её в домой, с учётом того, что текущая позиция принтеру не известна.
27.02.18 в 19:41
0
как она мне поможет?
ОК... "пойдем длинным путем" :D:D:D

Вы не знаете координату, на экране циферки не соответствуют действительности (это из вашей постановки задачи)...
  • Даем команду G92
  • Получаем по всем координатам "0"
  • С этого момента вы точно знаете координаты осей - они "0"
  • Двигаете каретку командой G0 по необходимой вам оси на расстояние заведомо большее, чем до концевика
  • Концевик каретку останавливает.
  • На экране читаете цифры пройденного пути от "0"
Можете все усложнить или упростить по желанию. Я предложил только вариант... подозреваю, что он не единственный. :D:D:D

Есть конечно в этом варианте подводный камень, куда же без него... в прошивке должно быть разрешено движение в отрицательные координаты. Но... было бы желание... ;)

P.S. Включил мозг... не получится так... экран тупой, он покажет координату ту, которую вы укажете в команде G0, а обратной связи нет... вычеркиваем ;)
27.02.18 в 19:27
печатает на RepRap
0
Из меню "Замена филамента". В прошиве репитер после замены филамента оси ХУ прохордят через"хоум" и потом дальше продолжает печатать из точки остановки.
Как в марлине не знаю. Но наверное так же.
27.02.18 в 19:30
печатает на ZAV-MAX-PRO
0
в марлине просто идет подъем головы на заданную величину, пластик выезжает-заезжает и возвращается в запомненную координату до M600
27.02.18 в 20:07
печатает на RepRap
0
М-да. Только что проверил "замену филамента".
Ретракт, опустил стол, Х в хоум.
После "подтверждения" замены ХУ в хоум, потом в то положение, где было сопло до того, и поднял стол.
27.02.18 в 20:27
печатает на ZAV-MAX-PRO
0
Лишний раз ходить в дом на концевики не правильная концепция, согласитесь?
27.02.18 в 21:19
печатает на RepRap
2
Ненаю. Но если директ и во время замены филамента немного сдвинешь голову, то печать идет ээээ в известном направлении.
Как-то на этом фоне хоум ХУ совсем не самое страшное перемещение.
27.02.18 в 23:57
0
Некоторые ответы поехали не в ту сторону, поэтому попытаюсь ещё раз сформулировать задачу.
1. Нужно просто определить, сколько проезжает каретка из текущий позиции, если послать её в дом.
Достаточно знать просто количество шагов (мм), которые послал контроллер на двигатели, чтобы доехать из текущей позиции до дома.
Перемещение в дом медленное и будем считать(для этой задачи), что посланное количество шагов совпадает с реально сделанным.
2. Простым вычитыванием текущей позиции задача не решается, потому что текущая позиция считается неверной.
3. Эту информацию нужно получить не на экране принтера, а через G-коды.
Вот и всего-то :)
28.02.18 в 00:04
0
Или по-другому можно сформулировать так:
Вы включили принтер. Головка стоит в произвольном месте (хз где).
Вы нажали кнопку Хоум, головка поехала домой.
Сколько шагов(мм) сделал контроллер, чтобы попасть в хоум?
Эту информацию нужно получить не на экране принтера, а через G-коды.
28.02.18 в 02:03
печатает на Delta-X
1
Нужно марлин допилить. Логика парковки реализована в файле "G28.CPP". Под конец весьма запутаных условий под разную кинематику, есть вызов функции "report_current_position()" которая реализована в файле "motion.cpp", а там... вот там и следует добавит нужный Вам функционал... 8)

Практическая полезность сего действа всё одно не раскрыта, подозреваю самое безобидное - это связано с выключением питания во время печати
28.02.18 в 10:30
0
Спасибо за инфу о расположении программного кода парковки, посмотрю, интересно.
Но мне это всё равно не поможет.
На самом деле у меня задумка была такая.
Сделать программулину для определения максимальных скоростей и ускорений механики и оптимального их соотношения для любого принера.
Навеяло меня на такие мысли одно очень интересное но печальное видео определения этих скоростей и ускорений методом тыка на слух, улавливая пропуски шагов.
Захотелось автоматизировать этот процесс, причём полностью, без участия человека вообще.
Соответственно правка прошивки поможет только мне, универсальной программа не будет.
28.02.18 в 10:59
печатает на Delta-X
1
Сделайте форк марлина, когда реализуете свой функционал запросите слияние
28.02.18 в 11:11
0
Хм...интересное предложение, но опять же принтеры управляются не только марлином.
Кстати G28.CPP в марлине я так и не нашёл, эта команда реализована в основном файле марлина.
Может у вас или другая версия марлина или вообще другая прошивка.
Но это не столь важно, пока буду думать как реализовать задумку с использованием имеющихся G команд.
28.02.18 в 11:27
печатает на Delta-X
0
А, да, я про марлин 2.0. Смысл крутить прежние версии уже не вижу
28.02.18 в 11:32
0
Ну там пока страшное предупреждение по этой версии, а что в ней нового полезного?
28.02.18 в 11:45
печатает на Delta-X
0
А что там может быть нового? всё то же самое - управление шаговиками... Сам проект/исходники лучше структурированы (но это для разработчиков удобство). Ну и мультиплатформенность реализована. Для рядового пользователя 3д принтера наверное проще конфигурировать будет (всего 2 файла в ардуине отобразиться, не запутаться)
28.02.18 в 08:46
печатает на CyberDragon
0
Никак.
28.02.18 в 18:30
0
Если медленно, то:
G92X200; присвоили текущему положение по X значение 200
G91; перешли в режим относительного позиционирования
M119; проверили состояние триггера по X
G0X-1; сделали один шаг на 1 мм
M119; проверили состояние триггера по X
; Повторяем последние две команды, пока не изменится состояние триггера
M114; получаем текущие координаты. Количество шагов это разница между 200 и текущим положением X

Если нужна большая точность, то можно после сработки триггера начать двигаться в обратном направлении с меньшим шагом (например, G0X0.1), и, после очередного переключения триггера, вычислить разницу.
28.02.18 в 19:02
0
Спасибо, конечно, но этот способ я в самом вопросе описал.

Для написания комментариев, пожалуйста, авторизуйтесь.