setar » 15 июл 2015, 13:25
Давайте о терминах договоримся - удобнее будет обсуждать.
реальные координаты XYZ - базовые без использования математики автоуровня, доступны для вычисления через число шагов * коэфициент мм/шаг
результаты замера стола в прошивке хранятся так:
eqnBVector[probePointCounter] = measured_z;
eqnAMatrix[probePointCounter + 0 * abl2] = xProbe;
eqnAMatrix[probePointCounter + 1 * abl2] = yProbe;
eqnAMatrix[probePointCounter + 2 * abl2] = 1;
где:
probePointCounter - порядковый номер точки замера. Нумеруется от 0,0 слева направо, затем линия выше на один шаг тоже слева направо и т.д.
abl2 - количество точек замера (квадрат числа точек по одной стороне)
базовая плоскость (plan_bed_level_matrix) - плоскость построенная как средняя проходящая по массиву точек снятых с реальной поверхности стола. Может содержать как отрицательные значения относительно реальной поверхности так и положительные (может "углублять" сопло в стол и печатать в воздухе)
нулевая плоскость - плоскость идеально ровного стола, все точки Z стола в реальных координатах равны нулю
скомпенсированная плоскость - плоскость находящаяся выше базовой на расстоянии достаточном для постепенной компенсации неровностей кровати. выше ее расстояния реальны (1мм=1мм), а ниже расстояния скомпенсированны таким образом чтобы сопло дошло до реального стола. Например скомпенсированная плоскость находится на высоте 1мм от базовой, и в этой точке до стола 1.2 мм, значит для линейных перемещений будет применяться коэфициент 1.2 и перемещение на 0.1мм будет преобразовано в 0.12 реального перемещения.
повернутые координаты X'Y'Z' - координаты получаемые для точки модели XYZ приложением матрицы поворота относительно базовой плоскости apply_rotation_xyz(plan_bed_level_matrix, x, y, z); показывают в какой точке реальных координат будет находиться модель стоящая на базовой плоскости
я тоже думал про постепенную компенсацию на первых слоях миллиметрах (прошивка про слои ничего не знает)
для анализа минимальной необходимой высоты для первого плоского уровня есть информация о кривизне кровати,
но нету информации о диаметре сопла, чтобы вычислить какой может быть слой.
А вот нужно ли знать диаметр сопла чтобы рассчитать компенсацию ?
Ведь по идее можно компенсировать линейное расстояние на какой то процент , например 10 или 20.
Тогда при неровности кровати в 1мм (расстояние между максимальной и минимальной точкой относительно базовой плоскости)
для 10% на скомпенсированную плоскость можно выйти через 10мм а при 20% через 5 мм.
И соответственно для слоя 0.2
10% ,будет давать разброс в реальных координатах от 0.18 до 0.22, и выход на линейные размеры через 50 слоев (10мм)
20% ,даст разброс от 0.16 до 0.24 и выход на линейные размеры через 25 слоев (5мм)