Stm32的GPIO驱动继电器

背景

最近接到第一个任务,用stm32f107做另一个控制器的测试板,意思就是,使用stm32为目标控制器提供输入信号,同时接收目标控制器的输出信号。其中数字量输入就是利用stm32驱动一个继电器来实现的

NPN三极管使用条件

1、放大:基极电压大于发射极电压,集电极电压大于基极电压;(发射结正偏,集电结反偏)

2、饱和(开关):基极电压大于发射极电压,集电极电压小于等于基极电压

三极管驱动继电器

电路图

继电器参数

JQC-3FF/005-1ZS(551)继电器的基本参数如下

额定电压:5V,额定功率:360mW,线圈电阻:70Ω

由此可以计算额定电流

I = 360mW/5 = 72mA

根据继电器参数选择三极管参数

1、通过额定功率,可以判断三极管的耗散功率必须大于720mW(2倍的额定功率);

2、通过额定电流,可以判断三极管的集电极最大连续电流必须大于144mA(2倍的额定电流);

3、通过额定电压,可以判断三极管的集射极最大电压必须大于10V(2倍的额定电压)

最终选择了直插的三极管8050-D

集电极电阻

因为以前模电学的很渣,所以对三极管周边几个电阻一直不太了解,这里花了很长时间

集电极电阻的电压

U_R_c = I_C R_C

所以  U_C = V_C_C - U_R_c,可以看出,集电极电阻在这里的作用,就是分走一部分的Vcc电压

如果电压设置为5V,那么集电极就可以不需要设置电阻了

发射极电阻

发射极电阻主要用于交流放大电路的反馈电阻,在直流放大中作用不大,所以不接

基极电阻

基极电阻的作用是:①设置基极偏置电压;②限制电流大小。

经查表,我使用的三极管最小放大倍数为40倍,集电极输出需求的电流为72mA,那么

I_B = I_C/40 = 1.8mA

再查表,得知 U_B_E = 0.6V

那么可以算出  R_B = (U - U_B_E)/I_B = 2.7/1.8 = 1.5K 

但是由于电路并不工作在放大状态,所以可以不必设置基极电阻

上拉电阻 & 开漏输出

本次使用的输出模式为开漏输出。

当三极管导通时,继电器两端均被拉低,触点断开;

当三极管截止时,继电器接到电源,触点吸合。所以很有必要添加一个上拉电阻,使得在引脚悬空时能够保持继电器触点断开。上拉电阻的大小要比基极电阻大一些,因为电源电压5V比单片机的高电平电压要大(图误)

续流二极管

由于继电器是一个电感型元件,断电时电流不会突变,需要一个元器件来消耗多余的电流,否则会导致局部高温。这里选用一个反接的二极管来消耗多余的电流。

  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32CubeMX中驱动继电器的方法可以通过以下步骤实现: 1. 首先,在继电器.h文件中定义继电器的控制函数RELAY_1(uint8_t c),该函数用于控制继电器的开关状态。需要引用的头文件包括"stm32f1xx_hal.h"和"main.h"。 2. 在继电器.c文件中实现控制函数RELAY_1(uint8_t c)。根据输入参数c的值,使用HAL_GPIO_WritePin函数来设置继电器引脚的电平状态,以控制继电器的吸合和松开。 3. 在主文件main.c中,可以在MX_GPIO_Init函数中初始化继电器GPIO引脚,具体的引脚设置可以根据实际电路连接情况进行配置。 4. 最后,在需要控制继电器的地方调用RELAY_1函数,传入适当的参数即可实现对继电器驱动。 请注意,以上是一个基本的示例代码,具体的配置和使用方法可能因具体的MCU型号和外部电路的不同而有所差异。因此,在实际应用中,应根据具体的硬件和软件环境进行适当的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [05_STM32Cubeide开发_无源蜂鸣器和继电器驱动](https://blog.csdn.net/DDGGG1/article/details/123473031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值