谭秀腾,郭小定,李小龙,余亮
湖南科技大学信息与电气工程学院,湖南湘潭 411201
基于ARM的桌面型3D打印机控制系统设计
谭秀腾,郭小定,李小龙,余亮
湖南科技大学信息与电气工程学院,湖南湘潭 411201
针对基于单片机为控制器的桌面型3D打印机控制系统中存在的处理速度慢、片外芯片多、电路复杂、打印质量不高等问题,设计了基于ARM为控制器的桌面型3D打印机控制系统。系统采用了NXP公司推出的基于ARM Cortex-M3内核的LPC1768微控制器,用它进行与上位机通信、数据处理、模拟量采集与处理、信号控制,选用A4988专用两相步进电机驱动器实现步进电机细分驱动,简化步进电机细分驱动的设计,行程开关电路采用GK152红外光电传感器.软件采用了PID方式调节加热床、挤出机加热温度。文中论述了控制系统主要硬件电路设计和软件的实现流程,系统测试表明性能良好.
Cortex-M3;LPC1768;桌面型3D打印机;PID调节;步进电机/A4988
3D打印(即三维打印、增材制造),也称作快速成型技术,具有不受零件复杂程度限制,完全数字化控制,无需开磨具等特点[1],因此3D打印机在生产应用方面有着巨大的潜力。3D打印机主要分为入门级和工业级2种[2]。文中介绍的桌面型3D打印机为入门级,系统采用的工艺类型为熔融挤出成型。目前桌面型3D打印机控制系统主要采用AVR系列单片机作为核心控制器,该系列单片机工作频率较低、内部外设少,致使该系统数据处理速度慢、电路复杂、调试困难、抗干扰能力差。因此文中设计了基于ARM的桌面型3D打印机控制系统。
控制系统的核心CPU选用基于ARM Corxtex-M3内核的LPC1768微控制器,控制系统主要完成对步进电机的控制、挤出机加热电阻和加热床的温度控制、挤出机工作零点与行程的控制;读取SD卡存放的配置文件、打印数据文件;通过USB与上位机通信。
控制系统的总体框图如图1所示。控制系统的供电通过电源电路提供。系统通过LPC1768微控制器的片内SPI接口读取SD卡里的配置文件、打印数据文件,通过片内USB接口实现与上位PC机进行可靠快速通信,保证打印数据文件及时正确传输,同时上位机可通过USB接口给系统发送控制命令。两路输出数字信号分别控制加热床加热电路和挤出机加热电路中的低通电阻NMOS功率开关管,实现加热床及挤出机中加热电阻的加热。温度传感器电路的两路模拟量经片内A/D转换通道输入,实现加热床、挤出机温度的检测和控制。四路步进电机驱动电路分别控制X、Y、Z这3个轴的步进电机及挤出机的步进电机,实现打印件的打印。三路行程开关电路定位X、Y、Z轴的原点和运动相对位移量。ISP/JTAG接口用于测试程序的烧写与调试。
图1 基于ARM的桌面型3D打印机控制系统结构
2.1 LPC1768微控制器电路
LPC1768微控制器含有丰富的内部外设使得该处理器特别适合运动控制应用,能够实现单片控制。LPC1768芯片采用32位操作,工作频率可达100 MHz,采用3级流水线和哈佛结构,带独立的本地指令和数据总线以及用于外设的第三条总线[3-4],因此具有数据处理速度快的特点。外设组件包括高达512 KB的Flash存储器,64 KB的数据存储器,保证了程序及数据处理的空间;USB主机/从机/OTG接口;SPI接口;8通道的12位ADC、10位DAC;4个通用定时器;多达70个通用I/O引脚、标准JTAG测试/调试接口,便于程序调试与程序烧写。因此采用LPC1768无需外部扩展就能实现控制系统的所有功能。LPC1768微控制器电路如图2所示。LPC1768微控制器电源电压为3.3 V;磁珠L7把数字电源和模拟电源分开,磁珠L8把数字地和模拟地分开,电路减少了数字信号与模拟信号的相互干扰;主振荡器接12 MHz晶振作为CPU的时钟源,RTC振荡器接32 kHz提供RTC时钟输出,作为PLL0、CPU和看门狗定时器的时钟源;S2为微控制器复位按键;TDO、TDI、TMS、TRST、TCK、RST为JTAG接线端口;EXTRUDER_Heat、BED_Heat端口分别连接挤出机、加热床电路,EXTRUDER_Temp、BED_Temp端口分别连接两路温度传感器电路;SD_ SSEL、SD_SCK、SD_MOSI、SD_MISO端口连接SD卡电路;由于行程开关电路电源为+5 V,微控制器电源为+3.3 V,Opto_X_IN、Opto_Y_IN、Opto_Z_IN端口需要接上拉电阻进行电压转换,然后分别接三路行程开关电路;USB_D_P、USB_D_N、USB_Connect、USB_VCC、USB_UP_Led端口接USB通信接口电路。MZ_DIR、MZ_EN、MZ_STEP等端口分别接四路步进电机驱动电路。
图2 LPC1768微控制器电路
2.2 步进电机驱动电路设计
步进电机采用两相四线混合式42系列步进电机,工作电压为24 V,额定相电流为1.7 A,步进精度为5%。步进电机驱动芯片采用Allegro带转换器和过流保护的DMOS微步驱动器A4988。A4988是一款完全的微步电动机驱动器,可在全、半、1/4、1/8及1/16步进模式时操作两相步进电机,输出驱动性能可达35 V及±2 A。能够为系统所选步进电机提供足够的输出功率。带有内置转换器,易于操作,无须进行相位顺序表、高频率控制行或复杂的界面编程[5]。A4988包括一个固定关断时间电流稳压器,该稳压器可在慢或混合衰减模式下工作。在微步运行时,A4988内的斩波控制可自动选择电流衰减模式(慢或混合)。混合衰减电流控制方案能减少可听到的电动机噪音、增加步进精确度并减少功耗,降低驱动芯片的温度,提供内部同步整流控制电路,以改善脉宽调制(PWM)操作时的功率消耗。内部电路保护包括带滞后的过热关机、欠压锁定及交叉电流保护,不需要特别的通电排序。
A4988步进电机驱动器及外围电路如图3所示。LPC1768微控制器只要控制ENABLE、DIR、STEP这3路端口就能完全实现步进电机的运动。ENABLE端口使能A4988内部的FET输出,ENA-BLE端口输入为高电平时不使能输出,电机不运动,处于锁紧状态;只有ENABLE端口为低电平时使能输出,电机才可以运动。DIR端口输入信号控制步进电机的正反转,为高电平时,步进电机顺时针旋转,为低电平时,步进电机逆时针旋转。STEP端口输入微步信号,如果LPC1768微控制器按工作频率给STEP端口输入上升沿微步信号,就能够控制步进电机工作。通过调节开关S10、S11、S12控制细分步进量,细分方法如表1所示。
表1 步进控制逻辑表
为了克服步进电机运行时存在的低频振荡、高频出力不足容易失步以及定位精度不高等缺点[6],文中系统采用1/16步进量细分法,同时能够使步进电机具有良好平滑运行性能。StepMotor_1B和StepMotor_1A引脚分别连接到2相步进电机其中一相线圈的两端,StepMotor_2B和StepMotor_2A引脚分别连接到2相步进电机其中另一相线圈的两端。电容C29是电荷泵电容产生一个高于VIN1的门电平,另外VIN1与VCP端口之间加一个100 nF的电容C40,同时用来驱动A4988中DMOS源端门。滑动变阻器P5提供REF端口电压经内部DAC给电压比较器同相输入端,SENSE1、SENSE2端口的R74、R75电阻取样输出电流给电压比较器反相输入端,当R74、R75两端电压等于内部DAC输出时,A4988输出关闭。本电路的最大输出电流为ITrip-MAX=VREF/(8×RS)=(3.3×10)/(39+10)/8× 0.047=1.79 A。调节P5,可使步进电机工作在1.7 A的额定相电流。
图3 步进电机驱动电路
2.3 行程开关电路
系统中行程开关采用光电器件,克服了接触式行程开关存在响应速度慢、精度差、接触检测容易损坏被检测物及寿命短等缺点,且体积小、寿命长、精度高、响应速度快、检测距离远以及抗光、电、磁干扰能力强[7]。LPC1768微控制器输入端口采用下降沿中断模式,保证了信号的实时处理,提高了控制的精确度。行程开关电路如图4所示。关电开关放置在各个轴运动的零点,当一个轴或多个轴往零点运动时,如果固定在轴上的挡片运行到U1 GK152光电器件槽内,挡片挡住了连接在1、2脚上的发光二极管发出的光,U1的3脚输出高电平,Q1导通,OUT端口输出低电平信号。微控制器通过判断端口信号是否为下降沿信号来控制步进电机运动。
图4 行程开关电路
2.4 USB通信接口电路
LPC1768微控制器内部含有USB通信接口,不需要外加USB接口芯片就能实现与上位机通信。文中系统采用USB从机模式,数据传输速度最高达12 Mb/s,因此保证了数据的及时准确度,提高了抗干扰能力,减少了电路板的面积。USB通信接口电路图如图5所示,USB_Connect端口在软件控制下,该端口用于切换R87、1.5kΩ外部电阻;USB_VCC端口用于监控USB总线电源的存在;USB_D_N端口和USB_D_P端口用于数据传输;USB_Up_Led端口连接发光二极管用于显示通信状态。
图5 USB通信接口电路
2.5 温度传感器电路
温度传感器采用负温度热敏电阻,温度传感器电路如图6所示。
图6 温度传感器电路
BED_NTC1,BED_NTC2两端外接用于控制加热床的热敏电阻,EXTRUDER_NTC1,EXTRUDER_ NTC2两端外接用于控制挤出机的热敏电阻。BED_ Temp端口、EXTRUDER_Temp端口分别连接微控制器用于读取加热床的加热温度、挤出机的加热温度。
控制系统软件具有通信、数字信号的控制和数据读取与处理等功能,能实现系统的控制要求。系统主程序主要包括系统初始化;通过SPI接口读取SD卡中的配置文件(SD卡中如果有配置文件,替换初始化中的配置文件;如果SD卡中没有配置文件,使用初始化时的配置文件);判断是否有数据通过USB接口接收上位机发送的数据(如果有读取上位机发送的数据,把数据保存在串口接收缓存区;如果没有上位机发送的数据,读SD卡中打印数据文件并保存到SD卡接收缓存区);然后处理接收的数据,如果超过30 s没有数据处理,关闭程序控制功能并停止步进电机。软件主流程图如图7所示。当使用SD卡保存打印数据文件时,不需要与上位机连接,使系统工作在脱机打印状态就可以独立完成打印任务。初始化程序主要包括关中断、中断优先级和中断向量表的设置;系统时钟源初始化;SPI串口初始化;系统节拍定时器初始化;定时器0/1初始化;A/D转换初始化;I/O引脚初始化;使能步进电机驱动器A4988的ENABLE引脚;配置文件初始化等。
图7 主程序流程
3.1 步进电机控制程序
由于步进电机的极限启动频率比较低,而运行速度比较高,以要求的速度直接启动步进电机不能正常启动,因此步进电机在整个运行过程中需要有一个加速-恒速-减速停止的过程。速度控制是通过控制系统的脉冲频率或换向周期来实现的[8]。步进电机控制采用定时器1中断实现。通过中断读取串口接收缓存区中的数据或SD卡接收缓存区中的数据,计算出步进电机需要运行的总步数、加速步数、恒速步数、减速步数以及步进电机运行方向。然后通过程序判断并给相应的方向引脚和步进引脚脉冲信号从而实现步进电机的正反转运动。步进电机控制程序流程图如图8所示。
图8 步进电机控制流程
图9 温度控制流程
3.2 温度控制程序
温度控制程序实现了加热床、挤出机的温度控制。通过10 ms的定时器中断读取温度传感器上的电压模拟量,计算转换成数字量,再根据温度转换表将数字量转换成相应的温度值,与设定的参考温度比较实现温度的控制。在软件设计中,采用了PID方式调节温度,从而有效地控制温度的偏移,提高了打印件的质量。温度控制流程图如图9所示。
通过上位机软件显示的实际测试温度曲线如图10所示。给出2种控制方式的设定温度为180℃,PID参数为Kp=22.2,Ki=1.08,Kd=114。
从图中温度曲线可以看出,PID调节的温度较无PID调节的温度曲线稳定,无PID调节的温度与设定温度大约有10℃的波动,且温度偏高,有PID调节的温度趋近于设定的温度。
图10 实际测试挤出机温度曲线
3.3 实验结果
实验样机和正在打印3D模型如图11所示。
图11 实验样机
文中以基于ARM的LPC1768芯片为控制核心,给出了实现桌面型3D打印机控制系统的软硬件设计方法。采用LPC1768微控制器提高了处理数据的能力,加快了打印速度,行程开关使用光电器件,减少了打印件各层的偏移,通过PID调节温度减少了打印件断丝,粗糙等挤出材料不均匀现象,提高了打印质量。样机测试运行结果表明,系统运行性能稳定,打印质量满足了设计要求。
[1]刘厚才,莫健华,刘海涛.三维打印快速成形技术及其应用[J].机械科学与技术,2008(9):1184-1190.
[2]王雪莹.3D打印技术与产业的发展及前景分析[J].中国高新技术企业,2012(26):3-5.
[3]孙安青.ARM Cortex-M3嵌入式开发实例详解—基于NXP LPC1768[M].北京:北京航空航天大学出版社,2012:1-6.
[4]NXP Semiconductors Inc.LPC17xx user manual[EB/OL].[2013-09-08].http://www.nxp.com.
[5]Allegro Microsystems Inc.A4988 microstepping dmos driver with translator data sheet[EB/OL].[2013-09-10].www.allegromicro.com.
[6]刘鼎邦.两相混合步进电机细分驱动的研究[D].长沙:长沙理工大学,2012:14-22.
[7]吴金宏,张连中,刘丽娜.光电开关及其应用[J].国外电子元器件,2001(5):14-18.
[8]李智强,周杰,任胜杰.基于单片机的步进电机细分驱动控制系统[J].机电工程,2007,24(7):67-69.
Design of desktop 3D printer control system based on ARM
TAN Xiuteng,GUO Xiaoding,LI Xiaolong,YU Liang
School of Information and Electrical Engineering,Hunan University of Science and Technology,Xiangtan 411201,China
The desktop 3D printer control systems with a sigle-chip controller have problems of slow processing speed,more pieces of outside chips,circuit complexity and poor quality of printing.To solve these problems,a desktop 3D printer control system with an ARM controller is designed.The system employs the LPC1768 microcon-troller based on ARM Cortex-M3 core which is introduced by the NXP and used to communicate with the host com-puter,data processing,analog acquisition and processing,signal control,used A4988 special two-phase stepper motor driver to implement stepper motor subdivision drive and to simplify the drive design for stepping motor.The travel switch circuit adopts GK152 infrared photoelectric sensor.The software adopted PID method in order to adjust the heating temperature of heating bed and extruder.This paper discusses the main hardware circuit design and soft-ware realization process of the control system.The System testing shows good performance.
Cortex-M3;LPC1768;desktop 3D printer;PID regulator;stepping motor/A4988
TP23
A
1009-671X(2014)05-057-06
10.3969/j.issn.1009-671X.201310013
2013-10-20.
日期:2014-09-24.
湖南省科技厅资助项目(2011TT2030).
谭秀腾(1982-),男,硕士研究生;
郭小定(1963-),男,教授.
郭小定,E-mail:1336436647@qq.com.
http://www.cnki.net/kcms/doi/10.3969/j.issn.1009-671X.201310013.html