Так получилось что некоторое время назад я стал владельцем китайского клона Prusa i3 под гордым китайским названием Hesine M505. Это чудо китайской мысли конечно было далеко от совершенства, но с задачей печатать все подряд справлялось вполне успешно. Однако, чем дальше в лес — тем толще партизаны. И забравшись в лес подальше возжелал я печатать детали с использованием растворимых поддержек, да и двумя цветами печатать тоже было бы неплохо.
К сожалению, у родной для принтера платы Melzi V2 был фатальный недостаток — на ней отсутсвовал порт для подключения второго экструдера. Изучение матчасти показало, что можно взять еще одну такую же плату и воткнуть ее в режиме слейва. Однако ценник на это удовольствие получался высоковатым. И, что самое неприятно, при таком апгрейде терялась возможность подключения экрана и кнопок управления. Т.е. печатать можно будет только с компьютера, а это не самая лучшая идея по многим причинам.
Так я пришел к решению полностью заменить мозги принтера. Выбор был сделан в пользу нестареющей класски Arduino Mega 2560 + RAMPS 1.4 + A4988. Быстро сказка сказывается, да долго посылочка едет. Получив посылку с мозгами, моторами и прочим полезным в хозяйстве инвентарем я обнаружил что забыл заказать шестерню податчика экструдера. Благо на тот момент она уже ехала ко мне с али, где я заказал ее просто так, от жадности.
Как сделать 3д модель для печати на 3д принтере. Уроки FreeCAD.
В общем, пока необходимые запчасти едут, можно подключить и отстроить новые мозги в конфигурации с одним экструдером, а потом просто переконфигурировать прошивку когда будет собрано все железо.
Ставить мы будем классику жанра — Marlin. Клонируем репозиторий в любое удобное место отсюда https://github.com/MarlinFirmware/Marlin. Скачиваем Arduino IDE.
В Arduino IDE открываем прошивку. Выбираем нашу плату Arduino Mega 2560 и процессор AtMega 2560.
Дальше нас интересует вкладка с файлом Configuration.h, теперь мы будем его безудержно править.
Выбираем нашу плату: RAMPS 1.4 с одним хотэндом
#ifndef MOTHERBOARD #define MOTHERBOARD BOARD_RAMPS_14_EFB #endif
В файле boards.h приведен полный список поддерживаемых плат и их вариаций. Нас пока интересует только RAMPS 1.4 с одним экструдером.
Выставляем кол-во температурных сенсоров. Сенсоров должно быть по числу экструдеров. В нашем случае 1. Убеждаемся что напротив первого сенсора в списке стоит 1.
#define TEMP_SENSOR_0 1
Выставляем максимальную температуру хотэнда и стола.
#define HEATER_0_MAXTEMP 250 #define BED_MAXTEMP 130
У меня стоят термопредохранители на 252 градуса, так что максимальная температура хота должна быть ниже температуры срабатывания предохранителя. Если собираетесь печатать чем-то вроде поликарбоната — то температуру надо поднять. Со столом таже история, единственное что даже печать нейлоном не требует очень больших температур стола, 130 градусов должно хватить всем.
В Hesine M505 стоят нормально замкнутые концевики, а в прошивка по умолчанию рассчитывает на нормально разомкнутые. Включаем инвертирование концевиков:
[Устарело] Лучшие программы для 3D печати
// Mechanical endstop with COM to ground and NC to Signal uses «false» here (most common setup). #define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
Проверяем направление вращения моторов. Тут история примерно таже что и с концевиками, т.к. прошивка изначально рассчитана на Ultimaker.
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR true #define INVERT_Y_DIR true #define INVERT_Z_DIR false
И для экструдера повторяем операцию.
#define INVERT_E0_DIR true
Выставляем размеры рабочей зоны
#define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_MAX_POS 250 #define Y_MAX_POS 230 #define Z_MAX_POS 140
Для начала можно выставить заводомо большие чем рабочая зона габариты. Потом все откалибруется по месту. По умолчанию в прошивке стоят значени 200х200х200, тогда как у Hesine M505 рабочее поле по всем направлениям больше чем эти цифры. И прошивка просто не даст двигаться за их пределы.
Устанавливаем координаты начала стола. Это нужно чтобы ноль стола в слайсере совпадал с нулем в координатах принтера. Иначе модель может вылезать за пределы зоны печати.
#define MANUAL_X_HOME_POS -30 #define MANUAL_Y_HOME_POS -20
Выставляем шаги для моторов.
#define DEFAULT_AXIS_STEPS_PER_UNIT
Параметры тут следующие: мотор_Х, мотор_Y, мотор_Z, мотор_экструдера
Для рассчета шагов по X и Y используем следующую формулу:
(200*16)/(16*2)=80 шагов
Где 200 — это число шагов двигателя на 360 градусов. Типичная цифра для моторов с шагом 1.8 градуса. 16 в числителе — кол-во микрошагов на шаг. 16 в знаменателе — кол-во зубов на шпуле. 2 — стандартный шаг для ремня GT2
3200/2 = 1600
В Hesine M505 штатно используется трапециидальный винт с шагом резьбы 2мм. Соответственно мы белим число шагов на полный оборот на кол-во миллиметров которые будут пройдены за оборот и получаем число шагов на миллиметр.
Подачу экструдера пока посчитаем и выставим предварительно. Потом ее все равно придется подгонять. Шестерня экструдера штатно имеет диаметр около 10мм. Получаем длинну окружности на один оборот: 3.14*10=31.4 мм на оборот.
Делим число шагов на длинну окружности и получаем число шагов на миллиметр.
3200/31.4=101.9
округляем до 102.
Заливаем все это дело в Arduino.
После того как все залилось и все железо подключено запускаем Pronterface и начинаем калибровку.
- Двигаем моторы и проверяем что они крутятся в нужную сторону. Если это не так — меняем параметр INVERT_*_DIR на противоположное значение.
- Проверяем состояние концевиков. По команде M119 будет показано состояние концевиков. Если концевик нажат — напротив него должно быть написано TRIGGERED. Напротив ненажатого — open. Если это не так — меняем настройку *MINENDSTOP_INVERTING.
- Даем команду G28. Все оси должны приехать в свое минимальное положение. Дальше через Pronterface двигаем все оси в их безопасное максимальное положение и даем комаду M114. Она покажет текущее положение по осям. Вносим эти данные в настройку *MAXPOS.
- Опять говорим G28. Передвигаем экструдер в нулевую координату стола по X-Y. Смотрим что показывает M114 и эти цифры переносим в MANUAL_*HOMEPOS с обратным знаком. Т.е. если M114 говорит что координата по Х сейчас 30 — то в настройку пишем -30. Это значит что после ухода в HOME экструдер отъедет от него на 30мм и будет считать это положение нолем.
- откручиваем сопло или трубку боудена у экструдера. На прутке отмечаем расстояние, например 10 см, и прогоняем эту же длинну из Pronterface. После этого смотрим сколько в реальности прошло прутка и корректируем кол-во шагов для экструдера чтобы он прогонял четко нужное кол-во пластика. Важно понимать что на горячую с установленным соплом эта цифра все равно будет отличаться от установленного. Если вы всегда печатаете соплом одного диаметра — можно повторить эту операцию с соплом и полученные данные внести в прошивку. Я использую несколько сопел, так что объем пластика корректирую через настройку потока в слайсере.
После того как все это сделано — печатаем тестовую модель. Я использую пустой куб 20х20х20 мм. После того как он отпечатан — проверяем что размеры сторон у нас точно соответсвуют тому что должно быть. Если это не так по отдельным измерениям — корректируем кол-во шагов для нужной оси.
На этом основные настройки закончены. Дальше можно тюнить приведенные выше параметры для более качественной печати.
Источник: alpha6.ru
Arduino и 3D принтер
Желание иметь в своем хозяйстве 3D принтер встречается у многих, но возможность приобрести такой аппарат есть не у всех. Эта статья рассказывает о том, как сделать очень низкобюджетный принтер, что построенный в основном из переработанных электронных компонентов. В результате работы был построен мелко форматный принтер стоимостью меньше 100$.
Прежде всего, мы узнаем, как работает универсальная систему ЧПУ (сборка и калибровка подшипника, направляющих и пластикового волокна), а затем научимся управлять принтером с помощью инструкций g-кода. После этого добавим небольшой пластиковый экструдер, вставив параметры калибровки, регулятор мощности двигателя и несколько других операций, что приведут принтер к жизни. Следуя данной инструкции, вы получите небольшой «карманный принтер», что на 80% будет состоять из компонентов перерабатываемой электроники, которые придадут ему большой потенциал и помогут значительно снизить стоимость.
Эта статья поможет вам разобраться в более сложных проблемах связанных с утилизацией электронных устройств.
Координатные оси X, Y и Z
- 2 стандартных CD/DVD привода от старого компьютера.
- 1 Floppy дисковод.
Все эти компоненты можно приобрести на местных барахолках. Убедитесь в том, что моторы, которые получены от дисковода – шаговые, а не двигатели постоянного тока.
Подготовка блока питания
Следующий шаг заключается в подготовке блока питания, чтобы использовать его в проекте. Прежде всего, соединим два кабеля друг с другом (как показано на рисунке), это позволит включать блок. После этого выбираем один желтый (12 В) и один черный кабель (землю) для питания контроллера.
Теперь необходимо проверить двигатели. Для этого скачиваем Arduino IDE (физическая вычислительная среда), что можно найти по адресу : http://arduino.cc/en/Main/Software.
Нужно загрузить и установить версию Arduino 23.
После этого скачаем прошивку. В проекте выбор пал на Marlin, что уже настроен и может быть загружен по ссылке.
Marlin: Marlin_e-waste
После того, как была установлена Arduino, подключим компьютер к ЧПУ контроллеру Ramps/Sanguino/Gen6-7 с помощью USB кабеля, выбираем соответствующий последующий порт под Arduino IDE => инструменты/ последовательной порт и находим тип контроллера под => инструментами/плата Ramps(Arduino Mega 2560), Sanguinololu/Gen6(Sanguino W/ ATmega644P – Sanguino должен быть установлен внутри).
Основные параметры, параметры конфигураций находятся в файле «configuration.h»:
В среде Arduino открываем прошивку, загруженный файл и видим параметры конфигурации, прежде чем загрузить прошивку на наш контроллер.
1) #define MOTHERBOARD 3 значение, в соответствии с реальным оборудованием, мы используем (Ramps 1.3 or 1.4 = 33, Gen6 = 5, …);
2) Термистор 7 значение, RepRappro использует «горячее сопло» Honeywell 100k;
3) PID это значение делает «горячее сопло» более стабильным с точки зрения температуры;
4) Шаги на единицу (Steps per unit), это важный момент для настройки любого контроллера (шаг 9).
Управление принтером с помощью программного обеспечения
Управление принтером осуществляется по средствам программного обеспечения: существуют различные программы, что находятся в свободном доступе, позволяют взаимодействовать и управлять принтером (Pronterface, Repetier, …), в проекте использовался Repetier Host, который вы можете скачать http://www.repetier.com/. Простая установка и интеграция slicer. Slicer — это часть программного обеспечения, что генерирует последовательные секции объекта, что мы хотим напечатать. После генерации происходит соединение секций в слои и генерация g-кода для принтера. Slicer можно настроить с помощью таких параметров как:
• высота секции;
• скорость печати;
• заполнение и т.д., что важны для качества печати.
Обычную конфигурацию slicer можно найти по следующим ссылкам:
Skeinforge конфигурация http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge
Slic3r конфигурация http://manual.slic3r.org/
В нашем случае профиль Skeinforge настроен для принтера, что можно интегрировать в Repetier Host. Ссылка на профиль Skeinforge: Skeinforge_profile_for_e_waste
Электропроводка и регулирование интенсивности тока
Теперь все готово к тому, чтобы протестировать двигатели принтера. Подключите компьютер к контроллеру, используя USB кабель, двигатели должны быть подключены к соответствующим выводам. Запустите Repetier Host и активируйте связь между программным обеспечением и контроллером, выбрав для этого соответствующий последовательный порт.
Если соединение прошло успешно, вы сможете контролировать подключение двигателей с помощью ручного управления. Для того, чтобы избежать перегрева двигателей, во время постоянного использования, будем регулировать какую величину тока подавать на какой двигатель. Это важная операция, для того чтобы избежать потерь шага.
Для этого подключим только один двигатель, который соответствует одной оси. Такую же операцию будем проводить и для двух оставшихся двигателей. Для этого шага нам нужен мультиметр, который подключен последовательно между источником питания и контроллером. Мультиметр должен быть выставлен в режим измерения тока (смотрите рисунок).
Затем подключим контроллер к компьютеру, измерив при этом ток с помощью мультиметра. После того, как двигатель активирован через интерфейс Repetier, ток должен вырасти на определенную величину. На дисплее мультиметра показан ток, что идет в работающий шаговый двигатель. Нужно определить ток для каждого двигателя-оси. Все значение отличаются друг от друга. Необходимо настроить небольшой потенциометр для шагового двигателя и установить ограничение по значению для каждой оси в соответствии со следующими контрольными значениями:
• По разводной плате течет ток примерно 80mA;
• Назначим ток в 200mA для X и Y осей шаговых двигателей;
• 400mA для Z-оси потому, что ей нужно больше энергии для перемещения каретки;
• 400mA для двигателя экструдера, поскольку он другого типа.
Постройка структуры принтера
В следующей ссылке вы найдете необходимые шаблоны деталей рамы, что следует вырезать. Используем акриловые пластины толщиной 5 мм, но можно использовать и другие материалы, такие как дерево, в зависимости от наличия в магазинах и цен на них. Файл шаблона: e-waste_laser_frame
Конструкция рамы позволяет собрать всю конструкцию без использования клея, части собраны с помощью механических соединений и винтов. Перед вырезанием элементов рамы, убедитесь в том, что отверстия для двигателей расположены в соответствии с частями CD/DVD, что использованы для постройки принтера. Проведите измерения и внесите необходимые изменения для отверстий двигателей в шаблоне CAD.
Калибровка X, Y и Z осей
Хотя скачанная прошивка Marlin имеет стандартную калибровку регулирования осей. Вам придётся пройти этот шаг, если вы хотите настроить точность принтера. Ниже рассказывается, о прошивке для перемещения рабочей части принтера на миллиметры. Это значения зависит от количества шагов на оборот двигателя и размеров резьбы в движущемся стержне оси.
Эти процедуры необходимо сделать для того, чтобы убедится в том, что движения принтера на самом деле соответствуют расстояниям заданным в g-коде. Знания того, как это все работает, позволит нам самостоятельно построить ЧПУ-принтер независимо от типа составных частей и размеров будущей машины. В случае данного проекта оси X, Y и Z имеют одинаковые резьбовые стержни, поэтому калибровочные значения будут одинаковы для всех (для разных компонентов и соответственно разных осей – калибровочные значения будут отличаться).
Нужно рассчитать количество шагов двигателя для перемещения каретки на 1 мм, это будет зависеть от:
• Радиус шкива;
• Количество шагов на 1 оборот шагового двигателя;
• Параметры микро-шагов в электронике (в нашем случае 1/16, это означает, что за один такт (шаг) сигнала, выполняется только 1/16 шага, давая таким образом более высокую точность системы).
Установим эти значения в прошивке (stepspermillimeter).
Для оси Z:
Используем интерфейс контроллера (Repetier), установив для оси определенное расстояние и измерив реальное смещение. В качестве примера приведем следующие значения. Зададим оси Z, переместиться на 10 мм и измерим смещение в 37,4 мм.
Существует N число шагов в прошивке (stepspermillimeter)
(X=80, Y=80, Z=2560, EXTR=777.6).
N = 2560
N = N*10/37.4
Новое значение должно быть 682.67.
Повторим в течении 3-х раз перекомпиляцию и перезагрузку прошивки контроллера, для более высокой точности.
В настоящем проекте не используются функции возврата каретки, это сделано по причине упрощения программной части машины, но они быть легко включены в установленную прошивку. Функции возврата делают самонаведение принтера более легким. Их отсутствие заставит пользователя перемешать каретку вручную, для введения её в область печати.
Привод подачи пластикового волокна состоит из шагового двигателя NEMA 17 и MK7/MK8 привода шестерни, что нужно купить для проекта. Также необходимо скачать драйвер управления частями экструдера 3D принтера, что вы можете скачать по ссылкам ниже
1) Экструдер в состоянии покоя: e-waste_extruder_idle
2) «тело» экструдера : e-waste_extruder_body
3) «горячее сопло»: RepRapPro_mount
Пластиковое волокно, после того, как втягивается в экструдер, попадает в нагревательную камеру.
Между барабаном с волокном и нагревательной камерой, волокно направляется вовнутрь гибкой тефлоновой трубки.
Соберем прямой привод, что показан на рисунке, прикрепив к нему шаговый двигатель и закрепив его на акриловой раме.
Для калибровки потока пластика нужно измерить расстояние (например 100 мм) и положить кусочек ленты в этом месте. Затем перейдите в программное обеспечение Repetier и выставьте на экструдере 100 мм.
Теперь принтер готов к первому тесту. Экструдер использует пластиковое волокно диаметром 1,75 мм, которое легче прессовать и оно более гибкое, чем стандартное диаметром 3 мм. Также для работы принтера потребуется меньше энергии, нежели в случае использования 3 мм.
Используем PLA пластик – это биопластик, который имеет ряд преимуществ по сравнению с ABS: он плавится при более низкой температуре, придает легкость при печати кареткой и имеет незначительный эффект втягивания. Запустим Repetier, необходимо активировать срезы профилей Skeinforge.
Напечатаем небольшой куб для проверки калибровки (10x10x10mm) потому, что он напечатается очень быстро и сразу можно будет обнаружить проблемы конфигурации и потерю шагов моторов, путем проверки фактического размера напечатанного куба. Для начала печати откроем модель STL и проводим нарезку используя при этом стандартный профиль (или тот что вы скачали) для Skeinforge: увидим представления нарезанного объекта и соответствующий ему g-код.
Подогреваем экструдер, после того как он достигнет температуры плавления пластика (190-210C в зависимости от марки пластика) выдавим немного пластика, что бы убедится том, горячее сопло и привод подачи волокна работают должным образом. Переместим экструзионную головку в начало координат (x=0, y=0, z=0), заботясь о том, чтобы экстр. головка была как можно ближе к каретке, при этом не касаясь её (возьмите листок бумаги в качестве разделителя). Это будет исходное положение экструзионной головки. С этого момента можем начинать печатать.
Источник: www.junradio.com
Самостоятельная сборка 3d-принтера или покупка готового оборудования для конструирования. ПО. Часть 2
В первой части, было показано и рассказано как собрать машину судного дня 3D-принтер. Теперь, настало время оживить механическое чудо, при помощи программного обеспечения, мозгов и проводов.
Для этого я использовал open source бесплатный софт: Repetier-host (для связи компьютера с платой управления 3D-принтером) и Arduino IDE (для работы с прошивкой микроконтроллера). И сам 3D-принтер.О тонкостях настройки этого программного обеспечения будет рассказано в этой части:
Плата управления Mastertronics имеет на борту микроконтроллер Arduino MEGA 2560, посредством которого осуществляется связь с компьютером и управление всем что присоединено к этой плате, как на рисунке:
Алгоритм действий для работы 3D-принтера следующий:
1) Имеем полностью собранную конструкцию (Часть 1)
2) Подключаем mini-USB кабель к плате управления Mastertronics и к компьютеру
3) Далее прошиваем микроконтроллер прошивкой Marlin_MC5
(версия, которую использую в своем принтере тут)
4) Запускаем ПО программу-хост Repetier на компьютере
5) Задаем параметры принтера в ПО Repetier
6) Устанавливаем соединение с принтером
7) Подключаем питание к плате управления
8) Проверяем работоспособность платы управления и подключенной к ней электроники
9) При необходимости вносим изменения в прошивку Marlin
Начнем с пункта №3
Для этого необходимо запустить программу Arduino IDE, во вкладке инструменты выбрать плату Arduino Mega 2560, процессор ATmega 2560 и com port.
Открываем файл со скаченной прошивкой Marlin.ino, жмем значок —> Загрузить, ждем пока компилируется и загружается в микроконтроллер…
Теперь переходим к пункту № 4
В программе Repetier, в меню выбираем конфигурация -> Настройки принтера.
Здесь необходимо установить com порт, скорость в бодах и размер кэша
А так же все параметры принтера, экструдера и области печати:
Настройки параметров принтера
После этого можно смело давить на клавишу со значком вилки-> Подсоединить принтер и шевелить ушами шаговиками. Это можно делать двумя способами: При помощи кнопок на панели управления, либо отправляя G-code команды:
Обратите внимание на выделенную желтой окружностью кнопку Аварийной остановки.
После успешного соединения с платой управления можно подать на нее питание и отправить команду парковки по всем трем осям G28 либо нажать кнопку с изображением домика без буквы внутри. Если двигатели и концевые переключатели подключены верно, то принтер начнет перемещать каждую ось до срабатывания концевиков. Таким образом будут заданы нулевые координаты для всех трех осей (Home position). Это и означает захоумиться.
Если что то идет не так, жмем кнопку аварийной остановки, отключаем питание, думаем, проверяем правильность подключения к плате двигателей и концевых переключателей, установленные джамперы под драйверами. Если все верно подключено, но не работает должным образом, то открываем прошивку Marlin на вкладке Configuration.h и проверяем логику срабатывания концевиков в строках кода:
const bool X_MIN_ENDSTOP_INVERTING = false; // Установите значение в (истино или ложно) true или false для инвертирования логики endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false;
const bool Z_MIN_ENDSTOP_INVERTING = true;
const bool X_MAX_ENDSTOP_INVERTING = true;
const bool Y_MAX_ENDSTOP_INVERTING = true;
const bool Z_MAX_ENDSTOP_INVERTING = true;
У меня были проблемы с направлением движения осей при парковке, поэтому пришлось изменить логику концевиков в коде прошивки.
Далее можно приступать к проверке работоспособности экструдера.
Для этого необходимо задать температуру 100 градусов и следить за показаниями датчика температуры. Если все ок, то пробуем нагреть до температуры 200 градусов, затем вставить нить пластика и продавить несколько десятков сантиметров используя ручное управление экструдером в программе Repetier. У меня на этом этапе проблем не возникло:
На этом, подготовка ПО принтера практически закончена. Далее можно переходить к третьей увлекательной части — сама 3D-печать, которая имеет свои тонкости в настройке, которыми необходимо овладеть чтобы не печатать таких изделий:
В третьей части я расскажу о том, что такое слайсер и как его настраивать для «нарезки» 3D-моделей к печати, о требованиях к 3D-моделям и о том, почему нельзя так просто взять и откалибровать 3D-принтер.
- программирование микроконтроллеров
- настройка ПО 3D принтера MC5
- Arduino MEGA 2560
Источник: habr.com