【STM32F103】继电器的用法

发布时间:2024年01月14日

前言

因为最近用到了继电器,所以稍微记录一下继电器的用法。

如果我们需要点亮一个LED灯的时候,我们只需要用单片机的GPIO口去输出高低电平驱动就行。

但是我们需要通过单片机去控制大电压器件的开关的时候,我们就不能简简单单地用一个GPIO口去控制了,这时候我们需要用到继电器。

继电器

上图是我有的继电器(是磁吸式的,不过不重要),其他继电器的用法也大差不差。

可以看到有6个接口,分别是NO,COM,CN;VCC,GND,IN。

我这款继电器是5V直流驱动的(继电器表面最下面一行写的),所以我们需要在VCC接5V直流电压(实测STM32F103提供的3.3V带得不动我这款继电器,因此我使用了5V锂电池),GND就接地。IN随便接一个GPIO口用于驱动继电器。

接下来是重点,我们抛开原理不谈,直接说用法。当继电器工作时,也就是你的IN触发了继电器工作(具体看你的继电器是高电平驱动还是低电平驱动),COM和NO是连通的,而COM和CN是断开的。当继电器不工作时,COM和NO是断开的,而COM和CN是连通的。

一般情况下,我们要点亮一个灯是像上图这样的。

而我们要用单片机去控制一个灯的开关,并且默认灯是关着的时候是像下图这样的,原本直接连通的线我们破开,一路接COM,一路接NO。

这样默认情况下COM和NO是断开的,当我们给IN的电平驱动继电器工作时,COM和NO连通了起来,灯泡也就亮了,我们也就成功通过单片机控制继电器从而控制灯泡的开关。

当我们要用单片机去控制一个灯的开关,并且默认灯是开着的时候是像下图这样的,原本直接连通的线我们破开,一路接COM,一路接NC。

这样默认情况下COM和NC是连通的,当我们给IN的电平驱动继电器工作时,COM和NC断开,灯泡也就灭了,我们也就成功通过单片机控制继电器从而控制灯泡的开关。

通过STM32F103实测

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void){
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    
    GPIO_InitTypeDef itd;
    itd.GPIO_Mode=GPIO_Mode_Out_PP;                     //推挽输出
    itd.GPIO_Pin=GPIO_Pin_0;      //使用Pin_0号引脚
    itd.GPIO_Speed=GPIO_Speed_2MHz;                     
    GPIO_Init(GPIOA,&itd);

    
    
    while(1){
        GPIO_WriteBit(GPIOA,GPIO_Pin_0,1);
        Delay_s(1);
        GPIO_WriteBit(GPIOA,GPIO_Pin_0,0);
        Delay_s(1);
    }
    
}

代码没什么可说的,就是让一个GPIO口高低电平切换,我们就是用这个GPIO口去接继电器的IN口来操控继电器的。

可以来看看我的接线。

我的LED以及继电器都是用的5V锂电池供电的(因为STM32F103的3.3V带不动继电器,因此用了锂电池,因为用了DC降压模块,实际电压差不多是4V),上图的线比较乱,我再画个平面图。

简单来说就是在LED通电的情况下,用继电器把原本连通的电路给阻断。

值得一提的是由于STM32F103的3.3V带不动继电器,因此用的额外的电池给继电器供电,但是需要STM32的GND和继电器的GND共地。一开始没有共地导致STM32F103即使是输出高电平也是触发了继电器工作,因为GND不同,因此电压的高低电平会有偏差,使得单片机即使是输出了高电平,在继电器眼里仍然是低电平(我的继电器是低电平触发),后来共地就好了。

文章来源:https://blog.csdn.net/m0_63235356/article/details/135584945
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。