Важной особенностью при 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 грамм), происходит легкое, и очень точное касание экструдером стола.
В живую работает это так:
Чтобы изменять чувствительность датчика между попытками, необходимо внести небольшие дополнения в прошивку принтера. Я внес изменения в прошивку Marlin, так как она была установлена у меня и есть небольшой опыт ее настройки и использования. Надеюсь, что когда нибудь мои изменения примут в основной репозиторий, а пока скачать можно тут: github.com/necdnk/Marlin.git (Конфиг настроен под мой Prusa Mendel i2)
Мне не хотелось строить велосипед (библиотеку для использования HX711), и была найдена замечательная библиотечка на гитхабе: github.com/bogde/HX711
Но как позже оказалось, пришлось ее немного переписать.
Схема подключения датчика к ардуине, простая до безумия, нужно просто соединить 8 проводков к платке с АЦП.
4 к тензодатчику:
E+ красный
E- черный
A- зеленый
A+ белый
И 4 к RAMPS(шилд для ардуины):
GND Земля
DT D4 пин ардуины
SCK D5 пин ардуины
VCC +5v
Пины на плате предназначены для подключения сервоприводов и находятся рядом.
Настройки в конфиге прошивки, которые влияют на силу срабатывания датчика:
#define WEIGHT_SENSIVITY_HARD 25 //первая попытка
#define WEIGHT_SENSIVITY_ACCURATE 2//вторая попытка
Если хочется указывать силу срабатывания в граммах, а не в условных единицах, как у меня, то нужно подбирать значение константы:
#define WEIGHT_SCALE 1000.f
Приобрести датчик и микросхему АЦП с необходимой обвязкой можно на всем известных торговых площадках.
Датчик ищется по ключвым словам «load cell 5kg».
Микросхему можно найти по ее наименованию HX711.
Готов выслушать вопросы, дополнения и исправления.
Автор: necdnk