【STM32】STM32使用继电器

STM32使用继电器

其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端。一般情况下是常闭状态

引脚解释
VCC电源正极(多少V继电器就用多少V供电)
GND电源负极
IN信号输入脚(一般有低电平触发和高电平触发两种,如低电平触发IN口输入低电平时NO和COM导通)
NO默认状态是和COM不导通
COM不同状态下与NO、NC的导通状态不同
NC默认状态和COM导通
img

有些厂家生产的5V继电器STM32的3V3或者5V都不一定能够驱动,所以买之前要去评论区看看。

注意:继电器的GND和单片机的GND需要共地,也可用同一电源来达到共地的效果。

两种工作模式:(以高电平触发为例)

  • 默认常开模式,信号触发时闭合

使用NO和COM,把NO和COM当成一个开关设计一个电路,默认情况下NO和COM为打开状态,高电平触发时开关闭合。

如果需要电平触发时用电器才工作可以使用这种模式。

  • 默认常闭模式,信号触发时断开

使用NC和COM,把NC和COM当成一个开关设计一个电路,默认情况下NC和COM为闭合状态,高电平触发时开关打开。

这种模式一般情况下用电器是正常在工作的,高电平触发时才停止。

示例

长时待机,信号触发启动

继电器STM32
VCC(输入端)3V3/5V
GND(输入端)GND
IN(输入端)GPIO
NO(输出端)连接供电VCC【VCC的大小和用电器有关】
COM(输出端)工作时NO和COM口导通,相当于COM为供电VCC
NC(输出端)
  • 代码【使用GPIO输出高低电平就可以实现】
#include "stm32f10x.h"                  // Device header
#include "relay.h"
/*
   使用PA11进行输出
   | 继电器        | STM32   |
   | ------------- | ------- |
   | VCC(输入端) | 3V3     |
   | GND(输入端) | GND     |
   | IN(输入端)  | GPIO    |
   | NO(输出端)  | 供电VCC |
   | COM(输出端) | 输出GND |
   | NC(输出端)  |         |
*/

#define Relay_PORT GPIOA
#define Relay_PIN GPIO_Pin_11
#define Relay_RCC RCC_APB2Periph_GPIOA

void relay_init(void)
{
   RCC_APB2PeriphClockCmd(Relay_RCC, ENABLE);
   GPIO_InitTypeDef GPIO_InitStructure;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Pin = Relay_PIN;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(Relay_PORT, &GPIO_InitStructure);
   
   RCC_APB2PeriphClockCmd(Door_RCC, ENABLE);
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Pin = Door_PIN;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(Door_PORT, &GPIO_InitStructure);
}

// 高电平触发
void relay_On(void) 
{
   GPIO_SetBits(Relay_PORT, Relay_PIN);
}

void relay_Off(void) 
{
   GPIO_ResetBits(Relay_PORT, Relay_PIN);
}
  • 8
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您好!对于使用STM32控制继电器的问题,我可以给您一些基本的指导。 首先,您需要确定继电器的工作电压和控制电压是否匹配。继电器一般有一个控制端和一个触点端,控制端用于接收控制信号,触点端用于开关电路。您需要根据继电器的规格,选择STM32的一个IO口作为控制端。 接下来,您需要编写STM32的代码来控制继电器。您可以使用STM32的GPIO库来设置IO口的输出状态。一般来说,将IO口设置为高电平可以闭合继电器,将IO口设置为低电平可以断开继电器。 以下是一个简单的示例代码,假设您将继电器控制连接到STM32的GPIOA Pin5上: ```c #include "stm32f4xx.h" int main(void) { // 初始化GPIOA RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // 控制继电器闭合 GPIO_SetBits(GPIOA, GPIO_Pin_5); // 延时一段时间 for (int i = 0; i < 1000000; i++); // 控制继电器断开 GPIO_ResetBits(GPIOA, GPIO_Pin_5); while (1) { } } ``` 请注意,这只是一个简单的示例代码,您需要根据自己的实际情况进行修改和调整。同时,为了确保安全性,请务必遵循STM32的规格和继电器使用说明。 希望这些信息能对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值