![Arduino案例实战(卷Ⅳ)](https://wfqqreader-1252317822.image.myqcloud.com/cover/543/26793543/b_26793543.jpg)
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所示。
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P142_4068.jpg?sign=1738796362-wfwv269bkafniCo2DWQO39JryVwRgYrg-0-d0fe28dc2d9ac0634aa3521a9b075055)
图5-1 整体框架图
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P142_4071.jpg?sign=1738796362-pUKgianqTHtWnGqAexzv7W3BpUMEnaHo-0-ddd537f6bed148c109515bb38b98a33a)
图5-2 系统流程图
3.总电路图
系统总电路及Arduino UNO开发板引脚,如图5-3所示。其中左边的电机控制x轴方向,右边的控制y轴方向,引脚连线如表5-1所示。本项目中使用2个Arduino UNO开发板,二者的连线如图5-3所示,引脚连线如表5-2所示。
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P143_4077.jpg?sign=1738796362-MLZyMUyyDncweQWtMJmP736ah4zGx9e9-0-82427cea593c498c9d707130ede4b4c8)
图5-3 系统及Arduino UNO开发板的总电路图
表5-1 Arduino与直流电机的连接引脚
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-T144_11416.jpg?sign=1738796362-oLbT2KVPd84LNHiKaIfIsovY4xfP0XsV-0-2b371e1656f5e78b4c13ec55e4867323)
表5-2 Arduino开发板之间连线
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-T144_11417.jpg?sign=1738796362-gCfYv1EpBWKGR992Iar12uaRSLnPYCmj-0-d21f3153ac7c232a365476efcf16842d)
图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所示。
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P145_4115.jpg?sign=1738796362-hVXTr3xRuLCr7fGJYG6ZsTArI67WaBV7-0-11fbf1bc0b339d2c5ec0a6c3e4e00170)
图5-4 Inkscape的界面
2.Grbl Controller模块
Grbl Controller的核心功能是向Arduino发送G指令(即G代码),可以识别Inkscape软件生成的路径文件。通过USB口与Arduino UNO上的Grbl固件模块相连并向其发送G代码,界面如图5-5所示。
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P146_4121.jpg?sign=1738796362-b4VbJJ3ByJTtsFgNBSo4bjzeg8nmeBBt-0-2769eb984a0a6df73c9a896ff22df3a3)
图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中关于引脚号的定义语句:
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P147_4127.jpg?sign=1738796362-siBQ2ne1umvs7qVlkZQdEl8ctsv5GSda-0-8732f68d1f1f3837fc27ad205b1c6ace)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P147_4128.jpg?sign=1738796362-m13Je6NlokCrZsaJtaiRlQf8heeI5DLS-0-18fb3fbcda5497f935c7b785dc08c58f)
图5-6 Grbl的文件及Xloader的上传操作界面
G代码的函数:
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P148_11413.jpg?sign=1738796362-blM1NY8Q3Zm8RkeDYlF3bek6gEsrhf9F-0-d45fa4a46c7337d87373b91040a834b2)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P149_11412.jpg?sign=1738796362-zJ0LitE1GDkQWbIzrHJAIl2c11441g5F-0-74b32a2881387980a2857781a5396af8)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P150_11411.jpg?sign=1738796362-nyFwW8yv7PepkSK5fZrGau0jX5HqDuHt-0-c91c742ec1111a1ab1c9e5e9857eae96)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P151_11410.jpg?sign=1738796362-9WEz3lbotZk4DAWZz1hb8lWucMWSSzjG-0-d33012d92b1b9f4b46458c7b5371205e)
4.激光笔供能与使能模块
电路如图5-3所示,该模块通过识别Grbl固件模块中的Arduino开发板12口的使能信号控制激光笔。图5-3左边是Grbl固件模块中的Arduino开发板,右边是控制激光笔的Arduino开发板。电路部分设计成类似反向器的电路,激光笔的正极接5V电压,负极接7口并通过电阻后接地。当7口输出高电平时激光笔两端电压较小,此时激光笔不工作;当7口输出高电平时激光笔两端电压较大,此时激光笔工作。
控制激光笔代码如下:
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P151_11409.jpg?sign=1738796362-qkZy2ZX4H9uiKuLSI0mGcsX31Qff8DjM-0-6f50b462a8d4c246d4465c2c76e897ec)