打印

使用MCU自带的比较器进行ADC转换,

[复制链接]
2977|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanzi666|  楼主 | 2019-2-13 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本例程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编程最好在定时器中断里进行, 定时器设置为自动重装, 高优先级中断, 其它中断均低优先级.
用汇编的话, 保证比较输出电平处理的时间要相等.

    有人懂这个吗,串口出来的数字量是不是输入的模拟量啊,
是不是还要做转换,            


相关帖子

沙发
ayb_ice| | 2019-2-13 17:33 | 只看该作者
模拟西格玛-德尔塔ADC就可以了,网上有资料

使用特权

评论回复
板凳
airwill| | 2019-2-13 21:32 | 只看该作者
用比较器, 可以用 ΣΔ 方法,也可以用测量电容充电时间的办法

使用特权

评论回复
地板
airwill| | 2019-2-20 19:05 | 只看该作者
**NT018 发表于 2019-2-15 15:59
STC单片机  比较器做ADC 接NTC测温度 示例程序包  
欢迎下载  不懂的 咨询QQ  2379747610 ...

这代码挺规矩, 支持一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

204

帖子

3

粉丝