5.3 功能及总体设计
本项目的核心是将Arduino开发板及其控制的步进电机,改造成数控机床,再通过PC端的软件向Arduino开发板传输的G代码指令,控制步进电机的运作和激光头的开启关闭,以达到雕刻的效果。G代码是控制数控机床常用的指令类代码,结合坐标使用,共有90多种指令,是一种集成度很高的代码。
设计主要分为G代码输入部分与激光头输出部分。G代码输入部分主要将图形转化为G代码,输入Arduino UNO开发板,开发板同时对x轴和y轴步进电机进行驱动,激光头输出部分由另一个Arduino UNO开发板控制电流输入,以达到控制开关的效果。
5.3.1 功能介绍
激光雕刻机可以将输入的矢量图或者简单的线性图案转化为G代码后雕刻到目标上,由于激光头是红色的,所以本激光雕刻机不能对反射红光的物体(如白色、红色外观的物体)进行雕刻。本项目希望能做一个相对小型的雕刻机,目前的尺寸是13cm×13cm×20cm,虽然不能达到便携,但是尺寸已经相对较小。激光雕刻可以解决一些光滑表面上雕刻的问题,并方便地留下相关的信息。
5.3.2 总体设计
本项目的激光雕刻机由输入和输出部分组成。输入部分由Grbl控制器将矢量图或者线性图案转化为G代码,输出部分使用了激光笔和步进电机,处理部分用Arduino UNO开发板。
1.整体框架图
项目整体框架如图5-1所示。
2.系统流程图
系统的流程如图5-2所示。
图5-1 整体框架图
图5-2 系统流程图
3.总电路图
系统总电路及Arduino UNO开发板引脚,如图5-3所示。其中左边的电机控制x轴方向,右边的控制y轴方向,引脚连线如表5-1所示。本项目中使用2个Arduino UNO开发板,二者的连线如图5-3所示,引脚连线如表5-2所示。
图5-3 系统及Arduino UNO开发板的总电路图
表5-1 Arduino与直流电机的连接引脚
表5-2 Arduino开发板之间连线
图5-3(a)是控制步进电机的Arduino开发板通过A4988步进电机驱动板与步进电机相连,一共有2个步进电机。它们在工作时相互垂直分为两层,共同运作达到激光笔的雕刻位置,然后在一个平面上自由移动。
图5-3(b)是激光笔的供能电路。图5-3(b)中左边的Arduino开发板与图5-3(a)中的Arduino开发板是同一块,通过12口发出使能信息,另一块板根据接收到的信息控制激光笔的亮(雕刻状态)和暗(非雕刻状态)。图5-3(b)中红色LED灯表示激光笔,激光笔有一个输入端和一个输出端,通电时发出的是红光。
5.3.3 模块介绍
本项目从硬件和软件两方面实现,其中,硬件端模块有Arduino UNO开发板上的Grbl固件模块、激光笔供能与使能模块,软件端模块有上位机Grbl Controller模块、nc文件生成软件Inkscape模块。下面分别给出各部分的功能、元件、电路图和相关代码。
1.nc文件生成软件Inkscape模块
Inkscape是一款开源软件,用于图像的处理,在本项目中,用Inkscape的一个扩展功能将想要打印(雕刻)的图案处理成Grbl Controller可以读取的路径文件(.nc),界面如图5-4所示。
图5-4 Inkscape的界面
2.Grbl Controller模块
Grbl Controller的核心功能是向Arduino发送G指令(即G代码),可以识别Inkscape软件生成的路径文件。通过USB口与Arduino UNO上的Grbl固件模块相连并向其发送G代码,界面如图5-5所示。
图5-5 Grbl Controller的界面
3.Grbl固件模块
本模块电路连接如总电路图5-3所示,由1个Arduino板与2个步进电机驱动板组成,Arduino开发板上下载的是grbl.hex文件,是由WinAVR生成的机器语言码。Arduino开发板通过USB口与PC端相接,接收有PC端的Grbl Controller发来的G代码信号,分别控制x轴电机、y轴电机的运动以及激光笔的开关。
通过Xloader向Arduino下载已有程序包grbl.hex,这样Arduino开发板就能通过USB口识别Grbl Controller发送的G代码信号,并通过A4988驱动板控制步进电机,文件如图5-6所示。需要注意pin_map.h中关于引脚号的定义语句:
图5-6 Grbl的文件及Xloader的上传操作界面
G代码的函数:
4.激光笔供能与使能模块
电路如图5-3所示,该模块通过识别Grbl固件模块中的Arduino开发板12口的使能信号控制激光笔。图5-3左边是Grbl固件模块中的Arduino开发板,右边是控制激光笔的Arduino开发板。电路部分设计成类似反向器的电路,激光笔的正极接5V电压,负极接7口并通过电阻后接地。当7口输出高电平时激光笔两端电压较小,此时激光笔不工作;当7口输出高电平时激光笔两端电压较大,此时激光笔工作。
控制激光笔代码如下: