鱼缸使用了18B20测温,采用PWM控制加热棒加热占空比的方法控制鱼缸温度,使用了最简单的温度差调整PWM宽度的方法,温度差越大PWM占空比越大,从而产生更多的加热时间,当温度接近设定值的时候,PWM逐步缩小,减小加热时间,从而控制鱼缸温度在一个不到设定值的比较稳定的温度状态,效果是很不错的,不过如果外界温度变化,应该会对鱼缸温度有微小的影响,这就是这个方法的缺点,如果使用PID算法就不会有这个问题了,(PID还在看资料学习)不过对于鱼缸控温来说这个小的温度波动不会产生不好的影响。
现在碰到一个问题:18B20的读取会受到鱼缸LED灯的干扰,导致部分读取数据错误。关LED灯的情况下,读数一直的正确了,打开LED灯,读数收到一定的影响,大概每10次左右就会有一次数据错误,在打开LED灯的情况下,数据下载也会产生错误,写不进去,看来LED灯对单片机的干扰还是很大的,想了个加屏蔽的方法:
使用一个报废的LED灯(铝制)作为屏蔽,将接地线连接到铝片上,取得了较好的效果,干扰大大降低了,大概是几十次会有一次干扰。