對于熱電偶采集,有專門的芯片比如max31856等等,直接讀取內部寄存器就能出來溫度,但是有局限性不利于產品升級,只能是固定的一種分度號采集,又比如Wre325型的熱電偶不支持,那么只能通過單片機驅動ADC芯片來采集熱電偶的電壓計算出溫度,可以把所有熱電偶的分度號以數組的形式保存在單片機里,能支持所有類型的熱電偶。關于熱電偶原理,具體的請問度娘,熱電偶是一段由不同導體(通常為合金)制成的一端焊接在一起的兩根導線,由于塞貝克效應,在熱端和冷端之間將產生一個電動勢,看個圖:
這里熱端可理解為熱電偶,冷端可理解為連接熱電偶的接線端子或者PCB。ADC芯片選擇,比如ADS1232,ADS1118,ADS1220,AD7793等,我選擇的是ADS1118,性價比高,而且內部自帶電壓基準和溫度傳感器,電路也很簡單,我在AIN2接了一個NTC電阻用于冷端溫度測量,使用內部溫度傳感器可以不要。
熱電偶輸出的是電壓信號,使用ADC采集到的模擬量轉換成電壓,此時是熱端的電壓,還需要對冷端電壓進行測量補償,就是連接熱電偶的端子或者PCB焊盤那個地方的溫度,可以用ADC內部溫度傳感器進行測量,也可以用NTC電阻。得到冷端的溫度后,需要把這個溫度通過查熱電偶分度表轉換成對應的電壓,比如,冷端溫度為30度,通過查熱電偶分度表得到30度的電壓是多少,最后熱電偶輸出的電壓加上冷端補償的電壓就是實際電壓,實際電壓再通過查熱電偶分度表就能得到實際溫度。看個圖,T代表溫度,V為電壓:
舉個栗子:
ADC 冷端報告 26.2°C,經 ADC 測量的 K 類型熱電偶電壓 6.62mV。要將這個值轉換為最終溫度,首先將測得的片載溫度轉換為相應的所使用的熱電偶類型的電壓。根據制造商熱電偶分度查詢表,26.2°C 對應于 1.049mV。于是 = 1.049mV + 6.62mV = 7.669mV 。
下一步,從熱電偶查詢表中,將新計算得出的電壓V轉換回一個溫度。在這個示例中,制造商熱電偶查詢表指示 7.669mV 與 188.05°C 等效。
熱電偶S,B,W,R,K,J等不同類型的分度表,網上都能找得到,都是統一的,寫程序的時候按照標準的分度表來,實際還需校準,因為每個廠家的制造工藝導致有誤差。格式是這樣的,請看圖:
上圖,800度時熱電偶輸出33.275毫伏。把這些毫伏表乘以1000寫到單片機數組里,可以隔5度10度50度記錄一個數就可以,用二分查表法查,然后計算兩個點的線性比就可以得到溫度。