OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6901|回复: 9

燕大无协第三届DIY(二等奖)作品:DIY小型光驱激光雕刻机

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
发表于 2015-5-4 21:47:50 | 显示全部楼层 |阅读模式

    历时整整一个月的小型激光雕刻机终于完工了,参加完比赛,心情也平复下来了,来分享一下我做这台激光雕刻机的经历吧。小型激光雕刻机,关键就是这个雕刻机他比较小,而且省钱啊。目的什么的啊就是玩啊。
废话不多说先来几张美图




好了,现在我们把元件清单列出来:旧光驱2个(建议多准备一个做备用);
                                                       easydriver步进电机驱动板2块;
                                                       废木板;
                                                       Arduino ATMega系列开发板一块;
                                                       洞洞板1块(搭电路使);
现在我们可以愉快的拆光驱了。首先大概看一眼整个光驱(三星的感觉好心痛)


卸开背面的螺丝



里面原本有一块步进电机组件,但是我拿出来了就在电路板下面。


就是这个啦步进电机组件,从别的地方盗的图,嘿嘿,但东西都一样哦。然后拆除上面的直流电机,就是图上黄框里面的。


下面就是小心翼翼的拆激光头了在滑竿上那一部分上面有好多螺丝,全给他卸了,不用管安得回不回去,直管拆喽,还有好多棱镜用胶粘的可牢固了,我是拿热风枪吹下来的,结果吹化一个塑料棱镜废了。
剩下的棱镜在这里只有四个了,不,里面还有透镜




这是拆下来的激光头,很小哦,但威力很大有木有。拆了三个光驱一个烧了,一个是方的,还有一个就是这个还是坏了的,没办法稍微花了点钱在某宝上买了一个激光发射器,质量还不错哦。


用废木板搭好架子,上面有两根用一次性筷子拿胶粘的支撑架用来支撑步进电机组件。


这是组装好以后的样子,后面电路图是这样的


这是电路图,二极管就代表激光发生器了,步进电机驱动板需要外用电源5V就可以啦。
后续会发布程序该如何编写的。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-4 23:27:38 | 显示全部楼层
不错啊,楼主大几啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-5-3
在线时间
3 小时
发表于 2015-5-5 07:28:37 | 显示全部楼层
回复【2楼】正点原子:他是一年级的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-5 10:51:31 | 显示全部楼层
回复【3楼】zy234567:
---------------------------------
不错,前途无量
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
 楼主| 发表于 2015-5-5 20:19:45 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
是的,学长今年刚大一。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-5 20:31:01 | 显示全部楼层
回复【5楼】精锐计划:
---------------------------------
那你还是高中生?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
 楼主| 发表于 2015-5-5 21:31:18 | 显示全部楼层
激光雕刻机的原理是这样的通过读取从上位机上下载下来存在闪存里的G代码,分析以后再控制步进电机驱动板,步进电机驱动板easydriver控制步进电机转相应的步数以及方向。在网上看到大家大多使用的是GRBL的程序,抑或G-code,GRBL怎么说呢非常好使,也有专门的上位机发送G代码,但是问题是只能作用于ATMega328系列的开发板,其他mega系列使用不了,让人好郁闷。G-code可以改引脚,可以说G-code是通用的,但是有一个问题是它没有上位机,也就是说没有办法朝里面发送G代码,你自己还得写上位机。
怎么办呢?改程序呗既然GRBL好用,那咱就改嘛。还好改动不大,只需要稍做改动即可。
[mw_shl_code=c,true]#define STEPPING_DDR DDRD #define STEPPING_PORT PORTD #define X_STEP_BIT 2 // Uno Digital Pin 2 #define Y_STEP_BIT 3 // Uno Digital Pin 3 #define Z_STEP_BIT 4 // Uno Digital Pin 4 #define X_DIRECTION_BIT 5 // Uno Digital Pin 5 #define Y_DIRECTION_BIT 6 // Uno Digital Pin 6 #define Z_DIRECTION_BIT 7 // Uno Digital Pin 7 #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) #define STEPPERS_DISABLE_DDR DDRB #define STEPPERS_DISABLE_PORT PORTB #define STEPPERS_DISABLE_BIT 0 // Uno Digital Pin 8 #define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT) #define LIMIT_DDR DDRB #define LIMIT_PIN PINB #define LIMIT_PORT PORTB #define X_LIMIT_BIT 1 // Uno Digital Pin 9 #define Y_LIMIT_BIT 2 // Uno Digital Pin 10 #define Z_LIMIT_BIT 3 // Uno Digital Pin 11 #define LIMIT_INT PCIE0 // Pin change interrupt enable pin #define LIMIT_INT_vect PCINT0_vect #define LIMIT_PCMSK PCMSK0 // Pin change interrupt register #define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits #define SPINDLE_ENABLE_DDR DDRB #define SPINDLE_ENABLE_PORT PORTB #define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12 #define SPINDLE_DIRECTION_DDR DDRB #define SPINDLE_DIRECTION_PORT PORTB #define SPINDLE_DIRECTION_BIT 5 #define COOLANT_FLOOD_DDR DDRC #define COOLANT_FLOOD_PORT PORTC #define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3 [/mw_shl_code] [mw_shl_code=c,true]#ifdef ENABLE_M7   #define COOLANT_MIST_DDR   DDRC   #define COOLANT_MIST_PORT  ORTC   #define COOLANT_MIST_BIT   4 // Uno Analog Pin 4 #endif   // NOTE: All pinouts pins must be on the same port #define PINOUT_DDR       DDRC #define PINOUT_PIN       PINC #define PINOUT_PORT      ORTC #define PIN_RESET        0  // Uno Analog Pin 0 #define PIN_FEED_HOLD    1  // Uno Analog Pin 1 #define PIN_CYCLE_START  2  // Uno Analog Pin 2[/mw_shl_code] [mw_shl_code=c,true] #define PINOUT_INT       PCIE1  // Pin change interrupt enable pin #define PINOUT_INT_vect  CINT1_vect #define PINOUT_PCMSK     PCMSK1 // Pin change interrupt register #define PINOUT_MASK ((1<<IN_RESET)|(1<<IN_FEED_HOLD)|(1<<IN_CYCLE_START)) #define CMD_STATUS_REPORT '?' #define CMD_FEED_HOLD '!' #define CMD_CYCLE_START '~' #define CMD_RESET 0x18 // ctrl-x [/mw_shl_code]

这是GRBL里面config.h里面相关引脚的定义当然这是328的,我用的是mega2560的开发板,下面我们稍微改一下,使程序在2560上也可以用。
[mw_shl_code=c,true]  #define STEPING_DDR DDRA #define STEPING_PORT PORTA #define STEPING_PIN PINA #define X_STEP_BIT 2        //24 #define Y_STEP_BIT 3        //25 #define Z_STEP_BIT 4        //26[/mw_shl_code] [mw_shl_code=c,true] #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) [/mw_shl_code] [mw_shl_code=c,true] #define DIRECTION_DDR     DDRC   #define DIRECTION_PORT    ORTC   #define DIRECTION_PIN     PINC   #define X_DIRECTION_BIT   7        //30   #define Y_DIRECTION_BIT   6        //31   #define Z_DIRECTION_BIT   5        //32[/mw_shl_code] [mw_shl_code=c,true] #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK)[/mw_shl_code] [mw_shl_code=c,true]  #define STEPPERS_DISABLE_DDR   DDRB   #define STEPPERS_DISABLE_PORT  ORTB   #define STEPPERS_DISABLE_BIT   7 //13   #define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)[/mw_shl_code] [mw_shl_code=c,true]   #define LIMIT_DDR       DDRB   #define LIMIT_PORT      ORTB   #define LIMIT_PIN       PINB   #define X_LIMIT_BIT     4      //10   #define Y_LIMIT_BIT     5 //11   #define Z_LIMIT_BIT     6          //12   #define LIMIT_INT       PCIE0     #define LIMIT_INT_vect  CINT0_vect    #define LIMIT_PCMSK     PCMSK0   #define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT))     #define SPINDLE_ENABLE_DDR      DDRH   #define SPINDLE_ENABLE_PORT     PORTH   #define SPINDLE_ENABLE_BIT      3 //6   #define SPINDLE_DIRECTION_DDR   DDRE   #define SPINDLE_DIRECTION_PORT  PORTE   #define SPINDLE_DIRECTION_BIT   3 //5   #define COOLANT_FLOOD_DDR     DDRH   #define COOLANT_FLOOD_PORT    PORTH   #define COOLANT_FLOOD_BIT     5    //8   #ifdef ENABLE_M7     #define COOLANT_MIST_DDR    DDRH     #define COOLANT_MIST_PORT   PORTH     #define COOLANT_MIST_BIT    6    //9   #endif     #define PINOUT_DDR       DDRK   #define PINOUT_PIN       PINK   #define PINOUT_PORT      PORTK   #define PIN_RESET         0 //Analog 8   #define PIN_FEED_HOLD     1 //Analog 9   #define PIN_CYCLE_START   2   //Analog 10   #define PINOUT_INT       PCIE2     #define PINOUT_INT_vect  PCINT2_vect   #define PINOUT_PCMSK     PCMSK2   #define PINOUT_MASK ((1<<PIN_RESET)|(1<<PIN_FEED_HOLD)|(1<<PIN_CYCLE_START))  [/mw_shl_code] [mw_shl_code=c,true] #define CMD_STATUS_REPORT '?' #define CMD_FEED_HOLD '!' #define CMD_CYCLE_START '~' #define CMD_RESET 0x24 [/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code]
改完了将这一段定义引脚的代码覆盖以后,在将程序烧写到开发板里以后,就应该可以使用了。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
 楼主| 发表于 2015-5-5 21:36:13 | 显示全部楼层
有部分引脚定义落到注释里面了,望谅解
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
 楼主| 发表于 2015-5-5 21:38:45 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
大一,拜托
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-5 22:35:16 | 显示全部楼层
回复【9楼】精锐计划:
---------------------------------
回复【4楼】正点原子: 
--------------------------------- 
是的,学长今年刚大一。

这句话的意思是:您的学长今年才大一。
那么你肯定比大一还要少一届或者多届,自然我就想到高中了。。。。


理解有误,不好意思。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表