5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: [原创]边干边写之——打造最小的运动控制及步进驱动电路(持续更新中)。。。 [打印本页]

作者: DreamonII    时间: 2012-11-19 15:06
标题: [原创]边干边写之——打造最小的运动控制及步进驱动电路(持续更新中)。。。
本帖最后由 DreamonII 于 2012-11-19 20:02 编辑

花了小半个月,做了个马达驱动电路,和一个二轴运动控制电路。。。

马达驱动可以驱动两个直流电机正反转和无级调速(相当于一个双电调)或一个两相四线步进电机,

步进电机只支持单4拍,双4拍和8拍方式,电流只有1A。。。
(, 下载次数: 37)

运动控制可以完成直线和圆弧插补,
速度挺快的,
可惜为了适应不给力的驱动,
只好把速度降下来了。。。
实测用16细分驱动器能跑到单轴400RPM。
(, 下载次数: 29)

半夜拍的视频,光线不好,凑和看吧。。。




还差个步进驱动模块没焊,
只能看到X轴的情况。。。
循环跑这样的路线:

先跑一段X,再跑一段Y(X不转),再跑一段45度(X半速),然后跑了个整圆(X变速正反转)


作者: DreamonII    时间: 2012-11-19 15:11
本帖最后由 DreamonII 于 2012-11-19 19:26 编辑

填坑。。。
二轴联动插补测试视频。。。



作者: DreamonII    时间: 2012-11-19 15:11
本帖最后由 DreamonII 于 2012-11-20 13:09 编辑

添坑。。。。
实现了4轴控制。。。
可选择任意2轴做插补。。。
控制代码 G17,G18,G19。。。

这个不知道怎么演示。。。
继续占位,晚些补齐。。。

作者: DreamonII    时间: 2012-11-19 15:11
本帖最后由 DreamonII 于 2012-11-23 21:11 编辑

填坑。。。
这一层用来贴软件。。。
照着51代码用VB搞了个仿真程序。。。
好乱的圆弧。。。

(, 下载次数: 25)


通过仿真修正圆弧插补错误。。。

修正前。。。
(, 下载次数: 33)

修正后。。。
(, 下载次数: 35)

效果测试。。。
(, 下载次数: 41)

鼠标控制直线测试。。。
(, 下载次数: 15)

鼠标控制直线+圆弧测试。。。
(, 下载次数: 13)


作者: 183657927    时间: 2012-11-19 15:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 5i良机    时间: 2012-11-19 15:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大白兔    时间: 2012-11-19 18:16
5i良机 发表于 2012-11-19 15:20
不懂怎么控制的,只能看懂元器件,不给力啊,PCB要四层的,双面沉金,晶振要四脚的,IC四周要密布退藕电容, ...

好嘛,先给来2片SPI总线的8寸-10寸液晶屏

作者: 5i良机    时间: 2012-11-19 18:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: DreamonII    时间: 2012-11-19 19:27
二楼补了二轴插补联动视频
作者: Dream&Life    时间: 2012-11-19 20:05
顶。。。芯片型号啥的没仔细看,但总觉得。。。缺点散热和电源输入保护啥的。。。
看过你的造机帖,能钻能动手。。。加油!!!
作者: pf2051    时间: 2012-11-19 20:05
高手~我只会汇编,单轴可以,多轴插补算法就头疼了
作者: 立蛋    时间: 2012-11-19 20:12
呵呵,在科创看到了,不过没人回复,看样子还是这论坛人多。


做个电火花机的间隙控制器,很多人会需要的,我也需要,lz这么牛叉的技术来着。。。
作者: zhanghailu    时间: 2012-11-19 20:31
楼主做出来的东西,正是我想要的!我想做一个最小体积2轴电控箱,能驱动42电机的,楼主这个可以吗?
作者: DreamonII    时间: 2012-11-19 20:36
zhanghailu 发表于 2012-11-19 20:31
楼主做出来的东西,正是我想要的!我想做一个最小体积2轴电控箱,能驱动42电机的,楼主这个可以吗?

谢谢大家关注哦。。。
我是准备做些轻小的设备,现在的控制板和驱动器太大太贵了。。。

作者: DreamonII    时间: 2012-11-19 20:39
Dream&Life 发表于 2012-11-19 20:05
顶。。。芯片型号啥的没仔细看,但总觉得。。。缺点散热和电源输入保护啥的。。。
看过你的造机帖,能钻能 ...

谢谢谢谢。。。

芯片没啥特别的,就是些单片机和MOS管之类的。。。
驱动器上集成了5A自复式保险,
实测1A下不热,就没加散热片。。。

作者: 夜行侠    时间: 2012-11-19 20:56
二轴联动 不简单
作者: lipe    时间: 2012-11-19 21:15
楼主能不能讲解一下:直线和圆弧插补
作者: DreamonII    时间: 2012-11-19 23:38
lipe 发表于 2012-11-19 21:15
楼主能不能讲解一下:直线和圆弧插补

嗯嗯。。。
以下内容来自百度:
“直线插补(Llne Interpolation)这是车床上常用的一种插补方式,在此方式中,两点间的插补沿着直线的点群来逼近,沿此直线控制刀具的运动。

  一个零件的轮廓往往是多种多样的,有直线,有圆弧,也有可能是任意曲线,样条线等. 数控机床的刀具往往是不能以曲线的实际轮廓去走刀的,而是近似地以若干条很小的直线去走刀,走刀的方向一般是x和y方向.

  插补方式有:直线插补,圆弧插补,抛物线插补,样条线插补等

  所谓直线插补就是只能用于实际轮廓是直线的插补方式(如果不是直线,也可以用逼近的方式把曲线用一段段线段去逼近,从而每一段线段就可以用直线插补了).首先假设在实际轮廓起始点处沿x方向走一小段(一个脉冲当量),发现终点在实际轮廓的下方,则下一条线段沿y方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿y方向走一小段,直到在实际轮廓上方以后,再向x方向走一小段,依次循环类推.直到到达轮廓终点为止.这样,实际轮廓就由一段段的折线拼接而成,虽然是折线,但是如果我们每一段走刀线段都非常小(在精度允许范围内),那么此段折线和实际轮廓还是可以近似地看成相同的曲线的--------这就是直线插补.”

作者: calier    时间: 2012-11-19 23:50
对于我这个电盲来说,MOS管好像就是很神秘的东东了
作者: yibaofan    时间: 2012-11-20 00:25
数控代码如何传给控制板?
作者: zhanghailu    时间: 2012-11-20 11:29
调试好的成品什么时候可以拿出来?很期待啊,到时候我能定几套吗?
作者: 机械人家    时间: 2012-11-20 11:38
DreamonII 发表于 2012-11-19 23:38
嗯嗯。。。
以下内容来自百度:
“直线插补(Llne Interpolation)这是车床上常用的一种插补方式,在此 ...

你是用单片机作软件插补?

作者: DreamonII    时间: 2012-11-20 11:51
机械人家 发表于 2012-11-20 11:38
你是用单片机作软件插补?

嗯嗯。。。

作者: DreamonII    时间: 2012-11-20 13:10
实现了4轴控制。。。
4轴二联动。。。
任意二轴插补。。。
通过G17,G18,G19指令选择插补平面。。。
作者: arp    时间: 2012-11-20 13:52
内容楼主用的什么运动控制芯片?具体芯片型号?
作者: DreamonII    时间: 2012-11-20 14:25
本帖最后由 DreamonII 于 2012-11-20 15:31 编辑

新增5个开关量控制(可设置为I或O)。。。
其中2个是硬件中断,一个用来做急停/限位,一个用来做手脉输入。。。
2个IO当输入,用作手脉4轴选择,00=X轴,01=Y轴,10=Z轴,11=A轴
最后一个IO做主轴开关。。。

开始写G代码解析。。。



作者: DreamonII    时间: 2012-11-20 14:26
arp 发表于 2012-11-20 13:52
内容楼主用的什么运动控制芯片?具体芯片型号?

用的STC单片机。。。
作者: DreamonII    时间: 2012-11-20 14:32
yibaofan 发表于 2012-11-20 00:25
数控代码如何传给控制板?

通过串口发G代码
作者: DreamonII    时间: 2012-11-20 14:35
zhanghailu 发表于 2012-11-20 11:29
调试好的成品什么时候可以拿出来?很期待啊,到时候我能定几套吗?

刚刚开始,离实用还远呢。。。
自己玩的,暂时没有出售的计划哦。。。

作者: 大白兔    时间: 2012-11-20 14:44
5i良机 发表于 2012-11-19 18:31
液晶好像是最不值钱的东西之一了,夏普快撑不住了

可是穷人买不起用来做实验的液晶屏
作者: Wisdon    时间: 2012-11-20 17:06
有用 ,可以用在简易的设备上
作者: arp    时间: 2012-11-20 19:27
标题: RE:
DreamonII 发表于 2012-11-20 14:26
用的STC单片机。。。

运动控制,搞单片机控制,还圆弧插补,你太有才了,干嘛不用现成的运动插补芯片?
作者: DreamonII    时间: 2012-11-20 19:39
本帖最后由 DreamonII 于 2012-11-20 19:54 编辑
arp 发表于 2012-11-20 19:27
运动控制,搞单片机控制,还圆弧插补,你太有才了,干嘛不用现成的运动插补芯片?


专用芯片太贵,烧不起。。。
另外这次主要是为了测试新做的驱动模块。。。

四轴运动程序是早写好的,这次只是优化。。。
想不到效果这么明显。。。
完全出忽意料。。。

按这个速度,应该可以实用化了。。。

另外,维宏卡好象就是个STC的51单片机。。。
作者: arp    时间: 2012-11-20 19:52
运动控制,搞单片机控制,还圆弧插补,你太有才了,干嘛不用现成的运动插补芯片?
作者: Jameszou    时间: 2012-11-20 20:07
支持大哥,都开始做开发了,持续关注,大哥有没想自己写控制软件?
作者: DreamonII    时间: 2012-11-20 20:23
Jameszou 发表于 2012-11-20 20:07
支持大哥,都开始做开发了,持续关注,大哥有没想自己写控制软件?

谢谢兄弟支持!
控制软件从前写了半个,
这次争取写完它。。。
作者: 自定义    时间: 2012-11-20 20:41
支持你
作者: zhanghailu    时间: 2012-11-20 21:17
支持楼主,期望成品,服务大家。
作者: justsun    时间: 2012-11-20 21:27
哈哈,相当厉害了!!
作者: zdall911    时间: 2012-11-20 22:18
相当厉害了!!
作者: zhiyiyunmeng@    时间: 2012-11-20 22:21
DreamonII 发表于 2012-11-20 20:23
谢谢兄弟支持!
控制软件从前写了半个,
这次争取写完它。。。

等了那么久,判的望眼欲穿,终于等到有人使用STC51单片机做4轴的数控系统了!而且在努力!为你加油!如果有需要帮助的地方,愿意尽点微薄之力!PIC18F4550 8位单片机已经被成功的运用于4轴较为完善和比较稳定的数控系统了!USB-CNC
作者: DreamonII    时间: 2012-11-20 22:34
zhiyiyunmeng@ 发表于 2012-11-20 22:21
等了那么久,判的望眼欲穿,终于等到有人使用STC51单片机做4轴的数控系统了!而且在努力!为你加油!如果 ...

多谢支持!!
太好了,知道有这么多8位单片机用于数控系统,心里有底了。。。
做起来才知道这东西原来真的挺复杂。。。
现在先实现G00,G01,G02,G03,G17,G18,G19
这样应该能试着跑简单刀路了。。。

其它功能还没着手。。。
刚刚写了两个转化长整数的函数。。。
用查表代替了乘法。。。
等会试下效率。。。
作者: yibaofan    时间: 2012-11-20 22:42
查补有没有速度平滑性   很多微小线段时候 中间不会有零速吧
作者: zhiyiyunmeng@    时间: 2012-11-20 22:42
DreamonII 发表于 2012-11-20 22:34
多谢支持!!
太好了,知道有这么多8位单片机用于数控系统,心里有底了。。。
做起来才知道这东西原来真 ...

嗯,那个USB-CNC作者用了几年的时间才完善到现在这个地步的!09年开始的,有信心坚持下去最最这样!你需要做的就是完善下位机,然后逐渐去完善上位机,不用着急,更不要气馁!
作者: zhiyiyunmeng@    时间: 2012-11-20 22:46
希望楼主可以认真考虑选型好一款更加适合做这个项目的STC 8位单片机坚持做下去!
作者: zhiyiyunmeng@    时间: 2012-11-20 22:55
DreamonII 发表于 2012-11-20 22:34
多谢支持!!
太好了,知道有这么多8位单片机用于数控系统,心里有底了。。。
做起来才知道这东西原来真 ...

关于下位机实现的基础性数控系统的输入输出接口,楼主需要实现这些
20KHZ的脉冲输出
4轴的手动输入
手动速度输入电位器调节
主轴开关主轴
主轴速度控制
冷却液开关
4轴的限位输入
对刀
急停
能完善这些的时候相信你的水平也会跟着提升,那时在做更加复杂的系统不再话下了!


作者: DreamonII    时间: 2012-11-20 22:58
zhiyiyunmeng@ 发表于 2012-11-20 22:55
关于下位机实现的基础性数控系统的输入输出接口,楼主需要实现这些
20KHZ的脉冲输出
4轴的手动输入

太感谢了!

一定努力实现!

作者: DreamonII    时间: 2012-11-20 23:01
yibaofan 发表于 2012-11-20 22:42
查补有没有速度平滑性   很多微小线段时候 中间不会有零速吧

S线加速太复杂,
准备用梯线加速。。。
5点7点都没确定。。。

昨天试了个算法小线段有0速。。。
准备加入前瞻算法排除。。。

有点复杂。。。
现在用的U快满了。。。
准备换个60S2再继续折腾。。。

作者: zhiyiyunmeng@    时间: 2012-11-20 23:08
DreamonII 发表于 2012-11-20 23:01
S线加速太复杂,
准备用梯线加速。。。
5点7点都没确定。。。

单片机选型十分这样,18F4550在PIC单片机中算高端的了!你考虑选型也不例外!这点还望认真对待!以免像你这样的问题再次发生!

作者: zhiyiyunmeng@    时间: 2012-11-20 23:10
DreamonII 发表于 2012-11-20 23:01
S线加速太复杂,
准备用梯线加速。。。
5点7点都没确定。。。

STC12C5A60S2
这款我推荐给你!按照资料来说性能完全不树于18F4550

作者: DreamonII    时间: 2012-11-20 23:12
zhiyiyunmeng@ 发表于 2012-11-20 23:10
STC12C5A60S2
这款我推荐给你!按照资料来说性能完全不树于18F4550

谢谢谢谢

作者: DreamonII    时间: 2012-11-21 15:42
yibaofan 发表于 2012-11-20 22:42
查补有没有速度平滑性   很多微小线段时候 中间不会有零速吧

老兄太有经验了!
测试发现小线段间有停顿,
不是速度因子的问题。。
是运动前的初始计算过慢造成的,
看上去就象单个脉冲突然变长。。。

通过优化算法和前瞻处理,
已经大有改善了。。。
脉冲频率不太高时没感觉了。。。
作者: DreamonII    时间: 2012-11-21 23:52
写了个仿真软件,
不知道是不是算法写错了。。。
圆弧出来的象限是错的。。。
好累啊。。。


作者: wj88603    时间: 2012-11-21 23:55
我一看到电路板头就晕啊~!
作者: ForeverQing    时间: 2012-11-22 18:36
哈 楼主我也在做,不过用的是avr单片机,刚做到任意两轴直线插补
作者: zhiyiyunmeng@    时间: 2012-11-22 21:40
ForeverQing 发表于 2012-11-22 18:36
哈 楼主我也在做,不过用的是avr单片机,刚做到任意两轴直线插补

希望你们俩能联合起来攻克上位机编程!
作者: ForeverQing    时间: 2012-11-22 22:39
zhiyiyunmeng@ 发表于 2012-11-22 21:40
希望你们俩能联合起来攻克上位机编程!

上位机我不打算做的很麻烦,大部分解析式通过单片机来的。我得初步想法是上位机负责简单地解析G代码,将某次运动的目的坐标传输给单片机。另外单片机打算只做直线插补,对于曲线插补的指令我打算在上位机上细分成短的直线插补交给单片机完成。
作者: zhiyiyunmeng@    时间: 2012-11-22 23:30
ForeverQing 发表于 2012-11-22 22:39
上位机我不打算做的很麻烦,大部分解析式通过单片机来的。我得初步想法是上位机负责简单地解析G代码,将某 ...

我是意识就是要做就做个像样的系统出来,每天搞一点点,经过2年的积累还不够嘛?逐渐达到能解析所以国际标准的G代码,支持所有任意插补,支持多种加速度
作者: DreamonII    时间: 2012-11-23 02:11
本帖最后由 DreamonII 于 2012-11-23 02:14 编辑

通过仿真修正圆弧插补错误。。。

修正前。。。


修正后。。。


效果测试。。。

作者: DreamonII    时间: 2012-11-23 02:16
ForeverQing 发表于 2012-11-22 22:39
上位机我不打算做的很麻烦,大部分解析式通过单片机来的。我得初步想法是上位机负责简单地解析G代码,将某 ...

嗯嗯,我是做着玩的。。。
测试发现步进电机运行异常,
没办法只好写个上位机仿真一下,
总算发现问题了。。。


作者: yhs386    时间: 2012-11-23 03:22
好东西,期待早日量产

作者: 大白兔    时间: 2012-11-23 06:50
偶也弄过一段时间,5轴的。。。最后从avr换到stm32换到stm32+stm8换到stm32+DSP换到x86+DSP最后换到懒得弄。。。。。

插补,G代码解析什么的网络上都有,还有现成的4轴的可以用的程序。。。。。还有开源的。。。。。
作者: DreamonII    时间: 2012-11-23 11:08
哇。。。
好厉害。。。

有开源的啊!!
太好了。。。
我找找看。。。
我做个简单的。。。
不想用ARM,
更不想用DSP。。。
不然就白做了。。。
作者: yoso    时间: 2012-11-23 13:28
上个驱动的电路图看看。。。
作者: ForeverQing    时间: 2012-11-23 13:29
DreamonII 发表于 2012-11-23 11:08
哇。。。
好厉害。。。

我找到好多avr的开源cnc项目,但是好多都没法打开
作者: cj8510    时间: 2012-11-23 14:06
DreamonII的帖子要标记下,加油。
作者: 大白兔    时间: 2012-11-23 14:18
DreamonII 发表于 2012-11-23 11:08
哇。。。
好厉害。。。

你去看看arduino论坛吧。。。。外文的关于3D打印机配套的控制系统的。。大把了,不是一个两个,一群开源的
作者: DreamonII    时间: 2012-11-23 16:20
本帖最后由 DreamonII 于 2012-11-23 16:48 编辑
大白兔 发表于 2012-11-23 14:18
你去看看arduino论坛吧。。。。外文的关于3D打印机配套的控制系统的。。大把了,不是一个两个,一群开源的 ...


Android...
还是算了,ARV系列戒了快2年了。。。
没事就涨价,缺货。。。
我用STC。。。
支持国货!!!

最重要的。。。
Android贵死。。。
STC便宜。。。


再说这么简单的东东当练手了。。。
开源的学不到东东。。。
我们不能总满足于山寨别人吧。。。
作者: 大白兔    时间: 2012-11-23 17:39
arduino不仅仅有基于avr的,也有基于stm32的。。。。。。
作者: DreamonII    时间: 2012-11-23 17:44
本帖最后由 DreamonII 于 2012-11-23 17:45 编辑
大白兔 发表于 2012-11-23 17:39
arduino不仅仅有基于avr的,也有基于stm32的。。。。。。


嗯嗯。。。
我做个简单的玩。。。

“最重要的。。。
Android贵死。。。
STC便宜。。。”

STM32的更贵。。。
一个STC才几块钱。。。

成本高就划不来了。。。


作者: flyingzha    时间: 2012-11-23 18:40
不错,学习了
作者: 大白兔    时间: 2012-11-23 18:49
DreamonII 发表于 2012-11-23 17:44
嗯嗯。。。
我做个简单的玩。。。

stm8还有1块的。。。。。
作者: DreamonII    时间: 2012-11-23 19:23
本帖最后由 DreamonII 于 2012-11-23 19:27 编辑

边模拟边开发。。。
搞定了第一个功能。。。
指哪打哪。。。
鼠标点到哪,步进电机走到哪。。。
可惜还不是G代码。。。
继续。。。
(, 下载次数: 16)
作者: 3dbuild    时间: 2012-11-23 20:01
贵吗?淘宝上AVR和STC价格几乎一样啊

在现有的成果上再开发,似乎更好,象下面这个是研究了3年多时间,才做到支持梯形加减速、Look ahead、直线和圆弧,高脉冲率,SD卡,这些都可以借鉴

开源高速插补程序
https://github.com/ErikZalm/Marlin
作者: DreamonII    时间: 2012-11-23 20:22
3dbuild 发表于 2012-11-23 20:01
贵吗?淘宝上AVR和STC价格几乎一样啊

在现有的成果上再开发,似乎更好,象下面这个是研究了3年多时间,才 ...

谢谢老哥。。。
现在实现了直线和圆弧插补,
梯形加速马上开始。。。
前瞻是加速的基础。。。

感觉还没什么难度。。。
G代码解析可以交给上位机做。。。

继续====

用鼠标左右键控制直线和圆弧。。。

(, 下载次数: 18)



作者: DreamonII    时间: 2012-11-23 20:35
3dbuild 发表于 2012-11-23 20:01
贵吗?淘宝上AVR和STC价格几乎一样啊

在现有的成果上再开发,似乎更好,象下面这个是研究了3年多时间,才 ...

看了下Arduino的源码
大量使用了浮点数和乘除法。。。
对CPU的要求很高。。。
低端CPU很难达到理想的效果。。。

我现在用的是3块钱左右的STC,
算法上还有一定的优势。。。

有望进一步降低成本。。。

不想搞太复杂,够用就行。。。

作者: duanyz    时间: 2012-11-23 20:54
顶dreamon,会单片机编程就是好啊!
作者: 3dbuild    时间: 2012-11-23 22:55
DreamonII 发表于 2012-11-23 20:35
看了下Arduino的源码
大量使用了浮点数和乘除法。。。
对CPU的要求很高。。。

老外的程序一般考虑通用性比较多,借鉴他的思路就可以了,具体实现上,可以用PC机对G代码做预处理,减轻单片机的负担和程序量,用便宜的芯片做出很好的效果,不管是51还是AVR都一样。我在淘宝上买的店发给你了,价格还可以,每一款都是零售实价,买了几百个还没有发现坏的,你这个应用,用Mega32-16M应该够了,6.0元,如果能做到Mega48-20M能用就更好,只要2.8元


作者: DreamonII    时间: 2012-11-23 23:24
本帖最后由 DreamonII 于 2012-11-23 23:34 编辑
3dbuild 发表于 2012-11-23 22:55
老外的程序一般考虑通用性比较多,借鉴他的思路就可以了,具体实现上,可以用PC机对G代码做预处理,减轻单 ...


太感谢了。。。
我原来一直用AVR做项目的,
直到10年那次AVR大断货。。。
那时个开始我对这个企业的作风彻底失望。。。

当时不但型号不全,进不到货,
而且炒成天价,
由于M128断货,
我的项目被迫降到M169,
最后赔了本。

一样是1T的单片机,
我决不会因为它现在降价了就继续相信这种没责任感的企业。。。

对于STC,我用了近2年,
虽然老姚的新品发布一拖再拖,
但毕竟不会没事乱涨价。。。

作者: DreamonII    时间: 2012-11-23 23:41
3dbuild 发表于 2012-11-23 22:55
老外的程序一般考虑通用性比较多,借鉴他的思路就可以了,具体实现上,可以用PC机对G代码做预处理,减轻单 ...

对的就是这个思路。。。
用上位机解析G代码,完成前瞻判断,
刚看了坛友发的Arduino源码,
加速度控制可以参考,
有个问题就是他采用的加速度控制占用空间过大,
每个16位二维256元素的数组要占1K的空间,
4个表就占4K。。。
我的芯片全部空间只有8K,
在不更换CPU的前提下我必须使用空间效率更高的算法。。。

继续折腾中。。。

作者: 大白兔    时间: 2012-11-23 23:58
你一个stc又要做G代码解析又要做脉冲发生又要做插补运算,又要做SD卡,又要做通讯接口又要做LCD显示,我看不行吧。。。。
作者: DreamonII    时间: 2012-11-24 00:00
大白兔 发表于 2012-11-23 23:58
你一个stc又要做G代码解析又要做脉冲发生又要做插补运算,又要做SD卡,又要做通讯接口又要做LCD显示,我看不 ...

不带SD卡,不带LCD。。。
目前看还可以,
只做有限几条最常用的G指令。。。

STC也有高端芯片,但我不准备做太复杂。。。
玩玩而已,够用就行。。。

作者: DreamonII    时间: 2012-11-24 00:03
DreamonII 发表于 2012-11-24 00:00
不带SD卡,不带LCD。。。
目前看还可以,
只做有限几条最常用的G指令。。。

其实再用一片STC做TFT,SD卡,UI,也是个不错的主意。。。
先把这个搞定再说了。。。

另外,我找到一个办法做多轴插补。。。
弄完这个我试试看。。。

作者: DreamonII    时间: 2012-11-24 00:18
本帖最后由 DreamonII 于 2012-11-24 00:19 编辑

解析Arduino源码中的一个加速度曲线表。。。
看情况是个16位定时器的线性装定值表。。。
用65536除一下,然后画曲线看看什么样子。。。

(, 下载次数: 19)

不出所料,果然是线性拟合。。。
1K字节一个表太离谱了,
现在研究一下用什么算法动态生成这个数据更高效。。。


作者: DreamonII    时间: 2012-11-24 01:02
采用最简单的方法进行了优化。。。
均匀抽取原表的1/10个元素,隔10个留一个,
留下25个数据,
表的规模减小了10倍,
每个表100个字节,2个表200字节,可以接受了。。。
从效果上看,比正规NC系统采用的7点甚至5点加速度控制已经精细多了。。。
(, 下载次数: 16)

写代码测试一下。。。


作者: cooooldog    时间: 2012-11-24 09:05
来给大牛顶顶
作者: 一人    时间: 2012-11-24 13:45
高手啊,不简单
作者: 3dbuild    时间: 2012-11-24 19:19
DreamonII 发表于 2012-11-23 23:24
太感谢了。。。
我原来一直用AVR做项目的,
直到10年那次AVR大断货。。。

那就用STC的吧,程序改改都差不多,51系列的我也有在用,只是端口驱动能力稍微差点,相对于AVR,51这种复杂指令集的CPU有个好处,就是编译后代码量稍微小一些,对低端的型号很有意义,以前在同一个项目里用51和AVR做过相同的功能对比过

作者: 老油条    时间: 2012-11-24 19:25

作者: DreamonII    时间: 2012-11-24 19:29
3dbuild 发表于 2012-11-24 19:19
那就用STC的吧,程序改改都差不多,51系列的我也有在用,只是端口驱动能力稍微差点,相对于AVR,51这种复 ...

嗯嗯。。。
继续折腾。。。

作者: 343409517    时间: 2012-11-24 19:39
高手在民间,列害
作者: DreamonII    时间: 2012-11-25 00:08
一天没进展。。。
恶补中。。。
加速度控制不容易。。。
前瞻算法要预判几百步。。。

小CPU压力山大。。。。
算法难产中。。。
作者: DreamonII    时间: 2012-11-25 00:10
我用的是STC12系列的CPU,
资料说这个小U有8位硬件乘除法,
4个时钟周期算完。。。
这个可以利用。。。
现在研究怎么样把长整数处理简化为8位算法。。。
作者: 3dbuild    时间: 2012-11-25 12:39
Arduino的程序要实现脱机SD卡打印,全部工作都要单片机来做,所以使用了32K Flash容量的Mega328,用查表法即时处理加速减速,它是对速度进行控制。AVR有硬件乘法器,换成你现在的CPU,看起来这个算法不太合适,可以考虑改为对距离进行控制。D版维宏卡也是用51输出100K脉冲,性能应该足够。改为对距离进行控制后,PC机处理前瞻和G代码解释,解释完把预先处理好的数据传给单片机,单片机只负责输出脉冲。下面的图是在恒定加速度情况下,距离和时间的关系,是一个标准抛物线,等分成5段,每段使用匀速,在段和段之间变速,只要5段,就非常接近理论移动距离。单片机的定时器维持不变的最高脉冲速度,在定时器中断里对一个变量A做累减,减到0就输出一个脉冲,然后恢复A的初值,PC机只要预先计算好各段的A的初值,传给单片机就可以了,这样做可以消除单片机的乘法,减轻单片机负担,提高脉冲输出频率,同时解决了PC机操作系统无法稳定输出脉冲的问题

(, 下载次数: 19)
作者: 天翼F0    时间: 2012-11-25 13:28
高人给普及普及原理
作者: fly1km    时间: 2012-11-25 15:15
记号一个,算法太难了!
作者: DreamonII    时间: 2012-11-25 15:34
3dbuild 发表于 2012-11-25 12:39
Arduino的程序要实现脱机SD卡打印,全部工作都要单片机来做,所以使用了32K Flash容量的Mega328,用查表法即 ...

嗯。。。
我的加速度表就是从您提供的Arduino网站偷的。。。

它的数据是反比例排列,
对应的加速度曲线是线性的。。。

加速度控制已经实现了,

不过我对前瞻算法还没吃透。。。
正在恶补中。。。

STC也有硬件乘法器,
4个时钟一次,挺快的(比AVR慢一倍)
不过主频比较高。。。

作者: ForeverQing    时间: 2012-11-25 15:38
DreamonII 发表于 2012-11-24 00:03
其实再用一片STC做TFT,SD卡,UI,也是个不错的主意。。。
先把这个搞定再说了。。。

多轴插补我已经做了,但是感觉没有多大价值,就删掉了。
作者: ForeverQing    时间: 2012-11-25 15:41
3dbuild 发表于 2012-11-25 12:39
Arduino的程序要实现脱机SD卡打印,全部工作都要单片机来做,所以使用了32K Flash容量的Mega328,用查表法即 ...

我得程序里面定时器就是用这个办法实现速度变化的

作者: DreamonII    时间: 2012-11-25 22:29
加了个语句索引,可以不用记录每个线段的速度了。。。
记录加速和减速的起点。。。

现在想办法把前向扫描过程放在低速区集中处理,
或在脉冲频率不高的位置处理。。。
前向扫描300个数据应该在几mS时间,
应该可以做到了。。。
继续折腾。。。




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://bbs.5imx.com/) Powered by Discuz! X3.3