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

Подписаться на 3Dtoday
TSergey
Идет загрузка
Загрузка
06.06.18
4220
31
печатает на Anet A8
Техничка
26
Статья относится к принтерам:
Anet A8
Если очень кратко:

Купил у китайцев комплект для автоуровня стола. Установил на самодельные крепления стола.
Датчик очень чувствительный.
Повторяемость определения: максимальный разброс 0,016 мм на 10 проб.
Ниже описаны проблемы при реализации решения, модель, настройка прошивки и результаты замеров.

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

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

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

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

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

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

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

После сборки и подключения пришлось думать второй раз.
В анете датчики срабатывая замыкаются на землю. Так что я выкрутил настройку компаратора так, чтобы на выходе было +5в. Прикосновение к столу вызывало срабатывание датчика. А вот печатающая головка делала странное: стол продавливался, срабатывал родной концевик и только тут срабатывал пьезодатчик.
Долго крутил настройки – бесполезно. Бросил, ушел спать.
На утро проснувшись хлопнул себя по лбу: если компаратор выкручен на зону срабатывания, то логично, что переключение будет происходить как раз на обратном ходе.
Пришлось переделывать родной датчик на замыкание на +5 при срабатывании. Для этого переставил клеммы на родном датчике и поставил сопротивление на 1к в разъём, чтобы он прибивал сигнал на землю.
f7a229d4f4d77038c566c7c3cddd7342.jpg
И вот тут датчик заработал почти как надо. 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. Это бы позволило легко менять датчики и их полярность.
Подписаться на 3Dtoday
26
Комментарии к статье

Комментарии

06.06.18 в 21:38
0
Ммм... а зачем 4? делаем один на хотэнд. При левелнгие или руками или той же сервой высвобождаем клин, иначе... думаю ясно.
А так тему "глаз" не раскрыли. Ссылки где?
07.06.18 в 05:07
1
При левелнгие или руками или той же сервой высвобождаем клин, иначе...
Вот совсем не хотелось... :)
Изначально, когда читал про реализации, для себя решил, что пьезодатчик должен быть составляющей механического крепления, чтобы обеспечить чувствительность.
Для того же E3D придуман очень хороший держатель. А для родного анетовского как-то грустно всё.

А так тему "глаз" не раскрыли. Ссылки где?
К сожалению совсем не понял фразу.
Но если речь про китайца, то не знаю какая тут политика на ссылки. В общем перестраховался настолько, что забыл ключевые слова написать.
На али найти можно по 3d printer piezo (а так же можно добавить их сакральные: революционный Авто кровать выравнивания датчик :) )
07.06.18 в 05:24
0
А ещё когда просто прижал датчик к раме хотэнда - началась пляска со срабатываниями: вентилятор даёт сильную тряску. Так что для успешной работы пришлось бы или балансировать его, или учиться выключать.
06.06.18 в 23:31
0
Прошу пояснить а лучше показать картинкой - то, что Вы имели в виду под PLS-2 и BLS-2, не понял.
07.06.18 в 00:08
2
07.06.18 в 11:55
0
Благодарю!
У них - масса названий, я например их называю "Berg"-и,
а народ - по названию обжимок или иных поп-производителей...

У ЧИП-и-Дипа - своё название, немого похожее на Ваше.
07.06.18 в 03:02
0
Вообще в этой истории все датчики можно соединить параллельно, у меня так и сделано.
Вам же нужен факт, а не район касания.
07.06.18 в 05:15
0
Была такая мысль. Но...
Пьезодатчик, это не просто емкость. Это очень активная ёмкость. Ток, который породит один датчик будет сожран остальными датчиками на "звук". Фактически по сравнению с дифференциатором другие датчики будут представлять собой короткое замыкание по переменному току. А нам как раз изменение напряжения и надо ловить.
Понятно, что всё равно будет работать ибо запас большой, но зажать 2 резистора в клемму и пайку спрятать в термоусадку было не сложно.
В итоге каждый датчик отделён от других парой резисторов (свой и чужой), а дифференциатор только одним.
07.06.18 в 05:42
0
Ток, который породит один датчик будет сожран остальными датчиками
Не выдумывайте нелогичные объяснения :)
Пластина стола твёрдая и удар передаётся на все датчики практически одинаково, сдвигом во времени здесь можно пренебречь.
Пьезодатчик, это не просто емкость.
Ток, который породит один датчик
Ну и пьезодатчик - в первую очередь источник напряжения (десятые вольта в моём случае), а не тока, тем более не измерительная ёмкость.
Удачи!
07.06.18 в 14:43
0
4 датчика. Проверка принтером на малой скорости (вторая проба)

Все датчики подсоединены через 10к каждый.
5d497df36794351c3a783bd722f34e78.jpg


Без сопротивления.
efb9457aeeab3aa1e8a145864ce997c9.jpg


Ну и забавно, но ожидаемо - один датчик.
a6742e43d8478e900d533467660d79b7.jpg



Потеря сигнала около 13%.
Существенно? Нет.
Влияние есть? Да.
07.06.18 в 17:33
1
Не могу ответить взаимностью, как-то сразу всё заработало, даже с моими метровыми шлейфами, .где плотно фонит ШИМ хотенда.
Вот сухой остаток :)
f6e407f670ea9b0836ed2bd8c894f3d0.JPG

4564c51a674b1463a906221761455a30.JPG
07.06.18 в 17:48
0
Дак кто спорит то? :)
Я же согласился - влияние несущественно. 13% легко компенсируется усилителем.

Просто в схеме было через сопротивления, вот я и переделал чтобы всё было так же. Ну и съэкономил эти 13% на полезный сигнал.
07.06.18 в 21:36
0
Вот давно хотел спросить, где такие пьезики берёте?
08.06.18 в 00:54
2
Когда-то после упорных поисков нашёл в Китае, пришлось брать мелкооптовую партию.
Правда, несмотря на японское происхождение, цена была вполне приемлемой.
Давно дело было....
07.06.18 в 10:13
3
Не понимаю, может вы объясните. Зачем все эти датчики уровня? У вас настолько кривые стекла, что каждый раз по несколько минут надо выставлять горизонт стола? Может стол один раз нормально зафиксировать?
07.06.18 в 11:04
3
Может поступить проще? Если вы не понимаете почему что-то делают другие, но они вас не заставляют делать тоже самое, то может ну их, этих фанатиков делать что-то ради того чтобы делать?
Ведь даже после того, как я объясню почему я для своего принтера сделал автоуровень, то вас всё равно ответ не удовлетворит и вы останетесь при своём мнении.

Причины по которым я сделал:
1) стёкла разной толщины. 3 и 4 мм. Так истерически сложилось. :)
2) стекла при нагреве гнутся в разные стороны (но это так себе оправдание, ибо можно поставить метку для одинаковой ориентации)
3) при смене стекла прижим получается на разные точки (тоже можно победить маркировкой)
4) плавающий люфт оси Y (так как на момент покупки не было физической возможности закрепить принтер на щит (сейчас появился, но процесс уже был запущен))
5) постоянное уплывание оси X из-за двух моторов, которые уплывают друг от друга в различных процессах (как правило в выключенном состоянии, ибо надеюсь, что пропусков шагов нет)
6) и это самое главное: было интересно сделать. Ребёнок активно участвовал в процессе. И надеюсь, что этот опыт поможет ему быть не рукожопом, а рукастым мужиком


Заради одного только последнего пункта я бы сделал это, даже если бы не было всех предыдущих.

ЗЫ. Ну как? Я был прав: вас моя мотивация никак не переубедила ведь?
07.06.18 в 11:14
0
Неужели из-за всех этих процессов нужно городить калибровку по нескольким точкам, а не регулировать высоту, на которой срабатывает концевик? Настолько большие разбросы, что не компенсируются растекающимся в момент выдавливания пластиком? И странно, что ваши моторы уводит, от чего это происходит?
07.06.18 в 11:37
1
Неужели из-за всех этих процессов нужно городить калибровку по нескольким точкам, а не регулировать высоту, на которой срабатывает концевик?
Вот не городил. Совсем. Процесс изготовления принёс удовлетворение от результата и радость от самого процесса.
Поверьте: никто вас не заставляет делать тоже самое. Значит у вас нет никакого повода оспаривать моё решение.

Ну кроме одного: религиозные войны "В интернете опять кто-то не прав". ;)
А это остановить просто. Всего двумя вопросами:
1) Вы готовы отказаться от своего убеждения, если кто-то будет говорить, что ему по другому удобнее?
2) А если нет, то почему вы решили, что оппонент поменяет своё мнение основываясь только на том, что вам удобнее по другому?

регулировать высоту, на которой срабатывает концевик?
А вот с этим на анете а8 грустно: гайки скрыты направляющими, а к болтам приходится проковыриваться через провода идущие от платы. Ну не удобно, просто не удобно.

Настолько большие разбросы, что не компенсируются растекающимся в момент выдавливания пластиком?
Всё зависит от степени ухода. Когда надо подправлять, а когда ещё можно забить? А как измерить этот момент?
В автоуровне есть главная составляющая - автоматизация процесса.
Т.е. сделав автоуровень можно просто забыть про этот момент.
(Хотя это иногда плохо: ведь перекашивать может начать так, что программная компенсация будет больше походить на порнографию)

И опять же: мастеру отсутствие автоуровня не создаст абсолютно никаких помех.

И странно, что ваши моторы уводит, от чего это происходит?
Таскаю его за уши (в верхней части принтера горизонтальные пластинки, которые как бы делают устойчивость конструкции на диагональный изгиб). Видимо в этот момент цепляю винт оси.
Да и само таскание за уши перекорёживает принтер.
07.06.18 в 12:08
0
к болтам приходится проковыриваться через провода идущие от платы
Попробуйте что-то подобное, вдруг понравится, сильно упрощает.
https://www.thingiverse.com/thing:1776429
Где нашел свое крепление, уже не подскажу, у меня другое, но принцип тот же.

Когда надо подправлять, а когда ещё можно забить?

Когда неудовлетворяет лично вас качество печати.

Я с подобными вашим проблемами не ставлкивался, поэтому изначальные непонятки и вызваны. Лично мне хватает регулировки, подобной той, на которую я дал ссылку.
07.06.18 в 11:06
1
Стекло не всегда ровно прилегает к нагревательному элементу и зависит от места крепления прищепок. Поэтому даже на стальной прюше приходится калибровать Z. Также скоба у концевика дает погрешность, когда изгибается от печати к печати. Если не дергать стекла постоянно и печатать одним пластиком, то ваш способ годится. Но если можно сделать жизнь комфортнее, то почему бы не сделать ее такой? Я считаю калибровать высоту сопла над столом адекватнее самим соплом
07.06.18 в 11:11
0
Вспомнил ещё один вариант: если начать менять сопла, то их высота тоже постоянно будет плавать.

Без автоуровня не сложно, но и с ним немного проще. А так: на вкус и цвет все фломастеры разные.
07.06.18 в 12:06
0
Добрый день.
Почему не сделать так, как предлагают китайцы на этом видео?
https://cloud.video.taobao.com/play/u/2977158184/p/1/e/6/t/10301/65957366.mp4
Такой вариант не пробовали? Или не хватает чувствительности?
07.06.18 в 13:05
0
День добрый.

У пьезодатчиков есть проблемы с температурой.
Дешманские работают до 60-80 градусов. Какие-то дорогие до 80-100. В чём именно заключается этот порог и что происходит (то ли совсем перестают работать, то ли начинают срабатывать сами по себе) - не разбирался.
Ещё встречал, что от 80 дешевые просто выходят из строя. Но это не проверял и документального подтверждения не нашел.

А ещё есть момент связанный с тем, что у той модели, что на видео (не помню её) скорость перемещения по Z сильно выше, чем у анета. И в одном из обзоров про такую реализацию прямо писали, что автоуровень работает как дятел - стучит по столу и этот звук ловится датчиком (там же нет деформации как в моём варианте).
А на анете прикосновение сильно мягче. Потому я и хотел, чтобы датчик был в механике крепления. Чтобы любое прикосновение вызывало его деформацию.
07.06.18 в 12:10
0
Я делал вот так, стабильно, на любом покрытии и с любым соплом.
Каретку пришлось моделировать самому т.к анетовский экструдер на тот момент давно уже не использовал.
После установки забыл про первый слой, просто запускаю печать с флешки и ухожу по своим делам, принтер разогревается, делает автокалибровку и начинает печатать без моего участия.
07.06.18 в 13:07
0
Да, если буду менять экструдер на такой, то тоже сделаю такое решение. Ибо оно более логично, чем вывешивать стол на пьезодатчиках.
08.06.18 в 10:30
1
Кстати ещё мысли в догонку: можно было не городить перевод родного датчика из нормального +5 в нормальноый 0.
Надо было просто все датчики подключить в такую полярность, чтобы давление вызывало снижение напряжения. Тогда дифференциатор тоже бы давал снижение, которое фиксировалось бы компаратором.

В общем полярность датчиков и выхода - важная часть комплекса.
Главное, что постукивая по столу этот момент не понять. Ибо при ударе идут быстрая смена +/-.
Надо медленно надавливать. Тогда будет явно видно когда срабатывает датчик: на прямом ходе или на обратном.
04.08.18 в 12:25
0
я правильно понимаю что стол держится исключительно за счет силы тяжести? не люфтит по сторонам в процессе печати?
04.08.18 в 12:46
0
я правильно понимаю что стол держится исключительно за счет силы тяжести?
Правильно.

не люфтит по сторонам в процессе печати?
Тоже сильно переживал, что будет люфт, но оказалось всё вполне приемлемо.
На ощупь (руками) в горизонтальных направлениях нет сдвигов.
После переделки ухудшения качества печати стенки на глаз не заметил.

К тому же окна под винты овальные - всегда можно чуть перекрутить, чтобы со всех сторон обеспечить упор (соприкосновение) по стенкам крепления.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Тест на излом прутка PLA, ABS, SBS, HIPS и PET-G

Самодельный 3D принтер из CD/DVD приводов

Калибровка Anycubic Photon не по феншую

3D Print Expo. Впечатления новичка.

Форк Fribot Helix: H-Bot или CоreXY, все оси на MGN12, область печати 300х200х300

Дальневосточная русалка запустит аддитивное производство тренажеров для ягодиц