diysmt电子网

 找回密码
 注册会员
查看: 7310|回复: 97

搞了个通用下位机,基本搞好了,请网友提提建议。

  [复制链接]

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2011-7-6 22:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
使用零碎时间,编了个贴片机通用下位机,总算有点进展了。

请坛友广提意见。

以下介绍版权所有,请勿盗用。 http://friendz.blog.163.com

================================

最近正在编写贴片机通用下位机,框架已经拉出来,还有些细节需要补充。考虑了一下,把方案发出来大家看一下,如果有什么建议和补充可以提出。这个如果编写基本完善了,将推出一个公益版本,可供网友免费使用,对发现的BUG也会持续更新。公益版本会发布一个电路图和单片机的ROM文件,可供网友使用,这个版本唯一的限制是最高贴片速度,以防止无良商人拿去商用,(速度可满足业余玩家个人使用)其它一概不限制。如果公益版本成功,或可推出一个商用版本,使用FPGA/MCU结合的版本,采用网络或USB接口进行通讯,可供高要求的玩家使用。不过公益版本永久免费,会持续更新。

下位机整体构架使用了Friendz比较熟悉的PIC单片机,目前使用的是较容易找到的PIC18F452,原本想使用更广泛应用的PIC16F877A,结果容量不太够,现在用PIC18F452,完成基本功能已经用了70%左右的容量。这种单片机有40个引脚,可使用DIP40的封装,玩家容易DIY。比较麻烦的是把ROM文件烧录到芯片中去,如果没有烧录器可以找周围有PIC系列烧录器的朋友代烧。买一个也行,几十元的也有。我会找时间研究一下串口Boot loader的编制方法,这样可以一次烧好Boot Loader,以后用串口就可更新下位机固件。

单片机目前的IO情况如下,先讲输出信号:4个脉冲4个方向,可以控制X/Y/Z/A四个轴的运动,脉冲输出最高速率可调,可设置为10K/5K/2K/1K/0.5K/0.2K。脉冲可设置梯形加减速的长度,斜率暂不可调,以后更新或可加入斜率可调的选项。由于贴片机运动的特殊性,因此设置成X/Y/A三轴可连动,也可单独运动每一个轴(控制命令下面会再行说明),Z轴可单独控制,X/Y/Z可执行带零点开关的复位。另外还有两个单独的输出控制,初步预想是一个控制真空的开关,一个控制Z轴的升降(气缸形式的Z轴试用,与上面提到的Z轴不矛盾,可同时使用)。 除这些输出信号外,还有4个通用输出可用,每个都可单独控制高低电平。 输入的引脚有4个零位置开关,另有5个通用输入引脚,可采集IO状态。

单片机目前采用串行口与上位机通讯,波特率可由一个输入引脚控制,选择9600bps或38400bps。以后或可改为USB口通讯的。由于USB端口的特殊性,有可能会影响单片机输出脉冲的连续性,因此首先用串行口实现功能,没有串行口的计算机可以使用USB转串口。

目前设计的工作方式如下: 单片机加电,输出版本信息,并等待上位机的设置命令。用到的设置命令目前有8个,分别是X/Y/Z/A的软件极限值的设置,脉冲速度的设置,加减速曲线长度的设置以及两个数字量输出的极性。设置完毕后,进入使用状态,主要命令有:归零点、移动X/Y/Z/A、控制输出端口动作、采集输入端口的状态以及整机状态。目前可设想的控制命令就这么多。

由于每个贴片机DIY者使用的贴片机都不同,单片机的运算功能又比较有限,本人Friendz的下位机使用的是绝对脉冲数的控制方式,而移动的绝对位置信息由上位机来计算。这样的好处是上位机有强大的运算功能,可计算出每个位置信息需要移动的脉冲数,通知下位机,下位机只要可靠的按指令运行相应的步数即可,无需进行大量浮点运算,以提高脉冲流频率和响应速度。本下位机的最大脉冲数是99999,10万个脉冲一般可满足精度0.005mm的脉冲运行500mm,一般应用也可够用。发送命令在执行完毕后均会有带有信息序号的OK或ERR的反馈,上位机可得知是否运动到位或发生了错误。

举个移动控制命令的例子,使用 $GotoPX01000Y01000A00000 命令使下位机运行至X=1000, Y=1000的飞达取料位置;用 $DNNOZ 将吸嘴下移(气缸方式),或 $MTOZRZ00200 将Z轴下移至200脉冲的位置(电机方式);使用$VACUU控制真空打开;再用 $UPNOZ 将吸嘴上移(气缸方式),或 MTOZRZ00000 将Z轴上移至0脉冲的位置(电机方式);用 $GotoPX00200Y00050A00900 命令使下位机运行至X=200, Y=50的贴片位置,同时贴片头旋转至A=900个脉冲的角度;用 $DNNOZ 将吸嘴下移(气缸方式),或 $MTOZRZ00400 将Z轴下移至400脉冲的位置(电机方式);使用$NOVAC控制真空关闭;再用 $UPNOZ 将吸嘴上移(气缸方式),或 $MTOZRZ00000 将Z轴上移至0脉冲的位置(电机方式);这样就完成了一个取料、打料的步骤。用列表的方式写出来,就是:

$GotoPX01000Y01000A00000

$DNNOZ 或 $MTOZRZ00200

$VACUU

$UPNOZ

$UPNOZ 或 $MTOZRZ00000

$GotoPX00200Y00050A00900

$DNNOZ 或 $MTOZRZ00400

$DNNOZ

$NOVAC

$UPNOZ 或 $MTOZRZ00000

若是采用拖料带的送料方式,也没问题,只是多了两个控制命令。 多提供的IO输入输出可以用于辅助设备的用途,比如开/关视频校准的照明开关,或者采集电动飞达的目前状态,或者采集气源压力情况/真空压力情况。可以拓展思路来使用,不限于以上的介绍。

单片机的IO分配情况如下:(干脆把我程序的预处理指令列在下面:)

#define BaudRatePin pin_a0  //波特率选择输入

#define Status1Pin pin_a1   //5个通用输入口

#define Status2Pin pin_a2

#define Status3Pin pin_a3

#define Status4Pin pin_a4

#define Status5Pin pin_a5


#define RefXpin pin_b4   //4个零位置开关

#define RefYpin pin_b5

#define RefZpin pin_b6

#define RefApin pin_b7


#define PulseXpin pin_D0   //4个轴的脉冲输出

#define PulseYpin pin_D1

#define PulseZpin pin_D2

#define PulseApin pin_D3


#define DirXpin pin_D4   //4个轴的方向输出

#define DirYpin pin_D5

#define DirZpin pin_D6

#define DirApin pin_D7


#define UpDownNozzle pin_c0    //吸嘴真空的输出

#define OnOffVacuum pin_c1       //真空的控制输出


#define GPIO4 pin_c2     //4个GPIO输出端口

#define GPIO1 pin_B1

#define GPIO2 pin_B2

#define GPIO3 pin_B3

游客,如果您要查看本帖隐藏内容请回复

10

主题

48

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2011-7-6 23:42 | 显示全部楼层
咔咔,顶楼主了,不过太高深了,看不懂

35

主题

287

帖子

3678

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3678
发表于 2011-7-7 10:55 | 显示全部楼层
如果楼主已经做好下位机,我可以配合的写一个串口输出的上位机。只要把我现在的并口输出格式做下编码,从串口发出去即可。我不管下位机怎么反应那些的哦。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-7 18:54 | 显示全部楼层
今天测试了所有的功能,改掉一些BUG,现在已经能正常工作。

明天完善一下,争取拍一段演示视频上传给坛友围观一下。

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-7 19:28 | 显示全部楼层
支持!顶楼主了!架好机架等待试用!

0

主题

3

帖子

1

积分

新手上路

Rank: 1

积分
1
QQ
发表于 2011-7-7 21:23 | 显示全部楼层
回复 1# Friendz


    强力支持楼主的这种方案

4

主题

92

帖子

4

积分

新手上路

Rank: 1

积分
4
QQ
发表于 2011-7-8 02:24 | 显示全部楼层
这段时间都在看这方面的贴子,强烈支持一下楼主

74

主题

307

帖子

33

积分

管理员

阿范

Rank: 9Rank: 9Rank: 9

积分
33

最佳新人灌水之王突出贡献论坛元老

发表于 2011-7-8 07:26 | 显示全部楼层
探讨SMT贴片机DIY技术,交流diysmt贴片机知识!

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-8 21:25 | 显示全部楼层
奇怪,网页顶端的“| 提醒 短消息 论坛任务 | 个人中心 退出 ” 好多打不开的,有些分论坛也打不开,不知道出了什么问题,我两台电脑都这样子。

74

主题

307

帖子

33

积分

管理员

阿范

Rank: 9Rank: 9Rank: 9

积分
33

最佳新人灌水之王突出贡献论坛元老

发表于 2011-7-9 00:22 | 显示全部楼层
谢谢提醒,已修复
探讨SMT贴片机DIY技术,交流diysmt贴片机知识!

1

主题

14

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2011-7-9 12:54 | 显示全部楼层
强力支持楼主

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-9 21:51 | 显示全部楼层
多谢支持!

本想发布个BETA版,结果测试发现了个小BUG: 很多次来回移动之后,位置会有一点点漂移,估计是脉冲的相位的问题,等改进了这个问题再发布。

经过和我的贴片机试联机,功能都可正常使用,当然还有一些不完美的地方,这就是所谓的三七律,即用30%的时间可以完成70%的工作,剩下的30%的工作量需要用70%的时间来不断完善。

35

主题

287

帖子

3678

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3678
发表于 2011-7-10 00:14 | 显示全部楼层
我想问一下,你的下位机带FIFO没有?因为上位机发送数据时很快的。是不是要等下位机发送一个动作完成的指令,上位机才发下一条指令?

3

主题

12

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2011-7-10 10:09 | 显示全部楼层
晕,你的想法和我一样呀,我也是想用这种方式,我也是用PIC单片机,现在想上位机如何做

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-10 15:05 | 显示全部楼层


目前搞这个下位机,是给没有条件搞电子的朋友设计的,功能没有很复杂,下位机收到一条指令,执行一条指令,返回OK,上位机再发下一条指令。 由于是公益版,速度上不会过分追求。

商用版可以做个支持脱机运行的,比如用U盘插入到下位机上,下位机读取脚本命令来执行。公益版暂不考虑这些内容。

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-11 21:56 | 显示全部楼层
持续顶到楼主放测试版
自己用M8做的效率实在太低

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-12 10:30 | 显示全部楼层
M8和 PIC 18 系列性能差不多的吧,为什么效率会低呢?

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-12 13:55 | 显示全部楼层
新手学编程,各种资源运用不恰当。。。所以很蛋疼
搞了一星期只搞定步进电机梯形加速曲线,但只能输出一路。。。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-12 16:51 | 显示全部楼层
新手学编程,各种资源运用不恰当。。。所以很蛋疼
搞了一星期只搞定步进电机梯形加速曲线,但只能输出一路 ...
61797826 发表于 2011-7-12 13:55



    速度最快的一路做参照,其他几路按照比例输出就可以了。

具体可以去查找小数加法器一类的资料,呵呵,点到为止了。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-12 17:12 | 显示全部楼层
应网友的要求,终于搞了个功能测试的视频,终于可以工作了,看看真面目吧,嘿嘿:




其实这个三轴联动的小控制器,还可控制其他设备,比如DIY的点胶机、各种小机电控制设备等。再完善一下就放出电路图和单片机ROM文件。



BTW,至坛主, 论坛好多功能又不能用了。

74

主题

307

帖子

33

积分

管理员

阿范

Rank: 9Rank: 9Rank: 9

积分
33

最佳新人灌水之王突出贡献论坛元老

发表于 2011-7-12 23:22 | 显示全部楼层
已经OK,服务器不给力啊,希望以后一直都好用
探讨SMT贴片机DIY技术,交流diysmt贴片机知识!

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-13 00:29 | 显示全部楼层
又改了一下程序,M8可以输出双路了,加速同时加,减速不同时减,最高运行速度一样
想给M8L超频到12M结果烧了。。。买20M的M8继续折腾。。。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-13 08:37 | 显示全部楼层
用定时器中断,不一定要主频很快的。 当然,快些更好,下一版本我准备用PIC32的80MIPS的单片机来做。

41

主题

59

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2011-7-13 10:57 | 显示全部楼层
楼主可以做,上位机+下位机配套的吗,单单下位菜鸟玩不转啊,难道用MACH3控制?

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-13 11:33 | 显示全部楼层
哪位大大能搞个实用的上位机就完美了

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-13 13:06 | 显示全部楼层
djkc 兄弟做了上位机呀,带视频功能的,估计要等他有时间时可以和这个下位机做个接口。

今天再测试一下,OK的话就放出 beta 版本。

74

主题

307

帖子

33

积分

管理员

阿范

Rank: 9Rank: 9Rank: 9

积分
33

最佳新人灌水之王突出贡献论坛元老

发表于 2011-7-16 09:29 | 显示全部楼层
期楼主的大作,对于简易的贴片机应用帮助还是蛮大的。
探讨SMT贴片机DIY技术,交流diysmt贴片机知识!

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-16 12:31 | 显示全部楼层
好的。 这两天忙个急活,完成了就推出下位机方案。

1

主题

45

帖子

1

积分

新手上路

Rank: 1

积分
1
QQ
发表于 2011-7-18 16:25 | 显示全部楼层
这么做 ,要投入不少啊  ,
时间  和  金钱

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-18 20:56 | 显示全部楼层
限制一下最高运行速度,然后放出来给喜欢用的网友玩玩,应该是没有坏处的,主要是自己需要用得到,已经基本研制好。

不久就可发布。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-19 13:45 | 显示全部楼层
串口的 BOOT LOADER 还没有完全搞好,或者说时间太少,没有仔细研究,考虑是否放出无 BOOT LOADER 的版本。

BOOT LOADER 的好处是只需要烧录一次,以后可以通过上位机来升级固件,不用每次都用芯片烧录器来升级。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-19 13:55 | 显示全部楼层
去淘宝转了一圈,看到PIC单片机的烧写器最便宜的只要15元一只,看来串口升级固件的研究的必要性不太大了,想玩下位机的用这种烧录器即可。

pic烧写器.jpg

多谢大家支持! 近期即可公开公益版的电路图和固件!

17

主题

53

帖子

33

积分

新手上路

有只老化真奇怪

Rank: 1

积分
33
发表于 2011-7-19 19:55 | 显示全部楼层
没有教程的话,我等菜鸟,还真是用不起来哦
两只老虎,两只老虎,真奇怪,真奇怪,一只没有尾巴,一只没有耳朵,正奇怪。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-19 21:09 | 显示全部楼层
好,发布固件时配合详细说明。

1

主题

6

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2011-7-20 11:35 | 显示全部楼层
顶,期待中。

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-23 10:23 | 显示全部楼层
测试中不断发现新的小BUG,因此迟迟没有推出。 这个下位机起码能在我自己DIY贴片机上成功应用后,才好推出公益版,有需求的朋友再等几天啦。

2

主题

47

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2011-7-23 12:13 | 显示全部楼层
哦,是什么样子的东东呢

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-23 13:19 | 显示全部楼层
继续等楼主

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-24 17:29 | 显示全部楼层
哦,是什么样子的东东呢
diyer 发表于 2011-7-23 12:13



    最终发布的是固件、电路图和应用说明。

玩家可以自己搭一个小电路,烧好固件,就可有自己的下位机了。

74

主题

307

帖子

33

积分

管理员

阿范

Rank: 9Rank: 9Rank: 9

积分
33

最佳新人灌水之王突出贡献论坛元老

发表于 2011-7-26 13:03 | 显示全部楼层
赞,适合自己编上位机的大侠们,其他恐怕是用不起来的
探讨SMT贴片机DIY技术,交流diysmt贴片机知识!

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-28 10:50 | 显示全部楼层
等一个串口上位机,我的M8下位机也凑合能跑了
控制参数是:
x轴y轴旋转方向动作
xy0-65535
旋转0-65535
方向0-255,分成2进制0位X正反,1位Y正反,2位旋转正反
动作254吸料255放料 1-128是打飞达 0不动

返回读取成功,操作成功,撞车,一个0-255

单片机只控制跑,怎么跑,跑哪里还是上位机决定

2

主题

83

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-7-28 10:56 | 显示全部楼层
PS:用M48,超频到22M
贴片嘴预计做成音圈电机的
还不知道怎么做,哪位高人可以指点一下

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-7-28 15:31 | 显示全部楼层
方案差不多,我的这个是控制运动到绝对位置,因为每个人的送料装置区别很大,所以下位机直管接受命令运动,飞达位置什么的都由上位机管。

10

主题

48

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2011-9-7 23:23 | 显示全部楼层
可以用USB口连接吗?串口很多电脑都不带了,

24

主题

302

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2011-9-11 11:15 | 显示全部楼层
这个免费的下位机固件,可以使用USB转串口。

初步设想下位机商用版的是三接口的,串口、USB、网络。

10

主题

48

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2011-9-15 08:12 | 显示全部楼层
楼主可以提供成品吗,有淘宝最好了

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-12-16 20:23 | 显示全部楼层
赞一个,敬礼

0

主题

23

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2011-12-17 20:10 | 显示全部楼层
LZ什么时间放一个试用版出来用下呀

0

主题

7

帖子

1

积分

新手上路

Rank: 1

积分
1
发表于 2011-12-22 20:48 | 显示全部楼层
呵呵 看看如何

0

主题

7

帖子

1

积分

新手上路

Rank: 1

积分
1
发表于 2011-12-26 00:21 | 显示全部楼层
laozi laile
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|diysmt电子网 ( 粤ICP备07031441号 )

GMT+8, 2018-5-27 15:51 , Processed in 0.225018 second(s), 35 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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