![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=1738883643-57lLLnd1LQ8wYciAGWujk6brOxZ55Omc-0-da95106ac076cea918b30c0392d8988e)
图5-1 整体框架图
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P142_4071.jpg?sign=1738883643-Kbs0XPIPMpG8lllOJYnXICbyS45LakoT-0-47d5b532b2074cca2b20a03938cebad7)
图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=1738883643-q6DKh67Wdb6GokSVouZhHgRHRBF2njvw-0-168411e14e1100f63abcfc795a1ff5ec)
图5-3 系统及Arduino UNO开发板的总电路图
表5-1 Arduino与直流电机的连接引脚
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-T144_11416.jpg?sign=1738883643-PHdkUa4HsV1yN58BrIYpwMLwZgl6WI5Y-0-476f5e4551a8c6abac4b157d830a240d)
表5-2 Arduino开发板之间连线
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-T144_11417.jpg?sign=1738883643-uDn8Gc9yjksXrt8FlrxIXgRDICAJTRMf-0-2f1fe99ce06fdd85cf75fbd7af1a02f1)
图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=1738883643-prBXZmOnQ4iuLULtJ5POsWb4Bc8Vqt0f-0-e687e46d1cae395e6daa5aefaf38b331)
图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=1738883643-nGh87R0qmkv7FcsaEBLLcDH8Ew8ltd7N-0-1357b7cd138b4dc7f6462e4129d837a7)
图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=1738883643-URktfJ9WfdMjs6WD72nAraaxQGBd0nC0-0-a000ff9946a1bb32a2f29a17c32263f6)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P147_4128.jpg?sign=1738883643-U6lf3kmaaiEdRVBffJh08DLPVc5v9TNs-0-b8f21d95fc196215837cbf422a780f50)
图5-6 Grbl的文件及Xloader的上传操作界面
G代码的函数:
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P148_11413.jpg?sign=1738883643-Dn0WeLmNMruM92OtsXhWphWkK7Mwkba7-0-66ac42908b0639f679f367861331e60e)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P149_11412.jpg?sign=1738883643-sRZHBitPL8eYKEoFRYQ3eChcogcS4sX3-0-4ce8f1da2b97ecfef66e3f8d229e6f1a)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P150_11411.jpg?sign=1738883643-JWZj8dmfS9SISbmXymZM80gSmtZXomC8-0-eaaa8ce0b20ea0ad35339bc17bb39024)
![](https://epubservercos.yuewen.com/1759EC/15253385105228106/epubprivate/OEBPS/Images/Figure-P151_11410.jpg?sign=1738883643-LfSwRBKEFrtKBt6fxn4Up6AZcj7ORuHo-0-54d4dc008af565125eeb0ba8522f9d6e)
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=1738883643-4f3naaFxZsJQSIrxcUe1f5KzuDjh56y4-0-9e2685c14fb5cfc7ea2329d4fb8da174)