Необходимость решения данных ограничений позволяет сформулировать проблему, которая заключается в изготовлении негабаритных деталей и конструкционных элементов технологического оборудования методом 3D-печати. Применение промышленных роботов для позиционирования печатающей головки для изготовления деталей сложной геометрической формы в широком размерном диапазоне методом 3D-печати является инновационным решением, активно исследуемым в настоящее время.
Система управления экструдером разрабатывалась на основе отрытого программного обеспечения Marlin 2.1.2.5. Разработка осуществлялась в среде разработки Microsoft Visual Studio.
В прошивку Marlin 2.1.2.5 были внесены требуемые технические характеристики: величина тока требуемая шаговому двигателю, микрошаги драйвера, определены элементы в системе.
Материально-техническая часть системы управления экструдера состоит материнской платы управления, драйвера шагового двигателя, экрана тонкой настройки, твердотельного реле и двух блоков питания.
Элементы системы подбирались основываясь на их совместимости и технических требованиях.
В качестве материнской платы управления была использована Bigtreetech SKR 3. BTT SKR V3. Для питания платы применялся блок питания 24В. Термопары подключаются напрямую в плату.
Нагреватели подключаются к плате через твердотельного реле SSR 40.
Для управления шаговым двигателем применялся драйвер Bigtreetech TMC5160T PLUS. Подача питания на шаговый двигатель осуществляется через драйвер шагового двигателя. Для питания двигателя применялся блок питания 48В.
Настройка работы системы управления экструдером в ручной режиме может осуществляться через резистивный дисплей Bigtreetech TFT35 v3.0. 3.5.
Дисплей позволяет менять температуру и скорость подачи, вносить изменения в программу печати.
from robolink import * # Подключаем RoboDK
from robodk import * # Подключаем RoboDK функции
import math
# Подключение к RoboDK
RDK = Robolink()
# Получаем робота по его имени
robot = RDK.Item('KUKA KR 90 R3100 extra')
extruder = RDK.Item('Extruder_TCP')
# Устанавливаем ориентацию экструдера, ось Z направлена вниз
extruder.setPose(Pose(0, 0, 0, 90, 0, 0))
# Получаем текущую позицию робота
current_position = robot.Pose()
print("Текущая позиция робота:", current_position)
# Печатаем безопасные координаты
x_start = 500 # Начальная координата по X
y_start = 0 # Начальная координата по Y
z_start = 100 # Начальная координата по Z
# Устанавливаем начальную позицию
start_position = Pose(x_start, y_start, z_start, 0, 0, 0)
# Перемещаем робота в безопасную начальную позицию
robot.MoveJ(start_position)
# Параметры вазы
height = 700 # Высота вазы
radius = 200 # Радиус вазы
num_layers = 700 # Количество слоев (чем больше, тем мельче шаг)
layer_height = height / num_layers # Высота одного слоя
# Печать вазы (спираль)
for layer in range(num_layers):
# Вычисляем угол для текущего слоя (спиральное движение)
angle = 2 * math.pi * layer / num_layers # 360 градусов за весь цикл
# Рассчитываем координаты X, Y для текущего слоя
x = x_start + radius * math.cos(angle)
y = y_start + radius * math.sin(angle)
z = z_start + layer * layer_height # Поднимаем экструдер на слой
# Перемещаем робота на новую точку
robot.MoveL(Pose(x, y, z, 0, 0, 0))
print("Печать вазы завершена.")
В случае необходимости возможна постобработка изделия: фрезеровка шпинделем с автосменой инструмента, раскрой циркулярной пилой(глубина реза до 50мм), оптововолоконная лазерная резка и сварка IPG (1000вт)