找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

分享一个用单片机比较器做电压表的程序

查看数: 4871 | 评论数: 5 | 收藏 11
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-10-6 19:37

正文摘要:

本程序用STC15W201S单片机。16引脚共14IO,  共连接 一个 3位 8段共阴数码管,两个按键,以及680K+10K电阻分压连接比较器测量外部电压。 其中,P10~P15 + P36,P37 分别通过1K电阻连接数码管 段选 ,P31~P3 ...

回复

ID:200118 发表于 2024-1-19 16:25
分享电路图就更好
ID:1109333 发表于 2024-1-15 20:51
看似简单,其实很复杂!
ID:1064915 发表于 2024-1-12 16:10

MCU的工作频率为22.1184MHz.
使用MCU自带的比较器进行ADC转换, 并通过串口输出结果. 用定时器0产生10us中断查询比较器的状态.
使用比较器做ADC, 原理图如下.
做ADC的原理是基于电荷平衡的计数式ADC.
电压从Vin输入, 通过100K+104滤波, 进入比较器的P5.5正输入端, 经过比较器的比较, 将结果输出到P1.5再通过100K+104滤波后送比较器P5.4负输入端,跟输入电压平衡.
设置两个变量: 计数周期(量程)adc_duty 和 比较结果高电平的计数值 adc, adc严格比例于输入电压.
ADC的基准就是P1.5的高电平. 如果高电平准确,比较器的放大倍数足够大,则ADC结果会很准确.
当比较结果为高电平,则P1.5输出1, 并且adc+1.
当比较结果为低电平,则P1.5输出0.
每一次比较都判断计数周期是否完成,完成则adc里的值就是ADC结果.
电荷平衡计数式ADC的性能类似数字万用表用的双积分ADC, 当计数周期为20ms的倍数时,具有很强的抗工频干扰能力,很好的线性和精度.
原理可以参考ADD3501(3 1/2位数字万用表)或ADD3701(3 3/4位数字万用表), 也可以参考AD7740 VFC电路.
例: 比较一次的时间间隔为10us, 量程为10000, 则做1次ADC的时间为100ms. 比较器的响应时间越短, 则完成ADC就越快.
由于要求每次比较时间间隔都要相等,所以用C编程最好在定时器中断里进行, 定时器设置为自动重装, 高优先级中断, 其它中断均低优先级.
用汇编的话, 保证比较输出电平处理的时间要相等.
ID:1064915 发表于 2024-1-12 08:43
STC15W201S系列单片机引脚图:


ID:1108581 发表于 2024-1-9 22:48
大佬牛逼,能写这么多代码,学习学习

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

Powered by 单片机教程网

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