|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
DS18B20 高精度溫度測量應用 |
| 作者:greatcai 欄目:電路欣賞 |
DS18B20 高精度溫度測量應用 以前網上流傳的DS18B20 程序一般都是只有顯示小數點前的兩位,有的可顯示小數后一位。但DS18B20是12位的高精度測量器件,它可精確到小數點后四位,所以沒有充分利用它的價值。 本人在網上瀏覽了不少的資料,總結了前人的經驗,編寫了相應的完整程序,把測量得到的溫度值顯示在1601液晶顯示器上(在1602上也可顯示),可精確到小數點后四位,本程序只須稍加修改可用于高精度溫度控制設備。 只須按照如下接線就可,其中的DS18B20的信號線接單片機的p3.3口,晶振使用11.0592Hz的 非常適合實驗板上實驗用 其相應的電路如下 供實驗時參考: 由于編的過程工作量不小,還不想就這么把程序公開了 大家有耐心的話可以看看 以下是一個編的過程中的有漏洞的程序:(有上限和下限,但測室溫是沒誤差的) hex代碼如下: :100000007581607580FF7590FE75A0FF75B0FF1259 :1000100000171200A6010FD2B312003B20000122EC :1000200074CC12006A744412006A12003B74CC1241 :10003000006A74BE12006A12008222D2B300C2B3F8 :10004000786B7903D8FE786BD9FAD2B300000078C8 :100050002530B305D8FB02005ED200020063C20067 :10006000020067786BD8FED2B3227A08C3C2B37B92 :1000700006DBFE1392B37B17DBFED2B300DAEED2BF :10008000B3227C02792F7A08C3D2B30000C2B30036 :100090000000D2B37B09DBFEA2B37B17DBFE13DAD1 :1000A000E7F719DCE122D2D3AB2EAC2F7E277F10ED :1000B0001201C57F101201977F0A1201978F367FB8 :1000C0000A1201978F357F0A1201978F347F0A1227 :1000D00001978F337F0A1201978F327F0A1201979F :1000E0008F318C30C2D31200F612018E227C0A7D31 :1000F000D8DDFEDCFA22C2A312018975800112014B :100100002E75803812012E75800F12012E75800613 :1001100012012E75808012012E9001F012013A75A5 :1001200080C012012E9001F3790812017122C2A041 :10013000C2A1D2A2120189C2A222E530243012014A :010140007B43 :10014100E531243012017BE532243012017B742E1B :1001510012017BE533243012017BE5342430120196 :100161007BE535243012017BE536243012017B22F8 :1001710074009312017BA3D9F722F580D2A0C2A10A :10018100D2A2120189C2A2227F96DFFE227FFF7EC8 :10019100FFDEFEDFFA22EA8FF084C0E0AAF075F0FC :1001A10010C3EC33FCEB33FBEA33FA92D5C39F2047 :1001B100D5024002FA0CD5F0E8D0E0C2D26002D2FA :1001C100D2CAFF22EC8FF0A4CCADF08EF0A42DFDAD :1001D100E435F0FAEB8FF0A42DFDE5F03AFAE434C2 :1001E10000CB8EF0A42AFAE5F03BCDFBC2D222204F :0B01F100202020DF43203D5420202070 :00000001FF 如果有任何朋友想要完整代碼或原程序的可與作者聯系 聯系方式:E-mail mcu.8888@yahoo.com.cn QQ:415997763
|
| 2樓: | >>參與討論 |
| 作者: ehoosee 于 2006/10/20 22:09:00 發(fā)布:
但精度到不了那么高的,后面的幾位沒用的. |
|
| 3樓: | >>參與討論 |
| 作者: awey 于 2006/10/20 22:45:00 發(fā)布:
分辨率不等于精度,精度0.05C的表就的買上萬元。 |
|
| 4樓: | >>參與討論 |
| 作者: jiangtian 于 2006/10/21 8:45:00 發(fā)布:
好,不過過于保手 |
|
| 5樓: | >>參與討論 |
| 作者: henrygliet 于 2006/10/21 16:18:00 發(fā)布:
只是數據處理上的小技巧 只是數據處理上的小技巧,沒有什么大不了的,我第一次用DS18B20時就已經實現了你所說的功能,不過正如ehoosee所說的,后面幾位是沒有用的,DS18B20的精度是0.5`C,呵呵,不過從圖片上看,做的還不錯~~~ |
|
| 6樓: | >>參與討論 |
| 作者: henrygliet 于 2006/10/21 16:27:00 發(fā)布:
單總線的真正精髓 說到網上流傳的DS18B20的程序中,我覺得最缺少的就是對一根單總線上的多個DS18B20的識別和定點溫度采集,這才是單總線的真正精髓所在。這一功能的實現涉及到多個ROM指令和CRC校驗,相對于你的小數點后四位,這個才是“大巫”,如果樓主有興趣的話可是做下這個方面的研究,才有點“不公開程序”的意義。呵呵~~ |
|
| 7樓: | >>參與討論 |
| 作者: 總是掉線 于 2006/10/23 16:54:00 發(fā)布:
henrygliet說的有道理 同感! |
|
| 8樓: | >>參與討論 |
| 作者: 江南魅影 于 2006/10/23 22:54:00 發(fā)布:
現在做這個都直接到網上抄過來 數據方面的程序直接網上就有了,不有費腦子,還是花心思在多個點測量上的好 |
|
| 9樓: | >>參與討論 |
| 作者: davidli88 于 2006/10/23 23:03:00 發(fā)布:
高分辯率不是高精度 雖然顯示到四位小數,但全無意義。 精確到萬分之一攝氏度的溫度計,應該還無法實現。 |
|
| 10樓: | >>參與討論 |
| 作者: 李冬發(fā) 于 2006/10/24 0:59:00 發(fā)布:
0.1度就非常難了 |
|
| 11樓: | >>參與討論 |
| 作者: 滄海一簇 于 2006/10/24 15:31:00 發(fā)布:
用浮點顯示很簡單的事。 樓主大概認為這很難實現是吧?其實很簡單的。只是18B20沒有那么高精度,顯示出來的也沒有實際意義?赡軜侵鳑]好好研究18B20使用手冊。 |
|
| 12樓: | >>參與討論 |
| 作者: baillso 于 2006/10/24 16:30:00 發(fā)布:
問 henrygliet 請DS18B20按照外部供電方式接入430的3v系統(tǒng)中總是將電源電壓拉低是什么原因? 由于上面的問題一直沒有解決后來改為寄生電源供電方式,發(fā)現測的值很不準,特別是負溫度的時候 DS18B20寄生電源供電方式要注意什么?手冊里面說的提高強上拉具體怎么做? |
|
| 13樓: | >>參與討論 |
| 作者: henrygliet 于 2006/10/25 11:15:00 發(fā)布:
回baillso 對于DS18B20外部供電方式將電源電壓拉低的問題,會不會是你的430無法識別DS18B20的供電方式,在手冊中有這樣的一段話: In some situations the bus MASTER may not know whether the DS18B20s on the bus are parasite powered or powered by external supplies. The MASTER needs this information to determine if the strong bus pullup should be used during temperature conversions. To get this information, the MASTER can issue a Skip ROM[CCh] command followed by a Read POWER Supply [B4h] command followed by a “read time slot”.During the read time slot, parasite powered DS18B20s will pull the bus low, and externally powered DS18B20s will let the bus remain high. If the bus is pulled low, the MASTER knows that it must supply the strong pullup on the 1-Wire bus during temperature conversions. 從中可以看到,如果總線控制器將DS18B20識別為寄生供電方式(注意上段話中的“In some situations”),而你的電路是外部供電方式的話,就有可能產生沖突,而發(fā)生將電源電壓拉低的可能性,要強調的是,這只是我個人根據手冊的一點看法,我用51控制DS18B20時都不用執(zhí)行[B4h]指令,51應該是能自動識別DS18B20的供電方式,我沒有用過430,不知道其具體的內部結構,只能是給你一個思路,希望對你有用。 至于寄生供電方式測溫不準,手冊上也提到了這種供電方式的局限性,那就是當溫度高于+100·C時會出現測溫不準的問題,不過你的問題出在負溫度上,就有點莫名其妙了,不過有可能是你在軟件上對數據處理時正負標志位沒有分清,可以從這個方面檢查一下。 除此之外,說道測溫不準還有以下兩個可能的原因: 從硬件上來說,你沒有讓1-wire強上拉,所謂的強上拉,就是寄生供電方式電路中的MOSFET管,請檢查你的MOSFET的好壞以及電路是否正確連接,至少沒有斷路。另外,我不知道你的DS18B20是怎樣接入電路的,如果不是焊上去的,而是通過針座或者延長線插接上去的,請檢查接觸是否良好,我就曾經出現過由于接觸不好而測溫不準的問題。 從軟件上來說,那就是1-wire的時序問題,時序不對就會丟失數據或者采集的是無效數據,也請好好檢查一下軟件時序。 |
|
| 14樓: | >>參與討論 |
| 作者: baillso 于 2006/10/25 13:13:00 發(fā)布:
非常感謝henrygliet 我再按照你的思路查查 |
|
| 15樓: | >>參與討論 |
| 作者: bluecup 于 2006/10/27 16:01:00 發(fā)布:
基本概念沒搞清楚 |
|
| 16樓: | >>參與討論 |
| 作者: xwj 于 2006/10/27 16:40:00 發(fā)布:
就這么一個東西還拿出來現?還藏著挾著的... |
|
| 17樓: | >>參與討論 |
| 作者: dan_xb 于 2006/10/28 11:14:00 發(fā)布:
DALLAS只承諾0.5度的精度,要想精度高,用熱敏電阻吧 |
|
| 18樓: | >>參與討論 |
| 作者: zhusonglinw 于 2006/10/30 15:50:00 發(fā)布:
0.5度的精度顯示那么多位,有什么意義?? |
|
| 19樓: | >>參與討論 |
| 作者: 高勇 于 2006/11/6 16:50:00 發(fā)布:
分辨率 費力不求好。什么意義都沒有。 |
|
| 20樓: | >>參與討論 |
| 作者: baillso 于 2006/11/6 18:47:00 發(fā)布:
熱敏電阻能達到0.1吧 還有更高精度的嘛? |
|
| 21樓: | >>參與討論 |
| 作者: binbinwb 于 2006/11/6 22:45:00 發(fā)布:
呵呵 多點采集也不難,關鍵在協(xié)議的理解和CRC LZ的鉆研精神還是不錯的,繼續(xù)努力哈 |
|
| 22樓: | >>參與討論 |
| 作者: da_xi 于 2006/11/8 8:14:00 發(fā)布:
發(fā)現一個小問題! DS18B20得參數 Measures temperatures from –55°C to +125°C (–67°F to +257°F) 0.5C accuracy from –10°C to +85°C 摟主液晶上顯示已超過 +125°C了,肯定不準了 |
|
| 23樓: | >>參與討論 |
| 作者: computer00 于 2006/11/8 8:24:00 發(fā)布:
這個電路板倒是搭得蠻緊湊的~~~~~~~~萬用板搭的 |
|
| 24樓: | >>參與討論 |
| 作者: hsj0615 于 2006/11/8 13:07:00 發(fā)布:
搞笑 太搞笑了 |
|
| 25樓: | >>參與討論 |
| 作者: one16 于 2006/11/8 18:17:00 發(fā)布:
加水! |
|
| 26樓: | >>參與討論 |
| 作者: lin_512 于 2006/11/9 10:20:00 發(fā)布:
錯誤的理解 awey說得有道理,分辨率不等于精度,你所顯示的數字不代表你的精確度就有那么高,你是一個錯誤的理解. |
|
| 27樓: | >>參與討論 |
| 作者: Wxy8030 于 2006/11/10 11:10:00 發(fā)布:
單總線的一個較實用的問題—— 判斷總線上有多少個點,每個點的溫度是多少都可以實現...... 可現實中一般都有定位的要求,需要知道每個點的確切位置,而且其中一個點壞了后,換上一個位置點還要求不變,這個實現起來就有點麻煩了...... 有沒有大蝦有好的思路? |
|
| 28樓: | >>參與討論 |
| 作者: 王紫豪 于 2006/11/10 22:28:00 發(fā)布:
沒有一點意義。W學誤差理論????? |
|
| 29樓: | >>參與討論 |
| 作者: mohanwei 于 2006/11/11 9:04:00 發(fā)布:
數字溫度傳感器,暫時還沒見過精度優(yōu)于0.5度的…… 就是這個“0.5度”,還是在狹窄區(qū)間內有效的…… 高精度,就算你用上了A級精度的鉑電阻,還要在電路上花一番苦功呢…… |
|
| 30樓: | >>參與討論 |
| 作者: liucg86 于 2006/11/11 9:57:00 發(fā)布:
李冬發(fā)大俠 李冬發(fā)大俠或各位大俠: 本人是初入道的小蝦,先在此有禮了。我做了一個數字溫度測量儀,精度達0.1℃,這精度已通過國家計量部門檢定,該精度可溯源至國家計量標準。有R232接口,可多路測量,并可記錄歷史數據,繪制溫度變化曲線,采樣速率每秒1次,保證該精度的測溫范圍10-40℃。請各位評論一下,該測量儀在業(yè)界的地位。我的郵箱:liucg86@163.com |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |