STM32水温控制系统硬件详解
系统主要组成;铂金测温驱动电路(恒流源实现),市电电压过零检测电路.功率驱动电路(固态继电器实现),小信号放大电路(仪用运放实现),STM32单片机最小系统.500W水温加热管.
1,铂金电阻测温驱动电路
驱动PT100铂金测温电阻.和电阻桥原理相似.利用1MA精密恒流源加在铂金电阻一端,另一端接地.用另一个1MA精密恒流源加在精密100欧姆电阻一端,另一端接地.(选择100欧姆,是因为PT100在零度时电阻值是100欧姆)
这是铂金电阻驱动电路,R3是铂金电阻,当温度变化时电阻会发生变化,从而影响VF1和VF2之间压差不为零。分别作为INA128仪表放大器的输入端(仪表放大器的优点是输入阻抗非常高,共模抑制比好,非常适合桥式电路)。经过放大输出差模信号。但是其输入的共模信号比较窄,最大也只能到达电源电压附近,此时可以通过调节Ref端调节输出电压。再用OPA335完成10倍的放大工作使其输出在合适的范围,方便AD采集。
2,驱动电阻桥的是1毫安的电流源,必须选用精密电流源。保证电阻的变化不影响电流源的电流,如果不是精密电流源,那么电阻的变化就不能真正反应温度的变化,影响整个系统的精度。我选用的是HowLand电流泵
这是1mA的电流源,经过试验搭建非常稳定,适合用来驱动桥式测温电路。
3,电热丝驱动电路,用的是固态继电器。性能稳定,但价格较贵。在调节加热功率时用的过零检测电路,通知单片机进入中断,调节继电器通断时间,控制导通角,从而控制加热功率。其实可以不用过零检测,这里用到是因为这里用过零检测,可以精确地调整输入功率,控制更精确,对电网冲击更小。使整个系统工作更稳定。
4,温度控制算法,在控制领域因为水是滞后性比较严重的介质。在加热功率的控制上,必须采用一定的算法控制,这里采用PID控制算法,简单易行。通过调节比例,积分,微分常数,控制功率,避免超调。下面是程序算法模型
structPID{
unsignedintSetPoint;//设定目标DesiredValue
unsignedintProportion;//比例常数ProportionalConst
unsignedintIntegral;//积分常数IntegralConst
unsignedintDerivative;//微分常数DerivativeConst
unsignedintLastError;//Error[-1]
unsignedintPrevError;//Error[-2]
unsignedintSumError;//SumsofErrors
};
//PID处理函数
//=====================================================================================================*/
unsignedintPIDCalc(structPID*pp,unsignedintNextPoint)
{
unsignedintdError,Error;
Error=pp->SetPoint-NextPoint;//偏差
pp->SumError+=Error;//积分
dError=pp->LastError-pp->PrevError;//当前微分
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*Error//比例项
+pp->Integral*pp->SumError//积分项
+pp->Derivative*dError);//微分项
}
此模型容易在单片机上实现,性能较好。经过实际验证符合较高的要求。对于各个参数的选取,我才用的是配凑发,根据效果来不断调整参数,最终调到合适的参数。
5,最后一点是AD采集的基准电压源也很重要,直接影响采样精度,如果可以尽量选用专用的基准电压源芯片,控制AD采样误差。
以上是整个水温控制系统的设计要点,比较简单。但是对于理解PID控制有很大帮助,还有仪用运放的使用和电流源的使用桥式电路的使用。硬件和软件都达到一定的锻炼效果。
STM32水温控制系统硬件详 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)