本人最近在苦心研究PID,所以经常三更半夜在思考一些问题,基本搞清楚PID每个参数的控制规律,刚才我在想如果我用位置式PID中的PD进行电机调速或者温度控制估计会有些问题,假如我是电机PWM调速,设定转数是100,当前转数是0,规定0%占空比位0转速,100%占空比为100转数,那么假如我只要PD来控制,那么根据P比例规律,当转速到达100时,P项的结果肯定是0,而D项微分是误差变化率,当转数到达100时,D项肯定也为0,因为误差变化率已经为零了,所以PD的结果最终是0,然而我要维持100的转数,PWM的占空比必须是100%,但是现在PD的结果在转数到达100的时候输出控制量已经为0了,这个好像有矛盾啊! !
我觉得应该在PD过程中需要累加控制量,这样当误差为0的时候,不至于控制量也为0,而是维持在一个恒定控制量(100%占空比)
或者在PD中加入I积分项,因为积分项是误差的累积,所以当PD都为0的时候,积分作用可以保存恒定的控制量输出(100%占空比)。
我翻阅了很多调速和温控的,程序基本都是离不开I积分项。没发现单独用PD来控制的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1.我控制的是两项电机,两项电机的电流按照相位相差90度变化的正弦波变化来细分,恒流是靠驱动IC自己产生的,所以没有电流环,实际得电流环在驱动IC内部,IC每相输出都有电流检测取样脚来自己做电流闭环,其实就是斩波恒流,再者我这个不是真正的闭环,是假的,我只要在MCU端控制电流,驱动IC会自动恒流在我设定的电流上。
2.这个克服不了,只能在调速过程中,你可以根据实际速度和调试经验,改变PWM最大占空比值,也就是正弦波峰值大小,来改变流过电机的最大电流,以保证该速度下电机还有很大的力矩输出(这个靠经验),IC能输出多大的电流,要根据你在驱动IC端设定的最大电流值额定,这个有计算公式,在IC的datasheet中。
举个例子:我设计图纸的时候设定IC的最大输出电流是1A,那么100%占空比的正弦波,应该可以输出最大1A(可能因为电机线圈电感的问题没达到1A,实际电感值越大,电机速度越快,这个问题越明显,这个问题在MCU控制端没办法解决),那么我现在设置成50%占空比的正弦波,也就是现在正弦波的峰值变为原来的一半了,那么应该可以输出500MA的最大电流,实际在MCU端是这样控制电流大小的。
下面这个图是10级电流的正弦波图,你可以看到,波的峰值是按照恒定的比例下降的,峰值最高的那个电流最大,峰值最小那个电流最小,这样可以达到控制电流的目的,因为电流变化都是按照相位差90度变化的,所以两项合成的电流矢量并没变化,也就是说合成后的角度是没变化的,还是转过那么多角度,只不过力矩变小了,也就是电机力气变小了。
截图01.jpg (35.32 KB, 下载次数: 0)
下载附件
2016-3-22 20:23 上传
是可以怎么理解的,用速度来对应电流的调节,不过我声明一点:我19楼视频确实串级PID,但是PID并没有任何外部反馈,而是利用步进电机位置和速度已知的特点,在软件内部进行模拟外部闭环反馈,所以,软件是没办法知道外部电机到底丢步没有,电流达到没有的,就是你说的,完全是靠经验和不断的实际调试,看电机丢步没有?目标跟随能力是否合自己的期望?来判定当前这个程序有无问题~
楼主给点PID的参考学习资料呗
一周热门 更多>