STC15F104W单片机利用RC充放电测量外部电压
需积分: 20 121 浏览量
更新于2024-09-09
收藏 146KB DOC 举报
"STC15F104W利用RC充放电使用IO口测量外部电压"
本文档介绍了使用STC15F104W单片机利用RC充放电方式测量外部电压的方法。该方法适用于没有ADC的MCU,同时也可以实现低成本的电压测量。
首先,STC15F系列单片机具有OPEN-DRAIN模式的IO口,可以用来实现RC充放电。RC充放电是一种常用的电压测量方法,将电压信号转换为时间信号,通过测量时间来计算电压值。
在本例中,我们使用P3.2(INT0)作为RC测量口,电路和波形示意图如下:
[pic]
[pic]
操作流程如下:
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。
RC充电时间的计算公式为:
T=-R*C*ln(1–2/Ux)
其中,Ux是输入电压,R和C是电阻和电容的值。根据公式可以计算出RC充电时间。
在实际项目中,需要根据自己的实际电路做一些标定,以取得比较准确的值。同时,也需要选择温漂小并且漏电也小的电容,以确保测量结果的准确性。
本方法适用于对测量精度要求不是很高的场合,能够实现低成本的电压测量。
附录1:测量结果和曲线
| 输入电压(V) | Timer0读数 | 时间uS(18.432MHZ) |
| --- | --- | --- |
| 4 | 2100 | 1367 |
| 4.2 | 1966 | 1280 |
| 4.4 | 1846 | 1202 |
| 4.6 | 1740 | 1133 |
| 4.8 | 1646 | 1072 |
| 5 | 1560 | 1016 |
| 5.2 | 1487 | 968 |
| 5.4 | 1416 | 922 |
| 5.6 | 1354 | 882 |
| 5.8 | 1297 | 844 |
| 6 | 1245 | |
通过该方法可以实现对外部电压的测量,并且能够满足低成本和小型化的要求。
2022-07-13 上传
2021-10-03 上传
点击了解资源详情
2022-04-03 上传
点击了解资源详情
2021-04-24 上传
caixupual
- 粉丝: 9
- 资源: 128
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍