接触到一个项目有测温需求,整理了一下测温电路的原理,拿到了下面电路:
通过LM358的一个运算放大单元将PT100的电压放大至STM32 AD能读取的电压。
【前提知识】:看这篇文章前部分 TL431驱动三线PT100热电阻电路设计
所以说要将PT100的电压通过运放放大,电流做小。所以可以看到图一左边PT100被R1分压,限制电流大小。
=========================分隔符===========================
然后我们要计算【ADC采集到的电压】 和 PT100电阻的关系:电压被放大了,不确定关系就不知道采集到的电压对应PT100的电压是多少。
关于运算放大器的知识可以搜一下基本的运放电路以及如何推到放大倍数的。
主要靠【虚断 】【虚短】分析:将电路简化后可得到下图
通过虚短和虚断 ,可以得出上面的公式,既而推导出:
V2 = (PT *3.3)/(PT+1000)
Vout = V2 + (V2-V1)*R6/R5
计算过程:
分析下面公式我们可知:
V2 = (PT *3.3)/(PT+1000)
Vout = V2 + (V2-V1)*R6/R5
Vout放大电压取决于R6/R5的值,可以通过调节R6和R5来达到调节放大倍数的作用。
=========================分隔符===========================
既然知道了放大倍数的关系,我们就可以将STM32 AD采集到的电压转换为Pt100的阻值,继而我们就得到了温度。
/* 通过采集Vout电压可以推出PT100的阻值 */
V2 =( Vout + V1*R6/R5 )/(1+(R6/R5))
PT = 1000*V2/(3.3-V2)
但是还有点问题:如第一张图所说,3.3V的电压纹波会影响PT100的电压,所以采集到的数据还不是很准确。这个电路只是单纯的将PT100电压放大给AD使用。
而且根据我这边的使用场景分析,测温范围在0-200°之间,也就是Vout最大只可能输出1.7V 还是浪费了AD的采集范围。。。。