Металл2024 Реклама
Метобр2024 Реклама

Anet A8. Автоуровень стола на пьезодатчиках

TSergey
Идет загрузка
Загрузка
06.06.2018
9693
31
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

26
Статья относится к принтерам:
Anet A8
Если очень кратко:

Купил у китайцев комплект для автоуровня стола. Установил на самодельные крепления стола.

Датчик очень чувствительный.

Повторяемость определения: максимальный разброс 0,016 мм на 10 проб.

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

А если длинно, то:

Все приключения начинаются с того, что в начале мы что-то покупаем, а потом начинаем думать…

Сильно хотел автоуровень, так как стёкол несколько и их перестановка сбивает настройку стола. Так что начал читать, понравилась точность пьезодатчика, тут же заказал его. В описании лота была ссылка на схему: https://reprap.org/wiki/Piezo-electric_sensors, Версия 1.1. В основе: с пьезодатчиков снимается сигнал, дифференцируется и компаратором выдается сигнал. Настройка всего в двух подстроечных резисторах: коэффициент дифференцирования и уровень срабатывания компаратора. Вроде всё просто и понятно. Наивный…

Удручало, что схема трёхканальная, а для крепления на стол лучше бы 4 канала. В результате первое, что сделал – вместо одного из резисторов запаял перемычку, а на разъёме собрал два резистора на 10к и к ним подсоединил два датчика. На остальных каналах по одному датчику.
Anet A8. Автоуровень стола на пьезодатчиках
В интернете предлагают разные варианты подключения. Самый простой – просверлить датчики и надеть их под пружину на винт крепления стола. Отверг, так как не хочу сверлить датчики. Был ещё вариант со сложным креплением, но целыми датчиками. Не понравился тем, что размер крепления достаточно большой.

Хотелось, чтобы просто, датчики не сверлить, не крупно, и чтобы пьезодатчик был механической частью крепления. Т.е. непосредственно поддерживал стол.

Пришлось думать в первый раз. В результате сложилась примерная схема, но для неё датчики, которые шли в комплекте, были слишком крупными. Поехали с сыном в Промэлектронику и взяли там датчики MFT-12T-9.2A1 всего 12 мм в диаметре. Нарисовал модель для верхнего и нижнего блока крепления с учётом того, что провода припаяны прямо на диск и сильно утолщают сегмент диска. Модель тут - http://3dtoday.ru/3d-models/detali-dlya-3d-printerov/raznoe/kreplenie_stola_printera_dlya_pezodatchika_mft_12t_9_2a1/.

Спаял и собрал достаточно быстро: провода из комплекта выкинул, так как есть хороший запас провода МГТФ.
Anet A8. Автоуровень стола на пьезодатчиках
Anet A8. Автоуровень стола на пьезодатчиках
Подключение сделал такое, чтобы дублирующим оставить родной концевик.

После сборки и подключения пришлось думать второй раз.

В анете датчики срабатывая замыкаются на землю. Так что я выкрутил настройку компаратора так, чтобы на выходе было +5в. Прикосновение к столу вызывало срабатывание датчика. А вот печатающая головка делала странное: стол продавливался, срабатывал родной концевик и только тут срабатывал пьезодатчик.

Долго крутил настройки – бесполезно. Бросил, ушел спать.

На утро проснувшись хлопнул себя по лбу: если компаратор выкручен на зону срабатывания, то логично, что переключение будет происходить как раз на обратном ходе.

Пришлось переделывать родной датчик на замыкание на +5 при срабатывании. Для этого переставил клеммы на родном датчике и поставил сопротивление на 1к в разъём, чтобы он прибивал сигнал на землю.
Anet A8. Автоуровень стола на пьезодатчиках
И вот тут датчик заработал почти как надо. 3 точки – идеально, одна как-то не стабильно.

Пришлось думать в третий раз. Но тут уже опыт есть – быстро понял, что пьезодатчик подсоединён неправильно. Просто поменял полярность – и всё заработало.

Прошивку взял Марлин 1.1.8. Дифф от стандартного конфига:

Задаём имя и UUID:

#define CUSTOM_MACHINE_NAME 'Anet A8'

#define MACHINE_UUID '5e44eefc-6293-11e8-adc0-fa7ae01bbebc'

После калибровки экструдера записываем коэффициенты:

#define DEFAULT_Kp 31.35

#define DEFAULT_Ki 2.73

#define DEFAULT_Kd 89.87

Так как инвертировали датчик, то:

#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.

#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.


Ограничим ускорения, а то стол ходуном ходит:

#define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 10000 }

Включаем автоуровень, датчик экструдер, так что делаем вид, что он жестко закреплён:

#define FIX_MOUNTED_PROBE

Так как датчик жутко чувствителен, то увеличим задержку между перемещениями и стартом определения уровня:

#define DELAY_BEFORE_PROBING 1000 // (ms) To prevent vibrations from triggering piezo sensors

#define XY_PROBE_SPEED 2000


Скорость пробы ограничим:

#define Z_PROBE_SPEED_FAST (HOMING_FEEDRATE_Z*2/3)

#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST/3)


Определение уровня за два раза:

#define MULTIPLE_PROBING 2

Включим возможность тестировать повторяемость автоуровня по M48:

#define Z_MIN_PROBE_REPEATABILITY_TEST

Включим линейную коррекцию (пока в других смысла не вижу)

#define AUTO_BED_LEVELING_LINEAR

Поменяем точки определения автоуровня:

#define LEFT_PROBE_BED_POSITION 20

#define FRONT_PROBE_BED_POSITION 20

#define BACK_PROBE_BED_POSITION 190


Включаем безопасную парковку головы:

#define Z_SAFE_HOMING

Скорость ухода домой по Z поставим максимальной:

#define HOMING_FEEDRATE_Z (8*60)

Первая проверка показала сильный перекос в оси Х. Замер между направляющими показал, что перекос в самой оси. Быстро набросал скрипт в Pronterface:

G28

G0 X20 Y105 F3000

M48 P4 V4

G0 X190 Y105 F3000

M48 P4 V4

M18


За несколько итераций вывел ось вровень со столом. Легкий наклон по оси Y пока не буду исправлять – надо найти тонкие шайбы.

Вот результат автоуровня (к сожалению не нашел как выбрать моноширинный шрифт, а BBCode code на сайте не работает):

G29 Auto Bed Leveling

Bed X: 20.000 Y: 20.000 Z: 0.023

Bed X: 105.000 Y: 20.000 Z: 0.102

Bed X: 190.000 Y: 20.000 Z: 0.104

Bed X: 190.000 Y: 105.000 Z: 0.083

Bed X: 105.000 Y: 105.000 Z: 0.070

Bed X: 20.000 Y: 105.000 Z: -0.026

Bed X: 20.000 Y: 190.000 Z: -0.204

Bed X: 105.000 Y: 190.000 Z: -0.076

Bed X: 190.000 Y: 190.000 Z: 0.005

Eqn coefficients: a: 0.00078235 b: -0.00099118 d: 0.03081536

Mean of sampled points: 0.00888889

Bed Height Topography:

+--- BACK --+

| |

L | (+) | R

E | | I

F | (-) N (+) | G

T | | H

| (-) | T

| |

O-- FRONT --+

(0,0)

-0.21339 -0.08539 -0.00389

-0.03539 +0.06161 +0.07361

+0.01461 +0.09311 +0.09511

Corrected Bed Height vs. Bed Topology:

+0.00000 +0.06150 +0.07650

+0.09375 +0.12425 +0.06975

+0.05950 +0.07150 +0.00700

Bed Level Correction Matrix:

+1.000000 +0.000000 +0.000782

+0.000001 +1.000000 -0.000991

-0.000782 +0.000991 +0.999999

Результаты тестов повторного определения уровня на 10 проб по координатам:

Coord: 20,20 Mean: 0.011050 Min: 0.007 Max: 0.014 Range: 0.00

Coord: 20,190 Mean: -0.233600 Min: -0.237 Max: -0.229 Range: 0.008

Coord: 190,190 Mean: -0.026500 Min: -0.033 Max: -0.018 Range: 0.016

Coord: 190,20 Mean: 0.066550 Min: 0.065 Max: 0.068 Range: 0.003

Coord: 105,20 Mean: 0.053950 Min: 0.045 Max: 0.058 Range: 0.012

Coord: 20,105 Mean: -0.102400 Min: -0.107 Max: -0.100 Range: 0.007

Coord: 105,190 Mean: -0.153800 Min: -0.156 Max: -0.150 Range: 0.006

Coord: 190,105 Mean: 0.002850 Min: 0.001 Max: 0.006 Range: 0.005

Coord: 105,105 Mean: -0.005950 Min: -0.009 Max: -0.003 Range: 0.006

Видео калибровки – достаточно скучное: ничем не отличается от всех похожих.
Итого:

Датчик работает. Перестал тратить по несколько минут на ручную калибровку.

Датчик достаточно чувствительный. Надо ещё его подрегулировать, но и сейчас уже ложных срабатываний нет.

Чтобы сейчас сделал по другому: не стоило припаивать датчики к проводам и закатывать в термоусадку. Надо было датчик припаять к PLS-2, а провода зажать в BLS-2. Это бы позволило легко менять датчики и их полярность.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

26
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама