摘要:针对现有DLP型3D打印机价格高、体积大、普及率低、打印时需要连接个人电脑等问题, 详细研究了DLP型3D打印机打印原理及实现方式, 使用廉价解决方案改进了原有硬件结构, 利用Python语言重新编写控制软件, 提出了一种基于嵌入式Linux的桌面级DLP型3D打印机设计方案。3D打印机采用Cortex-A7内核的树莓派为硬件核心, 运用开源的计算机视觉库Open CV实现了图片解析与显示, 通过控制步进电机带动丝杆螺母实现了打印平台精确升降, 利用串口触摸屏代替电脑上位机实现了用户脱机打印。该DLP型3D打印机体积为240×220×500 mm (长*宽*高) , 最大成型体积达到120×120×160 mm (长*宽*高) , 打印层高最小为0.025 mm, 图片显示分辨率达到1 080 P。实际打印结果表明, 该DLP型3D打印机具有打印精度高, 体积小, 成本低, 可实现脱机打印的优点。
关键词:3D打印; 桌面级; DLP; 树莓派; OpenCV; 脱机打印;
Abstract:Aiming at the problems of high cost, inconvenience and unpopularity of DLP 3D printers, research on the theory and implementation of DLP 3D printers were carried out. A desktop DLP 3D printer based on embedded Linux with low-priced hardware and python language was proposed. This 3D printer system was constituted by a Cortex-A7 micro controller named Raspberry Pi, a software using GPL Open CV, a stepper motor to control printing platform and a serial touch screen, providing the ability of off-line printing. Models which were smaller than 120* 120* 160 ( mm) can be printed by this 3D printer whose size was 240* 220* 500 ( mm) . A 0. 025 mm height of each layer and a 1 080 P image resolution were confirmed by the test results. The results indicate that this 3D printer has the advantages of high printing precision, small size, low cost and off-line printing.
Keyword:3D printing; desktop; DLP; Raspberry Pi; OpenCV; offline printing;
随着3D打印技术的迅猛发展, 3D打印机正逐渐走入大众的生活中。在多种3D打印技术中, FDM (熔融沉积成形技术) 采用热融喷头, 使塑性纤维材料经熔化后从喷头内挤压而出, 并沉积在指定位置后固化成型[1-2]。这种工艺价格低廉、生产难度小、生产机构体积小;但成型件表面纹理明显, 层间结合强度低, 打印速度较慢。DLP (激光成型技术) 使用可见光对光敏树脂表面进行整体曝光, 进行逐层硬化[3-4]。正因为如此, DLP型3D打印机在打印速度, 打印精度及表面光洁度方面有着明显的优势。但在由工业级向桌面级过渡的过程中, DLP型3D打印机的普及速度却明显慢于FDM型[5]。
本研究将提出一种基于嵌入式Linux的桌面级DLP型3D打印机设计方案。
1、3D打印机设计总体框架
3D打印机总体设计框架如图1所示。
图1 3D打印机总体设计框架
该打印机采用树莓派作为控制核心;通过HDMI接口连接高清液晶显示屏实现每一层图片文件的显示;通过数字式步进电机驱动器驱动42步进电机实现打印平台的上下移动;通过在串口HMI触摸屏上编写用户界面实现用户操作控制。3D打印机控制软件运用Python语言编写, 主要完成步进电机的运动控制, 曝光时长控制和用户输入的读取。模型切片文件的解析和显示工作使用基于Python的开源计算式视觉库Open CV来实现。
2、3D打印机硬件设计
本研究设计的桌面级DLP型3D打印机硬件选型以经济实用, 稳定可靠为目标。根据功能划分可以分为4个模块:核心模块、步进电机控制模块、图形显示模块、用户控制模块。
2.1、核心模块
3D打印机选用树莓派作为控制核心, 树莓派是由英国剑桥大学博士艾本·厄普顿开发的一款基于Linux的开放式嵌入式系统, 通过装在相应的Linux系统和相应的应用程序, 可以实现强大的功能, 具有体积小, 价格低, 通用性强等优点[6-7]。本研究采用树莓派2B+版本, CPU采用Cortex-A7架构, 默认时钟频率为700 MHz, 系统内存512 M, 使用TF卡装载系统和软件。树莓派接口资源丰富, 拥有百兆以太网口1个;USB接口4个;HDMI接口1个, 实现图片1 080 P输出。满足3D打印机的控制需要。树莓派接口资源示意图如图2所示。
图2 树莓派接口资源示意图
2.2、步进电机控制模块
DLP型3D打印机需要一个步进电机来实现Z轴方向打印平台的上下移动, 本研究选用数字式步进电机驱动器和触点式行程开关实现步进电机的运动控制和限位。
步进电机控制器采用12 V电源输入, 42步进电机根据相序接入控制器输出接口, 控制器输入采用共阴极接法:脉冲信号、方向信号、使能信号正极分别接入树莓派3个I/O口, 负极接入树莓派GND接口。通过拨动控制器上的拨码开关, 设定控制精度为32细分, 步进电机工作电流为2 A, 静态电流为工作电流一半。触点式行程开关有3个触点:公共点、常开点和常闭点, 将常开点接入树莓派I/O口, 公共点接GND。一旦打印平台触碰行程开关, 常开点会提供一个低电平信号, 软件读取到这个信号会立即停止步进电机运转, 实现限位功能。步进电机控制器操作方便, 运行准确, 具有过压、欠压、过流保护功能, 体积小巧, 价格便宜, 非常适合本研究所述DLP型3D打印机的设计需要。
2.3、图形显示模块
图形显示模块由两部分组成:高清液晶屏幕和LED光源。由于图片的显示质量直接决定了打印模型的表面质量, 因此需要选用1 080 P高清液晶显示屏幕。高清显示屏幕接口类型为HDMI, 可以直接接入树莓派进行控制。图片显示在高清液晶屏幕上后, 需要光源照射才能使透光部分的液态光聚合物固化, 因此选用功率为100 W的LED灯作为光源, 光源在用户启动后处于常亮状态。
2.4、用户控制模块
在3D打印机执行打印工作前, 需要用户设置曝光时间和切片层高;在运行打印程序期间, 需要用户控制暂停、继续和停止功能。因此需要设计一个用户控制接口。触摸屏控制形象直观, 简单易懂, 非常符合桌面式3D打印机的需要。本研究选用3.2寸串口HMI触摸屏, 分辨率达到400*240, 支持按钮控件、进度条控件、文本控件、指针控件等多种组态控件;支持BMP、JPG、PNG等多种图片格式, 支持上位机同步调试并通过TF卡进行程序烧录。
3、3D打印机软件设计
DLP型3D打印机软件系统框图如图3所示。
图3 软件系统框图
用户界面模块的设计在Windows操作系统下完成, 程序在触摸屏内部处理器中执行。其他几个程序模块在树莓派的Debian系统下设计并执行。用户将STL格式模型文件导入Creation Workshop进行切片操作, 生成的图形文件集存入外部存储设备中, 树莓派通过USB接口对外部读取设备进行读取操作。用户命令读取模块负责解析用户界面模块传递来的用户指令, 实现获取图形文件目录、设置曝光时长和设置层高的任务, 并将参数传递给图形解析与显示部分和步进电机控制部分;图形解析与显示部分和步进电机控制部分根据设定好的程序, 依次执行图片显示与步进电机的上升下降操作, 直至打印完成。
3.1、树莓派开发语言及Open CV运行库
3.1.1、树莓派开发语言
树莓派上搭载编程开发环境为Python语言。Python是一种简单易学, 功能强大的编程语言, 它有高效率的高级数据结构, 可以简单而有效地实现面向对象编程。通过近20年的发展历史, 包含了一组完善而且容易理解的标准库, 能够轻松完成很多常见的任务[8]。
3.1.2、Open CV运行库
Open CV是一个开源的计算机视觉库。Open CV采用C/C++语言编写, 可以运行在Linux/Windows/Mac等操作系统上。Open CV还提供了Python、Ruby、Matlab以及其他语言的接口[9-11]。
3.2、软件模块分析
为实现脱机打印功能, 笔者设计用户操作界面, 将打印过程中的一些操作转化为用户可以识别、点击的按钮和界面, 提高程序的友好度。由于树莓派的HD-MI接口用于控制图像输出, 再使用触摸屏进行用户控制涉及树莓派双屏控制问题。使用串口触摸屏可以有效解决这个问题, 两个屏幕不会发生相互干扰。该屏幕的主要优势在于其拥有专用的IDE, 可以用于开发界面, 可以开发出更为友好的用户界面, 并且开发过程也更为方便。在设计用户界面的过程中, 主要涉及两部分的操作, 包括打印机设置和打印参数设置。主要用户界面的设计如图4所示。
图4 屏幕界面设计
图4中A页面为用户设置主界面, 从图4中可以看到, 复位按钮实现让打印平台无论在何处都能回归零点的操作。
设置按钮实现打印平台的上下位置手动操作。由于打印平台只有Z轴方向的运动, 因此设计两个档位的操作:粗调和微调, 粗调每次运动5 mm, 微调每次运动0.1 mm。调节界面如图4中B页面所示。
打印参数设置首先要选择打印目标文件, DLP类型3D打印机选择的是BMP、JPG、PNG等类型的图片集文件夹。根据图4中C页面所示界面, 使用向上或向下按钮进行选择之后, 点击确定按钮完成目标文件选择操作, 并自动弹出打印参数设置界面。
打印设置界面如图4中D页面所示, 可以进行曝光时间和单层高度设置, 这步设置将直接决定打印质量的高低。曝光时间精度100 ms, 层高设置精度25 um。按下打印按钮后进入打印过程。
如图4中E页面所示为打印过程界面, 可以看到打印进度, 包括打印的时间和层数, 并且可以通过点击暂停或者停止按钮控制打印过程。
3.2.2、用户命令读取
用户命令读取模块主要用来解析用户点击了某个按钮或切换到了某个界面时串口触摸屏传递给树莓派的命令。命令主要包括两类:用户数据的提交和请求数据响应。主要涉及的数据提交命令有3个, 即打印所需图像文件夹、设置曝光时间和设置打印层高, 用户提交命令如表1所示。
表1 用户提交命令
第二种是请求数据响应, 这一类的命令主要控制页面的跳转以及用户对于控件的点击输入。主要涉及的命令请求如表2所示。
表2 请求数据响应
3.2.3、图片解析与显示
当用户通过选择界面给定了图片集文件的目录位置后, 图片解析与显示程序读取到一组1 920×1 080的BMP或JPG或PNG格式图片。如果图片格式正确, 程序利用Python语言链接Open CV相应的numpy模块和cv2模块进行图片操作。由于图像的显示范围以及显示精度与屏幕的色彩位数, 模式和分辨率有关, 因此本研究修改树莓派Debian系统文件目录/boot下面的config.txt文件, 使得与树莓派的HDMI显示分辨率变成1 080P。图片读取结束后, 程序通过获得用户输入的曝光时间控制HDMI显示屏的放映。在需要曝光时依次将图片集中图片按标号顺序进行放映, 在曝光结束后通过显示一个纯黑色图片实现遮光的目的。打印过程中, 每次回传当前层数给用户控制界面, 使用户了解当前打印的进度。当读取到暂停或停止按钮按下时, 图片解析与显示程序进入空循环。程序流程图如图5所示。
图5 步进电机控制程序流程图
为保证输出在HDMI上显示的图片大小与实物尺寸大小一致, 在确定使用HDMI屏幕大小后, 本研究通过一个标定好的实际物体, 测试出显示大小与屏幕像素之间的比值, 替换单张图片的RGB颜色和通道数, 通过仿射变换更新出新图片。上述几项参数将固化到程序中, 不允许用户进行修改。
3.2.4、步进电机控制
在打印过程中, DLP型3D打印机需要对打印平台的上升和下降进行单轴直线运动控制。该设计中, 笔者通过控制步进电机的正反转以及丝杆螺母的作用实现打印平台的运动控制。树莓派的GPIO端口输出一定频率、一定数目的脉冲信号控制数字式步进电机驱动模块, 步进电机驱动模块将脉冲信号转换成步进电机四线通电顺序实现步进电机的精确运动控制。同时, 建立一维坐标系, 以电机向上运动为正, 向下运动为负。
在开始打印时, 首先进行打印平台回归原点操作。打印过程逐层进行:打印平台首先移动到待打印位置, 使平台上的模型的底端与料盒平面距离一个层高;此时开启屏幕显示, 材料接受曝光并固结;曝光停止后, 平台向上移动一段距离, 将模型拉出;至此单层打印结束。如此反复, 当所有层打印结束后, 平台上移动到最高点, 等待用户取出打印件。触点式行程开关进行步进电机的上下位置硬件限位, 防止超出行程造成打印机损坏。步进电机的具体控制过程如图6所示。
图6 步进电机控制程序流程图
4、结束语
本研究主要完成基于嵌入式Linux的桌面级DLP型3D打印机设计, 通过高清液晶屏和LED光源的配合取代原有价格昂贵的商品投影仪;通过集成Python的Open CV库完成图片的解析和显示;用户通过控制串口触摸屏, 替代原有电脑上位机功能, 实现脱机打印。软件性能稳定, 实际测试打印效果良好。文中3D打印机体积为240×220×500 mm (长*宽*高) , 最大成型体积120×120×160 mm (长*宽*高) , 打印层高最小为0.025 mm, 图片分辨率达到1 080 P。
参考文献
[1]李小丽, 马剑雄, 李萍, 等.3D打印技术及应用趋势[J].自动化仪表, 2014, 35 (1) :1-5.
[2]朱珠, 雷林, 罗向东, 等.含能材料3D打印技术及应用环状研究[J].兵工自动化, 2015, 34 (6) :52-55, 70.
[3]FANG H B, CHEN J M.3D printing based on digital light processing technology[J].Journal of Beijing University of Technology.2015, 41 (12) :1775-1782.
[4]李昕.3D打印技术及其应用综述[J].凿岩机械气动工具, 2014 (4) :36-41.
[5]董洁, 衡良, 殷国富.桌面级3D打印技术及其发展趋势[J].信息技术与标准化, 2015 (6) :22-26.
[6]EBEN U, GARETH H.Raspberry Pi用户指南[M].王伟, 许金超译.北京:人民邮电出版社, 2013.
[7]李龙棋, 方美发, 唐晓腾.树莓派平台下的实时监控系统开发[J].闽江学院学报, 2014, 35 (5) :67-72.
[8]WESLEY C.Python核心编程[M].宋吉广译.2版.北京:人民邮电出版社, 2008.
[9]方玫.Open CV技术在数字图像处理中的应用[J].北京教育学院学报:自然科学版, 2011, 6 (1) :13-17.
[10]PRATEEK JOSHI.Open CV with Python by example[M].Birmingham:Packet Publishing Limited, 2015.
[11]黄佳.基于OPENCV的计算机视觉技术研究[D].上海:华东理工大学控制科学与工程学院, 2013.