|
各位好,毕设的系统中有个直流电机的调速,论文写得差不多了,最后写个PID算法。我是边学边写,从零开始,收获不少。最大收获就是一些细节问题,是泛泛地看书看不出来的。请教大家。因为我的目标不只是写个论文交差,还想后面把实际的东西做出来。
转速采样是一个U型槽光电开关照着电机主轴上的光电编码盘,输出简单的单相脉冲信号。脉冲信号速度就是主机转速 乘以 100(编码盘上一周100个光栅孔)。假定要把主机转速控制在60RPM(小型直流减速电机),所以光电开关脉冲信号的频率就是100Hz
转速信号的读取,是用单片机的输入捕捉,每次光电开关的脉冲信号上升降捕捉一次,并发中断。单片机收到输入捕捉的中断后,读取计数值。假定计时器的时基频率为1MHz,所以标准转速下,每次读取的计数值应该是10000。
PWM调速,PWM频率设为2KHz,计算得出一个脉冲计时器的基值是3000(100%占空比)
问题如下:
1. 我本来设计是直接在编码器脉冲中断后调PID然后调速一次转速。也就是编码器脉冲一次、PID校正一次,调速一次。理论很好,但一细想,实际如果电机堵转呢?那就永远也得不到调速机会了,一直堵在那儿。哪怕不堵死,转速变很慢,也就是PID的基础T实际变得很长,计算结果肯定就不对了。
所以PID计算和调速应该是一个恒定的频率,用另一个计时器来定时触发。对吧?
2.这个触发PID调速的计时器频率:应该是比光电编码器的脉冲频率高呢, 还是低呢?我觉得应该是比编码器脉冲频率低
如果比编码器脉冲频率高,可能编码器脉冲一次之间,单片机要采样几次,这几次都是没有变化的值,既浪费资源,又可能会影响PID结果(PID看到速度“没变”)
如果比编码器频率低,也就是说编码器脉冲几次了,才采样一次,这样可以做平均值等滤波,让采样数值更准确些。对吧?
3. 但这样的缺点是采样频率更低了,当然本例可能是足够了。但假如有场合需要在低转速下高采样频率呢?我觉得那要么换传感器(测速电机啥的),要么用独立的减速齿轮,编码盘装直流电机轴上。对吧?
4. PID中的单位,需要把转速、T转换成实际的转速RPM、采样周期多少ms?还是说,我可以简化运算,设T为1,转速就直接用计数器读数(10000上下)
我的理解是,必须要保证运算的单位一致。比如T=1(用一个脉冲作为单位),那TD,TI也要以此为单位(虽然这2位都是虚的)。输入的转速是以计数值,输出也是计数值
那这样的话,不就是说T TD TI都是虚的概念。我可以取更方便的数字,比如TI取个2,T取个8啥的(避免除法指令),甚至能使所有计算都是整数,避免浮点运算。只要大家同比增大就行了。 是不是呢?
5. PID最后得到的结果,是转速值(不管是10500这样的计数器读数,还是48RPM这样的实际转速),而控制电机的是PWM的占空比(不管是40%还是1200这样的计时器基值)。如何由给定转速值得到控制要输出的占空比?
我的理解是,这和电机特性有关。比如有个占空比(或是输入电压)对转速特性图,或是自己试验,最后得到一个系数(线性)或是一张表(非线性)。程序据此将转速控制值转化为PWM占空比。
是不是我理解的这样啊?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|