ПОЛЕЗНО GRBL Commander - автономный контроллер на ESP32

  • Последнее редактирование:
    Рекомендованный
  • #91
Последнее редактирование:
  • Последнее редактирование:
Последнее редактирование:
Я не представляю, как практически это реализовать, применительно к своему коду. Составить карту перепадов высот - это понятная задача и, в общем, реализуемая. Что потом делаем? Как на УП "натягиваем"?
УП - это набор отрезков. Пусть отрезок начинается в точке р1 и кончается в р2. Находим зоны, к которым принадлежат точки р1 и р2. У меня массив карты организован таким образом, что зона определяется двумя операциями. Интерполяцией находим значения z1 и z2 в точках р1 и р2. Затем запускаем движение шпинделя между точками {р1, р2} c линейным изменением по z, соответствующим значениям z1 и z2.
Это для короткого отрезка (у меня это отрезки < 5мм). Если же отрезок длинный, то он разбивается на суботрезки, и для каждого суботрезка применяется вышеописанная процедура.

Проверял с двудя алгоритмами интерполяции: треугольная и билинейная. Треугольная работает в 2 раза точнее.

На STM 103-ей серии проверял на скоростях до 600мм/мин, полет нормальный, тормозов не заметил.
 
Т.е., насколько я понял (а я ещё та бестолочь):
0. Исходное положение по ХУZ 0.0 , 0.0, 0.0

1. Прочитали, например, из УП строку следующего вида X10.5
1.1. Находим Z для точки по X = 5.0 и Y = 0.0, формируем строку X5.0Z*** и отправляем
1.2. Находим Z для точки по X = 10.0 и Y = 0.0, формируем строку X10.0Z*** и отправляем
1.3. Находим Z для точки по X = 10.5 и Y = 0.0, формируем строку X10.5Z*** и отправляем

2. Читаем из файла следующую строку, например X-30Y20
2.1 Находим Z для точки по X = 5.5 и Y = 5.0, формируем строку X5.5Y5.0Z*** и отправляем
2.2 Находим Z для точки по X = 0.5 и Y = 10.0, формируем строку X0.5Y10.0Z*** и отправляем
2.3 Находим Z для точки по X = -4.5 и Y = 15.0, формируем строку X-4.5Y15.0Z*** и отправляем
2.? Находим Z для точки по X = -30.0 и Y = 20.0, формируем строку X-30Y20Z*** и отправляем

и.т.д

И для этого надо:
1. Парсить УП для определения из строк координат по XY и тогда для каждой новой строки текущие значения будут предыдущими, а новые - текущими. Это для расчёта количества "делений" на заданные отрезки.
2. Парсить УП для определения текущей величины по Z, что бы корректировать её на величину смещения.
3. Придумать что-то аналогичное, если перемещения происходят по дугам.
4. Максимально быстро находить интерполированное значение по Z.
5. Учитывая, что команды представляют собой множество коротких отрезков, то переделать простой способ отправки сток в ГРБЛ (отправил-получил ответ) на способ с контролем опустошения буфера сериал-порта.
Ваши сообщения автоматически объединены:

Не, фигня у меня получается -
1.1. Находим Z для точки по X = 5.0 и Y = 0.0, формируем строку X5.0Z*** и отправляем
1.2. Находим Z для точки по X = 10.0 и Y = 0.0, формируем строку X10.0Z*** и отправляем
По Z получится ступенчатое, а не плавное перемещение, в пределах отрезков по 5мм.
 
Не, фигня у меня получается -
По Z получится ступенчатое, а не плавное перемещение, в пределах отрезков по 5мм.
Если не получится плавное - ступенчатое тоже подойдет. Потому, что предполагается, что на длине суботрезка изменения по Z малы.
У меня длину суботрезка можно назначать в установках. А 5мм - это из моего опыта и опыта автора Autoleveller.
 
А что по остальному? То, что по пунктам перечислено - правильно ли я понял?

Если не получится плавное - ступенчатое тоже подойдет. Потому, что предполагается, что на длине суботрезка изменения по Z малы.
А 5мм - это из моего опыта и опыта автора Autoleveller.
Для печатных плат - возможно.
Тут где-то показывали гравировку на корпусе мыши - достаточно криволинейная поверхность и в пределах 5 мм перепад высоты будет очень существенным. Возможно, нужно увеличивать количество точек сетки сканирования, допустим с шагом 1 мм и этот же шаг применять для деления на отрезки.
 
А что по остальному? То, что по пунктам перечислено - правильно ли я понял?
Правильно.
Для печатных плат - возможно.
Тут где-то показывали гравировку на корпусе мыши - достаточно криволинейная поверхность и в пределах 5 мм перепад высоты будет очень существенным. Возможно, нужно увеличивать количество точек сетки сканирования, допустим с шагом 1 мм и этот же шаг применять для деления на отрезки.
Я все делал для ПП (у кого что болит :)).
Видео смотрел. Да, в этом случае надо увеличивать число точек сканирования и уменьшать длину отрезка (эту длину лучше сделать назначаемой: например $512=... :)). Но не думаю, что стоит загружать АК такими сложными задачами.
 
Я все делал для ПП (у кого что болит :)).
Ну, я старался что-то более-менее универсальное слепить - у меня вот лазера нет, а переключение лазер-шпиндель добавил, хз, насколько криво оно работает, может кто-нибудь повторит девайс, да протестирует.
В карте высот тоже вроде необходимости нет - мне проще, если критично, либо выровнять посадочное под заготовку, либо профрезеровать поверхность самой заготовки.

У меня массив карты организован таким образом, что зона определяется двумя операциями.
Два цикла по Х и У?
Ваши сообщения автоматически объединены:

Но не думаю, что стоит загружать АК такими сложными задачами.
Правильно, для сложных задач есть АК-47 :)
 
  • Последнее редактирование:
Последнее редактирование:
  • Последнее редактирование:
Последнее редактирование:
Ладно Олег не заморачивайтесь.
На самом деле построить формулу поверхности по сетке не простая задача даже на уровне ПС.
С треугольниками не сталкивался.
С кубическим биномом поверхность описывается из 48 коэффициентов для 3х осей для каждого квадратика/прямоугольника. Т.е. 48 коэффициентов, а это в дефаин типа дабл на языке СИ.
Потом надо применять численные методы для решения нелинейных уравнений для поиска точек на поверхности.
Пойдём по простому пути. Как вы и говорили - подготавливаем поверхность плоским фрезерованием, закрепляем и пилим свои платы.
Просто, сердито и со вкусом.
 
Ладно Олег не заморачивайтесь.
Так точно .
Как вы и говорили - подготавливаем поверхность плоским фрезерованием, закрепляем и пилим свои платы.
Вряд ли для плат????
А при других случаях просто достаточно взять самая низкая дочка загодовки за Z0 ,без предварительной фрезеровки пльскости.
 
Ладно Олег не заморачивайтесь.
На самом деле, я всё равно попробую в этом поковыряться.
Сперва потребуется выполнить и решить кучу промежуточных задач и что-то я представляю как, а что-то не особо.
Но это потом, сейчас у меня и других заморочек хватает.
Так что пока поюзаем базовый вариант с минимумом фунционала.
 
..
Так что пока поюзаем базовый вариант с минимумом фунционала.
не скромничай, :vin:
не знаю другого хоббийного сравнимый офлайника .

Может мой, если реализирую автоматический resume после аварийной остановки :)

оффтоп


если время позволяет лучше реализовать upload файлов по Wi-fi на офлийник.
 
  • Последнее редактирование:
Последнее редактирование:
А при других случаях просто достаточно взять самая низкая дочка загодовки за Z0 ,без предварительной фрезеровки пльскости.
При условии, что высоты на всей поверхности мин. от макс. не отличаются на 0.3мм. Можно, конечно, использовать тангенс критерии. (отношение противолежащего к прилежащему. Сами знаете к углу.)
Олег! На самом деле, Для платочников у кого 3018 с лазером (у меня лазер 5 ватт -так говорят китайцы. Не проверял на вшивость)
В этом деле надо подобрать краску, чтоб прилипала хорошо и тонким слоем.
Для Вашего Коммандера делал платы по такой технологии. Впервые. Да , сутки, не меньше. Красил, что было под рукой-алькидной краской.
Приходилось повторять програму по 5 раз. Это же не серийное производство. Подождём.
Всё вытравилось на 5 балов.
Там, при лазере, всякие таблицы высот не нужны.
 
А при фрезере? :cautious: Не все с лазером работают... :p
Пост #100.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

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

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать