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种车架号查询车辆型号的方法
如何在Windows 10上实现双系统启动:完整的分步指南
如何用虚拟机实现双系统环境
您可能不知道存在的9种9毫米弹药
一些城市退役军人优待证在乘坐地铁时不能使用,目前来看也很正常
进军宠物殡葬产业,需要办几个证?
吉林市吉丰东路沿线消失的那些“单位”
加油站的全自动洗车机,真的会伤车漆吗?车主直呼:怎么不早说!
鲍威尔“明示”降息 美货币政策风险难消
兰花何时入室最合适?养兰达人经验分享助你做出正确选择
2025年199管理类联考难度全解析:历年真题带你掌握考试趋势
哪些食材可以当主食?
营业收入净额计算方法及应用
营业收入净额计算公式及应用
尿酸高:原因、危害与治疗全解析
过年必吃饺子起源是什么?2500年前帝王祭祀品,如何变成百姓年夜饭?
手把手教你搭建医院数据安全整体方案
梦见平板屏幕碎了的深层含义
MySQL的索引类型有哪些
办公软件怎么标注声调
1964年一分钱硬币值得收藏吗?市场价格解析
在“广州阳台”,听孟庭苇唱歌
诚恳邀请信的写作技巧与注意事项详解
如何正确保存蜂蜜,确保其营养与风味不流失
狼牙山五壮士跳崖,为何最后2人能生还?当事人晚年讲出其中秘密
生猪期货交易入门:一手多少吨?
宝宝出黄疸了怎么办?这种情况需尽快就医!
停车场撞车逃逸算不算违法行为
车停车位被撞怎么解决
神奇九转指标回测:50个品种数据揭示其在期货市场的真相