用51单片机普通I/O口检测模拟值

一、电阻类模拟信号的检测

思路:对于电阻类的模拟信号,我们可以通过对电容充电,把电阻值转变为时间值,并对改时间值进行测量和计算,从而获得电阻值或其他我们需要的结果。

1、测量原理

当对RC电路进行充电时,如果电压、电容都不变化,而且RC的时间常数又足够大,那么我们就可以认为电阻之比等于充电时间之比。K=R1/R2=T1/T2。


电容充电曲线

2、电路说明


温度检测电路图

RtNTC负温度系数热敏电阻(R25=10K)。这正是我们要测量的被测电阻。

R1:参考电阻。为了尽量提高测量精度,建议该电阻采用精密电阻。参考电阻的阻值一般选择被测电阻最大值得一般左右。

R2:放电回路限流电阻。阻值不需要太大,100~200Ω即可。

C1:充/放电电容。建议采用容量稳定、介质损耗低、温度特性好的聚丙烯电容(CBB)。如果对被测温度的误差要求不高,也可用普通此片电容代替。

3、电容的参数选择

电容值的计算参考下面公式。另外,实际选用的电容值应该比计算结果稍微小一些。确保在测量最大电阻时,计时器不会溢出。


公式说明:

T为完成额定位数的A/D转换所需的时间;

Rm为最大可能的测量电阻;

Ut为I/O口门限电压;

Ur为参考电压。

在本例中:

T=30μs×212=122880μs

Rm=35KΩ(0℃时的温度电阻值);

Ut=4.7-0.8=3.9V

Ur=4.7V

将以上参数代入公式,得C=1.983μF。实际上本例中,为了保险起见,去电容值为1μF

4、电路性能

该电路可以消除失调、增益、电容、电源电压和温度等因素带来的误差。

该电路无法消除因参考电阻、电阻和电容非线性度、I/O引脚漏电、I/O引脚输入门限不定度和单片机定时测量不定度等因素造成的误差。

整个ADC结果的精度,可以控制在+-1%以内。

5、温度检测步骤

(1)第一步:放电

P10和P11设置为输入态,INT0设置为输出态,输出“1”。电容上的残余电荷通过INT0泻放。放电的时间可以有定时器定时。为了确保电容上的电荷释放干净,该定时时间应该设置得比实际放电时间稍微长一些。

(2)第二步:测量参考电阻回路上的充电时间

P10和P62设置为输入态(高阻态),INT0设置为输出 态,输出“0”,电容充电,并对充电时间计时。

在充电过程中,通过INT0输入口检测C1的充电状态。当INT0口电平变为“0”时,视为充电结束,停止计时。

(3)第三步:放电

P10和P11设置为输入态(高阻态),INT0设置为输出态,输出“1”。电容上的残余电荷通过INT0释放。

(4)第四步:测温度电阻回路上的充电时间

P11和INT0设置为输入态(高阻态),P10设置为输出态,输出“0”。电容充电,并对充电时间计时。

在充电的过程中,通过INT0输入口检测C1的充电状态。当INT0口电平变为“0”时,视为充电结束,停止计时。

经过以上4个步骤,完成了针对两路电阻的RC充电时间的测量工作。

(5)第五步:计算电阻比率

如果仅仅是测量电阻,那么到这一步就结束了。而在本例中,我们要测量的是温度值,因此,还需要根据电阻值去查表求温度。

既然电阻值不是我们的最终目的,那么我们也可以为了简化后面的运算,不去计算热敏电阻的阻值,而是只算电阻比率即可。


你可能感兴趣的:(设计资源)