以arm为内核的嵌入式微处理器进行运动控制系统的开发.docVIP

以arm为内核的嵌入式微处理器进行运动控制系统的开发.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
以arm为内核的嵌入式微处理器进行运动控制系统的开发.doc

基于ARM芯片S3C4510的步进电机加减速控制 发表时间:2009-11-6 刘艳霞 桑兆辉 来源:《伺服控制》网络版 关键字:步进电机 S3C4510 加减速控制 信息化应用调查我要找茬在线投稿加入收藏发表评论好文推荐打印文本 本文介绍如何使用基于ARM芯片S3C4510实现对步进电机加减速控制的方法。 随着工业的发展,嵌入式技术应用日益广泛和成熟。arm嵌入式处理器作为一种32位高性能、低功耗的risc芯片,支持多种操作系统、主频高、运算处理能力强,并可兼容8/16位器件,还能带海量低价的sdram数据存储器。得到各行各业的青睐,已经显示出强大的功能和巨大的商业价值。尤其在控制领域获得了越来越为广泛的应用。利用以arm为内核的嵌入式微处理器进行运动控制系统的开发,有着广阔的发展空间。    在一些要求低成本的运动控制系统中,经常用步进电机做执行元件。步进电机在这种应用场合下最大的优势是:可以开环方式控制而无需反馈就能对位置和速度进行控制。但也正是因为负载位置对控制电路没有反馈,步进电机就必须正确响应每次励磁变化。如果励磁频率选择不当,电机不能够移到新的位置,那么实际的负载位置相对控制器所期待的位置出现永久误差,即发生失步现象或过冲现象。因此步进电机开环控制系统中,如何防止失步和过冲是开环控制系统能否正常运行的关键。 步进电机加减速控制原理    失步和过冲现象分别出现在步进电机启动和停止的时候。一般情况下,系统的极限启动频率比较低,而要求的运行速度往往比较高。如果系统以要求的运行速度直接启动,因为该速度已超过极限启动频率而不能正常启动,轻则可能发生丢步,重则根本不能启动,产生堵转。系统运行起来以后,如果达到终点时立即停止发送脉冲串,令其立即停止,则由于系统惯性作用,会使步进电机转子转到接近终点平衡位置的下一个平衡位置,并在该位置停下,从而产生过冲现象。因此,在步进电机启动或停止时就需要进行加、减速控制。加减速控制多采用软件来实现,分为加速、匀速和减速三个阶段。其控制曲线如图1所示。 图1 步进电机加减速控制曲线 加减速控制方法 采用微处理器对步进电机进行加减速控制,实际上就是改变输出脉冲的时间间隔,升速时脉冲频率逐渐加快,减速时脉冲频率逐渐变慢。采用恒加速度算法,易操作性强,效果也很好。如图2所示,δtm时间内相邻脉冲变化完成时,即步进电机转过一步,所以,图2中阴影部分面积为1。 图2 步进电机加减速时脉冲频率变化图 设电动机的加速时的第m步频率为fm,第m-1步频率为fm-1。加速度是f的斜率,设为a,则 a=(fm-fm-1)/δtm; 另有((fm + fm-1)δtm)/2=1; 由以上两式可推出: a=((fmax-f0)*(fmax+f0))/(2*trans); 软件实现 采用定时器中断方式控制电机变速时,实际上是不断改变定时器装载值的大小。控制脉冲由arm芯片s3c4510的定时器发出,则定时器的溢出频率应为二倍的控制脉冲频率。实现函数如下: void pulse (reg16 f0,reg16 fmax,reg16 tran,reg16 steep) { uint16 i,a; sysdisableint(int_timer0); syssetinterrupt(int_timer0,ontimer2); trans = tran; a = ((fmax-f0)*(fmax+f0))/(2*trans); for(i=0;i = trans;i++) { f[i] = sqrt_16(2*a*i+f0*f0); } f0 += f0; //2f0 tmod=0x00; //disable timer0 and timer1 tdata0=0x2faf080/f0;//f0=50,000,000/tdata0 tmod=0x03; //enable timer0 and timer1 in interval mode step = steep+steep; //2step trans = trans+trans; tempstep=0; //the number of pulse output = 0; status = 0; //the state of pulse,high or low sysenableint(int_timer0); }    其中f0为起始脉冲频率,fmax为到达匀速运行状态时的最大脉冲频率,tran为加

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档