<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于CAN總線的溫度檢測(cè)設(shè)計(jì)

          基于CAN總線的溫度檢測(cè)設(shè)計(jì)

          作者: 時(shí)間:2012-07-06 來(lái)源:網(wǎng)絡(luò) 收藏

          為了避免因干擾而產(chǎn)生誤動(dòng)作,軟件采取了一些冗余和容錯(cuò)處理,在A/D模塊處理采樣數(shù)據(jù)時(shí),采用了軟件濾波措施,以濾除電路中可能會(huì)出現(xiàn)的尖峰干擾。

          方法為連續(xù)采樣五次,通過(guò)比較判斷,去掉其中的最大值和最小值,其余三次的值求和后取平均值,把平均值作為CPU用來(lái)劃分溫度范圍的有效數(shù)據(jù)。數(shù)據(jù)包的解析和封裝都遵循CAN的應(yīng)用層協(xié)議,主程序流程如圖4所示。


          圖4主程序流程


          當(dāng)CPU檢測(cè)到溫度出現(xiàn)異常,會(huì)根據(jù)溫度異常范圍向上位機(jī)發(fā)出溫度異常警報(bào),這是該節(jié)點(diǎn)CPU唯一主動(dòng)向上位機(jī)發(fā)出的數(shù)據(jù)幀。該節(jié)點(diǎn)的溫度相關(guān)數(shù)據(jù)存放在緩沖區(qū),在沒(méi)有收到上位機(jī)數(shù)據(jù)請(qǐng)求的時(shí)候,該緩沖區(qū)的數(shù)據(jù)會(huì)不斷的被新的數(shù)據(jù)刷新,以保證該節(jié)點(diǎn)數(shù)據(jù)的實(shí)時(shí)性,中斷流程如圖5所示。


          圖5CAN接收中斷流程

          采樣值的量化方法

          采樣值的準(zhǔn)確量化是溫控電路正常工作的關(guān)鍵,這里采用以下?lián)Q算辦法來(lái)進(jìn)行量化。設(shè)經(jīng)過(guò)信號(hào)調(diào)理后的電壓為Ui,則-10V
          Ui=-10V+ΔT?Kt=-10V+55℃×0.111V/℃=-3.895V。

          Ui轉(zhuǎn)換為數(shù)字量后,每個(gè)數(shù)字量對(duì)應(yīng)電壓值為19.531mV,用Ks表示??梢郧蟮脭?shù)字量變化和溫度變化之間的對(duì)應(yīng)關(guān)系:Kt/Ks=(0.111V/℃)/(19.531mV/數(shù)字量)=5.683數(shù)字量/℃。

          其他溫度對(duì)應(yīng)的數(shù)字量也可以通過(guò)以上方法算出。

          SPI接口通信

          PIC16F87x通過(guò)SPI接口和MCP2510進(jìn)行數(shù)據(jù)交換。

          MCP2510設(shè)計(jì)可與許多微控制器的串行外設(shè)接口(SPI)直接相連。外部數(shù)據(jù)和命令通過(guò)SI引腳傳送到器件中,而數(shù)據(jù)在SCK時(shí)鐘信號(hào)的上升沿傳送進(jìn)去。



          關(guān)鍵詞: CAN總線 溫度檢測(cè) LM35

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();