Датчик уровня стола 3d принтера своими руками

Обновлено: 03.05.2024

Калибровка стола 3d принтера без всяких датчиков

Как известно для качественной печати на 3D принтере необходимо тщательно выровнять поверхность стола. К сожалению сделать это не всегда возможно. Довольно часто стол представляет собой криволинейную поверхность и даже использование стекла не позволяет полностью решить эту проблему. По счастью в последних прошивках Marlin всё больше и больше внимания уделется возможности калибровки поверхности стола. Полностью автоматическая калибровка требует применения дополнительных датчиков, что не всегда доступно, но кроме неё есть возможность калибровки стола в ручном режиме. Именно об этом я и хочу рассказать.

Добавляем поддержку автокалибровки в прошивку

Включаем поддержку ручной калибровки

Задаём опции сетки

Внимание! Не использовать больше 7 точек на ось. Это ограничение прошивки.

Добавляем пункты в меню принтера

Скрипт выполняемый после калибровки. Тут по умолчанию какие-то телодвижения экструдером, не факт что они нужны. Не уверен на этот счёт.

После этого заливаем обновлённую прошивку.

Калибруем стол

Для ручной калибровки используется так называемый Mesh Bed Leveling (MBL). Т.е. способ калибровки по массиву точек. Соответственно поверхность стола разбивается на сетку и по узлам сетки производятся замеры Z координаты перемещением вручную оси Z. Собствено для измерения нужен только лист бумаги и прямые руки.

В каждой точке под сопло экструдера подкладываем лист бумаги и движением оси Z (либо посылая специальную G команду через ПО с компьютера, либо через меню принтера) добиваемся такого состояния когда лист под экструдером ещё можно свободно двигать, а уменьшение положения экструдера на один шаг уже мешает листу перемещаться. После этого текущая точка записывается и продолжаем со следующей и так до конца.

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

По умолчанию для калибровки используется сетка 3×3 т. е. 9 точек, но при желании можно задать в прошивке другое количество (не более 7 на ось, т. е. не более 49 всего).

Для дополнительного увеличения точности калибровки можно перед её выполнением разогреть стол и экструдер до рабочих температур. Это позволит учесть и скомпенсировать температурные расширения.

Через внешнюю программу

Для калибровки стола есть специальная команда G29

  1. G29 S0 читаем текущие значения точек в памяти принтера.
  2. G29 S1 перемещение принтера в первую точку для начала процесса настройки. Фактически принтер сначала паркуется в исходное положение, потом переходит к первой точке.
  3. G29 S2 записываем текущую точку и двигаемся к следующей
  4. Повторяем процесс для всех точек
  5. Используем команде M500 для записи измеренных величин в память принтера

Через меню принтера

Выбираем в меню Presets следующие пункты

Меню автокалибровки стола - Bed Leveling
Меню автокалибровки стола - Level Bed

После чего видим на экране следующую надпись и наблюдаем как принтер паркуется в домашнюю позицию

Меню автокалибровки стола - Парковка

Затем принтер предлагает нам кликнуть по энкодеру.

Меню автокалибровки стола - Click to begin

После клика экструдер переходит к первой точке

Меню автокалибровки стола - Двигаемся к первой точке

И мы видим регулировку оси Z.

Меню автокалибровки стола - Регулировка оси Z

Далее двигая рукоятку энкодера выставляем требуемый зазор как было описано выше.

Меню автокалибровки стола - Завершение регулировки оси Z

Кликом по энкодеру сохраняем значение и перемещаемся к следующей точке. Повторяем калибровку каждой точки (всего их 9 штук). После последней точки принтер выполнит парковку и покажет нам следующее:

Меню автокалибровки стола - Leveling done

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

Меню автокалибровки стола - Запоминаем настройки

Итого

В моём случае даже такая ручная калибровка позволила существенно улучшить качество печати. Причём заметно невооружённым взглядом. Дополнительным бонусом стало то, что перестал мазать стекло клеем для лучшего прилипания — в связи с тем, что после калибровки принтер учитывает неровности стола первый слой теперь укладывается абсолютно ровно и прилипает просто отлично. Опять же это сразу видно. Раньше из-за неровностей одна часть прилипала хуже и в результате без покрытия клея модель отваливалась.

В общем крайне рекомендую сделать калибровку если вы её ещё не сделали. Как минимум не будет хуже и почти наверняка результаты печати значительно улучшатся.

Экспериментальный датчик уровня печатной платформы 3D принтера

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

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

В последнее время я уделил много внимания разработке своего варианта датчика автоуровня. Поставил себе задачу- создать универсальное решение для всех типов покрытий печатного стола. Ключевое требование к новому устройству я сформулировал так: включай и работай (Plug and Play).

Существенное отличие от популярного датчика автоуровня BLTouch корейских разработчиков (ссылка) заключается в отсутствии необходимости ручной калибровки после смены сопла или ремонта хотэнда. Алгоритм работы разработанного датчика при калибровке платформы будет состоять из двух этапов:

1. Определение уровня сопла;

2. Замер всех точек калибровки на платформе печати. Замер производится дистанционно без контакта между соплом и поверхностью.

Все измерения осуществляется по штоку- зонду. Длина выдвижения штока составляет 15 мм и по всей длине выдвижения он может осуществлять замеры с разрешающей способностью в 1 мкм. На первом этапе определение уровня сопла осуществляется по моменту остановки штока при достижении кончика сопла поверхности стола (сопло останавливает стол). Настраиваемый параметр срабатывания датчика на этом этапе– прогнозируемое перемещение стола в отсутствии сопла - тоесть если шток остановился и разность между точкой остановки штока и точкой где он бы двигался без остановки стала больше чем уставка, то датчик срабатывает; установить этот параметр можно в диапазоне (20мкм- 1мм).

Экспериментальный датчик уровня печатной платформы 3D принтера

Второй этап алгоритма заключается в следующем: датчик на штоке делает «метку», определяющую положение сопла, далее прибавляя целое число к полученному значению, (допустим 3 мм) щуп начинает срабатывать на новую отметку, тем самым, осуществляется дистанционное зондирование поверхности стола, без соприкосновения с соплом. При этом, в прошивке принтера, после замера точек, вся сетка смещается на эту величину дистанционного зондирования (3мм).Испытания

Разработанный и собранный первый экземпляр экспериментального датчика автоуровня пока не работает по полноценному алгоритму в два этапа. Прошивка разделена на две части, и каждая из них отдельно испытаны на точность и повторяемость срабатываний. В видео ниже приведены тесты на команду M48.

Первый тест определяет уровень сопла. Уставка на разность смещений сопла и штока- 50мкм. Результаты теста представлены на скриншоте. Полученная повторяемость срабатываний в определении уровня сопла составила 7мкм.

Экспериментальный датчик уровня печатной платформы 3D принтера

Второй тест- срабатывание датчика на условную величину отметку штока, без соприкасания сопла и поверхности стола.

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

Экспериментальный датчик уровня печатной платформы 3D принтера

В ходе тестирования, мне стало интересно, насколько верно определяется уровень сопла по тесту 1? С целью выяснения этого, я подключил выход датчика вместо эндстопа оси Z, подредактировал G-код, прибавив к величине высоты первого слоя то смещение, которое стоит в датчике (уставка 50мкм), т.е., вместо 0.2мм, вписал 0.25мм. Разместил модель в точке, ближайшей к хоуминг-позиции, и запустил печать.

Результат печати представлен на фото. В целом результатом я остался доволен. Правый нижний угол у модели тонковат, это следствие неправильно выставленного горизонта платформы. Кроме того, видно, что там где был замер высоты сопла, высота слоя не соответствует 0.2 мм, слой получился тоньше желаемого. Очевидно, в будущем потребуется корректировка через Z-offset, но предположительно, такое смещение нужно будет выставить один раз и на разных принтерах оно будет завесить от жёсткости стола и крепления датчика, люфтов и т.д.

Экспериментальный датчик уровня печатной платформы 3D принтера

Конструкция

Датчик состоит из подъемного механизма и измерительного узла. Для надежности датчика в подъемном механизме применил микро шаговый двигатель, управляемый микросхемой драйвером A4988. Применение шагового двигателя с контролируемым током обуславливает долговечность разработанной конструкции. Винт поднимающий шток, установлен на двух подшипниках. Стальной шток зонд диаметром 3 мм, перемещается в пористых бронзовых маслонаполненных подшипниках. В серийной модели предполагаю применить полимерные подшипники IGUS, однако их применение может наложить ограничение на рабочую температуру устройства, в связи с этим, предполагается две версии- стандартная до 70-80 градусов и высокотемпературная.

Экспериментальный датчик уровня печатной платформы 3D принтера

Габариты разработанного датчика составляют 40х40х12 мм3. Датчик выполнен в форм-факторе вентилятора, что весьма для удобно для установки на печатающую голову принтера. Габариты серийного датчика предположительно составят 40х40х10 мм3, что полностью повторяет размеры стандартного вентилятора. Применение.

Конструкция датчика целенаправленно выбрана плоская. Это позволит удобно разместить его для проведения измерений в точке, максимально приближенной к соплу. Большой вылет штока позволяет убирать его из зоны нагрева после измерений. Как было указано ранее, датчик может работать с любыми поверхностями стола. Так, например, в некоторых профессиональных принтерах печать осуществляется на пленке, удерживаемой вакуумом на столе. Для работы датчика с такими плавящимися поверхностями в месте осуществляется замера уровня сопла, потребуется установить металлическую пластину любой толщины. Толщина пластины будет автоматически учтена датчиком при дальнейшем дистанционном зондировании стола.

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

Для термокамеры со шторками, шток также удобен, так как его можно сделать любой длины и спокойно вывести сам датчик из зоны нагрева камеры (возможно, потребуется дополнительная опора в виде линейного подшипника).

Алгоритм работы датчика в два этапа, будет реализован в моей прошивке и с моей платой (ссылка) и опробован в ближайшее время. Как это все внедрить в существующие Open Source, пока я не представляю…. Очевидно, на первом этапе можно попробовать использовать команды BLTouch и работать только по первому этапу алгоритма- зондировать всю поверхность стола соплом. При этом, можно сделать команды и для режима зондирования в два этапа. Вполне возможно, что в будущем поддержка таких команд будет реализовано в прошивках Open Source их авторами.

В моем проекте датчик управляется по протоколу RS485. Так как в прошивку датчика я заложил внутреннею диагностику, то все режимы и любые отклонения в измерениях будут видны в специальной странице меню принтера, оттуда же можно им управлять и измерять кривизну стола по указанным точкам. Также в моем проекте в будущем он будет использоваться и в другой важной функции, так как получился не просто датчик автоуровня, а точный измерительный инструмент.

На основе разрабатываемого датчика, можно создать любой другой с максимальной длиной вылета штока 60 мм и с любым шаговым двигателем подъема на выбор.

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

PS/ решил описать отдельно, очень важный момент, в статье описан способ определения уровня сопла - это то, что сопло остановит стол при движении, но на самом деле, так как датчик установлен на печатающей голове принтера и уставка срабатывания в 50 микрон очень мала, то при соприкосновении сопла принтера со столом, стол не успевает деформироваться или погнуться, так как печатающая голова принтера совместно с датчиком физически приподнимается из-за люфтов в подшипниках балки, да и балка имеет небольшой прогиб. Поэтому такой принцип выявления уровня сопла не приведет к каким либо негативным последствиям от его применения.

Датчик автоуровня на основе датчика давления для Rostock

Статья относится к принтерам:

Во всех моих 3д-принтерах меня каждый раз неимоверно бесила необходимость выставлять высоту сопла над уровнем стола. Необходимость эта возникала регулярно, при каждой замене сопла или каких-то других действиях с хотэндом, требовавших его разборки.

Периодически я видел всякие конструкции на базе датчиков приближения (холла), оптических датчиков и прочих шайтан-машин. Но все они требовали точно так же выставлять уровень сопла после каких-либо манипуляций с хотом. Правда, теперь уровень задавался относительно датчика, а не стола. Но радости это все равно не приносило.

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

Первое и самое очевидное решение - кинуть один провод на хот, второй на стол, и все это дело завсести на пины концевика. Надежное и дешевое решение, если у вас стол из алюминия без покрытия. У меня на столе лежит зеркало, и такой способ мне не подходит.

Второй способ был - поставить микрик на каретку так, чтобы касание соплом стола вызывало срабатывание микрика. Способ рабочий, но у меня не получилось избавиться от люфтов в креплении хот-энда, и я от него отказался.

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

Я заказал модуль АЦП HX711и сам датчик на 1кг. Спустя месяц ожидания все это дело было получено и настало время прикрутить эту красоту к принтеру.

Есть два варианта подключения. Первый - это подключить АЦП напрямую к мозгам принтера и сказать прошивке, что это датчик веса. Но это решение, на мой взгляд, сильно так себе. Во-первых, поддержка таких датчиков находится пока только в экспериментальном состоянии. Во-вторых, мозгам и так есть чем заняться помимо того, чтобы постоянно читать вес от датчика и пытаться понять, что там происходит.

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

  • Печатаем крепления датчика на эффектор
  • Подключаем датчик веса к Arduino
  • Подключаем Arduino с датчиком к мозгам принтера
  • Редактируем прошивку принтера.

Крепления можно скачать тут. Вариант сыроватый, но рабочий и дорабатываемый по мере выявления недостатков.

Теперь подключаем контроллер к АЦП. Я нарыл в закромах Arduino Nano, но это не принципиально. На время отладки и калибровки сойдет и так, а дальше я поменяю на Attiny13, которая будет монтироваться вместе с платой АЦП прямо на эффектор для уменьшения уровня наводок по всем этим трактам. Почему на эффектор, а не рядом с основными мозгами принтера? Потому что для наилучшей точности стоит максимально укоротить провода между АЦП и датчиком веса. А если мы монтируем туда АЦП, то есть смысл прицепить туда и контроллер, чтобы от эффектора просто вести три провода к мозгам.

Также с этим АЦП есть нюанс: по умолчанию частота выборок АЦП составляет 10Гц, что слишком мало для нашего применения. То есть, технически, будет работать и так, но точность срабатывания будет плохой.

Для нормальной работы надо перевести АЦП в режим частоты опроса 80Гц. Для этого надо отцепить ногу RATE от земли и посадить ее на VCC.

Датчик автоуровня на основе датчика давления для Rostock

Тут есть два варианта, зависят от ревизии платы HX711.

Вариант с новой ревизией - просто запаиваем перемычку на слева от которой написано 80Hz.

Датчик автоуровня на основе датчика давления для Rostock

Если не повезло и пришла старая ревизия, то надо отпаять от платы вторую сверху ногу со стороны 4х-пинового разъема и подпаять ее к VCC или первой сверху ноге.

Датчик автоуровня на основе датчика давления для Rostock

Все, модуль переключен в режим опроса 80Гц и наша жизнь стала немного прекраснее.

Зачем это проделывать? Так как показания датчика нестабильны из-за наличия вентилятора на голове и постоянных движений эффектора в процессе калибровки, то в скетче используется фильтр НЧ, который сглаживает скачки показаний датчика для большей надежности работы. Фильтр берет 10 значений веса и из них получает отфильтрованные показания. На частоте 80Гц выборка 10 значений занимает примерно 120мс, на частоте 10Гц - займет секунду. Соответственно, надо жертвовать фильтром, что будет приводить к ложным срабатываниям во время движения головы.

  • Красный -> E+
  • Черный -> E-
  • Белый -> A-
  • Зеленый -> A+

  • VCC -> 5V Arduino
  • DT -> A2
  • CLK -> A3
  • GND -> GND Arduino

и открываем в Arduino IDE скетч - *Tenso_sensor.ino*

В скетче меняем const bool DEBUG = false; на const bool DEBUG = true;

Заливаем скетч в Arduino и через Serial monitor смотрим за показаниями.

2 раза в секунду там должна появляться строка

current weight! [848342] [848267]

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

Убеждаемся, что значения датчика меняются при воздействии на него. Если меняются, значит, все собрано верно. Если нет - надо поменять местами провода DT и CLK. Я так один раз перепутал контакты DT и CLK: с виду все работало, но при попытке калибровки принтер попытался проломить соплом стол.

В установленном на принтер виде цифра от датчика должна увеличиваться при касании стола!

Вот так все это выглядит в установленном на принтер виде:

Датчик автоуровня на основе датчика давления для Rostock

Теперь сделаем из Arduino концевик для мозгов принтера.

Для управления принтером у меня используется плата Melzi. Для RAMPS все будет сильно проще с точки зрения получения пинов и настройки прошивки.

Для этого нам понадобится любой оптрон и резистор на 1кОм. Оптрон я использовал 4n35, потому что он был под рукой. Любой другой подключается аналогично с разницей на нумерацию ног.

На плате Melzi всего 3 пина под концевики, на Дельте они все используются для калибровки осей. Так что нам нужен какой-то другой концевик. На своем принтере я не использую экран с кнопками, и у меня есть целый свободный разъем на 10 пин рядом с ISP, так что я буду использовать пин A1 оттуда. Для RAMPS никаких подобных телодвижений не надо, благо, концевиков у него хватает.

  • Соединяем землю Arduino и пин 2 оптрона
  • Сажаем пин 1 через резистор на пин D7
  • Пин 4 оптрона соединяем с землей 10 пинового разъема на Melzi. Для RAMPS соединяем с землей концевика Z-Min
  • Пин 5 отпрона соединяем с пином A1 10 пинового разъема на Melzi. Для RAMPS соединяем с сигнальным пином концевика Z-Min.

Датчик автоуровня на основе датчика давления для Rostock

Устанавливаем датчик на принтер. После того, как все установлено, подводим датчик к столу. Задача - откалибровать порог срабатывания так, чтобы датчик срабатывал от касания стола, но не срабатывал от движений головы.

Для контроля срабатываний без заглядывания в сериал-монитор удобно подключить светодиод. Цепляем землю диода на пин 5 оптрона, а + через резистор на +5В. Теперь диод будет загораться при срабатывании датчика.

Теперь отредактируем прошивку.

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

Предполагается, что все остальное уже настроено для Дельты, принтер работает и нужно только автокалибровку прикрутить.

В принципе эта часть подойдет для любого принтера, а не только дельт. Разница только в том, что на дельтах можно использовать только автокалибровку под названием BILINEAR, а на остальных принтерах к ней добавится еще 2 вида.

Будем использовать самые последние решения в стане прошивкостроения.

Клонируем репозиторий Marlin

Переключаемся на бранч RcBugFix потому что в master и RC автокалибровка на дельтах не работает.

git checkout RcBugFix

Открываем прошивку в Arduino IDE. Настраиваем все, что необходимо, и приступаем к настройке автокалибровки.

*N.B.* Если у вас вообще не Дельта с хомингом в Z-MIN, то просто воткните Arduino в Z_MIN и смело пропускайте все настройки высот и прочее, что относится к дельтам или принтерам с хомингом стола в Z_MAX.

Первым делом нам надо добавить концевик Z-Min для Melzi. На RAMPS он есть, и этот пункт нужно пропустить.

Открываем вкладку pins_SANGUINOLOLU_11.h и после

Технически, должно хватить только указания Z_MIN_PIN, но в той ревизии, что сейчас лежит в гите, есть баг, и сборка падает, если не задан Z_MIN_PROBE_PIN.

Сохраняем файл и переходим в Configuration.h

false меняем на true

Выставим смещения Z-Probe на 0

Ну, и главная наша цель:

Тоже раскомментируем. Также раскомментируем строку

Это единственный доступный тип автоуровня для Дельты. Сопло проходит по всему столу и строит карту высот, по которой потом печатает.

регулируется кол-во точек на грани квадрата. Т.е., при настройке в 3 сопло проверит высоту в 9 точках. Если указать 9 - то точек будет 81, время калибровки возрастет соответственно.

Также стоит выставить высоту области печати в значение, близкое к реальному.

Высота должна более-менее совпадать с реальными цифрами!

Сопло после выполнения G28 и получения G29 идет в минимум со скоростью, указанной для хоминга. Скорость эта по умолчанию составляет 2000 мм/мин, на некотором расстоянии от поверхности стола скорость сбрасывается в 2 раза и на этой скорости происходит касание. Если заданная в прошивке высота области печати будет сильно больше реальной, то сопло просто врежется на полном ходу в стол и датчик может не успеть сработать. Точнее, датчику на срабатывание надо 120мс, за это время сопло пройдет 4мм вниз. А дальше все зависит от прочности конструкции и силы моторов. Один раз таким образом у меня получилось разбить стекло на столе.

А если область печати будет меньше реальной, то от заданной области печати сопло будет идти со скоростью в 2 раза меньше скорости калибровки, и ждать окончания процесса придется очень долго.

Скорости хоминга по Z регулирются этими строками:

Еще можно включить опцию двойного касания, дает большую точность (в теории), но и занимает больше времени:

Заливаем прошивку в принтер. Проверяем, что работает G28, командой M119 проверяем, что концевик Z-MIN в состоянии open.

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

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

long trigger = 13000;

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

Датчик работает. В качестве финального штриха к портрету, проверяем, что в разных положения эффектора в области печати не срабатывает датчик из-за натяжения трубки боудена или проводов вентилятора. Пишу этот пункт по собственному опыту, ибо я долго боролся со срабатыванием датчика при торможении каретки, а оказалось, что это трубка боудена дергала хот вверх со всеми вытекающими. После изменения положения мотора экструдера проблема ушла.

Теперь, когда все проверено, говорим G29. Голова поедет вниз и начнет тыкаться в стол согласно количеству точек, указанных в прошивке. После окончания калибровки будет выдана карта высот. Стоит убедиться, что все значения в ней находятся на одном уровне в переделах погрешности (второй цифры после запятой). Ну, это если стол ровный, без бугров, впадин и перекосов.

Все. На этом процесс настройки автокалибровки завершен, и можно заняться ее тюнигом.

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

Новинка для RepRap или автобэдлевел точно в цель

Важной особенностью при 3D печати по технологии FDM является точная установка зазора между поверхностью (стол), на которой возводится напечатанная модель и соплом экструдера из которой подается расплавленный пластик. Если этот зазор больше необходимого, то первый слой расплавленного пластика может просто не прилипнуть к столу и вместо готовой модели вы получите комок пластика, висящий на экструдере. Если зазор очень маленький или вовсе отсутствует, то в лучшем случае вы получите не корректные размеры модели по высоте и утолщение модели в нижней части, прилегающей к столу. В худшем, печать просто не начнется. Подающая шестерня проточит канавку на пластиковой нити или нить пластика согнется между хотэндом и подающей шестерней и будет разматываться мимо).

Для установки этого зазора существует несколько технических(и не очень) решений. Например:

— Подкладывание листа бумаги, и установки начальной точки пока бумага не станет двигаться между соплом и столом с легким усилием.
— Использование микровыключателя, который нажимается при приближении экструдера к столу. Вместо микровыключателя иногда используют оптический датчик, что так же немного добавляет точности к измерениям.
— Емкостной датчик приближения.

Но все они имеют недостатки. Микровыключатель и емкостной датчик удалены на некоторое расстояние от сопла экструдера, и так же требуют калибровку высоты относительно уровня экструдера. Лист бумаги, мягко говоря, не технологичен, и с его помощью невозможно использовать функционал автобедлевела (измерение кривизны стола).

На моем Prusa Mendel i2 постоянно возникала необходимость установки высоты первого слоя после печати длительностью более часа. А когда принтер постоит без дела, приходилось опять корректировать высоту. Предполагаю, что при длительной работе принтера конструкция прогревалась и изменяла свои размеры, тем самым увеличивалась высота первого слоя. Т.к. после длительной работы необходимо было уменьшать высоту, а после остывания ее увеличивать.

Применив такой автолевел, я полностью избавился от «плясок с бубном» возле принтера при печати первого слоя.
Предлагаю «рукастым» обладателям 3D принтеров повторить мое решение.

Мной был разработан и успешно опробован на принтере Prusa Mendel i2, более точный метод установки расстояния между соплом экструдера и столом. Который основан на измерении силы прижима сопла экструдера к столу при помощи тензометрического датчика. Опытные пользователи и конструкторы ЧПУ скажут, что этот способ уже опробован и погрешность такого измерения будет зависеть от температуры окружающей среды, но поверьте (мне на слово, пока не дочитаете до конца), в данном решении нет зависимости от температуры.

Для повторения конструкции необходимо не так много:
— Тензометрический датчик.
— Усилитель сигнала с АЦП.
— 3D-принтер и немного пластика для печати некоторых элементов конструкции.

Первые 2 пункта стоят “копейки”: в Китае 200руб. (16.04.2015) или в России, естественно дороже. А наличие или приобретение в ближайшее время третьего пункта подтверждается тем, что вы еще читаете этот текст.

Время, необходимое на доработку принтера — не более одного вечера. Конечно, не считая времени, потраченного на печать элементов крепления при помощи 3D принтера.

А теперь подробности.

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

Что же такое тензодатчик и как он работает?

Тензометрический датчик (тензодатчик; от лат. tensus — напряжённый) — датчик, преобразующий величину деформации в удобный для измерения сигнал (обычно электрический):


Датчик, который я использовал, представляет из себя небольшой алюминиевый брусок 12,8 х 12,8 х 65мм, на двух его гранях приклеены 4 тензорезистора (резистор изменяющий свое сопротивление от величины растяжения). Эти резисторы соединены в мост Уинтстона. На вход этого моста подается напряжение, обычно 3-30 вольт, а на выходе мы получаем небольшое изменение напряжения от приложенного давления (искривления этого бруска) в пределах 0,7милливольт на 1 вольт подаваемого на вход. Но такие маленькие изменения напряжения невозможно измерить сразу при помощи микроконтроллеров, используемых в большинстве 3D принтеров.

К нам на помощь приходит небольшая и очень простая в использовании микросхема HX711 для усиления этого сигнала. Преимущество ее в том, что она не только усиливает, но и оцифровывает показания. Которые мы и считываем при помощи микроконтроллера принтера.

Приобрел микросхему уже вместе с необходимой обвязкой:


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

Я выбрал вариант с установкой датчика на экструдере.

В моей реализации это выглядит так:


Радиатор хотэнда закреплен на одном конце датчика при помощи напечатанного крепления (на рисунке красный). Второй конец датчика прикручивается к каретке экструдера. Крепление датчика к экструдеру не должно касаться корпуса каретки или шагового двигателя.

Процедура калибровки и поиск нулевой точки по оси Z (homing) должна производиться на разогретом экструдере. Так как измерение усилия датчика происходит с небольшой задержкой необходимой для оцифровки напряжения и передачу его управляющему контроллеру, то измерение производится 2 раза с разной чувствительностью датчика:
Измерение сильного давления (200-500 грамм), при этом стол немного но заметно прижимается экструдером. В этот момент происходит выдавливание «соплей» пластика, которые могут содержаться на экструдере или на столе.
Подъем на небольшое расстояние и повторное, точное измерение (10-50 грамм), происходит легкое, и очень точное касание экструдером стола.

В живую работает это так:

Но как позже оказалось, пришлось ее немного переписать.

Схема подключения датчика к ардуине, простая до безумия, нужно просто соединить 8 проводков к платке с АЦП.
4 к тензодатчику:
E+ красный
E- черный
A- зеленый
A+ белый

И 4 к RAMPS(шилд для ардуины):
GND Земля
DT D4 пин ардуины
SCK D5 пин ардуины
VCC +5v
Пины на плате предназначены для подключения сервоприводов и находятся рядом.

Приобрести датчик и микросхему АЦП с необходимой обвязкой можно на всем известных торговых площадках.
Датчик ищется по ключвым словам «load cell 5kg».
Микросхему можно найти по ее наименованию HX711.

Как я делал Правильный Эндстоп для 3D принтера


Вот что у меня получилось


Прочел я статью «Что будет, если вы задумаете собрать 3D принтер своими руками», нашел ее интересной и захотел добавить к сказанному мой опыт. Начну с того, что, как и автор вышеупомянутого поста, я собрал 3D принтер, тоже подетально, а не из комплекта. Даже модель выбрал ту же самую — Мендель Пруса итерация 2. Ее я выбирал из несколько других соображений — у меня не было доступа к станку лазерной резки. Пруса (Прюша) итерация 2 — позволяет выставлять все рабочие плоскости простым кручением гаек, что обещает долгую и противную настройку, зато при настойчивости гарантирует результат. Иначе, если Вам попадется слегка кривая фанерная деталь — это может оказаться фатальной проблемой, а даже если Вы изогнете пруток — Вы легко отрежете шлифмашинкой новый. Кстати, я рассчитал верно — фатальных неудач не было. Раскололись по слоям две детали. Но так как детали я заказал из ABS, то ремонт был прост — капнул ацетона в трещину и сжал. Через 15 минут все было ОК. Итак, принтер я собрал, но тут не про это. В процессе настройки и печати столкнулся с тем, что деталь, называемая «эндстоп », сиречь концевым выключателем, сложна в изготовлении и неудобна в работе. Более того — эндстоп Z (вертикальной оси) в процессе работы приходится часто перенастраивать. Так получается оттого, что, точная настройка высоты головки над столом, один из важнейших элементов обеспечения качественной печати, и для разных условий может быть разной. В случае, если надо очень хорошее прилипание, головку располагают совсем близко к столу. Иногда используют другую подложку — ее толщина окажется другой. После смены головки — также уровень Z нужно перенастраивать. Штатные крепления (предложенные на Репрап Вики), очень неудобны — подвинуть ползунок рукой на 0,05 мм бывает довольно затруднительно. На Ebay так же не нашел ничего удобного — все сводилось к тому, что крепления эндстопа надо делать самому. Так что я решил сделать «Самый Лучший Эндстоп ».
Принтер, просто принтер


Сначала я должен был выбрать датчик какого типа положить в основу изделия. Это мог быть механический выключатель (микрик) — я все же не стал его делать, так как у него низка надежность, механическое соприкосновение приводит к возможному смещению микрика и /или изгибу толкателя, а значит дрейфу точки срабатывания. Сначала я опробовал оптический датчик. Вполне успешно, до сих пор один из датчиков у меня стоит оптический. Снизу. Под рабочим столом, где флажок датчика не мешается и не гнется, и где его никогда не надо регулировать. Но! Мне не понравилась регулировка, изготовление флажка/прерывателя, опять же крепление. Для оси Z, в связи с необходимостью его относительно частой регулировки это было совсем неудобно — я все время, задевал флажок рукой в процессе регулировки. Печатную плату пришлось делать, крепление было в комплекте пластиковых деталей для принтера, но неудобное.
Вот такие платки получились с оптическим датчиком


Так же я попробовал в работе, эндстоп на датчике Холла. Меня поразила сложность рекомендуемой печатной платы для этого эндстопа. Крепление оказалось все таким же, неудобным. Однако работал он хорошо — до сих пор стоит один на оси Х.
Вот она изначальная плата датчика Холла


Идею дала одна публикация на Thingverse, где я увидел замечательный датчик TLE4905L. Это не только датчик Холла, у него в составе все необходимое, так что на выходе сразу получается сигнал требуемого уровня. С ним вся схема получалась из 6 деталей, считая со светодиодом., и очень дешево по цене. Сам датчик трехвыводной, два резистора, два конденсатора, и светодиод. Это позволило частично воплотить давнюю мечту репрапщиков о печати электроники самим принтером, так что я решил отказаться от печатной платы, то есть отпечатать ее вместе с держателем, одной деталью, с готовыми отверстиями под детали. Понятно, что для такого количества деталей и выводов, удалось обойтись без соединительных проводников, ножками самих деталей. Для такого применения материал ABS и, тем более PLC, не очень подходил — хрупковат, плавится слишком легко, так что пришлось изучать просторы Интернета и ближайшего хозяйственного магазина. Мое внимание привлекла леска для триммеров, она бывает разных диаметров и работает она в сложных условиях, так что требования по прочности и гибкости к ней высокие. Из тех лесок, что я пробовал, все оказались из капрона, если назвать по-английски — нейлона. Капрон очень хорош подходит для изготовления макетной платки, потому что он не ломкий, довольно устойчив термически, еще и не дает неприятного запаха при нагреве. К тому же леска выходит сильно дешевле филамента из ABS или PLC. В качестве материала для хомутика он также хорош — так как гибкий. Вообще хочу порекомендовать использовать триммерную леску для печати 3D — получаются очень прочные изделия, и даже довольно точные. И цвет приятный.
Детали из капрона/нейлона


Только леска отличается большей упругостью и скользкостью, значит приходится обратить внимание на качественную подачу лески в экструдер. Для этого мне пришлось в экструдере поставить хобболт с «алмазной» насечкой и сделать направляющие канавки в подшипниках экструдера.
Хорошо видна и канавка, и болт


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


Вопрос с точной регулировкой решил с перемещения магнитика с помощью винта вкручиваемого в держатель. Держатель я сделал из ABS — потому что детали RepRap принтеров обычно делают из того же материала и они могут быть очень хорошо склеены с помощью ацетона. Получившуюся детальку можно приклеить, либо прямо к детали принтера ацетоном, либо винтами прикрутить к рабочему столу. Магнит взял китайский, неодимовый, кубик 5мм — просто примагнитил к регулирующему винту.
Чувствительность — отличная!

Подобрал толщины изделий — так как у капрона выше упругость, чем у ABS. Результат — получилась очень удобная штука, надежная, простая. Хотя и странно, но цена микросхемы датчика совсем низкая — меньше доллара. Получившиеся наборы пробовал продавать на Ebay — продал один, человек очень хвалил, но… больше никому не понадобилось и я это прекратил— европейцы покупают только наборы -киты, чтобы успеть за выходные собрать принтер. Наш подход к сборке и конструированию у них не распространен. Еще я разрабатывал печатающую головку — мне это тоже было очень интересно, если Вам будет интересно, спрашивайте, напишу.

Читайте также: