用废旧光驱制做迷你绘图仪
来源: 无线电实验室
是不是有了创作的冲动?
那就跟随小丁踏入CNC的世界吧!
什么,你不知道CNC?
CNC英文全称叫Computerized Numerical Control,也就是“电脑数值控制”的意思,当年苹果手机就曾以CNC加工作为卖点,可时过境迁,这旧时王谢燕,也飞入咱寻常百姓家!
今天小丁要做的就是一台迷你CNC绘图仪!
本文用的的材料包括以下主要部件:
1. Arduino uno开发版一块
2. L293D扩展板一块
3. 舵机一只
4.废旧光驱两只
5. 导线若干
至于支架及固定,木头边角料+热熔胶枪是不错的选择。小丁这里先用了一些亚克力材料,据说能更美观些。
1. 拆解光驱
普通光驱的激光头移动是通过步进电机来完成的,探头移动的距离只有4cm左右,这也限制了我们的绘图仪最大只能画4*4 cm大小的图。虽然不同品牌的光驱结构有所不同,但都大同小异,尽量拆除无用的部件,只留下步进电机、导轨、移动架等必需件。
*早期有些光驱也有不用步进电机的,碰到只好另找一台了。 用胶水在滑块上粘一块平板,就是绘图平台了:
2. 测试步进电机
步进电机有四根引线,应该是两相四拍电机。可以参照下图把杜邦线剪去一头进行焊接,这样看上去会比较齐整。
由于电机没有具体参数,需要我们自己摸索。按上图对这接脚进行编号,用万用表测量电阻,发现1、2导通,3、4导通,电阻值都是14.5欧左右,其余两两均不导通。尽管不同电机排序可能不一样,但只要记住哪两根线是一组就行了。
为了测试步进电机参数,把四接脚分别接到arduino四个输出端口,按下表中从左到右的顺序通以高低电平(+代表高电平、-代表低电平),重复循环这四步则电机将按一个方向连续转动起来。将1和2对换接线,则转动方向相反(对换3、4接线效果相同)。
延长上面每步之间的时间间隔,这样可以数出电机转动一周的步数,这应该是4的整数倍。我们所用的光驱电机是20步/圈,这是一个重要参数。
3. 起落笔的控制
舵机是一只能在0度到180度之间转动的电机,里面由多组齿轮进行减速,所以力气(力矩)还蛮大的,可以用来控制绘图笔的起落。关于起落笔的控制装置,则只能是“八仙过海”,看各位各显神通了。
小丁也把自己的装置放上来,给大家一个参考。这里首先制做一个杠杆装置:
然后把它固定到垂直的移动台上
把舵机放在后面,撬动杠杆一端,另一端就把笔给提起来或者放下了。
这个装置的关键之处在于笔尖在移动过程中不能存在虚位,即落笔后笔尖永远只能在一个位置,不能前后左右晃动。我们这里巧妙地利用中性笔的笔芯和外壳水平位置相对固定、而上下可以移动,实现了笔尖的精准定位,这样笔芯用完也容易更换:
4. 连线
由于使用了L293D扩展板,我们的连线变得很简单整洁。
i)把L293D扩展板安装在arduino开发板上,它们是配套的,插脚对准了一扣就行。
ii)把步进电机引线接在扩展板的四个电机输出端,在电路板上分别标着M1、M2、M3和M4,它们是两两在一起的,中间夹着一个接地的端口。把X轴的
步进电机引线接到M1和M2,其中导通的两根引线接同一个M端口;同理把Y轴的电机接在M3和M4上。
iii)把舵机线接在扩展板一角标有SER1或SERVO_2的针脚上,记住SER1对应的是开发板上的D10脚,SERVO_2对应D9脚,到时在程序中要修改这个参数。 iv)电源线连接。通常只有usb线供电是带不动电机的,这时候就要用到额外的电源。如下图,在开发板上有一圆孔的电源接口,理论上需接7-12V的电源,这时usb端口将不负责供电。如果把这个电源端接在电脑的另一usb口上,也会增强电流输入。但如果电流还是不够,这时就需要使用另外的电源适配器或电池组了。
软件部分相对比较复杂,不过好在小丁已经给大家准备好了“CNC大礼包”,里面不仅有所需的所有软件,相关软件文件夹中均附有使用说明,还有使用的视频指导。复制下面百度盘链接,选择在浏览器中打开:
https://pan.baidu.com/s/1mia8FrU
如果链接失效,请在“无线电实验室”公众号对话框中回复“绘图仪”,将会给你发送最新的链接。
5. arduino程序调试
使用扩展板有专门的库文件,需要导入到arduino库文件夹中,在“CNC大礼包”中找到“L293d扩展板库文件.rar”,下载并解压,把文件夹“AFMotor”拷到电脑arduino的库文件夹libraries中,win7典型的位置处于“文档”下的arduinolibraries。
在“CNC大礼包”中找到文件夹“Mini_CNC_Arduino_Plotter”,里面是写入arduino的程序代码和需要修改的参数说明文档。用arduino编译器打开代码,修改相应参数后写入到开发板中。注意选择正确的串口端口:
打开编译器的串口通讯界面,选择回车结尾,此时你就可以输入命令了,不分大小写。
通电前电机的起始位置被认为是(0,0),如输入
G1 X20 Y20
则笔会移动到(20,20)的坐标点,单位(mm),再输入
G1 X30
则笔从当前位置移动到(30,?),Y轴保持不变,再输入
G1 Y35
则笔从当前位置移动到(?,35),X轴保持不变。
如果要提笔,则输入
M300 S50
如果要落笔,则输入
M300 S30
以上就是我们调试所要的全部命令,首先通过移动X轴或Y轴来确定步进电机移动方向,如果方向反了,就把相应电机上其中一对引线互换。其次要确定提笔和落笔位置对应的舵机转动角度,通过反复测试调整到最佳角度。
6. 准备图像文件
gcode文件是专门用于绘图坐标命令文件,但并不是任意该格式的文件都能用于我们的绘图仪。好在小丁已经为大家量身定制了这一套软件,而且是绿色版的,你只要下载“CNC大礼包”里的Inkscape.rar,在本地电脑解压缩就可以使用了。关于使用方法,里有详细视频教程,不怕你学不会哦。
通过该软件,我们就能得到后缀名为gcode的文本文档了。
7. 与开发板的串口通信
上面得到的gcode文档需要通过串口通信传输到arduino开发板中,这里用到一个小程序。在“CNC大礼包”中找到“gctrl4windows.rar”下载并解压,里面有使用说明。
通过该程序,gcode文档里的命令就一条一条发送到绘图仪。
下面通过一段绘图仪工作视频来一睹它的风彩
疑难解答
如果你发现画出的图像出现杂乱,那么画完后笔通常回不到原点,这是因为笔在作图过程中“滑丝”了。如果不是机械故障导致电机在某个方向上卡住了,那么就是电源的电流不足、步进电机带不动所致。此时你需要采用输出电流更大的电源来带动电机。
由于电机功率较大,工作时间久了L293D扩展板上的芯片会发烫,所以也要做好散热。简单的做法是在芯片上面放几枚硬币。