基于Arduino的3D打印机热床自平衡调节设计

王淼军++韦海成++肖明霞+魏鑫



摘 要: 针对3D打印机热床人工手动调节步骤繁琐及精度低的问题,提出一种自动平衡调节的方法,并设计了调平装置。此调平装置以Arduino mega 2560为主控模块,使用步进电机作为调平动作单元,结合螺杆传动,实现打印机热床平台的平衡调节;使用接触式限位开关,实现热床平台下降原点的定位;通过测试的方法编写校正路径程序,以模拟打印的方式实现3D打印设备与调平装置的协同工作。实验表明,采用的细分驱动可实现步距角为0.112 5°微调,大大提高了3D打印机热床平衡调节的精度;使用双重滤波的方法实现了通信脉冲序列的有效计数,并从软件层面解决了步进电机的抖动问题。
关键词: Arduino; 自平衡; 步进电机; 细分驱动
中图分类号: TN305.94?34 文献标识码: A 文章编号: 1004?373X(2017)12?0108?05
Abstract: Aiming at the problems of tedious step and low accuracy of the hot bed mannual regulation for 3D printer, a autobalance regulation method is proposed, and a leveling device is designed. In order to realize the balance regulation of hot bed platform of the printer, the Arduino mega2560 is taken as main?control module of the leveling device, and the stepping motor is used as the leveling action unit in combination with screw drive. The contact?type limit switch is used to locate the descending origin of the hot bed platform. The test method is adopted to compile the path correct procedure to realize the cooperative work between 3D printing equipment and leveling device in the manner of simulation print. The experimental results show that the subdivision driving can realize the fine tuning with 0.1125° step angle, improve the regulation accuracy of hot bed balance of 3D printer greatly. Effective count of the communication pulse sequence was realized with the dual?filtering method, and the vibration problem of the stepper motor was solved with software .
Keywords: Arduino; self?balance; stepping motor; subdivision driving
0 引 言
3D打印技术越来越受到人们的重视,被广泛应用于加工制造、航空航天、医疗修复、教育科研等相关领域[1?4]。随着开源电子设计平台的兴起,许多电子发烧友也相继开发出各种各样的3D打印机,使得3D打印技术在人们的日常生活中越来越普及。目前常用的3D成型技术多为FDM(Fused Deposition Modeling),即熔融沉积技术[5],通过热塑性材料加热融化逐层堆积的方式实现3D物品的打印成型。与传统的磨具制造相比,3D成型具有加工周期短、成本投入低、材料利用率高等优点[6]。但与此同时,在3D打印的操作过程中普遍存在打印热床平衡调节的问题。针对平台调平问题,谢志江等人通过对4点支撑伺服平台调平的研究,提出了“预置点”的调平概念[7]。何冰怀等人通过可编程计算机控制器(PCC)结合双轴倾角传感器,以交流伺服电机为执行机构,对多点调平系统进行了研究[8]。张芳等人采用“逐追式”算法设计了四点支撑刚性平台,实现了高精度的平台调平控制[9]。王艳波等人设计了采用双边半直圆柔性铰链实现调平、单边半直圆柔性铰链实现调心的自动调平装置[10]。
然而上述研究的调平多是以水平面作为参照系,但3D打印机的调平是指3D打印机喷头同一打印层运动路径与热床平面之间的相对平行,传统的调节方式是通过人工手动调节3D打印机热床四个角的羊角螺母,实现3D打印机热床平衡的调节。但对于高精度的3D打印产品而言[11],传统的人眼目测、手工调节不仅步骤繁琐,而且精准度低。
针对此问题,本文提出了一种3D打印机热床自动平衡调节的方法,并基于开源的电子原型平台Arduino设计了自动平衡调节装置,实现了3D打印机热床高精度的自动平衡调节。
1 调平原理
实物如图1所示,调平装置以Arduino mega 2560作为主控单元[12],用于完成与3D打印机的通信协作以及调平装置对应点的升降操作。升降点的执行机构包括步进电机和限位开关,步进电机用于驱动螺杆推动螺母完成平台校正点的升降,限位开关用于确定点校正过程中下降操作的原点位置。
热床自动平衡的调节方法如图2所示,根据调平装置的四个升降点A,B,C,D坐标位置,编写3D打印机校正路径文件。校正路径文件一方面用于3D打印机与调平装置的协同动作(调平装置通过对3D打印机通信脉冲序列的计数选择升降调节的动作点),另一方面用于控制3D打印机喷头完成調平装置限位开关下降原点的触发。
当开启热床调平时,首先通过3D打印上位机控制软件pronterface使喷头原点复归,然后使用模拟打印的方式加载路径校正文件。为了使在调平过程中不发生机械碰撞损坏,在编写路径校正文件时,先使喷头在原点处上升3 mm,然后在此平面内,喷头依次经过各点的上方,逐次完成各点高度的校正。
为实现对各点动作顺序的控制,在路径校正文件中加入3D打印供料动作,通过挤出头步进电机模拟供料的方式发出脉冲序列,调平装置主控单元通过对脉冲序列的有效计数选择校正点(本设计中脉冲序列的计数1,2,3,4分别对应A点、B点、C点、D点)。
在校正点的升降调节过程中,3D打印机喷头每到达一个点的上方,便发出脉冲序列,然后在升降点上方停滞6 s。调平装置主控单元根据脉冲序列计数,控制校正点步进电机带动平台校正点限位开关上升,直至此点的限位开关被3D打印机喷头触发。触发后调平主控单元以触发点为原点,控制平台校正点下降3 mm,完成当前点高度的校正。
2 系统设计
2.1 硬件系统设计
调平装置的硬件系统组成如图3所示。A,B,C,D四个升降校正点的执行机构分别使用不同的I/O端口进行控制,主控单元采用Arduino mega 2560,其工作电压为5 V,内部自带16 MHz的晶振时钟,具有54路的数字输入/输出接口,16路的模拟输入接口,I/O口驱动电流可达40 mA。通信方面支持多种串口传输方式。在具体设计中,脉冲接收端口用于对3D打印喷头脉冲序列的计数。主控单元通过步进电机驱动模块A4988对校正点的步进电机进行控制[13],四路限位开关分别完成不同校正点的限位触发。为了提高调平精度,传动机构使用螺距为1 mm的螺杆。
2.2 软件系统设计
调平装置的软件设计使用Arduino语言,在Arduino IDE开发环境下完成程序的调试编译及下载[14]。软件总体设计流程如图4所示,开启调平后,调平装置主控单元先进行复位,主要包括与限位开关连接的I/O口高低电平设置、脉冲计数器的清零、脉冲序列计数器的清零、步进电机驱动模块A4988工作模式的选择等。复位完成之后调平装置主控模块开始对3D打印机通信脉冲序列进行扫描并计数,然后根據计数值的不同选择相应的点进行高度的校正调节。待通信脉冲序列计数等于4时,完成最后一个点(D点)的校正,调平动作结束。
为了防止外部干扰引起调平装置升降点的误动作,在程序设计中,通过定义全局变量lock,在逐点校正的子程序中不断改变全局变量lock的值,并将其作为下一个校正点子程序调用判断条件的一部分,以此从软件层面进一步确保了升降点动作顺序的正确性,从而防止误动作。
3 功能模块设计
3.1 校准路径文件设计
3D打印机热床平衡的调节是以打印喷头在同一z轴高度运动路径的平面作为参考系,且在平衡调节过程中需要打印喷头对热床平面上的限位开关进行触发,故需要对3D打印机喷头的运动路径进行设定。本设计通过编写G?CODE文件的方式对3D打印机喷头的运动路径进行规划[15],控制3D打印机产生驱动脉冲,实现调平装置与3D打印设备的协调同步;控制3D打印喷头在对应升降点上方的停滞(6 s),并完成对限位开关的触发。在设计中,借助3D打印上位机控制软件pronterface,使用逐条发送语句的方式对热床平台四角限位开关的位置进行空间定位,然后根据空间坐标进行校正路径文件编写(G?CODE代码),其运动路径如图5所示。
3.2 脉冲通信模块设计
要实现调平装置与3D打印机的协同动作,需对其动作时序进行合理的设定。3D打印机所发出的驱动脉冲是通过挤出机的供料步进电机动作产生,其实质为周期固定的连续脉冲序列,如图6所示。为了使调平装置能通过对脉冲序列的有效计数实现对校正点的选择,在程序设计中,调平装置主控单元对同一脉冲序列的前3个有效脉冲进行计数,当脉冲计数变量pluseNumber大于3时,脉冲序列变量pluseSerialNumber计数加1,然后根据pluseSerialNumber的值控制对应点的步进电机进行升降调节。
程序使用顺序结构,当步进电机进行升降调节时,不再对当前脉冲序列的后续脉冲进行计数。在步进电机完成升降动作之后还要进行短时间延时,预留一定的时间裕度,以避开对当前脉冲序列后续脉冲的计数,直至下一脉冲序列的到来。
为了避免噪声扰动引起的误计数,在脉冲序列计数程序设计中,当采集到脉冲高电平之后要进行2个50 μs的延时;在每个50 μs的延时后分别对脉冲信号的电平进行采集。当3次采样的结果均为高电平时,才进行一次有效的脉冲计数。
3.3 步进电机驱动模块设计
步进电机是一种将电脉冲信号转化为角位移或线位移的开环控制机构[16],当步进引脚接收到一个脉冲信号时,就会在方向引脚指定的方向运动一个步距角。其步进距离仅由驱动脉冲个数决定,步距精度在3%~5%之间,且步与步之间的误差不会累加,具有较高的定位精度。本设计采用两相四线制混合式42系列步进电机,其工作电流为12 V,额定工作电流为1.5 A,步距角为1.8°,具备短时间的耐高压能力,最大径向力可达28 N(20 mm边缘为标准)。
为提高调平装置的调节精度,本设计选用A4988驱动模块对步进电机进行细分驱动处理,其步进角选择方式如表1所示。A4988输出电压高达35 V,输出电流为2 A,具有较强的驱动能力。本文通过将A4988的模式控制引脚MS1,MS2,MS3全部设置为高电平,选用1/16的步进模式。此模式下步进角仅为0.112 5°,大大提高了3D打印机热床的调平精度。
A4988内部自带换向器,通过对步进模式设定以后,只需对“步进引脚(STEP)”、“方向引脚(DIR)”进行控制即可完成对步进电机的驱动操作,大大地降低了电路的设计难度,同时简化了程序设计。电路连接如图7所示,A4988的逻辑电压VDD及GND由Arduino mega 2560的5 V供电引脚提供;电机驱动电源引脚VCCMOT与GNDMOT使用12 V的外接直流电源供电。STEP引脚决定步进电机的行程,DIR引脚的逻辑电平决定步进电机的转向。本设计中,DIR引脚低电平时步进电机带动调平装置对应点限位开关上升,高电平时下降。设计中,为实现步进电机的消抖处理,将步进电机的使能引脚EN使用专门的I/O口进行控制。
3.4 升降点控制模块设计
升降点高度校正的好坏直接影响3D打印机热床平衡调节的精度,程序设计流程如图8所示。在系统上电复位后时,调平装置主控单元根据对3D打印机通信脉冲序列的计数,控制对应点步进电机进行升降校正。在使能A4988驱动模块时,DIR引脚默认为低电平,先使步进电机带动平台校正点向上移动。为了提高校正精度,步进电机每进一步都要进行限位开关的触发判断,使其步距角控制在0.112 5°。当限位开关触发时,根据触发信号,将DIR引脚设置为高电平,此时步进电机以触发点为原点,带动平台校正点向下移动3 mm,完成当前点的高度校正。
为避免在升降调节过程中因过调导致调平装置的机械损坏,在程序设计中通过设置步进计数变量stepperNumber,将步进电机上升的调整范围设定在5 mm。当stepperNumber=48 000时,即在步进电机带动校正点上升5 mm的过程中,对应点的限位开关未被触发,则通过蜂鸣器进行报警提示。
为了消除步进电机在静态情况下的抖动现象,在程序设计中,初始化阶段并未对A4988进行使能。而是在对应点步进电机需要动作时,在其子程序内部才对其进行使能。待步进电机完成动作退出子程序时,重新对其使能端进行关断,这样有效消除了步进电机在静态情况下的抖动。
4 功能实现及分析
对调平装置各分模块设计的可行性进行验证,然后对系统进行联调并测试分析。
4.1 脉冲通信功能的实现
脉冲通信主要完成3D打印机与自动调平装置的协同工作,测试结果如图9所示。
3D打印机发出的脉冲为周期固定的脉冲序列,脉冲序列之间的间隔大约为6 s,每个脉冲序列中的脉冲的高电平持续时间约为200 μs。在检波程序中,每一个脉冲序列,对其高电平时间持续100 μs的脉冲进行有效计数,当1个脉冲序列中存在3个以上的有效脉冲时,脉冲序列数计数加1。通过串口输出测试,检波程序可很好地完成脉冲序列的计数。主程序通过脉冲计数值的不同,调用对应点步进电机动作的子程序,完成此点的高度校正。
4.2 对应点升降校对功能的实现
对应点的升降校正是通过对步进电机的控制来完成,调平装置的调节精度主要取决于限位开关触发的实时性,此部分功能主要是对步进电机在限位开关触发后的反转特性进行验证。功能测试结果如图10所示。
当升降校正启动时,步进电机DIR引脚为低电平,步进电机带动平台对应点上升;当限位开關被触发时,DIR引脚立刻由低电平转化为高电平,且STEP引脚停止脉冲输出,步进电机立刻停转,具有很好的触发实时性。经过100 ms延时之后,步进电机STEP引脚继续输出驱动脉冲,此时DIR引脚为高电平,步进电机反向运动,带动平台下降3 mm。
4.3 步进电机消抖功能实现
针对调试过程中步进电机静态情况下的抖动问题,本设计从软件编程层面予以解决,对步进电机在静态情况下驱动引脚的电压输出波形进行测试,结果如图11所示。在静态情况下,未进行消抖处理前,步进电机驱动管脚的制动电压波形具有较明显的毛刺,步进电机产生较大的抖动噪声。在进行消抖处理之后,步进电机制动电压的输出波形明显平稳,步进电机无抖动现象。
4.4 联调结果
经上位机加载联调测试,3D打印机喷头可按照G?CODE文件设定的路径运动,并产生通信脉冲序列与调平装置协同动作;调平装置在收到脉冲以后可对脉冲序列进行有效计数,并控制相应点的步进电机完成当前点高度的校正,最终实现3D打印机热床的自动平衡调节。使用陀螺仪对喷头路径平面及热床调平前后相对于地面的倾斜角度分别进行测量,结果如表2所示。
由测量结果可知,经自动调平以后,热床相对于地面的倾斜角度与喷头路径平面相对于地面的倾斜角度基本一致,空间三轴的倾斜误差分别为:Δx=0.14°,Δy= 0.22°,Δz=0.06°。
5 结 语
针对3D打印机热床平衡调节的问题,本文提出了一种自动平衡的调节方法,并进行了调平装置的软硬件设计与实现。与传统人眼目测手工调节相比,本文所提出的自动平衡调节方法具有速度快、精度高、操作简单等优点。此调平方法直接对热床与打印喷头的运动平面进行调平,对设备的机械结构精度要求依赖较低,不仅在3D打印机,而且在车床、铣床、点胶机等工业设备,此调平方法及装置都具有一定的参考及实用价值。
参考文献
[1] 李小丽,马剑雄,李萍,等.3D打印技术及应用趋势[J].自动化仪表,2014(1):1?5.
[2] 吴复尧,刘黎明,许沂,等.3D打印技术在国外航空航天领域的发展动态[J].飞航导弹,2013(12):10?15.
[3] 杨帆,杨延坤,郑宏.3D打印技术在先天性心脏病诊疗中的应用[J].中国介入影像与治疗学,2014(9):629?631.
[4] 薛芳,韩潇,孙东华.3D打印技术在航天复合材料制造中的应用[J].航天返回与遥感,2015(2):77?82.
[5] 唐通鸣,张政,邓佳文,等.基于FDM的3D打印技术研究现状与发展趋势[J].化工新型材料,2015(6):228?230.
[6] 周勇,傅蔡安.基于DEFORM?3D的微型螺钉冷成形过程有限元分析[J].机械设计与制造,2008(3):109?111.
[7] 谢志江,高健,刘小波,等.4点支撑伺服平台自动调平机理研究[J].机械制造,2011(9):67?70.
[8] 何兵怀.多点调平系统的研究[D].成都:电子科技大学,2014.
[9] 张芳.高精度平台调平控制系统研究[D].太原:中北大学,2008.
[10] 王艳波.自动调平调心精密平台的研究[D].西安:西安工业大学,2013.
[11] 兰红波,李涤尘,卢秉恒.微纳尺度3D打印[J].中国科学:技术科学,2015(9):919?940.
[12] KOENKA I J, S?IZ J, HAUSER P C. Instrumention: an open?source modular Python framework for controlling Arduino based experimental instruments [J]. Computer physics communications, 2014, 185(10): 2724?2729.
[13] 蓝杰,张浩然.基于STM32的微型步进电机驱动控制器设计[J].微型机与应用,2015(1):43?46.
[14] 刘楚红,董镇,钱宇捷,等.基于Arduino的倒车雷达系统设计[J].现代电子技术,2014,37(17):148?150.
[15] 刘冲,杨代华,张晓婷.基于工控机的G代码编译程序设计[J].机械设计与制造,2007(5):60?62.
[16] 古志坚.基于单片机的步进电机控制系统研究[D].广州:华南理工大学,2013.