引用第11楼yearn3guns于2012-01-27 20:55发表的 :
怀疑是测RC充放电时间常数
话说不一定要先放电再测试的。算法好点的话,直接带电测也可以。只是电容的电压不要太高把电路烧了。
不是怀疑,看一下整个帖子,还有代码再发贴。
带电测我觉得不行的,你要不停刷新,那么刚才已经冲到比如说2.5V,单片机最高控制就是5V,那么下一次的确可以冲到3.75V(理想,不放电),然后再下一次只有4.375V,而Arduino自带ADC大概只能分辨4mV电压,再加上时间间隔越来越短,接下来就很有限了。
我的方法也不是完全放光电,看程序,我在LCD输出时候都节省时间让电容放电,其实放得越低越好,然后再次循环时候就测量此时电压为lo,然后再充电,冲到(hi-lo)*k+lo时候停止,这样充电时间比较长,适合这种16MHz的单片机计时,又有较大电压跨度,照顾到了10Bit ADC的精度限制