Автоматическая мелкосерийная 3D печать

Недавно я печатал под заказ Верньерное колесо. И всё бы ничего, но мне их заказали 50 штук. Поскольку на печать одной единицы уходило примерно 40 минут, то я серьезно задумался про автоматизацию процесса. В данной затее мне поможет Щетка очистки сопла принтера которую я тоже недавно сделал и испытал. Идея такова:

  1. обнуляю печатную головку по всем осям
  2. поднимаю её на безопасное расстояние вверх
  3. грею стол принтера до рабочей температуры
  4. грею сопло принтера до рабочей температуры
  5. чищу сопло от потеков пластика
  6. выполняю печать основной детали
  7. отвожу печатную головку на безопасное расстояние
  8. даю соплу остыть 30 секунд
  9. чищу сопло от потеков пластика
  10. даю столу остыть примерно до 55 градусов.
  11. выбрасываю деталь со стола принтера самой же печатной головкой
  12. принтер выдает сигналы с некоторой периодичностью в течение минуты. в это время возможно прервать процесс, если количество деталей уже достаточно
  13. автоматически запускаю весь процесс с самого начала

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

Скребок для выгрузки детали со стола принтера

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

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

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

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

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

Модель готова.

Подготовил деталь к печати. Нависающие элементы будут напечатаны с поддержками.

Через 20 минут получил готовую деталь.

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

Снова несколько скруглений.

И второй опытный образец готов.

Готовлю его к печати как и предыдущую деталь.

Установка скребка и написание PRE\POST gcode.

Устанавливаю второй скребок на печатную головку.

Пробую варианты перемещения сопла по щетке.

В этот раз ничего не задевает и очистка проходит без проблем.

Настало время самой творческой части моего повествования. Необходимо записать GCODE команды в настройки слайсера Repetier-Host для предварительных действий принтера перед печатью и пост команд после печати основного файла. Эти команды я оттачивал и переписывал много раз, пока добился желаемого эффекта и стабильной работы.

Первым делом, нужно взять себе за правило, что любой файл, который я собираюсь печатать серийно, нужно записывать на SD карту с именем serial.gco. Всё остальное сделают PRE\POST команды. Итак, приведу листинг моих PRE команд. Эти команды хорошо работают в принтерах с прошивкой Marlin. Как будут работать в других прошивках точно сказать не могу. Совместимость не проверял.  Кому не понятно, какая команда что делает, оставлю напротив комментарии.

G0 Z20 F7000; приподнимаю сопло чтобы не зацепить модель
G28 ; паркую все оси
G0 Z20 F7000 ; снова поднимаю ось Z на высоту 20 мм
M190 S110 ; включаю нагрев стола до 110 градусов и жду нагрева
G0 Y200 Z80 X180 F7000 ; перевожу печатную головку поближе к щетке
M109 S240 ; включаю нагрев сопла до 240 градусов и жду нагрева
G0 Z27 X0 F7000 ; перевожу печатную головку к щетке на высоте 27 мм
G0 Y140 F1000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y140 F7000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y140 F7000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y0 F7000 ; двигаю сопло максимально к себе в 0 по оси Y

Далее автоматически запускается печать основной детали.

А также привожу листинг моих POST команд.

M104 S0 ; выключаю нагрев сопла полностью
M140 S0 ; выключаю нагрев стола полностью
G0 Z80 F7000 ; поднимаю ось Z на высоту 80 мм
G0 Y200 X150 F7000 ; перевожу печатную головку поближе к щетке
M117 wait 30 sec... ; вывожу на экран "ждем 30 сек..."
G4 S30; делаю программную задержку 30 секунд
M117 nozzle cleaning...  ; вывожу на экран "очистка сопла..."
G0 Y200 Z27 X0 F7000 ; перевожу сопло к щетке на высоте 27 мм
G0 Y140 F1000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y140 F7000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y140 F7000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Y140 F7000 ; двигаю соплом по щетке к себе
G0 Y200 F7000 ; двигаю соплом по щетке от себя
G0 Z80 F7000 ; поднимаю ось Z на высоту 80 мм
M117 wait 12 min left ; вывожу на экран "ждите, осталось 12 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 11 min left ; вывожу на экран "ждите, осталось 11 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 10 min left ; вывожу на экран "ждите, осталось 10 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 9 min left ; вывожу на экран "ждите, осталось 9 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 8 min left ; вывожу на экран "ждите, осталось 8 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 7 min left ; вывожу на экран "ждите, осталось 7 минут"
G4 S60; делаю программную задержку 60 секунд
M117 wait 6 min left ; вывожу на экран "ждите, осталось 6 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 5 min left ; вывожу на экран "ждите, осталось 5 минут"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 4 min left ; вывожу на экран "ждите, осталось 4 минуты"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 3 min left ; вывожу на экран "ждите, осталось 3 минуты"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 2 min left ; вывожу на экран "ждите, осталось 2 минуты"
G4 S60 ; делаю программную задержку 60 секунд
M117 wait 1 min left ; вывожу на экран "ждите, осталось 1 минута"
G4 S30 ; делаю программную задержку 30 секунд
M117 wait 30 sec left ; вывожу на экран "ждите, осталось 30 секунд"
G4 S20 ; делаю программную задержку 20 секунд
M117 wait 10 sec left ; вывожу на экран "ждите, осталось 10 секунд"
G4 S10 ; делаю программную задержку 10 секунд
M117 unloading...  ; вывожу на экран "выгрузка..."
G0 X100 Z2 F7000 ; перевожу головку в точку выгрузки детали
G28 Z ; паркую печатную головку в 0 по оси Z
G0 Z0.2 F7000 ; приподнимаю печатную головку на 0,2 мм по оси Z
G0 Y30 F8000 ; отрываю деталь скребком от стола на высокой скорости
G0 Y0 F4000 ; выталкиваю деталь со стола на средней скорости
G0 Z10 Y0 F7000 ; приподнимаю печатную головку на 10 мм по оси Z
G28 ; паркую печатную головку в 0 по всем осям
G0 Z50 F7000 ; приподнимаю печатную головку на 50 мм по оси Z
M84 ; disable motors (отключаю удержание шаговых двигателей)
M117 print completed  ; вывожу на экран "печать завершена"
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S20 ; делаю программную задержку 20 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S20 ; делаю программную задержку 20 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S0.5 ; делаю программную задержку 0,5 секунд
M300 S5000 P280 ; воспроизведение краткого тонального сигнала 
G4 S20 ; делаю программную задержку 20 секунд
M32 !serial.gco# ; запускаю с SD карты этот же файл с самого начала

Ну и напоследок покажу как это всё работает. Автоматическая мелкосерийная 3D печать на видео.

Вот такая кучка отправилась заказчику.

Параметры печати:

Суммарный вес готовых деталей (грамм) 388
Время печати (часов:минут) 33:20
Длина пластикового прутка (мм) 153750
Температура сопла (градусов С) 235
Температура стола (градусов С) 110
Тип пластика ABS
Диаметр сопла (мм) 0,4
Разрешение печати (микрон) 200
Заполнение (процентов) 100