第一次发帖...之前上论坛都是查资料的,发现gcode这一块资料比较少

先说一下Gcode:

Gcode在工业控制上用的很多,是一种通用的控制指令,数控机床上经常用

在我diy雕刻机(打印机之类的)的时候要用到,遇到不少问题,研究了好几天把问题基本都解决了。

发个帖子,为以后需要用到的人提供点帮助。

arduino上,我找到的有两种Gcode编译器,GRBL和gcode_interpreter。

GRBL限制比较大,用的是arv的C语言写的,有目前较新的版本是0.8c,能用在328P的芯片上(UNO),其 他的芯片能用的不多,MEGA2560就不行了。缺点是安装麻烦,需要用到winavr生成hex文件,再用XLoader上传到UNO上。优点是效率 高,功能强大,可设置加速度等。

gcode_interpreter,优点是大多arduino都能用,用的是arduino语言写的,只要下载好代码,用arduino的IDE编译下载到板上就能用了。

先说简单的gcode_interpreter,http://sourceforge.net/projects/cncarduino/ 这是下载地址。

一共有5个文件,我们主要看的是_init.ino文件,这个文件保存的是我们要用的PIN的定义

#define X_STEP_PIN 2

#define X_DIR_PIN 3

#define X_ENABLE_PIN 4

这段代码设置了2,3,4管脚控制一个步进电机,2用来输出一次脉冲,让步进电机走一步,3用来控制方向,4用来开关步进电机(这个脚可以悬空不接,实际 上控制步进电机的就是2根线step和dir,最后还有一根地线GND)。这个地方涉及到步进电机的驱动问题,这个需要用到驱动板,不能用传统的 arduino控制步进电机的方法(除非改程序),这里推荐使用easydriver(X宝有,比较贵,但是比工业用的便宜吧)。Y_*,Z_*几个管脚 也是一样的,看你用几个轴了。我们完全可以按照上面的默认管脚接线,不用改代码....

接下来需要设置的就是

#define X_STEPS_PER_INCH 400

#define X_STEPS_PER_MM   16.0

#define X_MOTOR_STEPS    200

这个是设置步进电机属性的代码,#define X_STEPS_PER_INCH 400 是X轴转动400步,行程1英尺,

#define X_STEPS_PER_MM   16.0是16步1毫米的意思

#define X_MOTOR_STEPS    200 是步进电机200步走完一圈的意思(这个跟步进电机的型号有关,一般都是200)

设置完,下载到arduino里面就能用了。X,Z轴的设置和X的一样。

可以在arduino的串口监视器里面输入 “X10” 不包括引号,点击发送,要是安装成功 你会发现X轴的电机走了10英尺(默认是以英尺为单位)。“X-10”X轴的电机反方向走10英尺。

附一个我自己做的gcode控制画图的视频链接.视频中我用的是mega2560,gcode_interpreter。

http://pan.baidu.com/share/link?shareid=441374&uk=755352556

GRBL

注意:这个grbl官方说只能在 168 和 328P 的芯片上使用,168由于芯片空间较小,只用用0.51版的grbl。推荐用UNO r3

1、到https://github.com/grbl/grbl下载grbl的源代码,解压到一个文件夹中。

2、下载安装winavr,用grbl 的0.7版以上的,注意winavr一定要是20100110版的(比较难下2007版的居多,我把它上传到网盘里了供大家方便下 载:http://pan.baidu.com/share/link?shareid=445050&uk=755352556,),不然编译 会出错,在arduino运行的时候会显示EEPROM读取错误,不能在arduino断电以后保存设置(程序利用EEPROM保存相关设 置,gcode_interpreter没有这个设置,要改设置只能改代码)

3、打开winavr的notepad,新建空工程,将grbl的源代码全部添加到工程里。

4、进行相关管脚的设置,在config.h文件里面,在添加的文件里面找到config.h,双击打开修改

5、设置方法

#define X_STEP_BIT           2  // pin2

#define Y_STEP_BIT           3

#define Z_STEP_BIT           4

#define X_DIRECTION_BIT      5

#define Y_DIRECTION_BIT      6

#define Z_DIRECTION_BIT      7

看到这几句宏定义很熟悉吧,和前面的相似,不说了,其实完全可以不用改,按官方的设置接线就行,省了不少麻烦

6、在winavr的 programmers notepad 菜单栏点击tools->make all,将代码编译,生成hex文件(就在代码所在的文件夹)。

名字叫grbl.hex

7、用XLoader->下载地址: xloader.russemotto点com 把hex文件下载到arduino上

8、安装完成,在arduino的IDE界面打开串口监视器,就会返回信息“ Grbl 0.8c '$' *****”(**里面的字我忘了)说明安装成功了。

输入“$”,发送,就会显示菜单,输入“$$”发送,就会显示设置页面,比如"$0=500"发送,就会将X轴电机设置为500步每毫米。更多的设置大家可以自己在软件里看,每条指令后面还是会有解释的,相信大家都能看懂。

希望对需要的人能有所帮助吧,原来在弄这两个的时候没什么头绪,国内网站几乎查不到资料,辛苦好几天总结出来的经验,其中可能会有我理解不对的地方,但是两个gcode编译器我都是亲自测试能用的。

五个文件

224834kp95ib5l2295g33r.png (2.63 KB, 下载次数: 125)

2016-4-9 22:59 上传

电路图

233434k1f1zqd2o7esewev.png (91.01 KB, 下载次数: 115)

2016-4-9 22:59 上传

怎么用C语言读取gcode文件,arduino当Gcode解释程序(CNC)相关推荐

  1. R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)

    R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...

  2. c语言 读取TXT 去空格,C语言读取TXT文件,忽略文件空格,把内容写入数组中应该如何实现...

    C语言读取TXT文件,忽略文件空格,把内容写入数组中应该怎么实现? #include #include #define SIZE_view 50 struct view_info { int id; ...

  3. c语言读文件编译,C语言读取wav文件的问题,请大侠,编译问题。

    已结贴√ 问题点数:20 回复次数:5 C语言读取wav文件的问题,请大侠,编译问题. 代码如下:#include #include LRESULT CALLBACK WndProc (HWND, U ...

  4. linux下c语言读取csv文件,C语言读取csv文件

    C语言读取csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该 ...

  5. R语言读取xlsx文件

    R语言读取csv文件 关于R语言读取Excel文件,比较麻烦,我从来都反对直接读取xlsx文件,因为爬虫数据时,一般保存的格式都是csv文件,或者直接保存到数据库里面,没有谁会保存到Excel文件里面 ...

  6. R语言读取csv文件,第一列列名出现乱码的解决方法

    在利用R语言读取csv文件时,第一列列名总是出现乱码,代码如下: setwd("E:\2.Model\4. Simulation") #设定文件路径 All.Soils = rea ...

  7. R语言读取csv文件,第一列列名出现乱码怎么办

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_45075290/art ...

  8. c语言读取word文件内容,c 读取word c 读取word文档

    c++如何读取word 基本步骤(1)创建)一个 MFC 的程序工程. 注意:在VC中对WORD进行操作需要在MFC AppWizard - Step 2 of4中的Automaiton选项上打上勾. ...

  9. C语言读取txt文件内容

    C语言读取txt文件内容的代码备份. char *readLine(FILE *fp, char *buffer, int *len) {int ch;int i = 0;size_t buff_le ...

  10. 使用C语言读取properties文件V1.0

    本程序使用C语言读取类似以下格式的properties文件. path = /etc/wgetrc launch_on_start = true 下一版目标: (1)使用指针代替二维数据或者二维数据的 ...

最新文章

  1. 5m 云服务器2核4g_华为云服务器2核4G 5M 248一年
  2. 互联网协议 — DNS 域名协议
  3. android启动---lk入口文件crt0.s解析
  4. 中澜视讯产品运营总监黄超强:产品+付费+未来汽车
  5. flarum论坛如何html,简约个人小清新论坛-Flarum的快速搭建方法
  6. 轻松理解spring IOC
  7. 量子计算机设计理念和思路,课程的设计理念与思路
  8. Java内联虚拟方法调用的性能
  9. 前端学习(1264):fetch响应结果
  10. 通过一个IT管理服务提供商攻陷190个澳大利亚组织机构的邮件供应链
  11. 台达plc读取变频器电流案例_PLC模拟量信号如何转换,编程必懂!
  12. burpsuite的基本操作_burpsuite安装与基本使用
  13. win7和手机共享文件和上网
  14. android ios 屏幕直播软件推荐,看个球:超全超给力的看球直播利器(iOS +安卓) | 闲一鱼博客...
  15. 转载:24岁,我终于有了我自己的公司(一个深圳创业者故事)
  16. 系统架构演变到Spring Cloud
  17. 【2020-10-28】DS12C887+驱动
  18. 图、邻接矩阵、广度与深度优先、生成树
  19. 【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
  20. 已加密的Zip压缩包暴力破解方式Archpr+John

热门文章

  1. AEJoy —— 表达式之弹性(韧性)模拟详解【JS】
  2. Manjaro下Opencv4+CMake安装和编译指南(完整版)
  3. matlab 单输入单输出线性时不变系统,试验线性时不变系统的时域分析及MATLAB实现.DOC...
  4. 何凯明最新一作:Masked Autoencoders Are Scalable Vision Learners
  5. VMware Fusion CentOS7 下载安装及手动配置静态IP
  6. ngod规范_[转载]NGOD一些感悟
  7. 左耳朵耗子:公司监控员工行为,这事逻辑就不对
  8. K33 不是平面图_Edraw Max:一款简单好用的建筑平面图设计软件!
  9. 小米笔记本Pro黑苹果10.15.2不需要外焊USB接蓝牙,完美支持airdrop、接力、随航
  10. STM32驱动AD9833模块