zhonghua_li 发表于 2019-6-19 19:31:26

用RC 和 比较器 实现ADC

如下图,所示。工作流程大概是这样的。
1. 设置GPIO1为低电平输出,使电容充分放电。
2. 设置GPIO1为高电平输出,为电容充电,当检测到比较器输出变高时,停止。
3. 将GPIO1设置为低电平输出,之后,不断检测比较器输出,当检测到比较器输出为变低时,立即转入第4步。
4. 立即将GPIO设置为高电平输出,之后,不断检测比较器输出,一旦变为高,立即转入第3步。

经过多次 3-4-3-4. 步调循环(比如100次)之后,停止。 将所有第3步输出低电平的时间累加起来,得到TL;将所有第4步输出高电平的时间累加起来,得到TH。

输入电压 = VCC * TH/(TH+TL) 。转换误差受 IO输出电压精度的 影响。

xzhiwei 发表于 2019-6-19 20:05:32

这是在造轮子么

qtechzdh 发表于 2019-6-19 20:12:21

xzhiwei 发表于 2019-6-19 20:05
这是在造轮子么

哈哈哈,应该是木头轮子

lzg1987 发表于 2019-6-19 22:04:12

σ怎么读

lzg1987 发表于 2019-6-19 22:04:29

西格玛的他型吧

flash3g 发表于 2019-6-20 00:18:54

STC文档有详细的例程

hugohehuan 发表于 2019-6-20 00:55:15

这不就是西格玛德尔塔吗

zhonghua_li 发表于 2019-6-20 09:15:04

qtechzdh 发表于 2019-6-19 20:12
哈哈哈,应该是木头轮子

因为先前有个帖子,有人在问,怎么实现。所有就新开一贴。

xiaomu 发表于 2019-6-20 09:28:21

就是西格玛德尔塔的原理, 速度一般,如果定时器的位数够多的话,可以作为高精度ADC, 不过要保证电阻,电容足够稳定不漂!

早期做过4位机电子秤,读取压力传感器的数值, 精度还可以!

epwwm 发表于 2019-6-20 09:32:39

这个在89c2051时代就有了,算起来是20年前的了
页: [1]
查看完整版本: 用RC 和 比较器 实现ADC