Новинка для 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 грамм), происходит легкое, и очень точное касание экструдером стола.
В живую работает это так:

Что бы изменять чувствительность датчика между попытками, необходимо внести небольшие дополнения в прошивку принтера.
Я внес изменения в прошивку 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

Прошу сильно не пинать, это мой первая статья.
Готов выслушать вопросы, дополнения и исправления.

ссылка на оригинал статьи http://geektimes.ru/post/249138/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *