继电器,一种常见的电控制装置,其应用几乎无处不在。在家庭生活,继电器被广泛应用于照明系统、电视机、空调等电器设备的控制;在工业领域,它们用于控制电机、泵站、生产线等高功率设备的运行;继电器还在通信网络、交通系统以及医疗设备中发挥着重要作用。
不仅如此,继电器也是学习其他电子原理和技术的入门工具。通过理解继电器的工作原理和使用方法,你将为更深入地探索电子世界打下坚实基础。
所以,如果你还是一枚小白,不必担心!继电器是一个很好的起点,可以帮助你逐步了解电子领域的基础概念和应用。相信我,一旦你掌握了继电器的奥秘,你将获得打开通向电子世界更大门的钥匙!
本文所涉及的源码及安装包如下(由于平台限制,请点击以下链接阅读原文下载):
https://www.lxlinux.net/e/stm32/relay-tutorial.html
往期教程,有兴趣的小伙伴可以看看。
继电器,可以被形象地比作一个开关,就像电灯开关一样,按下,电路闭合,电路通,灯亮;再按下,电路断开,电路不通,灯灭。它能够通过控制小电流来打开或关闭大电流电路,实现电路的控制和信号的传递。不过,与普通的物理开关相比,继电器具有更高的可靠性和灵活性,能够应对复杂的电路控制需求。
当继电器的电磁线圈通电时,产生的磁场会引起机械部件的运动,从而改变触点的状态,触点可以是常闭或常开。
继电器原理示意图如下:
当信号电源断开,线圈两端没有施加电压,线圈没有产生磁力,衔铁在弹簧拉力下不接触触点,工作电路不连通,负载电器不工作。
当信号电源闭合,线圈两端施加电压,线圈产生磁力把衔铁往下拉,衔铁接触触点,工作电路连通,负载电器工作。
继电器的控制电路与工作电路是隔离的,这种切换状态的能力使得继电器能够控制高电压、大电流电路的开关操作。
我们常见的继电器型号按照两方面分类:电压和路数。
1. 以电压分类:
根据控制电路的工作电压来分类,如 5V、12V、24V 等继电器。
2. 以路数分类:
按路数可分为 1/2/4/8 等路数,就像一板电灯开关上可以有 1/2/4/8 个开关,每个开关可以控制各自的电灯开关。8 路继电器就可以控制 8 个电路的开关。
以下是常见继电器的工作参数,不过大家做项目前还是要按照商家详情页的挑选合适的,毕竟每个厂家会有些不同。
有些继电器可通过跳线设置高电平/低电平触发,跳线与 L 短接时为低电平触发,跳线与 H 短接时为高电平触发。
工作电压 | 静态电流 | MAX电流 | 触发电压 | 触发电流 | MAX负载 |
---|---|---|---|---|---|
5V | 5mA | 190mA | 5V | 2-4mA | 交流250V/10A 直流30V/10A |
12V | 5mA | 80mA | 12V | 2-4mA | 交流250V/10A 直流30V/10A |
24V | 5mA | 50mA | 24V | 2-4mA | 交流250V/10A 直流30V/10A |
工作示意图如下:
接线如下:
继电器 | 单片机/电路 | 备注 |
---|---|---|
DC+/VCC | 电源正极 | 按继电器要求,接5V、12、24V或其他电压 |
DC-/GND | 电源负极 | |
IN | IO口 | 可以以高或低电平控制继电器吸合 |
以下三个引脚,COM 一定要接,NO 和 NC 二选一。
继电器 | 电路 | 备注 |
---|---|---|
NO | 需要控制的电路,与 NC 二选一 | 常开接口,继电器吸合前悬空,吸合后与COM短接,电路闭合 |
COM | 公共端 | 继电器公用接口 |
NC | 需要控制的电路,与 NO 二选一 | 常闭接口,继电器吸合前与COM短接,吸合后悬空,电路断开 |
我们的实现目标是由 STM32 控制继电器闭合与松开,让 LED 的红灯亮灭。
本教程使用的硬件如下:
STM32 | 继电器 | LED | 电池 |
---|---|---|---|
3.3 | VCC | ||
G | GND | ||
P8 | IN | ||
COM | R | ||
GND | 负极 | ||
NO | 正极 |
烧录的时候接线如下表,如果不会烧录的话可以看我之前的文章 STM32下载程序的五种方法:https://www.lxlinux.net/e/stm32/five-ways-to-flash-program-to-stm32.html 。
ST-Link V2 | STM32 |
---|---|
SWCLK | SWCLK |
SWDIO | SWDIO |
GND | GND |
3.3V | 3V3 |
接好如下图:
代码很简单,就是初始化一个引脚,连接继电器的 IN:高电平,继电器吸合,LED 亮;低电平,继电器悬空,LED 灭。
#include "sys.h" #include "usart.h" #include "delay.h" //继电器控制LED引脚定义 #define LED_CLK() __HAL_RCC_GPIOB_CLK_ENABLE() #define LED_GPIO GPIOB #define LED_PIN GPIO_PIN_8 void led_init(void); /* LED初始化函数声明 */ int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */ delay_init(72); /* 延时初始化 */ led_init(); /* LED初始化 */ while(1) { HAL_GPIO_WritePin(LED_GPIO,LED_PIN,GPIO_PIN_SET); //继电器吸合,LED亮 delay_ms(1000); HAL_GPIO_WritePin(LED_GPIO,LED_PIN,GPIO_PIN_RESET); //继电器悬空,LED灭 delay_ms(1000); } } /** * @brief 初始化LED相关IO口, 并使能时钟 * @param 无 * @retval 无 */ void led_init(void) { GPIO_InitTypeDef gpio_initstruct; LED_CLK(); /* IO口时钟使能 */ gpio_initstruct.Pin = LED_PIN; /* LED0引脚 */ gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */ gpio_initstruct.Pull = GPIO_PULLUP; /* 上拉 */ gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */ HAL_GPIO_Init(LED_GPIO, &gpio_initstruct); /* 初始化LED0引脚 */ }
继电器「啪嗒」吸合,红灯亮;继电器「啪嗒」松开,红灯灭,如此循环。
另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。
刷题 | LeetCode算法刷题神器,看完 BAT 随你挑!
推荐阅读: