步进电机梯形加速,求大神。

[复制链接]
 楼主| DownCloud 发表于 2012-7-30 14:59 | 显示全部楼层 |阅读模式
硬件:有步进电机驱动芯片。给脉冲就会走,另有方向控制端口。高到低或者低到高电平走一步。
脉冲频率可以达到好高,但我还不知道多高。。。没有流笔的梯形算法软件,所以达不到最高点。但别人做的和资料表明,可达到20Khz。也就是说,走一步完、中断、下一步,中断只有50us。

问题:给定一变量 步数s 。 知道常量加速度A,最高速度V,初速度V0(第一步速度)。
1.求临界点(加速到哪一步,匀速,哪一步开始减速)。加速段每步加了多少速度?
注:速度还要换成频率,我怎么不大会算。
2.求算法。(AVR,8Mhz)

求步进大神。谢谢。
 楼主| DownCloud 发表于 2012-7-30 15:04 | 显示全部楼层
有些人不知道梯形加速,可以大概理解为: 加速启动,到最大速度了匀速运行,减速停止。
受不了了 发表于 2012-7-30 15:05 | 显示全部楼层
查表,我觉得实时计算不大现实
受不了了 发表于 2012-7-30 15:25 | 显示全部楼层
不过现在的PLC里都有梯形加减速自动计算,用示波器看过,发到100KHZ时高低电平也很均匀,顺畅,能每一步都均匀变化频率,不知道其实现方法,PLC应该是无法实现那么长的查表,哪怕是PWM也很难在那么短时间内计算完初始值,更何况还要计数
dlyt_test001 发表于 2012-7-31 08:33 | 显示全部楼层
当然查表,最快,最方便,最安全!
 楼主| DownCloud 发表于 2012-7-31 08:45 | 显示全部楼层
谢谢以上两位大神。
查表我做过了,只能达到10K。中断中要做的事挺多的,计算步数减一也有可能加一(正负坐标),多个电机,还要判断谁先走,然后判断总的是否走完。还有很多发现bug添加进去的。(其实程序做的超级不好,挺不负责的)
我查表的数据有错,之前每一步加的速度是一样的,这是不对的,但是不负责的将错就错。高中物理,匀加速直线运动等位移时间比:T1:T2:T3...Tn=1:(根号2-1):(根号3-根号2):...[根号n-根号(n-1)]。现在把公式都重推了一遍。
dlyt_test001 发表于 2012-7-31 10:46 | 显示全部楼层
你那个10K神马意思啊?
用IO口控制啊!
你难道没有PWM输出吗?
建议换主单片机!
lwq030736 发表于 2012-7-31 14:27 | 显示全部楼层
换FPGA吧
cjseng 发表于 2012-8-1 00:19 | 显示全部楼层
什么驱动芯片啊?298?
我用51做过,不过不是标准的梯形,但绝对有个上升、匀速、下降的过程,电机在运转的时候,声调会发生变化,倒是蛮好听的。
我的做法就是:在上升与下降阶段,不用中断,完全就是靠指令执行的时间来定时,不断调整NOP的个数,实现速度上升与下降,到了匀速期,就交给中断来做了。
其实不要纠结于是否是梯形加减速,只要保证在速度上升与下降时不失步就行了,当然匀速时也不能失步。
受不了了 发表于 2012-8-1 09:51 | 显示全部楼层
多个电机,就用翻转,别发完完整脉冲再退出中断,否则多路脉冲在高速时会冲突,使频率不均匀。用查表,没几句话的
fly1974 发表于 2012-8-1 12:11 | 显示全部楼层
照10楼的用法,似乎mega128(8M)可以达到20~50K的脉冲速率,当然是查表法,没试过计算法,单片机应该没这么牛。
fly1974 发表于 2012-8-1 12:13 | 显示全部楼层
给个帖子参考一下,里面讨论的够多了,自己琢磨。。。
http://www.amobbs.com/thread-5489204-1-1.html
wangkangming 发表于 2012-8-1 12:42 | 显示全部楼层
做个记号!mark
受不了了 发表于 2012-8-1 13:06 | 显示全部楼层
给个帖子参考一下,里面讨论的够多了,自己琢磨。。。
http://www.amobbs.com/thread-5489204-1-1.html
fly1974 发表于 2012-8-1 12:13

去看了下,好像S形加速没那个帖子里说的那么简单,需要反余弦啥的,我脑袋迷糊了,清醒的时候细究一下
 楼主| DownCloud 发表于 2012-8-1 17:25 | 显示全部楼层
给个帖子参考一下,里面讨论的够多了,自己琢磨。。。
http://www.amobbs.com/thread-5489204-1-1.html
fly1974 发表于 2012-8-1 12:13


不错,其实我的电机走了21360步才达到最高速,查表数据也蛮多的。
 楼主| DownCloud 发表于 2012-8-1 17:30 | 显示全部楼层
多个电机,就用翻转,别发完完整脉冲再退出中断,否则多路脉冲在高速时会冲突,使频率不均匀。用查表,没几句话的
受不了了 发表于 2012-8-1 09:51


是用的翻转。高速时确实会冲突,不过我已经很巧妙的解决了,动的电机用同一个速度,所以任何时候都近似只有一个中断。

我之前写的程序数据结构不好,算法比较乱,没好好规划造成的后果。所以用查表虽然快还是被其它程序拖累了。o(╯□╰)o

huang
菜鸟同学 发表于 2014-7-15 10:22 | 显示全部楼层
受不了了 发表于 2012-8-1 09:51
多个电机,就用翻转,别发完完整脉冲再退出中断,否则多路脉冲在高速时会冲突,使频率不均匀。用查表,没几 ...

我不是很懂,PWM 是调整占空比来调整电流的,如果是反转模式那么不是每次都是50%的占空比,只是每次都可以改变频率。可以改变速度而已,但是电流不足啊!求解!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

341

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部