Как я автоуровень делал
Добавлено: 18 фев 2017, 22:22
Началось все с чтения статей в интернете и осмысления задачи, потом покупка датчика , датчик брал на расстояние срабатывания 8 мм , диаметр 18 мм (купил по быстрому недалеко от дома 14 доларов потому что сильно хотелось, в китае цена датчика около 3 ), и не очень удобный pnp выход, но диод и резистор помогли согласовать 12 вольтовое питание датчика с 12 вольтовым выходом и 5 вольтовую ардуину, лучше если есть выбор то брать датчик npn с открытым коллектором, там согласований не надо вообще. Подключил на датчик z чтобы меньше лезть внутрь, лень побеждает всех.
Сейчас по факту датчик срабатывает примерно на 6 вместо 8 по паспорту, в качестве подложки использую зеркало 4,5 мм , так как судя по мнению многих зеркала ровнее стекол. Как оказалось тонкая серебряная металлизация зеркала не достаточна для уверенного срабатывания датчика , а дорожки нагревателя не по всей поверхности расположены, подложил под зеркало слой алюминиевой фольги кухонной, стало лучше. Приклеил клеем фольгу к зеркалу , стало хорошо.
Теперь о местах где густо раскиданы грабли.
Первый вариант размещения датчика (на фото кронштейн лежит на столе )был смещен на 30 мм от экструдера по х и по у. Такое размещение вместе с ошибкой установки датчика (расскажу ниже) влекло такие ситуации когда экструдер уже касался стекла а датчик еще не сработал. Такая ситуация заставила меня пересмотреть немного схему подключения датчика, родной концевик был включен в цепь, но отрегулирован так что срабатывает уже примерно через 0,5 мм после касания стола экструдером, стол играет на пружинах регулировки и не портится. Тут я понял что выбранный в прошивке уровень срабатывания датчика в 0 с экструдером не верное решение, датчик был опущен ниже на 1.3 мм, и в прошивке внесена коррекция #define Z_PROBE_OFFSET_FROM_EXTRUDER -1.3 . При таком расположении датчик все еще находится выше экструдера 0.3-0.8 мм но в то-же время срабатывает на 1,3 мм раньше чем экструдер коснется стола. После калибровки все сходится четко 0 стола равен нулю по перемещению. После некоторых размышлений сделал новый кронштейн для крепления датчика, тут уже есть только смещение по оси х на 25 мм , что несколько лучше.
Были сложности с прошивкой, хотя по сути ничего очень сложного нет, в кронфиге марлина выбрать
выбрать тип датчика
#define FIX_MOUNTED_PROBE
выбрать сдвиг относительно экструдера , в моем случае на 25 мм по х, без смещения по у, и на 1,3 мм ниже экструдера
#define X_PROBE_OFFSET_FROM_EXTRUDER 25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.3 // Z offset: -below +above [the nozzle]
тип подключения датчика
//#define Z_MIN_PROBE_ENDSTOP //<--------- тут я закоментировал
// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE.
// The Z_MIN_PIN will then be used for both Z-homing and probing.
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
выбрать тип автокалибровки
#define AUTO_BED_LEVELING_BILINEAR
выбрать кол-во точек у меня 3, т-е делается 9 измерений при такой настройке , можно сделать больше , но я смысла не вижу, можно внести отдельно по х отдельно по у , по умолчанию выбирается только х а по у берется аналогичное кол-во
// Set the number of grid points per dimension.
#define ABL_GRID_POINTS_X 3
#define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X
далее выбираем зону в которой берутся пробы, у меня это х минимум 40 , у минимум 40 и максимум по х и у 160 . Стоит учесть что данные значения не могут быть меньше смещения датчика , т-е если датчик смещен на 45 мм то минимальная точка будет 45 , в моем случае минимум по х 25 по у ноль, но я решил отступить от края на 40 мм
// Set the boundaries for probing (where the probe can reach).
#define LEFT_PROBE_BED_POSITION 40
#define RIGHT_PROBE_BED_POSITION 160
#define FRONT_PROBE_BED_POSITION 40
#define BACK_PROBE_BED_POSITION 160
В настройках слайсера после команды G28 надо добавить строку G29 , у меня стартовый G код выглядит так
G28 ; home all axes
G29; Auto level
G1 X0 Y0 Z5 F5000 ; lift nozzle, go home
По прошивке вроде все, хотя может что и забыл
Теперь результаты
Провел несколько измерений на разных температурах и плюс дал постоять минуты 3-4 после набора температуры разница высот ниже
при 60 градусах стола
19:50:05.825 : Bilinear Leveling Grid:
19:50:05.825 : 0 1 2
19:50:05.825 : 0 +0.73 +0.84 +0.10
19:50:05.825 : 1 +1.61 +1.42 +0.64
19:50:05.825 : 2 +1.22 +1.17 +0.42
при 90
19:56:18.628 : G29 Auto Bed Leveling
19:56:52.697 : Bilinear Leveling Grid:
19:56:52.697 : 0 1 2
19:56:52.697 : 0 +0.27 +0.45 -0.22
19:56:52.698 : 1 +0.96 +0.73 +0.11
19:56:52.698 : 2 +0.58 +0.56 -0.05
при 105
20:00:10.410 : G29 Auto Bed Leveling
20:00:44.708 : Bilinear Leveling Grid:
20:00:44.712 : 0 1 2
20:00:44.712 : 0 +0.18 +0.31 -0.16
20:00:44.712 : 1 +0.76 +0.54 +0.04
20:00:44.712 : 2 +0.50 +0.44 -0.06
при 110
120:06:18.492 : G29 Auto Bed Leveling
20:06:53.072 : Bilinear Leveling Grid:
20:06:53.077 : 0 1 2
20:06:53.077 : 0 +0.19 +0.28 -0.09
20:06:53.077 : 1 +0.60 +0.39 +0.03
20:06:53.077 : 2 +0.43 +0.41 +0.00
повтор на 110 еще через 3 минуты
20:10:27.078 : G29 Auto Bed Leveling
20:11:01.852 : Bilinear Leveling Grid:
20:11:01.852 : 0 1 2
20:11:01.853 : 0 +0.14 +0.26 -0.13
20:11:01.855 : 1 +0.55 +0.38 +0.01
20:11:01.856 : 2 +0.43 +0.40 -0.02
как видно от температуры уровень меняется и сильно, с +1.61 до 0.55 в середине слева , по центру 1.42 до 0,38 , в самых сильно изменившихся точках ,т-е перепад больше 1 мм
Сейчас по факту датчик срабатывает примерно на 6 вместо 8 по паспорту, в качестве подложки использую зеркало 4,5 мм , так как судя по мнению многих зеркала ровнее стекол. Как оказалось тонкая серебряная металлизация зеркала не достаточна для уверенного срабатывания датчика , а дорожки нагревателя не по всей поверхности расположены, подложил под зеркало слой алюминиевой фольги кухонной, стало лучше. Приклеил клеем фольгу к зеркалу , стало хорошо.
Теперь о местах где густо раскиданы грабли.
Первый вариант размещения датчика (на фото кронштейн лежит на столе )был смещен на 30 мм от экструдера по х и по у. Такое размещение вместе с ошибкой установки датчика (расскажу ниже) влекло такие ситуации когда экструдер уже касался стекла а датчик еще не сработал. Такая ситуация заставила меня пересмотреть немного схему подключения датчика, родной концевик был включен в цепь, но отрегулирован так что срабатывает уже примерно через 0,5 мм после касания стола экструдером, стол играет на пружинах регулировки и не портится. Тут я понял что выбранный в прошивке уровень срабатывания датчика в 0 с экструдером не верное решение, датчик был опущен ниже на 1.3 мм, и в прошивке внесена коррекция #define Z_PROBE_OFFSET_FROM_EXTRUDER -1.3 . При таком расположении датчик все еще находится выше экструдера 0.3-0.8 мм но в то-же время срабатывает на 1,3 мм раньше чем экструдер коснется стола. После калибровки все сходится четко 0 стола равен нулю по перемещению. После некоторых размышлений сделал новый кронштейн для крепления датчика, тут уже есть только смещение по оси х на 25 мм , что несколько лучше.
Были сложности с прошивкой, хотя по сути ничего очень сложного нет, в кронфиге марлина выбрать
выбрать тип датчика
#define FIX_MOUNTED_PROBE
выбрать сдвиг относительно экструдера , в моем случае на 25 мм по х, без смещения по у, и на 1,3 мм ниже экструдера
#define X_PROBE_OFFSET_FROM_EXTRUDER 25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.3 // Z offset: -below +above [the nozzle]
тип подключения датчика
//#define Z_MIN_PROBE_ENDSTOP //<--------- тут я закоментировал
// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE.
// The Z_MIN_PIN will then be used for both Z-homing and probing.
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
выбрать тип автокалибровки
#define AUTO_BED_LEVELING_BILINEAR
выбрать кол-во точек у меня 3, т-е делается 9 измерений при такой настройке , можно сделать больше , но я смысла не вижу, можно внести отдельно по х отдельно по у , по умолчанию выбирается только х а по у берется аналогичное кол-во
// Set the number of grid points per dimension.
#define ABL_GRID_POINTS_X 3
#define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X
далее выбираем зону в которой берутся пробы, у меня это х минимум 40 , у минимум 40 и максимум по х и у 160 . Стоит учесть что данные значения не могут быть меньше смещения датчика , т-е если датчик смещен на 45 мм то минимальная точка будет 45 , в моем случае минимум по х 25 по у ноль, но я решил отступить от края на 40 мм
// Set the boundaries for probing (where the probe can reach).
#define LEFT_PROBE_BED_POSITION 40
#define RIGHT_PROBE_BED_POSITION 160
#define FRONT_PROBE_BED_POSITION 40
#define BACK_PROBE_BED_POSITION 160
В настройках слайсера после команды G28 надо добавить строку G29 , у меня стартовый G код выглядит так
G28 ; home all axes
G29; Auto level
G1 X0 Y0 Z5 F5000 ; lift nozzle, go home
По прошивке вроде все, хотя может что и забыл
Теперь результаты
Провел несколько измерений на разных температурах и плюс дал постоять минуты 3-4 после набора температуры разница высот ниже
при 60 градусах стола
19:50:05.825 : Bilinear Leveling Grid:
19:50:05.825 : 0 1 2
19:50:05.825 : 0 +0.73 +0.84 +0.10
19:50:05.825 : 1 +1.61 +1.42 +0.64
19:50:05.825 : 2 +1.22 +1.17 +0.42
при 90
19:56:18.628 : G29 Auto Bed Leveling
19:56:52.697 : Bilinear Leveling Grid:
19:56:52.697 : 0 1 2
19:56:52.697 : 0 +0.27 +0.45 -0.22
19:56:52.698 : 1 +0.96 +0.73 +0.11
19:56:52.698 : 2 +0.58 +0.56 -0.05
при 105
20:00:10.410 : G29 Auto Bed Leveling
20:00:44.708 : Bilinear Leveling Grid:
20:00:44.712 : 0 1 2
20:00:44.712 : 0 +0.18 +0.31 -0.16
20:00:44.712 : 1 +0.76 +0.54 +0.04
20:00:44.712 : 2 +0.50 +0.44 -0.06
при 110
120:06:18.492 : G29 Auto Bed Leveling
20:06:53.072 : Bilinear Leveling Grid:
20:06:53.077 : 0 1 2
20:06:53.077 : 0 +0.19 +0.28 -0.09
20:06:53.077 : 1 +0.60 +0.39 +0.03
20:06:53.077 : 2 +0.43 +0.41 +0.00
повтор на 110 еще через 3 минуты
20:10:27.078 : G29 Auto Bed Leveling
20:11:01.852 : Bilinear Leveling Grid:
20:11:01.852 : 0 1 2
20:11:01.853 : 0 +0.14 +0.26 -0.13
20:11:01.855 : 1 +0.55 +0.38 +0.01
20:11:01.856 : 2 +0.43 +0.40 -0.02
как видно от температуры уровень меняется и сильно, с +1.61 до 0.55 в середине слева , по центру 1.42 до 0,38 , в самых сильно изменившихся точках ,т-е перепад больше 1 мм