STM32控制5V继电器模块详解
创作时间:
作者:
@小白创作中心
STM32控制5V继电器模块详解
引用
CSDN
1.
https://m.blog.csdn.net/qq_44016222/article/details/142511973
继电器(Relay)是一种电子控制器件,具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中。它实际上是用较小的电流去控制较大电流的一种"自动开关",在电路中起着自动调节、安全保护、转换电路等作用。
以下是继电器模块的参数:
- 型号:SRD-05VDC-SL-C
- 工作电压:5V
- 最大负载:250V/10A
- 触发电流:5mA
- 尺寸:25mm×50mm×18.5mm
模块原理
引脚描述
引脚名称 | 描述 |
|---|---|
DC+ | 电源正极 |
DC- | 电源负极 |
IN | 控制信号 |
NO | 常开接口 |
COM | 公共接口 |
NC | 常闭接口 |
工作原理
利用电磁效应,当线圈两端加以电压时,电磁铁会产生磁力,导致衔铁吸合,此时弹簧压缩,金属触点连接到常开的一侧。当线圈两端没有电压时,电磁吸力也随之消失,衔铁就会在弹簧的反作用下返回原来的位置,常闭的金属触点导通。
继电器的驱动电流大概是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"
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"
// 继电器 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)
void RELAY_Init(void);
#endif
relay.c文件
#include "relay.h"
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;
}
实验效果
(此处应补充实验效果的具体描述,例如继电器控制LED灯的开关效果等)
热门推荐
怎么找劳动监察大队?劳动能力鉴定赔偿标准详解
仓储管理系统:仓库区域划分指南
迅雷云盘空间清理秘籍:4步轻松释放大量空间,再也不怕存储告急
Excel表格设置唯一值的三种方法:数据验证、条件格式和公式辅助
如何用三重均线交叉过滤交易中错误的信号
安置房办房产证需要走哪些流程
哪些因素会造成应激性溃疡
项目管理收益计划怎么写
英语四级语法深度探索:部分倒装结构详解与应用
可乐鸡翅这样做,好吃到舔手指
江西在中国地图的东南位置,美食与自然资源丰富
小孩急性中耳炎:症状识别与治疗指南
海南新增5个国家4A级旅游景区
报考条件揭秘:你知道如何满足所有要求吗?
自媒体运营中,如何选择一个吸引人的头像?
吃花菜有什么好处?花菜的营养价值及功效
利用人工智能优化康复治疗计划定制软件的研究进展
倒签合同存在哪些风险
刘保松博士谈ICL晶体植入⑨:ICL术后注意事项有哪些?
员工工作技能提升度评估与培训方案
HTB 学习笔记 【中/英】《前端 vs. 后端》P3
股票打新全攻略:揭示参与新股的必备条件
市场反弹很脆弱!鲍威尔可能令多头“扫兴”?
副脾可能挂什么科
净水器显示灯亮的原因及解决方法
寒咳症状全解析:原因、区别与食疗方案
如何更新车机系统以支持最新的CarPlay功能?
一文读懂什么是“AI算力”(建议收藏)
“蛎”在四方:深耕牡蛎新质苗种,赋能乡村振兴
三角阀与球阀的区别及适用场景分析