0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一种单片机IO口测量外部电阻的方法

冬至子 来源:TsinghuaJoking 作者:卓晴 2023-11-24 16:42 次阅读

一、前言

在以前的有些单片机应用中,有的时候会遇到 AD 端口资源不够用的情况,但又需要测量电阻的大小。比如一个热敏电阻的阻值。有人给出了一个利用两个 IO 端口完成电阻精确测量的一个老的方法。下面通过实验来测试一下这个古老的 IO 端口测量电阻的方法。

二、测量原理

测量原理比较简单。使用两个单片机IO口,连接两个电阻,向同一个电容充电。设置一个IO口为输出端口,另一个为输入端口。输出端口通过连接的电阻向电容充电。电容上的电压上升,当超过一定阈值,输入端口逻辑电平就会变成1。这个充电时间与 终止电压、阈值电压以及 RC对应的时间常数有关系。具体数值由这个公式决定。这个过程再测量一遍。

对应的时间与R2成正比。因此,两次时间的比值,就等于电阻的比值。如果已知其中一个电阻阻值,另外一个电阻便可以根据时间比值计算出来。这就是IO口测量电阻的基本原理。

image.png

三、实验结果

1、端口阈值电压

这是 STM32F030K6 单片机,给它端口 PF0 施加一个三角波。程序循环查询输入逻辑电平,并在 PF1 输出反向逻辑。可以看到单片机对输入信号进行了离散化。上升和下降具有一定的回滞特性。回滞电压大约是 200mV。

640 (1).gif
▲ 图1.3.1 单片机端口的阈值电压`

2、测量元器件

下面利用F030 单片机的 PF0, PF1 两个管脚,来测量电阻。测试一下这种方式测量的精度。

实验中需要一个电容和两个电阻。电容容值为 313.8nF,电阻1 的阻值为 19.545kΩ; 电阻2的阻值为 4.718kΩ。将它们安装在面包板上进行测试。

image.png

电路器件参数
电容C:313.8nF
电阻R1:19.545k
电阻R2:4.718k

电容一端接地,另外一端与两个电阻相连。两个电阻分别与单片机的 PF0,PF1 端口相连。下面对单片机进行软件编程。利用其中的定时器作为时标,对延迟计时。

image.png

PF0管脚连接R2,PF1连接R1。设置PF0 为输出端口,PF1 为输入端口。周期改变PF0高低电平。分别测量 PF0,以及电容上的电压信号。可以看到电容上的电压呈现充电曲线。时间常数大约为 1.5ms。根据已知器件数值,可以看到与测量的结果是相符合的。

image.png

这是电阻2对电容的充放电曲线。下面测量电阻1对电容的充放电过程。由于电阻1的阻值为20k欧姆,所以对应的充放电过程就比较慢,时间常数大约是 R2对应的时间常数的4倍。为 6.3ms。在测量过程中,两个端口同时对电容进行放电。放电时间取20ms。

image.png

3、测量单片机软件

测量软件先将 PF0,PF1 输出 0 电平,对于电容进行放电。然后将其中一个设置为输入端口,另外一个置为高电平,对电容充电。同时启动定时器1进行计时。在此过程中,监视输入端口逻辑电平是否为 1。当输入端口变为1时,停止定时器,并读取时间。然后再进行放电,更换另外一个端口为输入端口。测试充电时间。这是测量 PF0 和 电容上电压信号。可以看到两个充放电过程。黄色曲线是 PF0电压信号,青色是电容上的充放电电压信号。这是 PF0 作为输出端口,PF1作为输入端口时的测量过程。这两个充电时间与电阻成正比。

这是给出的测量结果,第一个是 电阻1 对应的充电时间。第二个是电阻2 对应的充电时间。它们的比值在4.1左右。根据前面测量的 R1,R2 的阻值,对应的比值大约为 4.143. 由此可以看到测量时间比值与电阻比值接近。

image.png

测试 298 个数据进行统计。数据的平均值为 4.119,标准方差为 0.043。测量平均值比实际电阻比值 4.143 小了 0.6% 左右。

数据统计结果:
测量次数:298
平均值:4.119
标准方差:0.043

总结

本文测试了利用单片机 IO 口测量电阻的方法。单片机平台是 STM32F030K6。测量得到的电阻充放电比值 比 电阻值的比值小了 0.6%左右。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43990

    浏览量

    620954
  • 热敏电阻
    +关注

    关注

    13

    文章

    1002

    浏览量

    100907
  • 定时器
    +关注

    关注

    23

    文章

    3148

    浏览量

    112064
  • 电容充电
    +关注

    关注

    0

    文章

    64

    浏览量

    8452
  • 阈值电压
    +关注

    关注

    0

    文章

    61

    浏览量

    51040
收藏 人收藏

    评论

    相关推荐

    单片机IO通讯

    各位同仁好,小弟在做个东西,如图所示,GP_OUT1为单片机IO,GPIO3为外部接口,假如我需要从单片机GP_OUT1发送数据到
    发表于 10-18 16:06

    单片机开发设计之一种扩展微处理器(单片机外部中断接口的方法

    一种扩展微处理器/单片机外部中断接口的方法、普通单片机对数字量输入信号的处理普通的微处理器(例
    发表于 10-28 19:56

    51单片机IO的使用方法

    LPC900系列单片机的I/O特性有定的不同,它们可以被配置成4不同的工作模式:准双向I/O、推挽输出、高阻输入、开漏。准双向I/O模式与标准51相比,虽然在内部结构上是不同的,
    发表于 08-25 09:35

    单片机如何用IO采集多个按键信号?

    样,于是就能区分出来是哪个按键按下了。即使是两个按键同时按下,也能根据电阻并联之后的电阻值算出输入到单片机的电压值,依据这个电压值也能识别出是哪两个按键按下。是不是很简单呢?理论上
    发表于 11-26 16:51

    介绍一种应用MSP430单片机测量温度的方法

    本文介绍一种应用MSP430单片机测量温度的方法,来代替传统教学中相对落后的热敏电阻结合电流表的实验方法
    发表于 05-06 08:41

    一种单片机为核心的频率测量系统的设计方法

    本文给出了一种单片机为核心的频率测量系统的设计方法
    发表于 05-14 06:17

    AVR单片机与PIC单片机IO的操作方法有何不同?

    如何去操作51单片机IO、AVR单片机IO与PIC单片机
    发表于 07-07 07:34

    单片机IO输出的几种状态

    单片机IO输出的几种状态 1.单片机的开漏输出和开漏复用输出有哪些区别? 2.单片机的推挽输出和推挽复用输出有哪些区别? 3.
    发表于 08-24 15:41

    51单片机/AVR单片机和PIC单片机IO的操作的方法是什么?

    51单片机/AVR单片机和PIC单片机IO的操作的方法是什么?
    发表于 10-29 06:43

    单片机IO概述

    是人机交互的接口,I为输入、O为输出,我们对IO的操作,就是读和写,读就是读IO的引脚状态,写就是把0或者1写入IO
    发表于 11-10 06:26

    单片机IO的原理是什么

    第二功能单片机有4组IO,内部结构各不同,有些IO具有第二功能上面除了P1外,其他接口都有第二功能。
    发表于 11-17 07:07

    介绍一种单片机使用普通IO做呼吸灯效果

    LED的原理很简单,就是个发光的二极管,只要有电流通过就会亮;下面介绍一种单片机使用普通IO做呼吸灯效果;也有朋友肯定会说直接使用PWM不就行了吗,如果
    发表于 01-18 10:03

    单片机IO的相关资料分享

    1、单片机IO单片机IO即数据输入输出管口,即可用作数据输出,也可做数据输入。如51
    发表于 01-18 07:08

    如何利用单片机去制作一种电容电阻测量仪呢

    电容电阻测量仪的工作原理是什么?如何利用单片机去制作一种电容电阻测量仪呢?
    发表于 01-20 07:26

    stm32单片机准双向IO配置介绍

    我们在开始学习51内核的单片机的时候就知道,p0的引脚都是双向IO,P1,P2,P3的IO
    发表于 02-21 07:00