使用Stm32及18B20对鱼缸加热棒的改装

2023-12-21 16:32:58

某品牌的鱼缸加热棒使用了几年了,经过一个夏天不使用,竟然出故障了,开机调节温度加热后,继电器抖动,不再是加热一段时间,停止一段时间的工作状态了。
在这里插入图片描述
可以看出该电路使用电位器调节温度设置,使用NTC温度电阻检测水温,再控制继电器吸合,达到恒温加热的目的,实际使用效果并不是非常理想,没有电路图,考虑到维修难度,不如利用加热棒的加热部分自己用单片机改装一个控制电路。
电路板是做别的项目多余的,有芯片STM32,和NMOS输出部分,随便取个管脚用在18B20的检测,18B20的检测程序已经在前几篇文章中介绍了,包括碰到的问题。
加热控制部分使用了固态继电器,内容应该就是双向可控硅吧,因为220V交流电部分还是用靠谱的成熟的器件:
在这里插入图片描述
固态继电器输入是3~32V直流控制电压,输出就是220V的开关串接加热棒的加热电阻丝就可,要注意的是该部分的改装使用220V的高电压,对人有较大的危险,如果要改装必须对强电有较强的理论基础,否则不要擅自改装!
在这里插入图片描述
芯片是STM32,检测是18B20,输出使用PWM,每秒检测一次,在OLED显示温度,当温度小于21度的时候持续加热,也就是PWM是100%的高电平输出,当温度上升过程中,PWM随着温度的上升逐步减小高电平的占空比,也就是减少加热的时间,当温度达到23度后停止加热,就是PWM占空比是0,这个方法比较简单,实现效果会随着室温有一点影响,但对于鱼缸加热,这个精度已经足够了,我使用的是2度的变化过程,也可以自己调整:

  vTaskSuspendAll();			//启调度锁
	  short temp = Get_temp();
	  xTaskResumeAll();				//关闭调度

	  uint16_t t = temp ;

	  pwm = (2300 - temp) * 10 ;
	  if(pwm > 2000) pwm = 2000;
	  if(t > 2300) pwm = 0;

因为温度我乘了个100,就是23度是2300,相差2度就是200,PWM设置的最大值是2000,所以这里乘了10.
可以认为2000就是PWM的100%,

 HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);	//开启PWM

__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, pwm);    //通过修改比较值来改变占空bi

在这里插入图片描述
将加热棒放在水里,下面是冲氧器,让气泡冲上来的时候同时冲走加热棒的热量,尽快的使热量快速的扩散到鱼缸中。
等一晚上的加热,数字温度计在22.5度,远处的温度计稳定在21度,加热棒的功率是250W,加热占空比大概在30~40%之间波动,加热效果很好,很温定。

文章来源:https://blog.csdn.net/ztvzbj/article/details/135132135
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。