登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

直流电机转速闭环控制系统  

2006-12-09 09:02:21|  分类: 技术积累 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

设计目的:

了解以微机为核心的闭环控制系统的组成原理。掌握电机转速闭环调制系统的构成方法。了解霍尔器件工作原理;电机转速测量与控制的基本原理;掌握PWM调速原理和应用方法。提高实时控制系统的设计与调试的综合能力。

 

设计方案:

方案1

       采用8253计数器来同时实现转速获取和电机控制。

       8253上一共有3个计数器0号、1号、2号。采用其中0号作为转速计数器,需将计数器置为16位模式的0号工作方式(计数结束产生中断),通过微机来定时对计数器进行读取,两次计数的差值即为这期间电机转过的圈数,由此可以获得电机的转速。

       1号计数器初始化到16位的方式2下(频率发生器),来获取定时脉冲。将2号计数器初始化到16位的方式1下(可编程单稳)。这样2号计数器可以根据给定的计数值产生一定长度的负脉冲,然后电平自动抬升。而计数器1(作为频率发生器)产生的定时脉冲可以作为计数器2的重新计数信号。这样通过两个计数器的组合即可以产生PWM调制。通过修改计数器2的计数值可以动态的调整高低电平的比例,从而实现对电机速度的控制。

方案2

       采用8253计数器实现电机速度获取,通过74273寄存器实现电机控制。

       利用74273的可保持性,将电机的控制信号接在74273的输出引脚。然后从微机动态的向74273里写入特定的控制信号(电平高低)实现电机的控制。

方案3

       采用8253计数器实现电机速度获取,通过8255并口芯片实现电机控制。

       类似方案2,利用8255的寄存输出方式来代替74273寄存器。同样可实现对电机的控制。

系统结构:

       该系统在实现时采用方案2,用74273作为输出控制口(IO偏移地址为08),用82530号计数器作为转速的采集口(IO偏移地址为00)。系统结构框架如下所示:

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

1 系统结构图

硬件连接方式:

硬件连接图

       直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

2 硬件连接图

硬件接口代码:

// 初始化计数器0——反馈速率计数器

       _oupt(0xdd00 + 3, 0x30);//0号计数器,16bit,二进制工作方式

       _oupt(0xdd00 + 0, 0xff);//写入计数值

       _oupt(0xdd00 + 0, 0xff);

// 转速获取代码

unsigned char low = _inp(0xdd00 + offset);

       unsigned char high = _inp(0xdd00 + offset);

       value = (high << 8) + low;

       // 74273输出控制字节

_outp(0xdd00 + 8, control_byte);

控制算法:

       该系统算法采用自适应的综合反馈调节算法。

       反馈公式为:

              新的占空比=原始的占空比+反馈占空比;

              反馈占空比=反馈因子*占空比序列总长度;

       因系统运行时会受到各种外界因素的随即烦扰,为防止反馈系数过于敏感对这些随机扰动的欺骗信号做出过度的反映造成系统的抖动,算法设计时有意的降低了对扰动信号的敏感度。

    首先采用了一个y=x2的变换对相对误差进行处理。处理后可以明显的看出系统对于相对误差较小敏感度比较低而在误差较大时敏感度明显上升。这样就可以有效的降低系统对小波动的敏感度,可以有效的提高稳定性。而且采用了y=x2后可以不影响在较大误差时的逼近速度。该指数方式的变化比直接的线性变换y=kx具有很大的优越性。

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

其次,对每次新获取的相对误差Δn进行以下处理:

            Δ0  = 0

            Δn’= ((Δn-1/2)*0.8 + Δn*0.2)/2;

       采用上面级数方式的平滑处理后可以有效的降低随即误差的影响。尤其是在系统平稳运行的时候,随机的扰动并不会明显的改变Δn的值,避免反馈系统对随机误差的盲目处理,有效的提高了系统的稳定性。

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

考虑到系统在不同占空比时的控制敏感度不同,为高控制的精确度而不影响逼近速度,对反馈因子做了特殊的非线性变换。这样就可以在很大程度上提高系统在非敏感区域的调节速度和在敏感区域的灵敏度。     

由此:

       反馈因子=常数k * F’(原始占空比,Δn’)

       新的占空比=原始的占空比 + 常数k  *  F’(原始占空比,Δn’) *占空比序列总长度;

              其中F’(x, dx)为函数F(x)的导数;常数k用来调节反馈的强度,为一个线性的调节因子。

       经实际检验,该算法在调节尺度不是很大的情况下工作非常好,电机平稳运转,而且速度之间的过度很平滑。但当调节尺度较大时会出现非常明显的强烈抖动,甚至出现时停时转的现象。考虑各种因素后,最后确定该现象是由于电机的反应时间较长,而反馈程序没有足够的“耐心”造成的。要求速度提高很多时,反馈程序提高占空比而电机转速的提高需要一定的时间,所以反馈程序就会一直提高占空比,一旦电机启动,速度会很快超过要求,这时又需要不断的降低占空比来减速,同样由于电机的滞后性会让反馈程序把电机的占空比降的很低,不足以维持电机的要求转速,又会导致一个很剧烈的加速过程。

该问题的解决应该加强反馈程序的耐心。延长控制敏感时间不是好的想法,这样不会对系统的偏差及时的作出调整从而导致稳定性较差。

系统中采用了一种门限控制的方案。当每次要调节的占空比值超过一定的范围之后就将其限定在一个安全的范围之内。

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

       经该方法处理后,可以有效的提高反馈系统的有效性。门限后,相当于实现了大尺度范围的逐步调节。能同时防止加速过程和减速过程中的失速现象,防止剧烈抖动的出现,提高了系统的稳定性。

       最终确定的反馈函数如下:

新的占空比 =

原始的占空比 + GATE(常数k * F(原始占空比,Δn’) *占空比序列总长度)

 

软件实现:

       软件实现上采用MFCDLG应用程序模板。使用_inp_outp宏进行IO操作;使用GDI技术实现监控图像的绘制;使用DDXDDV技术进行前后台数据的同步于交换;使用多个线程保证程序的相应,并特意将工作线程和用户线程独立以保证工作线程的稳定性。

       特别的,实现中为了保证在低速情况在电机的正常云状,将控制序列中的01等距分布。用BitsControl类中的void setInter(int len, byte data)方法保证在要求设置的占空比下,01序列均匀分布。这与一般实现时的两个for循环计数有很大区别,可以实现电机的低速平稳运转。

  

实现效果:

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

3 加速效果图

直流电机转速闭环控制系统 - 秒大刀 - 秒大刀 博客 

4 减速效果图

       从上面的效果图可以看出,无论在加速还是在减速过程中,系统始终能保证电机平稳的运转。保证在加速过程、减速过程均平稳过渡,而在正常维持过程中平稳运行,波动很小,控制效果良好。

 

心得体会:

通过这次的设计课程学习,加深了我对闭环控制系统的理解,了解了电机转速控制的转速测量的基本方法,掌握了PWM调速方法,提高了对实时控制系统的认识和开发能力。算法方面采用了一些数学的方法,提高系统的自适应能力,避免了“经验值”的盲目性。

 

  评论这张
 
阅读(3877)| 评论(3)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018