跳到主要内容

【GPIO】继电器

下载例程代码: 下载代码 如何使用例程【点击查看教程】

使用一个按键控制继电器的吸合、断开。

继电器简介

继电器是一种电气开关,它使用电磁原理来控制开关的通断。

继电器通常由线圈和触点组成。当线圈通电时,会在继电器内部产生磁场,使得触点闭合或断开,从而实现电路的通断控制。

  • 学习板上的继电器型号:松乐SRD-5VDC-SL-C

  • 这款继电器有3个输出端口,分别是常开、公共、常闭(参考学习板背面丝印),属于单刀双掷开关。

    • 当继电器断电时(PB5 输出低电平),公共-常闭接通,而公共-常开断开
    • 当继电器通电(PB5 输出高电平),公共-常闭断开,而公共-常开接通
relay2
继电器线圈公共-常开公共-常闭
断电 (PB5低)断开闭合
通电 (PB5高)闭合断开

如何使用例程

编译并下载程序到学习板,即可看到程序效果:

  • 按下KEY1,继电器状态翻转

  • LED红灯表示继电器断开,绿灯表示接通

  • 为了更好的测试继电器的效果,可以将某个被控回路接入继电器的输出端,这样就可以通过程序控制该回路的通断。例如控制台灯、风扇等。

⚠️ 注意!高电压可能造成危险,请不要尝试超过36V的电压。

例程讲解

下面介绍了如何自己实现该例程的功能

1、工程配置

  • 分配引脚:在Pinout&Configuration页面,配置如下引脚

    • 将 PB5 配置为 GPIO_Output ,并设置 User label 为 RELAY

    • 将 PA7、PB0 分别设置为 GPIO_Output,并分别设置 User label 为 GREEN、RED

    • 将 PB12 配置为 GPIO_Input,并设置 User label 为 KEY1

工程配置

2、代码

  • 在main.c的while循环中,实现按键控制翻转继电器。

    • 按键检测消抖 50 ms

    • 继电器受 PB5 控制,输出高电平线圈吸合,低电平断开

    • 翻转后需等待按键释放,否则会连续翻转

while (1)
{
// 按键KEY1按下
if (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
{
// 消抖 50 ms
HAL_Delay(50);
if (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
{
// 翻转继电器、指示灯
HAL_GPIO_TogglePin(RELAY_GPIO_Port, RELAY_Pin);
HAL_GPIO_TogglePin(RED_GPIO_Port, RED_Pin);
HAL_GPIO_TogglePin(GREEN_GPIO_Port, GREEN_Pin);
// 等待按键释放
while (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
{
}
}
}
}

故障排除

工程建立和配置