最近,我在用单片机制作一个简易的门禁开锁系统,用到的器件和电子模块有STM32单片机、矩阵键盘、光耦隔离继电器(12V单路)、电磁锁、RFID-RD522射频模块和指纹模块。在测试继电器的时候,发现12v的继电器触发端口的高低电平和数字电子的高低电平不是统一区分的。该继电器的高电平需要4.5v才能触发,但我使用的SM32单片机的IO口只能输出3.3v的高电平。为了测试该模块的好坏,就用了一块51单片机,这就引出了今天的话题。

在测试过程中,发现51单片机原本应该输出高电平的管脚在接了继电器模块后,电压直接被拉低到了3v。看到这个现象,就猜测造成此现象的原因应该是IO口驱动能力不足造成的。取下继电器模块,用万用表测了一下继电器的阻抗,400欧姆左右,相对来说,明显就是一个大负载。

这里介绍2个概念:拉电流和灌电流。

拉电流:IO口输出端向外界提供电流。相当于外界将电流从IO口拉向自己。

灌电流:IO口输出端从外界吸收电流。相当于外界将电流注入IO口。

单片机的数据手册上标明了每个端口的驱动能力,51单片机的端口最大的灌电流才6mA。6mA什么概念?6mA的驱动电流要使负载达到5v电压需要多大的负载?根据欧姆定律,至少需要接近1K的电阻。而上述继电器的阻值才400欧姆左右,当然输出达不到5v。

IO口驱动能力理解

以51单片机的P1口为例,我们看一下它的内部结构

当晶体管导通时,P1端口输出0(低电平)。当晶体管截止时,P1口输出1(高电平)。当P1端口接负载RL时,晶体管截止时,就相当于内部上拉电阻和负载RL串联。此时RL两端真的能够输出高电平吗?

答案是不一定的!根据电阻分压。Vout = VCC/(1+R/RL)只有分母接近1的时候,输出才是高电平VCC。能够输出高电平的条件是:RL >> R 。而R是IO口内部固定的,是某一个值。我们可以得出串联电路中电流(驱动电流)的表达式,从表达式中,我们可以看出,负载小(电阻R大)的时候,需要的驱动电流就小,负载大(电阻R小)的时候,需要的驱动电流就大。

提高单片机的IO驱动能力

1、用低电平+非门的组合驱动。单片机输出低电平的时候的驱动能力要高于输出高电平时候的驱动能力,单片机输出0,经过非门就变成了1。

2、外部加三极管驱动电路。但需要注意的是,驱动一些电感性元器件的时候,一定要在电感性元器件两端加一个二极管来泄流(泄流二极管)。三极管导通的时候,电感性器件上肯定会有电流存在。当三极管截止时,由于电感电流不能突变,所以如果不加二极管续流,电感上的电流会直接加在三极管上,很有可能损坏三极管。

单片机内部弱上拉_有继电器引发对单片机驱动能力的思考!相关推荐

  1. STM32F103内部弱上拉弱下拉电阻阻值的大小

    内部上拉下拉电阻阻值典型值40K欧. 查STM32F103x6/STM32F103x8/STM32F103xB的DATASHEET的5.3.12 I/O port pin characteristic ...

  2. 推挽、开漏、强上拉、弱上拉、强下拉、弱下拉输出

    概述 近来面试时经常问到推挽输出和开漏输出的优缺点.针对这两种输出我来个专门的介绍. 推挽输出(Push-Pull Output) 推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子 ...

  3. 漏极开路 推挽输出方式和弱上拉都什么意思

    所有端口引脚的缺省方式均为漏极开路.每个端口引脚都有一个内部弱上拉部件,在缺省情况下该上拉器件被使能,在引脚与VDD 之间提供阻性连接(约100 k?).弱上拉部件可以被总体禁止,通过向弱上拉禁止位( ...

  4. 32接上拉5v_51单片机P0口上拉电阻的选择

    作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0 口不能真正的输出高电平).给所接的负载提供电流,因此必须接(一电阻连接到VCC),由电源通过这个上 ...

  5. Altera FPGA管脚弱上拉电阻详细设置方法

    Altera FPGA管脚弱上拉电阻的软件设置方法 在使用 Altera 的 FPGA 时候, 由于系统需求, 需要在管脚的内部加上上拉电阻. Quartus II 软件中在 Assignment E ...

  6. 关于ALTERA的FPGA的弱上拉问题

    笔者在使用的过程中发现FPGA的IO口如果作为输入端口的话,默认是悬浮输入,这样检测到值就可能在1.0之间跳动.例如,笔者做的事4*4键盘的扫描,没有设置若上拉的时候,总会出现错误的按键值.后来笔者猜 ...

  7. 单片机_CT107D训练平台电路原理图\蓝桥杯训练版\单片机最小系统\上拉电阻的作用\开漏输出

    最小系统单片机电路 配置 40 脚 51 系列单片机插座: 配置 40 脚 AVR 单片机插座. 原理图如下: 单片机最小系统(由复位电路+晶振电路+电源电路组成) 可以看到P0一组IO口接了上拉电阻 ...

  8. 上拉电阻之-------强上拉与弱上拉

    弱上拉和弱下拉的理解  2010-11-23 17:59 弱上拉就是当输出高电平时,能够输出的电流很小 很容易被别的强下拉拉低,因而叫做弱上拉.例如上拉电流为几百uA这样子. 上拉电阻的大小来决定上拉 ...

  9. 确定sw1开关信号输入端口_基础教程15 Arduino端口内部的上拉功能

    本专栏内容经修订后,已在豆瓣阅读集结成书出版: https://read.douban.com/ebook/106875966/​read.douban.com 我是潘,曾经是个工程师.这是为 htt ...

  10. C语言单片机数码管a段亮,宏晶单片机设置强上拉模式让数码管更亮!

    STC(宏晶)系列单片机的I/O口具有强上拉模式,何为强上拉模式? 宏晶单片机I/O口可以设置成四种模式:准双向口/弱上接,推挽/强上拉,输入/高阻,设置成推挽/强上拉,无论输出1和0时能承受的电流都 ...

最新文章

  1. Error in x$e : $ operator is invalid for atomic vectors
  2. 【通知】有三AI项目研发组成员招收条件及可对接业务暂行方案
  3. 聊聊C语言和指针的本质
  4. python面向对象初识
  5. 洛谷 P1508 Likecloud-吃、吃、吃
  6. junit、spring浅析、ssm框架、json格式
  7. 北大青鸟java+web_java web ui开发
  8. DOM的利用冒泡做的一个小程序
  9. C++ 随机数函数rand()与srand()的思考
  10. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_14-MongoDb入门-文档...
  11. cfdpost怎么导出云图_FLUENT教程10CFDpost后处理.pdf
  12. 碧桂园建筑机器人造楼,梦照进现实还是“海市蜃楼”?
  13. 华丽的Flutter的demo----新闻阅读+音乐+短视频+小说
  14. mysql中dint_MySQL基础篇(1)SQL基础
  15. 网红直播天水人间主播大秀
  16. [多点触控测试]不用app,手机怎么测试屏幕触控点数
  17. 1.oracle RAC11G 对单机ADG搭建详细文档
  18. 如何解决 fs.renameSync() 跨区移动文件的问题
  19. Firefox全历史版本下载
  20. 开机自动启动 Ubuntu iBus 输入法

热门文章

  1. 安卓第十三天笔记-服务(Service)
  2. nancy中的本地化
  3. C# 第三方控件 错误 LC-1
  4. Service Started!!!-end In Service while
  5. 15条SQLite3语句
  6. m_pRecordset遍历记录集之后,m_pRecordset-MoveFirst()为什么会出错
  7. UML学习系统(一)
  8. solr的索引库配置
  9. 分布式文件存储FastDFS之环境搭建篇
  10. 2018-2019-1 20189218《Linux内核原理与分析》第二周作业