今天我们要做的就是一台迷你CNC绘图仪!

本文用的的材料包括以下主要部件:

1. Arduino uno开发版一块

2. L293D扩展板一块

3. 舵机一只

4.废旧光驱两只

5. 导线若干

1. 拆解光驱

普通光驱的激光头移动是通过步进电机来完成的,探头移动的距离只有4cm左右,这也限制了我们的绘图仪最大只能画4*4 cm大小的图。虽然不同品牌的光驱结构有所不同,但都大同小异,尽量拆除无用的部件,只留下步进电机、导轨、移动架等必需件。

2. 测试步进电机

步进电机有四根引线,应该是两相四拍电机。可以参照下图把杜邦线剪去一头进行焊接,这样看上去会比较齐整。

由于电机没有具体参数,需要我们自己摸索。按上图对这接脚进行编号,用万用表测量电阻,发现1、2导通,3、4导通,电阻值都是14.5欧左右,其余两两均不导通。尽管不同电机排序可能不一样,但只要记住哪两根线是一组就行了。

3. 起落笔的控制

舵机可以用来控制绘图笔的起落。关于起落笔的控制装置,则只能是“八仙过海”,看各位各显神通了。给大家一个参考。这里首先制做一个杠杆装置:

然后把它固定到垂直的移动台上,把舵机放在后面,撬动杠杆一端,另一端就把笔给提起来或者放下了。

这个装置的关键之处在于笔尖在移动过程中不能存在虚位,即落笔后笔尖永远只能在一个位置,不能前后左右晃动。我们这里巧妙地利用中性笔的笔芯和外壳水平位置相对固定、而上下可以移动,实现了笔尖的精准定位,这样笔芯用完也容易更换:

4. 连线

把舵机线接在扩展板一角标有SER1或SERVO_2的针脚上,记住SER1对应的是开发板上的D10脚,SERVO_2对应D9脚,到时在程序中要修改这个参数。电源线连接。通常只有usb线供电是带不动电机的,这时候就要用到额外的电源。如下图,在开发板上有一圆孔的电源接口,理论上需接7-12V的电源,这时usb端口将不负责供电。如果把这个电源端接在电脑的另一usb口上,也会增强电流输入。但如果电流还是不够,这时就需要使用另外的电源适配器或电池组了。

软件部分相对比较复杂,需要的同学留邮箱。

5.调试

使用扩展板有专门的库文件,需要导入到arduino库文件夹中,在“网盘文件”中找到“L293d扩展板库文件.rar”,下载并解压,把文件夹“AFMotor”拷到电脑arduino的库文件夹libraries中,win7典型的位置处于“文档”下的arduinolibraries。

在“网盘文件”中找到文件夹“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文件是专门用于绘图坐标命令文件,但并不是任意该格式的文件都能用于我们的绘图仪“网盘文件”里的Inkscape.rar,在本地电脑解压缩就可以使用了。关于使用方法,里有详细视频教程。通过该软件,我们就能得到后缀名为gcode的文本文档了。

7. 与开发板的串口通信

上面得到的gcode文档需要通过串口通信传输到arduino开发板中,这里用到一个小程序。在“网盘文件”中找到“gctrl4windows.rar”下载并解压,里面有使用说明。

arduino串口绘图_一起打造一款光驱迷你绘图仪相关推荐

  1. arduino串口绘图_Arduino 串口数据可视化

    Begin 前一阵子我们学校搞什么无碳小车,要用单片机,我用的是Arduino,主要是超声波模块的使用.超声波模块代码不难,调试难啊,因为要求低延迟,我把读数周期调整到1ms,这下好了,数字哗哗的从眼 ...

  2. arduino串口绘图_Arduino IDE开发环境串口绘图仪(Serial Plotter)使用方法简介

    在过去,我们在使用Arduino开发板进行数据可视化时,都必须使用第三方或自行开发的软件才能完成工作.因此,当Arduino团队决定改善这种情况时,确实是一件令人兴奋的事情.在本篇文章中,我们一起来看 ...

  3. python和arduino串口通信_利用串行通信实现python与arduino的同步

    我有一个需要:使用arduino将伺服电机移动到某个位置并在该位置停止 让一个由python控制的相机在那个位置获取图像 当图像被采集到时,伺服机构应该移动到一个对称的位置 这个序列重复N次 所以我尝 ...

  4. 如何从stackoverflow的api 中获取是数据_教你拼多多如何选款、测款,打造出爆款。...

    一. 如何进行选款 拼多多选品是在拼多多商城开设店铺上架商品前的一个非常重要的环节,选品对与否对店铺业绩起着关键性作用,如果你选的商品好那么买的人自然也就多,商品不好自然自然就没人愿意买了.那么要如何 ...

  5. python开发闹钟_「玩转树莓派」为女朋友打造一款智能语音闹钟

    前言 最近在做智慧工厂相关的工作,多多少少了解了一点物联网相关的技术.于是心血来潮,寻思自己可以做点什么,恰巧之前听说过一些树莓派的传闻,于是就有了这么一款闹钟. 需要说明的是,在看这篇文章之前,你至 ...

  6. python 表单中值为空的还需要传入么_牛掰!100行Python,自动动手打造一款多国语言翻译软件...

    大家在平时的学习或者工作中,往往少不了要阅读外文的文献,或者将外文的文献翻译成中文.这时候就需要打开网页,然后进行搜索,非常的麻烦.既然是玩Python,小编就带领大家来打造一款多种语言翻译的软件,无 ...

  7. 接口并发如何模仿用户点击率和提交率_洞察| 五大法则揭秘!在抖音如何打造“爆款”?...

    来源丨木木老贼 作者丨木木老贼 导读:抖音如何打造爆款?怎么在眨眼间抓住注意力?本文给大家分享抖音官方公布的五条爆款法则和一个创作原则. 越来越多的人带着全村人的希望来到抖音,看到人家随便发一个吃饭视 ...

  8. azure机器学习_我如何打造一款赢得2016 Azure机器学习奖的游戏

    azure机器学习 by Déborah Mesquita 由DéborahMesquita 我如何打造一款赢得2016 Azure机器学习奖的游戏 (How I built a game that ...

  9. 迷你世界远古机器人_以我的世界生物为原型 打造17款创意庇护所

    如何欣赏一件mc的设计作品?来自Minecraft建筑大触的17款创意设计,以<我的世界>显示中存在的生物为原型,还原17套集美观与实用为一体的现代风庇护所.1.小鸡之家:以一个比< ...

最新文章

  1. 2019年pta作业第二题——求最大值及其下标
  2. VCS-bilibili教程篇1-Debug Basic
  3. 长脖子鹿省选模拟赛 [LnOI2019SP]快速多项式变换(FPT)
  4. 获取远程计算机动态ip,c# - 获取远程主机的IP地址
  5. I2C总线之(三)---以C语言理解IIC
  6. 前端学习(2567):指令的本质
  7. dell网卡linux驱动,DELL R710 服务器 Linux 系统网卡驱动安装
  8. PyTorch 1.0 中文官方教程:数据加载和处理教程
  9. Mac下启动和停止Mysql服务
  10. Windows Restart Manager 重启管理器
  11. Linux 块与文件大小
  12. Atitit 数据存储视图的最佳实际best practice attilax总结
  13. 模糊PID算法及其MATLAB仿真(2)
  14. 第四届“云鼎奖”网络投票火热进行中——入围名单一览
  15. 召唤神龙无敌版------小鱼吃大龙
  16. 商品属性的选择功能的实现
  17. 微信小程序时区时间转换
  18. sendfile相关
  19. 如何去除图片中的白色背景(变透明)
  20. C++使用CFile类文件读写

热门文章

  1. 现金流为王!中小企业如何“疫”境求生?
  2. mysql cluster cge (commercial)_Mysql 产品分类和版本说明
  3. python程序结构有哪几种_三、python程序结构之分支结构
  4. alright alright alright
  5. 银河足球队 android 8,银河足球队手机版_银河足球队安卓游戏v1.0.1-游迅网
  6. linux中gcc是什么指令,Linux gcc常用命令
  7. java三角形剪角_大班数学:拼角剪角
  8. python模拟浏览器模块,python模块学习---mechanize(模拟浏览器)
  9. Python基础教程:内置类型之真值测试
  10. Python编程核心内容 ---- Function(函数)