stm32温湿度监测系统框图

在上一节中,我们学习了DHT11温湿度传感器的使用。在这一节,结合温湿度检测子系统的功能,我们为系统设计执行机构。

系统的执行机构利用继电器加风扇来完成。当环境的温度或湿度超过设定值时,继电器吸合,风扇工作,。

6.1 继电器的介绍

本项目以1路5V继电器模块为例,进行项目设计。其它类型继电器模块类似。1路5V继电器模块采用光耦进行隔离,性能稳定,人性化设计可选择高电平或者低电平信号触发,仅需5mA电流即可驱动控制能力为10A的继电器吸合。

产品尺寸见图1,参数见表1。

stm32温湿度监测系统框图(零基础学习STM32智能家居系统之温湿度检测子系统的实现)(1)

图1 5V继电器尺寸(1路)

表1 产品参数表

工作电压

5V

静态电流

5mA

MAX电流

190mA

触发电压

低:0

高:5V

触发电流

2—4mA

MAX负载

AC250V/10A DC30V/10A

6.2 继电器接线方式

模块有触发电平选择端,中间有COM公共端,当LOW(L)端与公共端接通时,为低电平触发,当HIGH(H)端与公共端接通时,为高电平触发。

继电器的接线可以分为两种情况,一种为常开接法;另一种为常闭接法

a.常开接法

当信号触发端有电平信号时,继电器吸合,相当于开关闭合,此时电路接通,设备将接通,正常工作。

具体接法如图2所示。

stm32温湿度监测系统框图(零基础学习STM32智能家居系统之温湿度检测子系统的实现)(2)

图2 继电器常开接线图

b.常闭接法

当信号触发端有电平信号时,继电器吸合,相当于开关由原来接通变为断开,此时设备将断电停止工作。

stm32温湿度监测系统框图(零基础学习STM32智能家居系统之温湿度检测子系统的实现)(3)

图3 继电器常闭接线图

6.3 继电器的引脚定义及功能

表2 继电器引脚表

序号

引脚符号

引脚定义及功能

1

DC

供电电源正极(按继电器工作电压选择)

2

DC-

供电电源地

3

IN或INx

控制信号输入端

4

NO或NOx

负载接入端,常开

5

COM或COMx

负载接入端,公共端

6

NO或NCx

负载接入端,常闭

6.4 项目说明

系统利用DHT11采取环境温度,当温度超过一定值时,继电器工作,风扇转动,而当温度低于一定值时,LED灯亮。引脚如表3所示。

表3 引脚表

STM32F103C8T6引脚

元件

功能描述

PB15

DHT11_DATA

DHT11连线

VCC

VCC

GND

GND

VCC

DC

继电器连线

GND

DC-

PB12

IN或INx

PC13

LED1

LED连线

VCC3.3

阳极

GND

阴极(接电阻)

6.5 继电器与风扇的接法

如图4所示,继电器与风扇的接法。注意本例中,程序中

stm32温湿度监测系统框图(零基础学习STM32智能家居系统之温湿度检测子系统的实现)(4)

图4 继电器风扇接线图

6.6 继电器程序

Relay.h

#ifndef __RELAY_H

#define __RELAY_H

#include "sys.h"

#define Relay PBout(12) // PB12

void Relay_Init(void);

#endif

Relay.c

#include "relay.h"

void Relay_Init(void)//继电器和蜂鸣器的初始化

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE); //使能PB端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PB12 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz

GPIO_Init(GPIOB &GPIO_InitStructure); //根据设定参数初始化GPIOB

GPIO_SetBits(GPIOB GPIO_Pin_12); //PB12 输出高

}

6.7 主程序

#include "led.h"

#include "delay.h"

#include "sys.h"

#include "usart.h"

#include "dht11.h"

#include "relay.h"

int main(void)

{

u16 times=0;

u8 humi_value temp_value;

delay_init(); //延时函数初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

uart_init(115200); //串口初始化为115200

LED_Init(); //LED端口初始化

DHT11_Init(); //温湿度传感器初始化

Relay_Init();

while(1)

{

times ;

DHT11_Read_Data(&temp_value &humi_value); //读取温湿度值

if(times0==0)printf("%d " temp_value);

if(times0==0)printf("%d " humi_value);

if(temp_value > 30)

{

Relay = 0;//继电器工作、风扇转动

}

else if(temp_value < 26)

{

Relay = 1;//继电器关闭,风扇停止转动

}

if(times0==0) LED1=!LED1; //闪烁LED 提示系统正在运行.

delay_ms(10);

}

}

以上是STM32 智能家居中温湿度子系统中继电器的工作。欢迎共同讨论,纠错。期待关注、点赞、转发。粉丝朋友可直接私信索要相关资料(项目源码)。

〖特别声明〗:本文内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。如有侵犯您的原创版权或者图片、等版权权利请告知 wzz#tom.com,我们将尽快删除相关内容。

赞 ()
打赏 微信扫一扫 微信扫一扫

相关推荐