找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1281|回复: 0
打印 上一主题 下一主题
收起左侧

STC15F104W单片机利用RC充放电使用IO口测量外部电压

[复制链接]
跳转到指定楼层
楼主
此文转载STC官网
对于没有ADC的MCU,而又要测量外部的一个电压时,使用RC充放电的方式是比较容易实现并且低成本的方法。
STC15F系列是1T的MCU,其IO口有OPEN-DRAIN模式,此模式可以很容易用一个IO口配合一个定时器实现RC充放电来测量外部未知电压。如果没有空余的定时器,也可以使用指令循环的方式实现。本例使用定时器。
本范例使用P3.2(INT0)来做RC测量,电路和波形示意图如下:



操作流程:
1、             初始化程序将P3.2设置成OPEN-DRAIN模式,并将P3.2输出0给电容放电。INT0设置成上升沿中断。Timer 0设置成16位自动重装定时器模式,时钟源为12T,允许中断。
2、             测量时,先清Timer 0的TH0、TL0,然后将P3.2输出1开始对电容充电,接着设置TR0 = 1来启动Timer 0,然后在INT0中断里设置TR0 = 0来停止计数,并将P3.2输出0对电容放电。读出TH0、TL0的值就是RC充电时间。
由于MCU工作在5V时,IO口读到“1”的门限电压大约为2V,所以要求输入的电压高于2V,本例的测试数据从4~12.4V,测试结果参考后面的附录1。
假设输入电压为Ux,IO口门限电压为2V,则RC充电时间为:
                            T =  - R * C * ln ( 1 – 2 / Ux )
按图示参数,当输入为10V时,RC时间大约为446uS,附录1中实测为447uS。
由于RC时间跟RC有关,而R的温漂一般较小,但普通电容的温漂较大,所以要使用温漂小并且漏电也小的电容。
由充电公式或曲线图可知,Ux和RC值的关系是非线性的,所以实际项目使用时,要根据自己的实际电路做一些标定,这样可以得到比较准确的值。
本方法适用于对测量精度要求不是很高的场合。

完整的Word格式文档51黑下载地址:
STC15F104W利用RC充放电使用IO口测量外部电压.DOC (145.5 KB, 下载次数: 12)


评分

参与人数 2黑币 +65 收起 理由
lyxxzrb + 15 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表