整个项目核心部分就是个 STC12C5201AD,里边涉及了AD转换,AD键盘,还有EEPROM的读写。温度传感器没有使用DS18B20之类的了,那玩意太贵。都是使用50千欧1%精度的NTC热敏电阻做温度传感器。STC12C5201AD分辨率是8位,用查表方式,在20~70摄氏度范围内可以控制到0.5度的精度。实际使用效果不错。
保温箱其实就是一个拣来的泡沫箱,洗了洗挺合适。

拆了个用了超过10年的电热毯,想用里边的发热丝做发热材料。将发热丝绕在三合板上,结果一通电没多久就烧断了。用发热丝的方法失败了。想着在TB上买些电热丝,一直没看到合适的,后来发现了一个35w的铝膜加热片,看上去还不错,就买了回来。

贴在之前的木板上,放在泡沫箱里,加上电,温度能上到40度以上,符合了我的要求。再整个覆盖一层铝箔,发热组件就完成了。
以前都是用DS18B20做温度传感器,手头有2个舍不得用,改用之前买的NTC的热敏电阻做传感器,一共用了3个,一个感知外界温度,一个感知箱子内部温度,还有一个贴在发热器件上,用来防止发热器件温度过高(程序里限制不超过70摄氏度),控制发热片就用一个继电器控制,单片机供电就用一个小小的变压器。将整个带220v电压的部分分离,装入口香糖瓶子里,保障用电安全。



接下来该做控制部分了,选择 STC12C5201AD有几个原因 1 这个单片机带AD,用热敏电阻测温一定要用到AD,虽然是8位AD但对我够用。2 20个管脚,15个IO口对这个项目足够了,5个用来驱动数码管,3个AD用来读传感器,1个AD口用来读键盘,1个驱动继电器,还用了3个做指示灯。晶振可以不用,不过我这里还是用了,总担心自带的时钟不准。

画完PCB板,就开始做PCB板,我是用熨斗+三氯化铁。本以为会顺利,结果出了很多问题。第一次熨斗放的时间太长,整个转印纸连上边的模都给印在铜板上了,怎么弄也弄不掉,等弄掉了,碳粉也掉了。第二次弄完之后,都开始焊元件了,发现STC12C5201AD封装不对,我设计时选择SOP20,用的是和74HC164一样的封装,结果SOP封装分宽体、窄体。164用的是窄体,2051用的是宽体。直接石化。于是就有了第三次,结果还是有错误,继电器封装画错了,AD键盘线也设计错了,真悲剧,但是不打算重做了,直接跳线做修改,终于合格了。五一的休息时间,都在弄这个PCB板了。




数码管显示当前温度和时间,左边上方的接口是驱动继电器的,下边的是接电源,用78M05供电,所以接入只要大于7.5v就好,选的变压器输出是12v的。三个按键用来设定温度和时间,右边接口是接热敏电阻。3个指示灯,上边的绿灯亮起显示温度,中间绿灯亮起显示时间,红色的亮起是故障或是设置。 有两个固定选择,酸奶:温度:40度,时间6小时。醪糟:温度30度,时间50小时。选择后温度时间都能再调整。温度每次调整0.5度,时间每次调整1小时,调整后写入EEPROM。
写代码还算顺利,本打算学习一下PID的算法,用PID控制温度,但是一直没搞懂PID,照抄网上的程序,又因为超过2K限制无法写入。只好放弃。代码中遇到过几个问题,1个是EEPROM的读写,一开始搞错地址了,折腾了蛮久。2是AD键盘,这个也要去抖,以前一直没搞过键盘,第一次写键盘控制没有去抖,结果几乎无法按键。3 AD部分到时很好处理,处理速度也快。4 控制继电器,用普通模式居然推不动,改成强推模式,才能控制吸合。

搞了个磁带盒,是不是很合适啊。


可惜按键始终没有办法突出来,只能用个牙签去捅。

附上热敏电阻的阻值、温度、ad值对应表

结束!谢谢赏评!