5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: DreamonII
打印 上一主题 下一主题

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

[复制链接]
81
发表于 2012-11-23 23:58 | 只看该作者
你一个stc又要做G代码解析又要做脉冲发生又要做插补运算,又要做SD卡,又要做通讯接口又要做LCD显示,我看不行吧。。。。

欢迎继续阅读楼主其他信息

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

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

STC也有高端芯片,但我不准备做太复杂。。。
玩玩而已,够用就行。。。
83
 楼主| 发表于 2012-11-24 00:03 | 只看该作者
DreamonII 发表于 2012-11-24 00:00
不带SD卡,不带LCD。。。
目前看还可以,
只做有限几条最常用的G指令。。。

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

另外,我找到一个办法做多轴插补。。。
弄完这个我试试看。。。
84
 楼主| 发表于 2012-11-24 00:18 | 只看该作者
本帖最后由 DreamonII 于 2012-11-24 00:19 编辑

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



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

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


写代码测试一下。。。

86
发表于 2012-11-24 09:05 | 只看该作者
来给大牛顶顶
87
发表于 2012-11-24 13:45 | 只看该作者
高手啊,不简单
88
发表于 2012-11-24 19:19 | 只看该作者
DreamonII 发表于 2012-11-23 23:24
太感谢了。。。
我原来一直用AVR做项目的,
直到10年那次AVR大断货。。。

那就用STC的吧,程序改改都差不多,51系列的我也有在用,只是端口驱动能力稍微差点,相对于AVR,51这种复杂指令集的CPU有个好处,就是编译后代码量稍微小一些,对低端的型号很有意义,以前在同一个项目里用51和AVR做过相同的功能对比过
89
发表于 2012-11-24 19:25 | 只看该作者
90
 楼主| 发表于 2012-11-24 19:29 | 只看该作者
3dbuild 发表于 2012-11-24 19:19
那就用STC的吧,程序改改都差不多,51系列的我也有在用,只是端口驱动能力稍微差点,相对于AVR,51这种复 ...

嗯嗯。。。
继续折腾。。。
91
发表于 2012-11-24 19:39 | 只看该作者
高手在民间,列害
92
 楼主| 发表于 2012-11-25 00:08 | 只看该作者
一天没进展。。。
恶补中。。。
加速度控制不容易。。。
前瞻算法要预判几百步。。。

小CPU压力山大。。。。
算法难产中。。。
93
 楼主| 发表于 2012-11-25 00:10 | 只看该作者
我用的是STC12系列的CPU,
资料说这个小U有8位硬件乘除法,
4个时钟周期算完。。。
这个可以利用。。。
现在研究怎么样把长整数处理简化为8位算法。。。
94
发表于 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机操作系统无法稳定输出脉冲的问题

95
发表于 2012-11-25 13:28 | 只看该作者
高人给普及普及原理
96
发表于 2012-11-25 15:15 | 只看该作者
记号一个,算法太难了!
97
 楼主| 发表于 2012-11-25 15:34 | 只看该作者
3dbuild 发表于 2012-11-25 12:39
Arduino的程序要实现脱机SD卡打印,全部工作都要单片机来做,所以使用了32K Flash容量的Mega328,用查表法即 ...

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

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

加速度控制已经实现了,

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

STC也有硬件乘法器,
4个时钟一次,挺快的(比AVR慢一倍)
不过主频比较高。。。
98
发表于 2012-11-25 15:38 | 只看该作者
DreamonII 发表于 2012-11-24 00:03
其实再用一片STC做TFT,SD卡,UI,也是个不错的主意。。。
先把这个搞定再说了。。。

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

我得程序里面定时器就是用这个办法实现速度变化的
100
 楼主| 发表于 2012-11-25 22:29 | 只看该作者
加了个语句索引,可以不用记录每个线段的速度了。。。
记录加速和减速的起点。。。

现在想办法把前向扫描过程放在低速区集中处理,
或在脉冲频率不高的位置处理。。。
前向扫描300个数据应该在几mS时间,
应该可以做到了。。。
继续折腾。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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