此帖出自微控制器 MCU论坛
最新回复
补充说明几点:
一、
您的交流通路中有没有“隔直流”环节,如变压器、电容等?
如有,那么,A/D采样后去掉“偏置”以后,如果还有“直流成分”,只可能是实际的“偏置”值与你软件中使用的数值之间有误差造成的,如此就如上一楼中所说了。
如没有“隔直流”环节,那么有可能实际的采样里本来就有“直流成分”,情况就比上述略为复杂一点,平衡以后“积分项”可能不是围绕0波动了。
(因我不知道您的实际算法,所以这里的叙述也不一定符合您的情况)
二、
上面所说的那个“偏置电压”变量,也可以不用根据“积分项”来调整,而是将输入的数据采用软件滤波求出其“直流成分”,来实测“偏置电压”值。
当然,这个滤波应该是低通的,时间常数要远远大于工频的周期。或者说,通带要远远小于工频。
我过去做过的类似项目中的习惯是,滤波的时间常数选采样周期的2的若干次方倍,例如65536倍,这样程序中可以用移位来代替乘法。
三、
上一楼中说“应该使PID中的I的时间常数远远大于工频的周期”,还有上面“二”中说的滤波时间常数要远远大于工频的周期,
须注意,积分或“低通滤波”通常都是“递推”性质的算法,时间常数很大(即积分系数很小)时须注意数学计算的“舍入死区”问题。为此积分项或者低通滤波的中间数据,应该保留更多位的小数。
例如,若滤波的时间常数选采样周期的65536倍,则中间变量保留的小数位数,就应该比输出需要的精度更多16个二进制位。
详情
回复
发表于 2010-2-12 14:23
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
EEWorld Datasheet 技术支持