高精度溫度芯片Si7051在熱電偶補(bǔ)償中的應(yīng)用
王昌世(南昌溫度測控實(shí)驗(yàn)室,南昌?330002)
本文引用地址:http://butianyuan.cn/article/201912/408683.htm摘?要:熱電偶(TC)測溫是溫控儀必備的功能。TC測溫需進(jìn)行冷端溫度補(bǔ)償,補(bǔ)償?shù)木葲Q定著TC的測溫精度。本文要介紹的就是用Si7051所測量的TC冷端溫度,來對TC進(jìn)行溫度補(bǔ)償,使TC的測溫精度能達(dá)到或接近0.1度℃。重點(diǎn)是講述用STM32F103CBT6單片機(jī)從I 2 C總線讀取Si7051芯片中的溫度編碼值,即編程。涉及TC補(bǔ)償原理、Si7051與STM32單片機(jī)的I 2 C接口電路與和程序流程。
關(guān)鍵詞:高精度熱電偶補(bǔ)償;Si7051;STM32F103;I 2 C總線;程序流程
Si7051是一款較新的、性價(jià)比較高的器件,雖批量價(jià)僅為10 元/片,可經(jīng)試用,其對TC補(bǔ)償?shù)淖饔脜s很大,很有效。但目前,在國內(nèi)未見相關(guān)應(yīng)用介紹(經(jīng)網(wǎng)上檢索)。想必,此文的創(chuàng)新應(yīng)用,會助力國內(nèi)TC測溫技術(shù)的進(jìn)步。
1 補(bǔ)償原理
把TC的兩端分為冷端(接入線路的那一端)和熱端(測溫對象所在端)。令TC冷端溫度為 Ct ,TC的輸出溫為 Tt ,則TC的熱端溫度(即測量溫度)Mt Ct Tt = + 。補(bǔ)償?shù)年P(guān)鍵在于冷端和Si7051感溫盡可能做到同溫。假如不完全相同,則應(yīng)注意這個(gè)溫差校正。
此前,我們用LM75A溫度芯片測量 Ct 。但由于它的精度較低(在-20 ℃~+100 ℃全量程范圍,最大誤差達(dá)2 ℃,分辨率為0.5 ℃(即,其小數(shù)位只能是0或0.5)),使得Mt值不僅包含同樣的誤差,而且時(shí)常有0.5℃的跳變。這使得溫控儀達(dá)到0.1℃的控溫精度變得不可能。
2 Si7051介紹 [2]
此芯片由美國Silicon Labs(即芯科科技)公司生產(chǎn),已先后發(fā)布8個(gè)版本,最新的1.15版,在2018-09發(fā)布。
2.1 主要性能特征
1)高精度。測溫精度分3段:
±0.1 ℃: +35.8 ℃~41 ℃(人體溫度范圍);
±0.13 ℃: 20.0 ℃~70.0 ℃(準(zhǔn)環(huán)境溫度范圍);
±0.25 ℃: –40 ℃~+125 ℃(全量程)。
第2段是溫控儀(TC冷端)所在環(huán)境最常見的溫度范圍。
2)體積小,引腳少;
3 mm × 3 mm × 0.8 mm,DFN(Dual flat No-lead,即雙平面,無引線)封裝。6個(gè)引腳,見圖1。它的小的體積使其在用做溫度補(bǔ)償用時(shí),易于在電路板(即PCB)上和TC的冷端一起放置;而在做人體(或其他對象)溫度計(jì)時(shí),整體的體積可以很小。
3)接口電路的外圍元件少,接口簡單;
僅有1個(gè)去偶電容和2個(gè)上拉電阻。雖有6個(gè)引腳,但對外連線只有4根。DNC引腳可懸空或連到VDD腳。見電路圖2。
4)背面有感溫金屬平面;
大小為1.5 mm × 2.4 mm,見圖3。這個(gè)面能使它很好地感受TC冷端的溫度,達(dá)到與之同溫的目的。
3 電路設(shè)計(jì)
單片機(jī)選用STM32F103CBT6,它自帶有I 2 C總線,這使得相關(guān)接口(包括編程)相對簡單。見圖2。原理圖雖不復(fù)雜,但作為TC 補(bǔ)償元件,要做到它和TC冷端準(zhǔn)確同溫,卻并非易事,我們也是經(jīng)過多次改進(jìn),才達(dá)到的。具體做法是:①單獨(dú)做一塊小的PCB板(雙面,11 mmx7 mm,見圖3),通過插針與主板相連。在小板上,Si7051背面的感溫面下要開孔, 使感溫面能和冷端相對、相通??椎拇笮∩孕∮诟袦孛妗W⒁饪磮D3。②此小板和和TC冷端并立在一起放置,并且要遠(yuǎn)離板上的其他熱,見圖4。圖中,3線(棕、紅和黑3色)插頭是TC的冷端線,左邊立著的就是Si7051小板。③小板和TC冷端附近約30 mmx7 mm的PCB板區(qū)域內(nèi)不敷銅,以免多傳熱。
4 編程
編程本文的要點(diǎn)。
4.1 理解圖4的時(shí)序
文獻(xiàn)[2]給出了讀取Si7051芯片的溫度編碼的I2C時(shí)序圖(經(jīng)英譯中)。此時(shí)序圖從左到右,分成了19個(gè)段(數(shù)字所示)。
此圖所涉及的相關(guān)技術(shù)術(shù)語參見文獻(xiàn)[3-7]。幾點(diǎn)說明如下:
1)圖中的“主”是指主設(shè)備;從是指從設(shè)備(下同)。
2)第2段是“從地址”,指的是Si7051的從地址0x40;
3)第3段是“主將要寫操作”,指的是,在I2C總線上,出現(xiàn)Si7051的從地址0x40后,主設(shè)備是要發(fā)送一個(gè)字節(jié)數(shù)據(jù)(第5段的0xf3)。注意這一段是一個(gè)位(bit)段且為0值,它附在第2段的0x40后面(100000B+0B= 10000000B)形成最終的0x80寫地址字節(jié)(與0x81的讀地址(如,第8、9段組合)對應(yīng)。這一點(diǎn)很重要,編程時(shí)不要誤寫為0x40。
4)第9段是“主將要讀操作”,指的是.在I2C 總線上,出現(xiàn)Si7051的從地址0x40后,主設(shè)備是要從設(shè)備里讀取數(shù)據(jù)。這也是一個(gè)位段,但值為1,它附在第8段的0x40后面(100 0000B+1B=10000001B)形成最終的0x81讀地址字節(jié)。
5)第10段是“非應(yīng)答(即NACK)”。對Si7051來說,這是一個(gè)特殊的位信號,它會一直持續(xù)高電平,直到片內(nèi)的A/D轉(zhuǎn)換結(jié)束。從這個(gè)信號發(fā)出算起,Si7051開始一次測溫的A/D轉(zhuǎn)換過程,具體轉(zhuǎn)換時(shí)間見參考文獻(xiàn)[2]的第4頁的表2。 本程序用12ms延時(shí)來處理。程序在12毫秒后,繼續(xù)到第11段。
6)完成這個(gè)時(shí)序的全部操作后,得到的緊緊是2個(gè)字節(jié)(14位,最低2位不用)編碼,而不是溫度的實(shí)數(shù)值。實(shí)數(shù)溫度(℃)= (175.72×溫度編碼 / 66636)-46.84(式1) [2] 。
4.2 流程圖
用IAR7.2.05工具及ST(即意法半導(dǎo)體)公司在2011年發(fā)布的3.5.0的庫函數(shù)(一直未變)。該庫函數(shù)包含了32個(gè)I2C相關(guān)函數(shù)和諸多變量定義,可選擇使用,本程序用了其中的10個(gè)函數(shù)。
圖6是依據(jù)圖5的時(shí)序來編制的。有3點(diǎn)須說明:*相關(guān)函數(shù)注解詳見3.2.1。**限于篇幅,只用了一個(gè)菱形判斷圖作為示例,其他判斷處未用,但包含的流程相同,即如果不成功,則反復(fù)調(diào)用判斷函數(shù),直到成功。***延時(shí)程序一般是自編的,不調(diào)庫函數(shù),以便準(zhǔn)確控制延時(shí)時(shí)間。
4.2.1 圖6相關(guān)庫函數(shù)說明
這里的序號即是圖6中的中函數(shù)編號一致。
1) void I2C_GenerateSTART(I2C_TypeDef*I2Cx, FunctionalState NewState);
2)ErrorStatus I2C_CheckEvent(I2C_TypeDef*I2Cx, uint32_t I2C_EVENT);
3)void I2C_Send7bitAddress(I2C_TypeDef*I2Cx, uint8_t Address, uint8_t I2C_Direction);
4)void I2C_SendData(I2C_TypeDef* I2Cx,uint8_t Data);
5)uint8_t I2C_ReceiveData(I2C_TypeDef*I2Cx);
6)void I2C_GenerateSTOP(I2C_TypeDef* I2Cx,FunctionalState NewState);
7)void I2C_AcknowledgeConfig(I2C_TypeDef*I2Cx, FunctionalState NewState);
8)I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef*I2C_InitStruct);
9 ) I 2 C _ C m d ( I 2 C _ T y p e D e f * I 2 C x ,FunctionalState NewState);
10)void I2C_DeInit(I2C_TypeDef* I2Cx);
另外,圖中的函數(shù)I2C_Configuration()通常是根據(jù)需要自編的,不是庫函數(shù)。
(1) 主程序Void Read_Si7051_Temperature(void);
(2) 子程序 讀Si7051溫度編碼并計(jì)算攝氏溫度u8 I2C_Read(I2C_TypeDef *I2Cx,u8 I2C_Addr,u8 data,u8 *buf,u16 num)
5 結(jié)論
Si7051裝在線路板上,精度高、運(yùn)行穩(wěn)。下面是一組實(shí)測數(shù)據(jù)(表3):
測試條件說明:①地點(diǎn):辦公室,對環(huán)境溫度測試;②工具:實(shí)驗(yàn)室開發(fā)的SCTC溫控儀;RKC CH402圖6. 讀Si7051溫度編碼的程序流程圖(1) 主程序Void Read_Si7051_Temperature(void);(2) 子程序 讀Si7051溫度編碼并計(jì)算攝氏溫度u8 I2C_Read(I2C_TypeDef *I2Cx,u8 I2C_Addr,u8 data,u8 *buf,u16 num)
日本產(chǎn)溫控儀,其上無小數(shù)顯示(對熱電偶)。測試分析:儀器每秒對Si7051和熱電偶同步采樣一次,數(shù)據(jù)記錄間隔是2 min。在18 min內(nèi),Si7051測溫僅變化31.53-31.47=0.06(℃),多數(shù)時(shí)間,只在小數(shù)點(diǎn)后第2位上有變。表明其精準(zhǔn)、穩(wěn)定。SCTC測溫也僅變化30.53-30.20=0.33(℃)。這里,Si7051的測量的溫度要高于SCTC儀及RKC儀的測量溫度是因?yàn)镻CB板上的氣溫要高于一般環(huán)境溫度。
以后還將一如既往地關(guān)注、實(shí)施溫度測控領(lǐng)域的新元件的應(yīng)用,并把相關(guān)的研發(fā)成果及時(shí)在專業(yè)刊物上發(fā)表,為我國自動化儀表的發(fā)展出一分力。
參考文獻(xiàn)
[1] Measuring Temperature Accurately with Semicondutor [EB/OL], Silicon Laboratories, [2019-06-2].https://www.silabs.com/documents/public/white-papers/ measuring-temperature-accurately-with-semiconductor-sensors.pdf.
[2]Si7050-1-3-4-5-A20-1398033D[EB/OL],2018-09,Revision1.15,Silicon Laboratories,pp:1-27 (2018-09)[2019-05-27]:1-27.https://www.silabs.com/documents/public/data-sheets/Si7050-1-3-4-5-A20.pdf
[3]AN607:Si70XX HUMIDITY AND TEMPERATURE SENSORDESIGNER’S GUIDE [EB/OL], Revision 2.0 ,SiliconLaboratories, P6, (2016-07)[2019-06-02].https://ww.silabs.com/documents/public/application-notes/AN607.pdf.
[4]AN1026: Si70xx Temperature Sensor Designer’s Guide[EB/OL], Rev. 0.1, Silicon Laboratories,[2019-06-03]. https://www.silabs.com/documents/public/application-notes/AN1026-Si70xx-Temp-Sensor-Designers-Guide.pdf.
[5] I2C[EB/OL], Wikipedia ,Retrieved, 2019-6-3.https://en.wikipedia.org/wiki/I%C2%B2C.
[6]UM10204-I2C-bus specification and user manual[EB/OL].Rev.6,NXP,(2014-04-04)[2019-06-06].https://www.nxp.com/docs/en/user-guide/UM10204.pdf.
[7]VALDEZ J,BECKER J. Slva704-ApplicationReport-Understanding the I2C Bus [EB/OL]. TexasInstrumentsIncorporated, PP.5-8,(2015-06)[2019-06-06].http://www.ti.com/lit/an/slva704/slva704.pdf.
[8]I2C_bus_specifications_V2_0[EB/OL],V2.0,2016:p.6.https://espace.cern.ch/CMS-MPA/SitePages/Documents.aspx.
[9]MARK W Si7051 Temp Sensor[EB/OL].(2017-01-10)[2019-06-12].https://www.matrixtsl.com/mmforums/viewtopic.
php?t=19613.
[10]STM32F10x_StdPeriph_Lib_V3.5.0[CP/OL],V3.5.0,STMicroelectronics,(2011)[2019-06-01].https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html
本文來源于科技期刊《電子產(chǎn)品世界》2020年第01期第69頁,歡迎您寫論文時(shí)引用,并注明出處。
評論