主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
继电器 | 电路原理,跳线设置,驱动程序,调用控制。 | 能控制开关即可。做温控继电器项目。 |
师从洋桃电子,杜洋老师
📑文章目录

一、继电器核心原理图解
+-----------------+
| 控制电路 |
| (STM32 GPIO) |
+--------+--------+
|
▼
+----------+----------+
| 驱动电路 |◄──续流二极管
| (ULN2003/晶体管) |
+----------+----------+
|
▼
+-----------------+ | +-----------------+
| 线圈通电 | | | 触点动作 |
| 产生电磁场 | +───►| 常开触点闭合 |
| 12V/24V DC | | 控制大电流回路 |
+-----------------+ +-----------------+
二、四大核心应用场景
- 智能家居控制:空调/灯具远程开关
- 工业设备隔离:PLC与强电设备间信号隔离
- 安全保护系统:过压/过流自动切断
- 电路转换枢纽:多路信号切换控制
三、STM32驱动电路设计要点
3.1 典型驱动方案对比
驱动类型 | 优点 | 缺点 | 适用电流范围 |
---|---|---|---|
晶体管驱动 | 成本低、体积小 | 需外置保护电路 | <500mA |
ULN2003驱动 | 集成保护、多路复用 | 占用PCB面积较大 | <500mA×7路 |
光耦隔离驱动 | 完全电气隔离 | 需要双电源供电 | <100mA |
3.2 ULN2003典型接线
+5V
│
├──► ULN2003输入
STM32 PA13├──► IN1
│
├──► ULN2003输出
└──► COM端接继电器线圈+
│
继电器线圈- ────────┘
四、STM32驱动程序深度解析
4.1 关键配置代码(relay.c)
// JTAG功能禁用(关键!)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
// GPIO初始化配置
GPIO_InitStructure.GPIO_Pin = RELAY1 | RELAY2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 高速模式
4.2 控制函数工作流程
五、工业级应用案例:三相电机控制
5.1 硬件连接方案
STM32F103
│
├──PA14──► ULN2003-1──► 继电器1(接触器)
├──PA13──► ULN2003-2──► 继电器2(过热保护)
└──PB5───► ULN2003-3──► 继电器3(急停回路)
5.2 安全增强代码
#define RELAY_SAFETY_CHECK() (GPIO_ReadInputDataBit(SAFE_PORT, SAFE_PIN))
void Relay_Control(u8 ch, u8 state){
if(RELAY_SAFETY_CHECK()){ // 安全联锁检测
GPIO_WriteBit(RELAYPORT, ch, (BitAction)state);
// 添加状态反馈校验
if(state != GPIO_ReadOutputDataBit(RELAYPORT, ch))
Error_Handler();
}
}
六、开发注意事项
6.1 调试排错指南
故障现象 | 检测点 | 解决方法 |
---|---|---|
继电器不动作 | PA13/PA14电压电平 | 检查JTAG是否成功禁用 |
触点火花明显 | 负载电流峰值 | 并联RC吸收电路(100Ω+0.1μF) |
MCU异常复位 | 电源纹波 | 增加100μF电解电容滤波 |
6.2 抗干扰设计
- 电源隔离:采用DC-DC隔离模块
- 信号滤波:GPIO串联100Ω电阻
- PCB布局:继电器远离MCU至少3cm
- 地线处理:数字地与功率地单点连接
七、进阶应用:PWM软启动
// 电机软启动控制
void Motor_SoftStart(uint8_t relay_pin){
for(int duty=0; duty<=100; duty+=5){
PWM_SetDuty(duty); // PWM频率建议1-5kHz
delay_ms(50);
if(duty == 100)
GPIO_SetBits(RELAYPORT, relay_pin);
}
}
八、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32F103xx官方数据手册
[3] STM32F103X8-B数据手册(中文)
[4] STM32F103固件函数库用户手册(中文)
[5] ULN2003L 数据手册
[6] 按键控制继电器程序
[7] 继电器的原理与驱动程序.pptx
总结
本文系统讲解了STM32驱动继电器的完整实现方案,核心要点包含:
- JTAG功能重映射:通过AFIO时钟配置释放调试接口的GPIO功能
- 硬件电路设计:晶体管/ULN2003驱动电路与电气隔离方案选型
- 安全控制机制:状态反馈校验与软启动PWM控制实现
- 工业级应用扩展:三相电机控制系统的多路继电器集成方案
开发过程中需特别注意:
- 驱动电路续流二极管的必要性
- PCB布局中的抗干扰设计原则
- GPIO端口复用冲突的排查方法
通过本文介绍的控制策略,可构建从基础电器控制到复杂工业设备管理系统的完整解决方案,为物联网与自动化领域提供可靠的执行层支持。
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨步进电机的原理与驱动,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-08)