Калибровка стола. Калибровка стола Прошивка 3d принтера arduino

Здравствуйте, новички и профессионалы!

Я совсем недавно пришёл в мир 3D печати и имею совсем не много опыта в этом деле. Но кое что хотелось бы поведать. А именно идею калибровки стола принтера.

Способ занимает не много времени, не требует редкого измерительного инструмента, достаточно точен и прост.

Идея такой калибровки возникла после такой картины:

Как видно из картинок, верхняя часть каймы напечатана хорошо, склеена между собой (толщина 0,2мм), а нижняя часть не склеена (толщина 0,3мм).

Для калибровки стола Вам потребуются:

Набор ключей/отвёрток для регулировки стола, кто чем регулирует;

Штангенциркуль (в идеале с нониусом (шкалой) 0,05);

Модель для теста - http://сайт/3d-models/detali-dlya-3d-printerov/raznoe/test_gorizont/

В моём случае стол регулируется тремя винтами, поэтому модель выглядит так. Каждый круг около своего винта. Л - Левый, П - Правый, З - Задний, Ц - центр (для определения кривизны поверхности). Толщина слоя 0,2 мм с каймой. В вашем случае можете сделать по своему.

Элемент модели (Центр):

Итак, приступим.

Предварительная калибровка:

Берём лист А4 и настраиваем стол так, как рассказано во многих статьях и видео в интернете.

Данным методом можно достаточно точно настроить стол, но! На ощупь не получится определить достаточную/недостаточную силу зажима бумаги. Лёгкое скольжение может быть у каждого своё.

В общем - примерно настроили.

Завершающая калибровка:

Печатаем модель. Как видно из скриншота - печатается она 2 минуты, с учётом отклонений и разогрева - минут 5.

Ждём пока модель остынет чтобы отклеить. Я не ждал а просто поддел канцелярским ножом, ABS даёт такую возможность.

Отклеили кружочки, берём штангенциркуль и замеряем толщину. В моём случает должно быть 0,2 мм.

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

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

Центр можно использовать единожды, для определения выпуклости или вогнутости стола. Но иногда контролировать тоже не помешает.

Удачи и откалиброванного всем стола!

Критика и пожелания приветствуются.

Любое периферическое устройство, чтобы обеспечивать возложенную функциональность, должно работать с программным обеспечением уровня firmware. 3D принтеры в этом отношении не являются исключением. Благодаря придуманному в 1964 году принципу универсальных интерфейсов, основная часть программного обеспечения и электронных компонентов является совместимой. Это подразумевает использование одного программного кода для целого ряда устройств, относящихся к определенному типу.

Все 3D принтеры работают на одном программном коде

Принципы обновления firmware для устройств

Согласно новой парадигме программный софт и аппаратная часть выполняется в рамках проектов с открытым исходным кодом. Именно в рамках такого проекта разрабатываются полупрофессиональные 3D принтеры. Для них существует универсальная прошивка Marlin, рассчитанная на работу с микроконтроллерными платами ArduinoMega и RAMPS Shield v.1.4. Соответственно, прошивка для 3d принтера Marlin совместима со всеми моделями, в которых они использованы. Перед выполнением работ потребуется установить плату RAMPS shield в ArduinoMega и сделать действия, описанные ниже.

Для перепрошивки устройства понадобится плата RAMPS Shield

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

Новые версии нужно устанавливать самостоятельно, используя файлы, доступные на сайте Marlin.

После установки выполняется настройка прошивки 3d принтера.

На сайте Marlin необходимо скачать последнюю версию Arduino

Общий процесс соответствует следующей последовательности:

  • файлы скачиваются с сайта Marlin;
  • затем компилируются в среде Arduino IDE;
  • после этого записываются на управляющую плату RAMPS shield.

Чтобы обновить прошивку, нужно самостоятельно скачать файлы и проделать описанные действия. Для всех моделей действия аналогичны, включая модель PRUSA I3.

Все действия нужно производить на вкладке Configuration.h

Инструкция по установке и настройке Марлин для 3д-принтеров

Подготовка прошивки для платы состоит в подготовке конфигурационных настроек Марлин в компиляторе. Что это значит? Arduino IDE имитирует наличие принтера и делает компиляцию программного кода для RAMPS shield с помощью ArduinoMega 2560, чтобы готовый файл можно было записать на контроллер. Если общий принцип, что нужно делать, понятен, то настройка параметров может вызвать определенные сложности. В этом случае вы всегда можете обратиться к специалисту, который работает с моделями PRUSA I3, Anet A2, TevaTarantula.

Для начала прошивки нужно выбрать контролер (motherboard)

Определим основные этапы компилирования файла, которые включает настройка прошивки Marlin для 3d принтера:

  • Потребуется установить среду Arduino IDE, иметь при себе плату ArduinoMega, в нее нужно вставить программируемую принтерную RAMPS Shield v.1.4;
  • Также нужно скачать новую версию прошивки Марлин, распакуйте архив и откройте файл Configuration.h в Arduino IDE;
  • Далее настраивается среда компиляции, в меню «Инструменты» найдите Arduino/GenuinoMegaorMega 2560, отмечаем эту же плату в выпавшем списке ArduinoMega 2560;
  • Требуется настройка кода в Ардуино, именно эта часть вызывает определенные сложности у новичков. Так что если вы не уверены в своих силах, как минимум, не спешите записывать свой файл на контроллер. Дело в том, что проводится настройка технических параметров, в том числе, отвечающих за остановку работы, чтобы исключить повреждения компонентов (основные моменты смотрите ниже);
  • После внесения изменений в конфигурацию нажмите в окне кода «Проверить», при наличии ошибок, проверьте код повторно;
  • После прохождения проверки нажмите кнопку «Сохранить»;
  • Затем нажмите «Загрузка», очевидно, что для этого требуется подключение к разъемам платы.

Настройка файла Configuration.h в Ардуино

Описание этого процесса требует отдельного довольно объемного обзора, поэтому поясним определенные моменты:

  • Устанавливается скорость передачи данных. Обычно 250000 бод/с или другая, поддерживаемая компьютером;
  • Тип платы: rampsshield v.1.4, указав в конце строки efb (extruder, fan, bed – экструдер, вентилятор, стол) даже при отсутствии каких-то функций (подогрева стола и вентилятора);
  • Настройки датчика температуры – установите в «1» на используемые датчики;
  • Минимальная температура работы – устанавливается 5, это имеется в виду 5 градусов цельсия;
  • Максимальная температура – установите 230 с для экструдера, 120 с устанавливается для стола;
  • Проверка соответствия температуры материала и начала работы, можно отключить командой м302, также отключается пролонгированное выдавливание, имеющее лаг запаздывания, но обеспечивающее плавную работу;
  • Требуется настроить механику: концевые выключатели, подтягивающие резисторы и другие. В процессе обычно делается проверка правильной работоспособности;
  • Необходимо также настроить шаговое движение по осям.

Описание самого процесса в Ардуино можно почитать по ссылке , конечно, процесс требует понимания своих действий. Если вы не уверены в своих силах, обратитесь к специалисту. После записи корректного файла обновление для PRUSA I3, Anet A2, TevaTarantula будет готово. Прошивка для 3d принтера I3 PRUSA требует учитывать параметры именно данного устройства, воспользуйтесь оригинальными рекомендациями по обновлению конфигурации.

После того, как я собрал , самое время перейти к его настройке. Настройка 3D принтера — это самый ответственный этап. Если не уделить ему достаточно внимания, то это может привести к неприятным последствиям. Например, первое, что я сделал со своим 3D принтером — это расцарапал каптоновое покрытие на поверхности нагревательного столика. Но обо всем по порядку.

Настройка прошивки 3D принтера

Самое первое после сборки — настройка и заливка прошивки для 3D принтера. Я использовал самую распространенную прошивку Marlin . Скачиваем ее в виде zip-архива и распаковываем в отдельную папку. Устанавливаем также Arduino IDE для правки настроек, компиляции и заливки прошивки в 3D принтер по USB. Arduino IDE нам нужен потому, что контроллер большинства 3D принтеров строится на базе распространенной платы Arduino 2560.

Запускаем Arduino IDE и идем в меню Файл->Открыть… Далее находим нашу распакованную папку с прошивкой Marlin, в ней будет вложенная папка с тем же названием Marlin, а уже в ней файл проекта Marlin.ino . Открываем его, и у нас появляется множество закладок с файлами прошивки. Главная закладка, которая нас будет интересовать — это Configuration.h. Там собраны все основные настройки для нашего 3D принтера, обильно снабженные комментариями на английском. Если владеешь языком, то из комментариев более-менее все понятно. Параметры, которые можно настраивать, выглядят так:

#define НАЗВАНИЕ_ПАРАМЕТРА значение параметра

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

Что нужно выставить в настройках прошивки?

1. Типы термисторов, используемых в нашем 3D принтере для измерения температуры HotEnd’а и нагревательного столика. За это отвечает параметр TEMP_SENSOR (кстати, его проще найти через поиск в меню Правка->Найти… или просто нажать Ctrl+F). Перед этим параметром есть огромная таблица значений с указанием различных наиболее распространенных термисторов. Я использовал самый распространенный термистор EPCOS 100 кОм. Поэтому в параметрах TEMP_SENSOR_0 и TEMP_SENSOR_BED я указал 1. Проверьте также, включен ли параметр PIDTEMP. По умолчанию он должен быть включен, кажется. Он нужен для включения PID-регулятора, управляющего температурой HotEnd’а.

2. Режим нагрева нагревательного столика. Я использовал нагревательный столик на 220 V, подключаемый через реле на 12 V. Если вы не дай Бог купили нагревательный столик на 12 V, то сдайте его обратно в магазин — он наверняка поплавит вам все соединительные клеммы. Все дело в том, что ток 12-ти вольтового столика просто дикий. Разделите его мощность на напряжение и получите ток. Например, для 200 Ваттного столика на 12 вольт ток будет около 17 Ампер! Под такой столик вам не помешал бы отдельный блок питания. А у моего столика 220 Вытт на 220 Вольт ток всего около 1 Ампера, и греться будет только столик, а не провода и клеммники.

Так вот, для столика на 220 Вольт нужно отключить PID-регулирование, иначе реле будет щелкать как оголтелое, и быстро выйдет из строя. Для этого закомментируем строку

3. Настраиваем кинематику. Я собирал 3D принтер с кинематикой CoreXY, поэтому ищем параметр COREXY и включаем его в настройках, удалив двойную косую //.

О достоинствах кинематики CoreXY немного говорится в статье про . Коротко говоря — круче CoreXY пока нет ничего! Разве что только Delta-робот.

4. Настраиваем размеры рабочей зоны. Стандартные нагревательные столики идут размером 200 х 200 мм. Но их нужно еще как-то крепить, поэтому я сделал небольшой отступ по 10 мм от краев, поэтому рабочая зона 200 — 10 х 2 = 180 мм.

#define X_MAX_POS 180
#define X_MIN_POS 0
#define Y_MAX_POS 180
#define Y_MIN_POS 0
#define Z_MAX_POS 100
#define Z_MIN_POS 0

5. Включаем автокалибровку уровня нагревательного столика. На самом деле автокалибровку себе я не делал, но без этого параметра не работает функция безопасной парковки по оси Z:

#define ENABLE_AUTO_BED_LEVELING

И теперь, собственно, включаем безопасную парковку по Z:

О том, что дает безопасная парковка и как она работает, я расскажу немного ниже.

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

  • HOMING_FEEDRATE — скорость парковки для каждой из трех осей в миллиметрах в минуту. Для наглядности в прошивке лучше писать скорость в миллиметрах в секунду и умножать на 60, например {80*60, 80*60, 4*60, 0}. В фигурных скобках идут настройки для осей X, Y, Z и E (экструдера).
  • DEFAULT_AXIS_STEPS_PER_UNIT — число шагов для двигателя, требуемое для перемещения оси на 1 миллиметр. Для определения этого числа мы число шагов шагового двигателя на один полный оборот умножаем на делитель микрошагового режима, если он у вас включен (если нет, то на умножаем на 1), и делим на шаг резьбы для винтовых передач или длину ремня на один оборот для ременных передач. Длину ремня на один оборот можно найти, умножив число зубьев шкива на шаг ремня. Для моего принтера получились такие значения: {200*1/(2.0*20), 200*1/(2.0*20), 200*1/1.25, 100*1/23.0}, т.е. по оси X и Y у меня работают шаговики с 200 шагами на один полный оборот, микрошаг у меня отключен (множитель — 1), я применяю зубчатый ремень GT2 с шагом 2мм и шкивы на моторах с 20-ю зубами. На оси Z у меня строительная шпилька с шагом 1.25 мм, а на экструдере у меня моторчик со 100 шагами на один оборот, и шестеренка с длиной внешней окружности 25.0 мм (23.0 — это с учетом вгрызания шестеренки в пластик прутка).
  • DEFAULT_MAX_FEEDRATE — максимальная скорость перемещения по осям в миллиметрах в секунду. У меня {200, 200, 5, 100}.
  • DEFAULT_MAX_ACCELERATION — максимальные ускорения по осям. Мои значения {400, 400, 10, 10000}. Ускорения обычно зависят от максимально возможной скорости. Чем выше возможная скорость, тем выше можно поставить ускорения. Для экструдера вообще ускорение ставится максимальное, потому как экструдер работает в дискретном режиме.

Из основных настроек вроде все. Если чего забыл — допишу потом.

После всех изменений, сохраняем файл Configuration.h (Ctrl+S). Перед заливкой прошивки проверьте подключение контроллера по USB. Также в Arduino IDE проверьте настройки в меню Сервис->Плата… (Нужно поставить «Arduino Mega 2560 или Mega ADK»), а также Сервис->Последовательный порт… Обычно после подключения контроллера по USB нужный порт в этом пункте меню появляется автоматически. Теперь запускаем заливку Файл->Загрузить (Ctrl+U) или просто нажмите кнопку со стрелочкой (вторая слева в панельке под меню). Несколько секунд подождем, пока в строке состояния внизу не появится «Загрузка завершена». Если выскочат оранжевые ошибки, значит где-то чего-то не так наменяли. Нужно снова распаковать архив с прошивкой Marlin в эту же папку с заменой всех файлов. А можно просто где-то сохранить исходный Configuration.h и в случае ошибок просто перезаписать его поверх испорченного.

Первый запуск 3D принтера

Итак, волнующий момент — первый запуск 3D принтера!

Для управления своим 3D принтером я использую Repetier-Host . При его установке он сам скачивает последнюю версию слайсера Slic3r для нарезки 3D-моделей на слои.

После установки этих программ, нужно тоже немножко ковырнуть настройки. Заходим в меню Конфигурация->Настройки принтера. Там во вкладке Соединение устанавливаем

  • Последовательное соединение и Порт (можно auto).
  • Скорость в бодах = 250000.

Во вкладке Принтер ставим

  • Скорость перемещения = 4800 мм/мин (у меня пока такая с моими шаговичками с током на 0,4 А)
  • Скорость оси Z = 150 мм/мин
  • Температура экструдера начальная = 200°С (у меня ABS-пастик)
  • Температура стола начальная = 100°С (у меня все еще ABS-пластик)

Во вкладке Размеры

  • Тип принтера — Классический принтер
  • Начало X = 0, Начало Y = 0, Начало Z = Min.
  • Мин X = -100, Макс X = 90, Слева: 0
  • Мин Y = -100, Макс Y = 90, Спереди: 0
  • Ширина области печати: 190 мм
  • Глубина области печати: 190 мм
  • Высота области печати: 100 мм

Жмем ОК и понеслась

В верхнем левом углу программы Repetier-Host есть кнопка Подсоединить. Жмем ее, и, если в настройках Соединения мы указали все правильно, то программа подключится к нашему 3D принтеру. Далее справа есть панель с закладками. Нас пока будет интересовать закладка Управление. В ней есть все необходимые кнопки, чтобы погонять наш 3D принтер по рабочему полю, но сначала нужно припарковаться!

Парковка — это установка печатающей головки в начальное положение. Для определение начальных положений осей на 3D принтере устанавливаются так называемые концевые датчики. Это могут быть как магнитные или оптические датчики, так и обычные кнопочки-»микрушки». Я в качестве концевых датчиков использовал обычные SMD-кнопочки, напаянные на кусочки фольгированного стеклотекстолита, т.е. сделал небольшие платки с выключателями, которые привинтил к началу каждой из осей. Благо мой сделан из фанеры, в которой можно сверлить дырки где захочется

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

Перед началом парковки опустим нагревательный столик пониже на безопасное расстояние, чтобы сопло случайно не начало возить по его поверхности. Для этого клацаем на положительное направление оси Z: пару раз по +10 или сразу на +50, но только аккуратно — не врежьтесь в пол! Кстати говоря, я не так расцарапал свой каптоновый слой Об этом позднее…

Для начала попробуем припарковать ось X. В Repitier-Host есть кнопочки для отдельной парковки каждой из осей (домики с буквами X, Y и Z). Жмем домик с X, и смотрим, как головка мчится к концевому датчику оси X, ткается об него, после чего слегка отъезжает на заданное расстояние. Все ОК!

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

Бывает так, что головка начинает ехать не в ту сторону. В этом случае нужно инвертировать направление оси в прошивке контроллера. За это отвечает параметр INVERT_X_DIR. У меня стоят вот такие настройки для направлений осей:

#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true

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

Вообще говоря, для кинематики CoreXY, наверное, нельзя поехать «не туда». Либо сразу поедет куда надо, либо будет клинить и перемещаться диагонально, потому как в кинематике CoreXY оба двигателя работают синхронно даже для перемещения по одной из осей. В общем, если клинит или едет по диагонали, значит один из двигателей надо инвертировать. А вот какой именно — это уже зависит от того, с какой из углов своего 3D принтера вы хотите сделать началом координат.

Пробуем повторить процедуру с осью Y — жмем на домик с буквой Y. Каретка ткается в концевик, слегка отъезжает и останавливается. Все ОК!

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

Однако не спешите радоваться! Есть и еще одна проблема с парковкой оси Z. Это крепление нагревательного стола. Когда X и Y стоят в нулях, то сопло обычно висит прямо над креплением стола, и паркуя столик по оси Z, мы обязательно ткнем этим креплением в сопло и чего-нибудь попортим. Разработчики прошивки Marlin, тем не менее, разработали механизм безопасной парковки по оси Z. О нем я говорил выше в разделе про настройку прошивки 3D принтера. Поведение этого механизма оказалось для меня немного странным. Суть его в том, что перед парковкой оси Z сопло отводится в безопасное положение — на середину стола по X и Y. Но что будет, если столик уже по оси Z находится в нуле? Правильно — парковка по X и Y как раз шибанет сопло о крепление стола!

Я решил немного модернизировать алгоритм безопасной парковки. С моей точки зрения, логичным было бы перед парковкой осей X и Y сперва опустить столик немного вниз, чтобы головка не налетела на крепление. Именно это я и сделал, модернизировав прошивку Marlin. Все операции по парковке описаны в файле Marlin_main.cpp. В функции process_commends() есть обработчик G-кода G28 (Home all Axis — припарковать все оси). Ищем в файле «case 28:» и далее прямо перед строчкой «#ifdef QUICK_HOME» вставляем следующий код:

// Dimanjy FIX
// Опускание оси Z на заданное безопасное расстояние перед парковкой осей X и Y
current_position = 0; current_position = 0; current_position = 0;
destination = 0; destination = 0;
destination = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1);
current_position = 0;
feedrate = max_feedrate;
plan_set_position(current_position, current_position, current_position, current_position);
plan_buffer_line(destination, destination, destination, destination, feedrate, active_extruder);
st_synchronize();
current_position = destination;

Расстояние, на которое опустится ось Z, задается все в том же файле настроек Configuration.h в параметре Z_RAISE_BEFORE_HOMING в миллиметрах. Мне хватает 10 мм, чтобы объехать крепление стола.

Я даже записал небольшое видео модернизированного процесса парковки головки 3D принтера. Скоро выложу…

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

Ну все, вроде припарковались.

Калибровка стола 3D принтера

Настройка 3D принтера у нас еще в самом разгаре! Перед первой печатью необходимо очень точно выставить параллельность стола 3D принтера к его печатающей головке. Для этого в конструкции большинства 3D принтеров предусмотрены подпружиненные регулировочные винты. Гоняя печатную головку по всем четырем углам, мы аккуратно подкручиваем винты и добиваемся минимального расстояния от стола до печатающей головки. Я для этого использую ровный квадратный кусок бумаги. Если бумага между соплом и столом проходит с трудом — можно считать, что сопло находится на минимальном расстоянии от стола. Если бумага застревает, то мы придавили сопло столиком — нужно слегка подтянуть винт и увеличить зазор. И так несколько раз по кругу.

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

Распаковываем его в подготовленную папку.

Теперь скачиваем Arduino IDE для исправления и загрузки прошивки в 3D принтер. Ссылка . Давим на Windows Installer . Скачивается установщик arduino-1.6.5-r2-windows.exe . Запускаем его и устанавливаем среду Arduino IDE .

Переходим в папку с прошивкой и запускаем файл Marlin.ino .

Открывается среда Arduino IDE с прошивкой. Нам нужна вкладка Configuration.h .

В начале мы видим ссылки на калибровку 3D принтера. Пролистываем дальше и читаем: "Это конфигурационный файл с основными настройками. Выберите тип контроллера, тип температурного датчика, откалибруйте перемещения по осям и сконфигурируйте концевые выключатели ."

Начнём с выбора контроллера (MOTHERBOARD). Список контроллеров находится во вкладке boards.h . Давим на треугольник в правом верхнем углу и выбираем boards.h .

Теперь посмотрим на установленную электронику. Вот самые распространённые типы плат :

Melzi

Sanguinololu

RAMPS 1.4

У меня стоит RAMPS 1.4 .

Следующим выбираем датчик температуры - термистор , для хотэнда и стола. Видим большой список "//// Temperature sensor settings:". У меня стоит хотэнд E3D-v5 и китайский термистор на столе. Для E3D-v5 я выбираю "// 5 is 100K thermistor - ATC Semitec 104GT-2", для стола "// 1 is 100k thermistor - best choice for EPCOS 100k". Если тип термистора неизвестен можно выбрать 1, а если температура не понравится можно выбирать любой и тестировать. Меняю.

100K thermistor - ATC Semitec 104GT-2

Обычный китайский термистор 100К

У Ultimaker Original в хотэнде стоит термопара . При подключении термопары важно соблюдать полярность. Тип сенсора "-1".

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

Ограничение максимальной температуры хотэнда "#define HEATER_0_MAXTEMP 275".

Минимальная температура ограничивается для механической защиты хотэнда от выдавливания холодного пластика.

Ограничение минимальной температуры хотэнда "#define EXTRUDE_MINTEMP 170".

Настройка концевых выключателей

Если сработал концевик, то мотор не должен дальше двигать каретку. Концевики нужны для ограничения перемещения кареток и инициализации начальной точки HOME . При сработанном концевике каретка может двигаться только от него.

Нам нужно узнать где они расположены. Как это узнать? Начало координат находится в ближнем левом углу на поверхности стола, если сопло вывести в эту точку, то сработали бы концевики MIN , если в правую дальнюю верхнюю - сработают MAX . У меня в положении HOME находятся три концевых выключателя MAX , поэтому мои установки

// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1

Команда M119 (например в ) показывает состояние концевых выключателей. У меня концевые выключатели стоят только в позиции HOME на MAX .

Так должно быть:

В положении HOME

В положении отличном от HOME по всем осям

Если у Вас не получилось как у меня, то состояние концевых выключателей по выбранной координате нужно инвертировать , это можно сделать в прошивке или перепаять провода. З начения false или true. Мне ничего менять не потребовалось.

const bool X_MIN_ENDSTOP_INVERTING = true;

const bool Y_MIN_ENDSTOP_INVERTING = true;

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;


Изменение направления вращения шаговых двигателей , значения false или true . Правильные перемещения сопла относительно стола:

  • По оси X - влево "-", вправо "+".

  • По Y - вперёд "+", назад "-".

  • По оси Z - сближение "-", удаление "+".

  • Экструдер. Extrude - выдавливание нити, Reverse (retract) - откат, втягивание нити.

#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false
#define INVERT_E0_DIR true

Установка габаритов перемещения , после инициализации в положении HOME . Здесь мы задаём габариты максимальных перемещений по осям X и Y, а также настройку сопла относительно стола.
Если при касании стола соплом срабатывает концевой выключатель (MIN ), как у Ultimaker Original, то поднастройка сопла относительно стола выполняется перемещением концевого выключателя, а в "#define Z_MAX_POS" записываем значение координаты при максимальном удалении сопла от стола. Координату можно узнать по команде М114 или посмотрев на экран дисплея.
Если концевой выключатель по Z срабатывает при максимальном удалении сопла от стола (MAX ), то нужно найти габарит по Z самостоятельно. Устанавливаем значение "#define Z_MAX_POS" изначально больше нормы, например 250 при габарите 200 мм. Опускаем сопло до касания стола и на дисплее (или по команде M114 ) видим координату больше нуля, теперь вычтем из установленного большого значения полученную координату и получим габарит по Z, который теперь запишем в "#define Z_MAX_POS". По итогам печати первого слоя можно будет подкорректировать это значение.

Можно подкорректировать скорость перемещения в положение HOME . Обычно занижают скорость по оси Z, если стоят кривые шпильки.

#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)

Переходим к самому важному. Настройка шагов перемещения по осям . Экструдер тоже ось. Мои настройки:

#define DEFAULT_AXIS_STEPS_PER_UNIT {(200*16)/(2.0*20),(200*16)/(2.0*20),200*1 6/1.25,(3200 * 39.0)/(11.0 * 6.75 * 3.45)}

Теперь посмотрим, как я их получил . По всем осям стоят шаговые двигатели 200 шагов на оборот, 16 микрошагов на шаг (устанавливается перемычками на плате), приводной ремень GT2 с шагом 2 мм, 20-ти зубые шкивы, итого получаем формулу (200*16)/(2.0*20). По оси Z стоят шпильки М8 с шагом резьбы 1,25 мм, итого формула 200*16/1.25.

Находим спецификации (даташит) на установленные шаговые двигатели . Видим, что за один шаг вал поворачивается на 1,8 градуса, а это значит 360/1,8=200 шагов на полный оборот. Этот параметр одинаковый у большинства шаговых двигателей устанавливаемых в домашние 3D принтеры.

Профили ремней, обычно используемых на 3D принтерах и их шаг. Оригинал , страница 61.

Шкив

Как померить шаг винта ? Замеряем участок винта и считаем на нём витки, затем длину участка в миллиметрах делим на количество витков 20/16=1.25 мм. Для более точного результата замеряем максимальный участок винта.

Настройка экструдера зависит от коэффициента редукции и диаметра подающей шестерни. Подберём экспериментально, после первой заливки прошивки в 3D принтер. Откручиваем сопло и уменьшаем ограничения минимальной температуры сопла до 5 градусов "#define EXTRUDE_MINTEMP 5". Теперь экструдер будет работать при холодном сопле , что нам и нужно. Пока не меняем настройки экструдера. Для настройки я использую программу . Для начала ставим 50 мм и скорость 100 мм/сек. 50 мм - это длина прутка, проходящего через экструдер. Измеряем длину прутка прошедшего через экструдер линейкой или штангенциркулем.

Подбирая настройку экструдера добиваемся точной цифры на разумной длине прутка, например 300 мм. После настройки вернём ограничения минимальной температуры "#define EXTRUDE_MINTEMP 170" .

Следующие цифры - это ограничение максимальной скорости перемещения по осям . На X и Y я ставлю 200 мм.

#define DEFAULT_MAX_FEEDRATE {200, 200, 5, 25}

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

#define DEFAULT_MAX_ACCELERATION {1000,1000,100,10000}
#define DEFAULT_ACCELERATION 1500

Осталось активировать LCD дисплей с SD картой . Свой дисплей я нашёл на RepRap.org и идентифицировал как RepRapDiscount Smart Controller .

Раскомментируем следующие строки. То есть убрать двойные слэши. Строка за "//" не используется и является только комментарием. Когда убираем слэши строка принимает участие в компиляции прошивки и задействует её функции.

#define ULTRA_LCD
#define SDSUPPORT
#define ULTIPANEL
#define REPRAP_DISCOUNT_SMART_CONTROLLER

Для подключения LCD к Ultimaker нужно раскомментировать только одну строку

#define ULTIMAKERCONTROLLER

Есть ещё один твик для повышения точности срабатывания некоторых концевых выключателей. При настройке нуля по Z столкнулся с тем, что после каждой инициализации HOME положение сопла над столом немного менялось. Порывшись в прошивке нашёл параметр отвечающий за длину отката при инициализации концевых выключателей. Переходим во вкладку

По просьбе подписчика выкладываю пост о прошивках (Firmware) для 3D принтеров. Данный пост разделен на две части. Первая часть посвящена новичкам и ее я решил оформить в качестве FAQ, надеюсь подобное изложение материала будет кратким, понятным и ответит на большинство вопросов. Во второй части - экзотика, прошивки, которые давно покрылись слоем пыли и совсем молодые или специализированные прошивки. Эта статья так же войдет в книгу "3D Ликбез".

Более подробно про настройку написано в статье.В. Что такое прошивка для принтера?

О. Прошивка для 3D принтера - это написанный программный код, основной задачей которого является считывать и воспроизводить G-code (Специально разработанный код для ЧПУ станков). Это основная задача прошивки. Дополнительный функции, такие как вывод информации о процессе печати, печать с SD карты памяти, управление принтером через интерфейсы - это все дополнительные функции, и в разных прошивках набор этих дополнительных модулей разнообразен, как и сама идея каждой отдельной прошивки.

В. Что можно настроить в прошивке?

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

В. Какую прошивку выбрать для новичка?

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

В. В чем принципиальная разница между прошивками?

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

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

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

В. Как залить прошивку в электронику?

О. В 90% случаев у вас на руках имеется Arduino mega 2560 + Ramps 1.4. Или любая другая плата на основе Arduino mega 2560. (В противном случае, читайте вторую часть статьи). Если это так, то вам потребуются программы: Arduino IDE (для работы с файлами прошивки), Pronterface (для настройки и управлением принтера), и сама Marlin .

Первым делом устанавливаем Arduino IDE, и пытаемся подключить Arduino Mega к компьютеру. Если это удалось, и нашлись и установились все драйверы, то радуйтесь, можно двигаться дальше, в противном случае у вас либо Mega основанная на usb чипе ch340g, либо мертвая плата. Платы на ch340g дешевле, но к ним нужно искать специальный драйвер, на всякий случай оставлю его .

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

Напомню, что пошаговая инструкция хорошо описана в статье.

В. Я прошил принтер, но двигатели едут не туда/температура неправильно показывается, не загорается дисплей.

О. Самое время настроить прошивку, для этого открываем в Arduino IDE файл configuration.h и начинаем читать комментарии. Опять же, в статье, упомянутой выше есть полный перечень настроек, но почитать на русском языке о всех возможностях прошивки будет не лишним.

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

О. Сам ни раз натыкался на это, а реальная проблема была, когда первый раз начал калибровать delta принтер, каждый раз вносить изменения, перепрошивая принтер это смерти подобно. На такие случаи придумали записывать настройки в энергонезависимую память, т.н. EEPROM. Данная функция включается в конфигурации и позволяет в том же pronterface записывать изменения в принтер из консоли при помощи M-команд.

А теперь давайте подробней рассмотрим каждую из прошивок. Разобьем их пожалуй по поддерживаемой электроники.

Прошивки для Arduino (Atmel):

Прошивки для плат на основе 32-битных процессоров ARM.

Любые вопросы, вы можете задать мне лично в VK или написав в ЛС: http://vk.com/tigeer