目录
一、介绍
二、模块原理
1.原理图
2.引脚描述
3.工作原理介绍
三、程序设计
main.c文件
relay.h文件
relay.c文件
四、实验效果
五、资料获取
项目分享
一、介绍
继电器(Relay),也称电驿,是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
以下是继电器模块的参数:
型号 | SRD-05VDC-SL-C |
工作电压 | 5V |
最大负载 | 250V/10A |
触发电流 | 5mA |
尺寸 | 25mm×50mm×18.5mm |
哔哩哔哩视频链接:
5V继电器模块详解(STM32)
(资料分享见文末)
二、模块原理
1.原理图
2.引脚描述
引脚名称 | 描述 |
DC+ | 电源正极 |
DC- | 电源负极 |
IN | 控制信号 |
NO | 常开接口 |
COM | 公共接口 |
NC | 常闭接口 |
3.工作原理介绍
利用电磁效应,当线圈两端加以电压时,电磁铁会产生磁力,导致衔铁吸合,此时弹簧压缩,金属触点连接到常开的一侧。当线圈两端没有电压时,电磁吸力也随之消失,衔铁就会在弹簧的反作用下返回原来的位置,常闭的金属触点导通。
继电器的驱动电流大概是50mA,而STM32的引脚输出电流大概在8mA,如果直接用IO口控制,驱动电流太小,继电器不会闭合。而三极管的作用就是类似开关控制,通过控制三极管的基极电流可以让三极管工作在截止和饱和导通状态,从而控制继电器闭合和断开。
三、程序设计
使用STM32F103C8T6控制5V继电器模块完成吸合和断开的操作。
RELAY_IN | PA0 |
OLED_SCL | PB11 |
OLED_SDA | PB10 |
main.c文件
#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "relay.h"
/*****************辰哥单片机设计******************
STM32
* 项目 : 5V继电器实验
* 版本 : V1.0
* 日期 : 2024.9.18
* MCU : STM32F103C8T6
* 接口 : 参看relay.h
* BILIBILI : 辰哥单片机设计
* CSDN : 辰哥单片机设计
* 作者 : 辰哥
**********************BEGIN***********************/
int main(void)
{
SystemInit();//配置系统时钟为72M
delay_init(72);
LED_Init();
LED_On();
RELAY_Init();
USART1_Config();//串口初始化
OLED_Init();
printf("Start \n");
delay_ms(1000);
OLED_Clear();
//显示“继电器:”
OLED_ShowChinese(0,0,0,16,1);
OLED_ShowChinese(16,0,1,16,1);
OLED_ShowChinese(32,0,2,16,1);
OLED_ShowChar(48,0,':',16,1);
while (1)
{
RELAY_ON;
LED_On();
OLED_ShowChinese(48,24,3,16,1); //闭
OLED_ShowChinese(64,24,4,16,1); //合
delay_ms(1000);
RELAY_OFF;
LED_Off();
OLED_ShowChinese(48,24,5,16,1); //断
OLED_ShowChinese(64,24,6,16,1); //开
delay_ms(1000);
}
}
relay.h文件
#ifndef __RELAY_H
#define __RELAY_H
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
/*****************辰哥单片机设计******************
STM32
* 文件 : 5V继电器h文件
* 版本 : V1.0
* 日期 : 2024.9.18
* MCU : STM32F103C8T6
* 接口 : 见代码
* BILIBILI : 辰哥单片机设计
* CSDN : 辰哥单片机设计
* 作者 : 辰哥
**********************BEGIN***********************/
/***************根据自己需求更改****************/
// 继电器 GPIO宏定义
#define RELAY_CLK RCC_APB2Periph_GPIOA
#define RELAY_GPIO_PIN GPIO_Pin_0
#define RELAY_GPIO_PROT GPIOA
#define RELAY_ON GPIO_SetBits(RELAY_GPIO_PROT,RELAY_GPIO_PIN)
#define RELAY_OFF GPIO_ResetBits(RELAY_GPIO_PROT,RELAY_GPIO_PIN)
/*********************END**********************/
void RELAY_Init(void);
#endif
relay.c文件
#include "relay.h"
/*****************辰哥单片机设计******************
STM32
* 文件 : 5V继电器c文件
* 版本 : V1.0
* 日期 : 2024.9.18
* MCU : STM32F103C8T6
* 接口 : 见代码
* BILIBILI : 辰哥单片机设计
* CSDN : 辰哥单片机设计
* 作者 : 辰哥
**********************BEGIN***********************/
void RELAY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RELAY_CLK, ENABLE ); //配置时钟
GPIO_InitStructure.GPIO_Pin = RELAY_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(RELAY_GPIO_PROT,&GPIO_InitStructure);
RELAY_OFF;
}