|
**电路原理**
学单片机这么久,要说难的话,就是跟电路结合起来一起分析,因为要补电路的基础知识。温度传感器的话一般是用热敏电阻来做的,那么就是温度与电阻相关,用电路间接求出电阻,用电阻来对照温度电阻表格来求出温度。
因为单片机的ADC引脚是采样VREF-到VREF+的范围,这两个一般一个接地,一个接3.3v,那么就是0~3.3V的测量范围。因为ADC的精度是12位的,那么采样值转换的电压值就是
V=采样值*Vref/(2^12)=value*3.3/4096;
通常是用电阻分压电路来测量热敏电阻的电压,根据电压再反推阻值。
**电压计算**
比如图中的电路。R58和C73都不参与分压,电容都可以看成是开路,不去考虑。真正分压的电阻就是R59和没画出来的RT;
TEMP1接ADC,TEMP_IN1接RT电阻,在图中未画出;
UADC=VCC*RT/(RT+R59);
UADC=VALUE*VCC/2^12=VALUE*3.3/4096
这样已知ADC采样的value,就可以得出UADC,就可以解出RT值,根据RT表再反推出温度值。
温度值的计算分为两步一步是整数部分确定,另一部分是根据比例确认出小数。
**阻值计算**
找到详细的RT表,最好精度是1℃的,不然误差会比较大,可以找商家要。取电阻的中心值,比如-55℃时,中心值是250.065KΩ。
然后在Excel里拉张表,把温度和电阻值都放进去,后面再提前算出单片机的采样值,表里面的采样公式是一个RT电阻和一个4.3KΩ电阻的分压数值。这样根据采样值来跟表里的比较,来推出电阻值。
我们可以在程序里把这张采样表放进来,用数组来表示。第一行的就表示在这个采样值下对应的温度,-45~-40,一般厂家给的实验就是-50~100度左右。
然后如果要算1度的精度,把单片机的采样value和这张表来比较,用for循环来遍历。算出整数部分之后,小数部分大概用采样值占两个数值间的比例来算出小数。因为表格的温度是从-45度开始的,所以公式里(i-45)*10表示温度的整数部分,后面的部分就是算小数的,可以加上小数,也可以减小数,就看你的整数取的是上限还是下限。最后返回的res就是实际温度*10。总的来说,是比较抽象的思维。
总体来说,ADC只能采样电压值,所以无论采样什么东西,最后都要转换成电压值。
下面这个电路思路其实一样,10K的电阻不参与分压。只有2.37k和RT进行分压3.3V。
下图的电路就稍微复杂一点,加入了放大器。