roboforum.ru

Технический форум по робототехнике.

Автоуровень кровати: методы программного выравнивания.

Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 12:28

Коллеги, предлагаю обсудить тему программного выравнивания уровня кровати.

Я недавно завершил постройку принтера с большим столом и столкнулся с тем что традиционно выставлять уровень регулировкой высоты трех болтиков как в принтерах стандартных размеров - это не вариант.

Логичным продолжением было изготовление автоуровня кровати, а вот дальше самое интересное.
Оказалось что кровать условно имеет форму пропеллера, перепады конечно не очень большие, но в максимуме составляют порядка 0.3 мм
Это очень неудобная и неприятная ситуация.

Насколько мне известно существует несколько методов компенсации этой неровности:
1. увеличиваем в слайсере первый слой на уровень перепада, а там как ляжет - местами первый слой будет уходить до нулевой толщины, а местами до величины перепада. Это классический метод не требует модификаций прошивки
Снимок экрана 2015-06-15 в 11.10.33.png

2. меряем плоскость кровати по 3 точкам и при печати используем компенсацию к этой виртуальной плоскости. Тут остается мною не изученный вопрос: модель поворачивается матрицой разворота целиком и ось Z поворачивается нормально к новой виртуальной поверхности или ось Z остается вертикальной и просто вносится поправка по вертикали. это реализовано в стандартной прошивке marlin опции ENABLE_AUTO_BED_LEVELING (по трем точкам) или ENABLE_AUTO_BED_LEVELING + AUTO_BED_LEVELING_GRID (средняя проскость по массиву)
Снимок экрана 2015-06-15 в 11.00.39.png
или
Снимок экрана 2015-06-15 в 11.02.50.png

3. строится нелинейная модель кровати, нормаль Z берется к усредненной плоскости а дальше варианты: либо нелинейность сохраняется с низу до верху либо постепенно выводится в ноль.
Зачатки варианта с сохранением нелинейности есть в developer ветки marlin, опции MANUAL_BED_LEVELING + MESH_BED_LEVELING
Снимок экрана 2015-06-15 в 11.16.01.png

или
Снимок экрана 2015-06-15 в 11.05.25.png


Я специально значительно увеличил нелинейность для лучшего восприятия.
Вероятнее всего самый интересный вариант это последний - нелинейная кровать с нормализованным вектором Z и постепенной компенсацией Z в ноль. но такой реализации в прошивках я не нашел.

Предлагаю обсудить варианты таких компенсаций, и возможно подскажите реализации.

Re: Автоуровень кровати: методы программного выравнивания.

SkyFlyer » 15 июн 2015, 12:50

А в каком состоянии сейчас код автолевела? Разработчики в последний раз практически потонули в коде, пытаясь выловить все глюки автовыравнивания.

Re: Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 13:00

он работает, но сильно раздувает код (~20% прошивки)
глюков в релиз ветке я не обнаружил (с другой стороны я много и не печатал в этом режиме), и пока не смотрел сделана ли нормализация вектора Z с разворотом модели или это вертикальная компенсация

Re: Автоуровень кровати: методы программного выравнивания.

abuharsky » 15 июн 2015, 13:55

setar писал(а):он работает, но сильно раздувает код (~20% прошивки)
глюков в релиз ветке я не обнаружил (с другой стороны я много и не печатал в этом режиме), и пока не смотрел сделана ли нормализация вектора Z с разворотом модели или это вертикальная компенсация



а вы не пробовали вот этот форк https://github.com/beckdac/Marlin ?

Дело в том, что есть похожая ветка на http://3dprintboard.com/showthread.php? ... eling+roxy

Если в двух словах, то комрады затронули ту же проблему с тем, что сама кровать в разных местах может быть неровная, то есть выравнивание по углам не дает никакого толку. Они пришли к выводу, что необходимо снять топологию поверхности и использовать эту информацию при печати.

Ссылку на версию с их наработками я выложил выше, там они даже еще дальше пошли: сделали плагины для Cura и Slicer чтобы снятие топологии поверхности включалось только для площади, на которой будет печать.

Re: Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 14:00

спасибо, сейчас изучу эту ветку

Re: Автоуровень кровати: методы программного выравнивания.

SkyFlyer » 15 июн 2015, 14:08

Форк этот - старье. Если только кое-какие алгоритмы оттуда использовать. Но если уж и дорабатывать последнего марлина, то проще свой алгоритм написать, а не чужие глюки искать.

setar

У меня итогом работы автолевела явилось то, что после него каретка движется непараллельно столу, чего нет при ручном выравнивании. Скорее всего тут тоже самое, я даже не знаю, как это можно доработать. Нужно с нуля алгоритм писать, в добавление к тому что уже есть. Но в математике я увы, не особо силен.

Re: Автоуровень кровати: методы программного выравнивания.

TedBeer » 15 июн 2015, 14:20

Можно взять высшую точку и всё подогнать к ней - заполнить неровности и получить ровную площадку (рафт) с нормалью совпадающей с осью Z станка. А дальше печатать как обычно.

Re: Автоуровень кровати: методы программного выравнивания.

SkyFlyer » 15 июн 2015, 14:49

Рафт печатать??? Это уж совсем непрактично, как с точки зрения скорости, так с с расходом пластика.

Re: Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 14:50

с рафтом все просто, тут вопросов нет.
для режима с рафтом и автоуровень совсем не нужен, уж тем более нелинейная калибровка.
вот только отрывать его крайне сложно, особенно на большой площади

Re: Автоуровень кровати: методы программного выравнивания.

ДимаМ » 15 июн 2015, 15:06

Пропеллер связан с тепловым расширением, да?

Re: Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 15:13

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


в закладки по вопросу
тут обсуждение реализации "Manual bed leveling + mesh bed leveling" в developer версии марлина

Re: Автоуровень кровати: методы программного выравнивания.

ДимаМ » 15 июн 2015, 15:28

Фанерка...Я думаю, тут стекло косячит! Либо оно банально механически изгибается под влиянием прищепок, либо тепловое расширение. Думаю, что если взять стекло потолще, то будет лучше.

Re: Автоуровень кровати: методы программного выравнивания.

abuharsky » 15 июн 2015, 15:46

SkyFlyer писал(а):Форк этот - старье. Если только кое-какие алгоритмы оттуда использовать. Но если уж и дорабатывать последнего марлина, то проще свой алгоритм написать, а не чужие глюки искать.



возможно, однако нет ничего такого в официальном марлине, что хоть как-то ощутимо влияло бы на печать.

Re: Автоуровень кровати: методы программного выравнивания.

TedBeer » 15 июн 2015, 16:19

ДимаМ писал(а):Думаю, что если взять стекло потолще, то будет лучше.

Толстое стекло ломается от температурного градиента. Его надо медленно нагревать и медленно охлаждать.

Re: Автоуровень кровати: методы программного выравнивания.

setar » 15 июн 2015, 16:44

ДимаМ писал(а):Фанерка...Я думаю, тут стекло косячит! Либо оно банально механически изгибается под влиянием прищепок, либо тепловое расширение. Думаю, что если взять стекло потолще, то будет лучше.

это абсолютно не важно, 0.3 мм перепад для стекольщика это "почти ровное", но для наших задач не приемлемо.
лучше не будет, лишние несколько сот грамм активной массы сделают только хуже.
еще раз говорю, не нужно рассказывать как механически выровнять систему, на больших размерах стоимость подобного выравнивания растет в геометрической прогрессии.


Rambler\'s Top100 Mail.ru counter