当前位置:首页 > 公众号精选 > TsinghuaJoking
[导读]通过实验来确定单片机输出IO口的实际电阻阻值,这为将来使用单片机进行测量工作提供数据基础。

01背景


电子小帮手电路中电源开关电路分析 中介绍测量模块电路实验原理的时候,对于ATmega系列的 单片机的输出端口进行了内部描述 。特别是对于端口做为IO输出口的时候,它可以等效为通过电阻19Ω和22Ω分别上拉到VCC,或者下拉的GND。

那么就会出现一个新的问题,对于ATmega单片机,这个IO口的内阻究竟有多大呢?

通过实验来确定单片机输出IO口的实际电阻阻值,这为将来使用单片机进行测量工作提供数据基础。

利用在 ATMEGA8 DIP-28面包板实验 中可以下载程序的实验方式,对于ATmega8单片机搭建在面包板上的测试芯片。通过实验来测量对应的IO端口在作为输出端时相对于GND,VCC的电阻阻抗。

02测量方案


1.测量端口电阻

测量电阻阻抗的方式可以通过以下三种方式来进行:

  1. 通过V-A方法检测,也就是通过测量IO口输入、输出电流一项相对应的IO口电压的变化,来获得端口的等效串联电阻。
  2. 使用万用表直接测量;
  3. 使用手持LCR表来测。

2.测量过程

通过软件编程,使得单片机的PB4,PB3,PB2,PB1分别处于输出高电平,和输出低电平的情况,然后按照上面三种方法来测量对于端口的内部等效阻抗。

03测量数据


1.使用V-A方法测量IO内阻

(1) IO低电平内阻

使用在 低价电阻箱-阻值测试 中的9999Ω电阻箱,分别改变IO端口的输出负载,记录不同电阻下输出端口的电压,进而可以进行获得内部电阻。

Current(mA) 3.068900 1.900500 1.376000 1.078700 0.889500 0.754900 0.655700 0.579500 0.519100
Current(mA) 3.068900 1.900500 1.376000 1.078700 0.889500 0.754900 0.655700 0.579500 0.519100
Voltage(V) 0.086651 0.055485 0.041959 0.034435 0.029279 0.025946 0.023526 0.021161 0.019959

通过线性拟合,可以建立输入电流(i,单位mA)与端口电压 之间的线性关系。

通过上述线性方程,可以得到端口的输入电阻。

(2) IO高电平内阻

测量不同输出电流下输出电压的变化。

Current(mA) 3.066000 1.897700 1.373900 1.077000 0.888000 0.753500 0.654500 0.578400 0.518200
Current(mA) 3.066000 1.897700 1.373900 1.077000 0.888000 0.753500 0.654500 0.578400 0.518200
Voltage(V) 0.077972 0.050410 0.038025 0.031065 0.026657 0.023490 0.021160 0.019415 0.018024

对上述电压电流线性拟合,由此可以得到单片机高电平下输出内阻。

通过实际测量,可以看到ATmega的IO口在输出状态下,内阻分别是26.15Ω(低电平)以及23.56Ω(高电平)。

2.使用万用表测量IO内阻

使用DM3068数字万用表,直接测量ATmega的输出低电平的IO对GND之间的电阻:

测量ATmega8输出高电平的IO对VCC(+5V)之间的直流电阻:

注意:由于存在输出静态电压,不能够测量输出高电平的IO对GND之间的电阻,或者输出低电平IO对VCC之间的电阻。

3.使用LCR表测量IO内阻

为了避免单片机端口的静态电压对于LCR表的测量影响,使用100uF的电解电容进行隔直之后,然后在使用Smart Tweezers进行测量相应端口的内阻。

※ 结论


单片机的IO如果作为输出端口,它可以等效一个内部穿有内阻的电压源。由于它内部是通过MOS管完成IO端口与VCC,GND的相连,所以内阻实际上是这些MOS管导通内阻。

通过对ATmega8单片机端口的内阻测量,可以看到这些内阻的大小在20欧姆到30欧姆之间。这与它的数据手册上相关的数值基本上是在同一数量级之内。

上文中使用了三种方法测量单片机IO口的内阻,它们的取值基本相似。因此上,在未来实际上应用中,可以根据具体情况来选择相应的测量方式。


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

换一批

延伸阅读

[C语言与CPP编程] 干货!二叉树操作详解

(给C语言与CPP编程加星标,提升C/C++技能) 来源:https://segmentfault.com/a/1190000008850005 【导读】:树是数据结构中的重中之重,尤其以各类二叉...

关键字: C语言 嵌入式

[小林coding] 索引为什么能提高查询性能....

前言 昨天,有个女孩子问我提高数据库查询性能有什么立竿见影的好方法? 这简直是一道送分题,我自豪且略带鄙夷的说,当然是加「索引」了。 她又不紧不慢的问,索引为什么就能提高...

关键字: 计算机 嵌入式

[嵌入式云IOT技术圈] 整理了很久之前在码云/Github/CSDN上收藏的嵌入式产品级项目分享开源

1、MCU产品级项目收集 早年活跃在CSDN上的时候,我曾拥有不少积分下载了很多产品级的资源,这些年我也在这些产品级的项目上学习了很多编码技能和产品设计思维,后来加入了开源组织以后,我就飘了呀,一直活跃在码云/Gith...

关键字: C语言 嵌入式

[嵌入式大杂烩] 嵌入式C编程之错误处理(附代码例子)

作者:clover-toeic 原文:https://www.cnblogs.com/clover-toeic/p/3919857.html 前言 本...

关键字: C语言 嵌入式

[嵌入式ARM] 鸿蒙和安卓,到底有什么区别?

对于开发者来说两个最关键的点值得关注:一个是 Beta 版的开发工具,一个是开源网站。 开源网站...

关键字: 应用开发 嵌入式

技术子站

关闭