桌面3D打印机控制系统的设计与实现
2016-11-08步亚男金禹含
刘 晋 步亚男 金禹含 苏 臣
(辽宁师范大学计算机信息与技术学院 辽宁 大连 116000)
桌面3D打印机控制系统的设计与实现
刘晋步亚男金禹含苏臣
(辽宁师范大学计算机信息与技术学院辽宁 大连 116000)
目前市场上的桌面3D打印机的控制系统基本都是国外开发的开源控制系统,因此有必要开发一款3D打印机的控制系统。该控制系统下位机程序运行在arm处理器和μCOS环境下,上位机控制软件是在微软的WPF框架下通过c#语言开发的。系统工作过程为:上位机软件读取并处理文件中读取的命令,然后通过串口发送到下位机,下位机接到命令后对命令进行处理并控制步进电机的运动。最后系统经过调试运行,虽然在打印效果和机器运行速度上没有显著提高,但是这是一种新的尝试,证明了该控制系统的可行性。
3D打印arm stm32μCOSWPF
0 引 言
自1984年Charles Hull制作出第一台3D打印机以来,3D打印技术历经了30多年的发展,正逐步成为最有生命力的先进制造技术之一[1]。在全球3D Systems和Stratasys两家公司的产品占据了绝大多数市场份额[2]。目前市场上的桌面3D打印机种类繁多。常见的有RepRap类型、BoxBot类型、RepStrap类型等。本文用的是RepRap机型,它具有开源的控制板以及固件[3]。本文没有用开源的控制板和固件,而是尝试着开发一款新型的3D打印机控制系统。整个控制系统分为上位机程序和下位机程序两部分。上位机程序读取G-code文件将命令行通过usb转串口数据线发送到stm32开发板。下位机主要包括温控模块、串口数据接收模块、数据处理模块、电机运动控制模块等。
1 3D打印机简介
1.1机械原理
3D打印机根据其使用的坐标系可分为笛卡尔坐标系和极坐标系等。根据其材料的成型原理可分为:烧结和融化、粉末-粘合剂、熔融沉积造型技术、层压制造、高分子聚合反应等。本文使用的RepRap机型的核心灵感来源于笛卡尔机械,它可以沿X、Y和Z轴三个直线方向移动,每个轴使用较高精度和准度的小型步进电机,再通过细分控制步进电机使其精度达到1 mm左右。其中,X轴和Y轴通过同步带沿轴向提供快速、精准的定位,Z轴通过螺纹杆实现精准定位。其材料成型的原理为熔融沉积造型技术。即在指定的位置上让热熔塑料通过加热后的喷头,挤出很细塑料丝。最后通过沉积塑料丝的方式绘制3D物品。
1.23D打印机的工作链
3D打印机工作流程中的每一步都有相应的软硬件配合,正是它们构成了3D打印的工作链。工作链的简图如图1所示。
(1) 3D模型
整个流程是从一个3D模型开始的。它可以是.stl文件或者其他3D模型的文件格式,可以从网上下载,也可以通过3D制作软件制作。
(2) 模型分层和路径文件
模型准备好后,由于3D打印机是将模型按层打印的,一次只打印一层。所以需要把模型分层,并且生成路径文件。打印头根据路径文件运动并挤出打印丝。Cura是一款应用比较广泛的分层软件,这里将直接使用Cura软件进行分层。
(3) 打印控制软件
打印控制软件是在电脑端的应用软件,它将G-code文件中的命令行发送至底层的控制板从而控制打印机工作。
(4) 固件
固件即底层的控制程序,负责解释G-code指令,控制电子器件执行。固件直接影响到打印物品的质量。
图1 3d打印机工作链
2 开发环境
上位机控制软件的开发环境为visual studio2010中的WPF开发框架,WPF开发理念更符合自然哲学的思想而且界面较好,与其他界面开发工具相比,较为简单,程序更加简洁清晰。底层控制程序的开发环境为 windows XP下的Keil MDK,使用意法半导体公司的stm32开发板,处理器为ARMCortex-M3。同时为其移植了μCOSⅢ嵌入式实时操作系统。
3 打印控制软件
图2为开发环境中的预览效果,有原点坐标初始化、喷头温度设置、打开文件按钮、发送按钮、串口状态显示、暂停打印按钮等。
图2 软件界面图
3.1打开文件按钮
此功能通过OpenFileDialog类实现。打开文件后,文件路径显示到界面,用SerialPort类打开串口并进行参数初始化。使用COM6端口,波特率为115 200,数据位8位,停止位1位。
3.2发送按钮
此按钮实现从G-Code文件读取一行命令,并发送到下位机。由于G-Code文件一般都是几万行,而且每行命令需发到下位机解处理后才能读取下一条。因此由于长时间未跳出button的事件处理函数,因此在发送按键的事件处理函数中新建一个线程专门用于读取G-Code文件。如果未收到下位机的反馈则挂起该线程,以保证其它的线程不受影响。
4 底层控制程序
4.1开发前准备
开发之前,需先将μCOSⅢ移植到stm32开发板上,μCOS是一个可裁剪、可固化、可剥夺型的实时内核[5]。底层控制程序主要包括以下几个模块儿。
4.2温控模块
温控模块包括测温和加热两部分。温控模块的电路图如图3所示。首先通过ADC外设获得热敏电阻的分压,从而确定其电阻,进一步根据热敏分度表获得当前温度。得到当前温度后通过PID算法,实现了快速,稳定的温度控制。
图3 温控模块电路图
4.3限位开关模块
3D打印机工作前需要将打印头回到原点,并进行一系列的初始化。这里将限位开关一端接地,另一端连接到控制板的外部中断接口。通过外部中断判断打印头是否到达原点位置。调试过程中笔者发现打印头在还未触发限位开关时,步进电机就已经停止了转动。经过反复调试,发现步进电机的脉冲信号对外部中断信号造成了干扰。解决方法为将普通的导线换成了屏蔽双绞线。
4.4串口接收模块
上位机和下位机通过串口实现通信,其中,PA9和PA10分别为串口通信的发送和接收引脚。将PA9配置为复用推挽输出模式,PA10配置为浮空输入模式,然后进行USART的初始化。当数据发送至串口触发串口中断并执行串口中断处理函数。其中需用到μCOS-Ⅲ提供的存储管理方法。
4.5命令解析模块
此模块通过有限状态机实现。本文的状态机如图4所示。当命令解析模块收到一条命令后将其分成若干段。如收到” G0 F9000 X0 Y0 Z0”后,将其分解为”G0”、”F9000”、”X0”、”Y0”、”Z0”等作为状态机的事件,根据当前状态执行不同的程序,并根据情况改变当前状态。
图4 状态机状态转换图
4.6电机控制模块
PWM在电子技术中占据着重要的地位,被广泛应用在逆变电路中。以正弦波为例,将正弦波等分成N份,利用相同数量的等幅不等宽的矩阵脉冲代替,使矩形脉冲的中点重合,且使矩形脉冲和相应的正弦波部分面积相等,就得到一系列幅值相等而宽度随正弦规律变化的矩形脉冲[8]。3D打印工作过程中需要步进电机转动精确地步数。因此直接利用定时器的PWM输出功能有一定的局限性。因此本文利用stm32的通用定时器和GPIO重新实现了步进电机电脉冲的输出控制。
本文使用通用定时器的四个通道,其中三个通道分别控制PB10、PB12、PB14输出电平,控制X、Y、Z轴步进电机的运动。另外一个控制挤出机的步进电机。在定时器中断处理函数中有四个分支。如果中断来自通道1,则改变X轴步进电机控制引脚PB10的输出电平,并且将当前比较寄存器TIMx_CCR的值加上T。通过改变T的值就可以控制PB10输出固定周期的脉冲信号。由于定时器的时钟频率为1 KHz,所以定时器的脉冲间隔T=1/1 MHz。即计数周期为1微秒。如果每计T个数,改变一次输出电平,则脉冲信号的周期为2T微秒。为了控制步进电机转动精确地步数,文章中用了X_Step变量。每走一步X_Step变量执行减1操作。一旦X_Step为0。则关闭相应通道的计时脉冲。这样就可以输出固定步数、固定周期的脉冲信号了,从而实现了对步进电机的精确控制。
5 整机调试
将上位机和下位机用于同步的控制字符显示在打印控制软件界面上。当机器运行卡住时,可以确定问题的所在。调试中,经常出现上位机发送100条左右命令时机器停止运行。通过控制字符知道问题出在下位机。通过编程软件的watch功能发现,机器停止运行时,控制电机运动的一个变量值为0。该变量直接决定脉冲信号波周期。若它的值为0,则没有脉冲信号输出。将算法优化后,问题得到了解决。目前,3D打印机已经可以持续的运行。图5为调试过程打印出的一些样品。
图5 打印样品
6 结 语
本控制系统在运行上相对稳定,是3D打印控制系统的一次新的尝试。虽然在打印效果上没有市场上的打印机完美,但是对于国内3D打印的发展有一定的借鉴和参考意义。
[1] 黄健,姜山.3D打印技术将掀起“第三次工业革命”?[J].新材料产业,2013(1):62-67.
[2] 王雪莹.3D打印技术与产业的发展及前景分析[J].中国高新技术企业,2012(26):3-5.
[3] Brian Evans.解析3D打印机[M].北京:机械工业出版社,2013.
[4] 刘铁猛.深入浅出WPF[M].北京:中国水利水电出版社,2010.
[5] Jean J Labrosse.嵌入式实时操作系统μc/OS-Ⅲ[M].北京:北京航空航天大学出版社,2012.
[6] 姜换新.ARM嵌入式系统C语言编程[J].计算机应用与软件,2003,20(10):15-16.
[7] 谭同超.有限状态机及其应用[D].广州:华南理工大学,2013.
[8] 谢可,姚鸿强.基于PWM的数字音频播放器设计[J].计算机应用与软件,2014,31(5):328-329,333.
[9] 牛晰.桌面3D打印机结构分析及机体设计研究[J].设计,2015(4):94.
DESIGN AND IMPLEMENTATION OF DESKTOP 3D PRINTER CONTROL SYSTEM
Liu JinBu Ya’nanJin YuhanSu Chen
(CollegeofComputerandInformationTechnology,LiaoningNormalUniversity,Dalian116000,Liaoning,China)
Most of the desktop 3D printer control systems on the market are basically the open source system developed by other countries. Therefore we decided to develop a 3D printing control system with the help of our tutor. The lower computer in control system operates its program on arm processor and in the environment of μCOS, and the control software of the upper computer is developed by c# in WPF frame of Microsoft. The working processes are as follows: the upper computer software reads and processes the commands in a text file, and then sends the processed commands to lower computer system through serial port. The lower system processes the commands after receiving them and controls the motions of stepper motor. Finally we debugged the system. Though there has no significant improvement in both printing effect and operation speed of printer, however as a new attempt, it proves the feasibility of this control system.
3D printingarm stm32μCOSWPF
2015-07-12。刘晋,教授,主研领域:嵌入式系统。步亚男,硕士生。金禹含,硕士生。苏臣,硕士。
TP3
A
10.3969/j.issn.1000-386x.2016.10.072