工程師在開發項目,如果遇到溫度的采集,一般是怎麼處理的呢?
溫度采集?那肯定需要用到溫度傳感器啊,這還要講啊,真是無語~~~
對的,是要用到溫度傳感器。隻是溫度傳感器,你能想到有幾種類型呢?
是NTC熱敏電阻?還是PTC熱敏電阻?還是DS18B20溫度傳感器?
NTC熱敏電阻,它是一種模拟量的溫度傳感器,它利用的是熱敏電阻的阻值與溫度的關系,溫度越高,電阻的阻值反而越小。
PTC熱敏電阻,與NTC熱敏電阻是類似的,隻是溫度越高,PTC熱敏電阻的阻值也會越高。
而DS18B20溫度傳感器,它是一種數字接口的溫度傳感器,采集到的溫度信号是通過單總線的形式向外輸出的。
這三種類型的溫度傳感器都是可以在電路中測量溫度的,是沒有問題的。除了這三種類型,芯片哥這幾天在做一個關于溫度的項目,在方案設計上就用了另外一種類型。
ZNI1000芯片ZNI1000芯片,它也是一種溫度傳感器。之所以把它叫做“芯片”,是因為它的封裝尺寸外形長得像一個芯片,是一個SOT-23的封裝。
ZNI1000芯片封裝外形
如果用它來測量溫度,在電路上是可以把它當做PTC熱敏電阻的,它也是一種電阻類型的,輸出的阻值與溫度是成“正比例”關系的。
溫度越高,阻值越大。工程師就是通過電路檢測它的阻值,就能測量出它的溫度值。
ZNI1000芯片
OK,ZNI1000芯片雖然是SOT-23封裝,有3個引腳,但它的Pin1和Pin2是功能相同的。于是,在電路中,我們就可以把它等效畫成一個“電阻”了。
硬件電路如何用這個ZNI1000芯片來采集溫度呢?
因為它的原理是和PTC熱敏電阻類似的,所以在硬件電路上,也是和工程師熟悉的PTC熱敏電阻測量溫度的電路是一樣的。
ZNI1000芯片應用電路
隻需要接一個上拉電阻1.5K,與ZNI1000芯片的電阻構成一個分壓電路,再接上一個104/50V的濾波電容,就OK了。
單片機隻需要讀取分壓電路的電壓就能測量出它的溫度了。
可能有工程師發出疑問,為什麼上拉電阻R1的阻值是1.5K?
這是因為,在溫度為0℃~100℃的時候,ZNI1000芯片的阻值是1K~1.6K。為了更好地進行分壓,也為了更好地被單片機ADC采集讀取到,才選了一個1.5K的上拉電阻。
軟件開發有了硬件電路,工程師就可以對它進行軟件代碼的開發了。
軟件上,單片機讀到ADC采集的電壓,就可以通過分壓電路計算出ZNI1000芯片的電阻阻值。問題是,知道阻值,如何去計算它測量的溫度值呢?
這是代碼程序開發的一個關鍵性問題。
就ZNI1000芯片,它測量的溫度與輸出的阻值,有一個對應關系,可以表示為
R = R0 * (1 A*T B*T*T C*T*T*T*T D*T*T*T*T*T*T)
其中R是輸出的阻值,R0是ZNI1000芯片在0℃輸出的阻值,是一個固定值1K,式子中的ABCD也都是一個固定值。
關系式與R0ABCD的固定值
這樣計算是不是有些複雜,而且單片機處理起來這些數據也有些難度。這怎麼辦呢?軟件上有什麼其他的辦法嗎?
可以使用它的阻值---溫度曲線
阻值---溫度曲線
在這個曲線中,橫坐标是測量的溫度,縱坐标是ZNI1000芯片輸出的阻值。是不是近似地可以把它看成一條直線呢?
在誤差允許的範圍内,這樣做是可以行,能大大減輕軟件的開發工作量。如果把它看成一條直線,也就是溫度和阻值的關系,是呈線性比例關系的。
這樣,是不是就能計算出它測量的溫度值呢?哈哈哈哈~~~
當然,除了這個方法,還可以在軟件上用查表法來測量溫度。通過将每個溫度與阻值的對應關系提前存放在EEPROM中或者是Flash中,然後利用單片機的ADC采集讀到的電壓,計算出它的阻值,再通過查表法,去計算它的溫度。
是不是也可以呢?
請持續關注【芯片哥】,後面會定期更新有關于電子元器件和芯片,包括一些電子産品項目開發案例的相關内容。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!