最近做温湿度计,本来MCU选了8266,带数据上传,结果功耗太大,直到用了Deep-Sleep才把功耗降到可接受范围,但唤醒后程序从头执行,而且由于电路设计失误,导致LCD总是清屏刷新。最后想了想数据上传也就是个噱头,其实没鸟用,决定换MCU。受限手里的单片机和尺寸因素,决定用STC15W204S,不带ADC,带一路比较器,计划用比较器做一路ADC检测供电电压。网上查了一些资料,大体对比较器做ADC的工作原理有了一些了解,但感觉都不是很明确,结合STC提供的例程发现理解有误,例程解释不通,请大神来指点一下。
电路和原理
上面原理中有几个地方不解,先说下个人对整个流程的理解。
上面电路图中R1和C2实际为限流滤波电路,而C2和R2组成积分电路,P1.5作为基准源,通过R2恒流给C2充电。
假设P1.5=3.3V,C2经R2恒流充满电需要10ms,而比较间隔为10μs,则量程为10ms/10μs=1000,而不是说量程可以随意指定。继续假设P1.5是3.3V,Vin是1V,C2电压每10μs升高3.3mV,升高到1V需要304次,步骤分解为:
1:P1.5接地,C2放电到电压为0,Vin接入1V,P1.5拉到3.3V,定时器中断计数10μs开始工作。
2:第一次进入定时器中断,经过了10μs,此时比较器正输入端1V,负输入端3.3mV*1=3.3mV,P1.5输出高,继续比较。
3:第二次进入定时器中断,总共经过20μs,负输入端电压6.6mV,P1.5输出高,继续比较。
。。。
n:第304次进入定时器中断,总共经过3.04ms,负输入端电压3.3mV*304=1.0032V,P1.5输出低,Vin已经测出,测量结束。
我理解的整个流程就是这样,但是跟STC官方提供的解释和代码出入比较大,按照官方的解释又理解不了,麻烦大神出来指点一下。官方代码放一楼。