前言:
在智能衣柜中,使用异味传感器检测柜内异味值,当异味值大于设定值时会自动开启小风扇,小风扇起到一个排污去浊的功能,再加上温湿度传感器检测柜内的温度和湿度,当温湿度达到设定值时,加热片自动发热,起到一个降温除霉的作用。想要使小风扇和加热片自动开启或者关闭,就要使用继电器作为一个自动开关装置。
一,5V继电器
二,两路5V继电器
2.1简介
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用,可以用来控制5V的小风扇和加热片。
2.2继电器硬件图
放一张继电器图,主要是让大家避避雷,我第一次使用的时候,一直没效果,上网搜索好多博客来看才明白输出端的线怎么接的,写在这里也是希望大家不用像我一样。
输入端口:外接5V电源,输入端哪里有个绿色框框,黑色跳帽可以控制继电器是高电平触发还是低电平触发。
输出端口:从左往右看,分别是NO1/NO2,COM1/COM2,NC1/NC2,代表常开,公共端,常闭三种状态。
继电器的两种状态,开和关,当继电器触发时,为打开状态,NOn口就会被使能,当继电器为关闭状态时,NCn口就会被使能,中间作为公共端连接输出。
元器件的线如何连接?
继电器为打开状态:小风扇红黑两根线子,红线接入继电器的NO1/NO2口,继电器的COM1/COM2拿一根公母杜邦线引出来接入5V电源,小风扇的黑线接STM32的GND口。
继电器为关闭状态:小风扇红黑两根线子,红线接入继电器的NC1/NC2口,继电器的COM1/COM2拿一根公母杜邦线引出来接入5V电源,小风扇的黑线接STM32单片机的GND口。连接图下图所示:
输入端:
输出端:
三,软件代码部分
3.1软件部分---STM32CUBEMAX部分
第一步:配置STM32单片机PC2,PC3口味GPIO_OUT输出
第二步:黑色跳帽插入H端,为高电平触发,在MCU上电时,初始化IO口为低电平输出,开漏输出,输出使能上拉电阻,并设置标签:FAN_IO,HOT_IO,如下图所示:
第三步:STM32Cubemaa生成keil代码。
3.2软件部分---Keilv5代码部分
第一步:因为加热片和小风扇的代码比较少和简单,就把他们合成一个文件去使用哦,在工程文件中添加小风扇和加热片.c和.h控制文件。
第二步:在fan&hot.h中添加以下代码:
#ifdef H_fan_HOT_H
#define H_fan_HOT_H
#include "main.h"
void FAN_Switch(uint8_t a);//¿ªÆô/¹Ø±Õ·çÉÈ
void HOT_Switch(uint8_t a);//¿ªÆô/¹Ø±Õ¼ÓÈÈƬ
#endif
第三步:在fan&hot.c中添加以下代码:
#include "fan&hot.h"
#include "gpio.h"
void FAN_Switch(uint8_t a)
{
if(a) //ÅжÏaÊÇ·ñΪÕæÖµ
{
HAL_GPIO_WritePin(GPIOC,FAN_IO_Pin,GPIO_PIN_SET);
}
else
HAL_GPIO_WritePin(GPIOC,FAN_IO_Pin,GPIO_PIN_RESET); //ÉèÖÃPC8Òý½Å״̬Ϊ¸ßµçƽ
}
void HOT_Switch(uint8_t a)
{
if(a) //ÅжÏaÊÇ·ñΪÕæÖµ
{
HAL_GPIO_WritePin(GPIOC,HOT_IO_Pin,GPIO_PIN_SET);
}
else
HAL_GPIO_WritePin(GPIOC,HOT_IO_Pin,GPIO_PIN_RESET); //ÉèÖÃPC8Òý½Å״̬Ϊ¸ßµçƽ
}
第四步:在main.c中加入新增.h文件:
第五步:在mian.c的while循环中打开/关闭小风扇,并在串口处打印输出。
四,测试输出
4.1sscom串口输出
看图可知,每隔5s打开/关闭小风扇,继电器控制小风扇/加热片成功。
4.2实际控制测试
VID_20221208_153540
看视频可知,小风扇5s打开,5s之后关闭的状态。
五,总结
总结:上面部分我只是做了继电器控制小风扇的测试,如果想要做成达到预订异味值就开启风扇或加热片的效果,可以加上温度值进行判断,就是在while中加一个if 判断函数,就可以了哦。目前规划就是加紧把剩下的部分更新出来吧,争取1月之前更完。