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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于CAN總線的多點紅外測溫系統(tǒng)設(shè)計

          基于CAN總線的多點紅外測溫系統(tǒng)設(shè)計

          作者:趙旭(鶴壁職業(yè)技術(shù)學院,河南鶴壁 458030) 時間:2022-07-28 來源:電子產(chǎn)品世界 收藏

          摘要:在工業(yè)控制領(lǐng)域,溫度測量是不可或缺的工作。隨著工業(yè)控制精細化、多點化要求,的需求空間越來越大。本文基于設(shè)計了一個,硬件電路由微處理器、CAN控制器與驅(qū)動器、數(shù)字測溫芯片DS18B20、LCD、復(fù)位電路等幾部分組成,單片機STC89C52RC是硬件電路的核心,承擔 CAN控制器的初始化、數(shù)據(jù)收發(fā)控制等任務(wù)。實驗證明,該系統(tǒng)精度高,可靠性好,結(jié)構(gòu)簡單,成本低,適用范圍內(nèi)可取代傳統(tǒng)測溫系統(tǒng)。

          本文引用地址:http://www.ex-cimer.com/article/202207/436784.htm

          關(guān)鍵詞;

          1 引言

          在工業(yè)控制領(lǐng)域,溫度測量是不可或缺的工作。隨著工業(yè)控制精細化、多點化要求,多點測溫系統(tǒng)的需求空間越來越大。CAN(控制器域網(wǎng),Controller Area Network)總線在組網(wǎng)和通信功能上的優(yōu)點以及它的高價比決定了它在眾多領(lǐng)域具有廣闊的發(fā)展前景,尤其是在分布在多點測溫應(yīng)用方面。本文基于 CAN 總線設(shè)計了一個多點紅外測溫系統(tǒng),能夠?qū)崟r對多點進行測溫,具有測溫范圍廣、精度高、環(huán)境適應(yīng)能力強等特點。

          2 硬件設(shè)計

          CAN 總線多點測溫系統(tǒng)主要由現(xiàn)場設(shè)備,主控設(shè)備和計算機組成,系統(tǒng)總體結(jié)構(gòu)圖如圖 1。

          1659016275696170.png

          圖1 系統(tǒng)結(jié)構(gòu)圖

          2.1 溫度測量電路設(shè)計

          DS18B20 傳感器可以把溫度直接轉(zhuǎn)換成串行數(shù)字信號供微控制器進行處理。由于每個傳感器含有唯一的硅串行數(shù),故一條總線上可以有任意多個 DS18B20 芯片。 本設(shè)計中的 DS18B20 是在模擬的現(xiàn)場節(jié)點上的,采用不同材質(zhì)的通信電纜,其最大測溫范圍不一樣。因此,使用 DS18B20 設(shè)計長距離測溫系統(tǒng)時,電容與阻抗匹配問題是不可忽略的一個因素。DS18B20 的寄生電源模式有兩項基本功能,一是保證微處理器和 DS18B20 之間的正常通訊,二是為 DS18B20 提供電源。實際應(yīng)用中當單總線上所掛 DS18B20 超過 8 個時,就需要考慮微總線驅(qū)動問題,這一點進行測溫時要尤為注意。

          2.2 通訊節(jié)點電路設(shè)計

          本文選用選用 STC 的單片機做為主控器,選用 CAN 控制器和 CAN 驅(qū)動器來構(gòu)建 CAN 通訊網(wǎng)絡(luò)。主要由三部分構(gòu)成:微控制 STC89C52、獨立 CAN 通 信控制器 SJA1000 和 CAN 總線收發(fā)器 PCA82C250;微處理器 STC89C52 負責 SJA1000 的 初始化,通過控制 SJA1000 實現(xiàn)數(shù)據(jù) 的接收與發(fā)送;SJA1000 的 AD0 ~ AD7 連接到 STC89C52 的 P0 口上,CS 連接到 STC89C52 的 P2.0,P2.0 為 0 的 CPU 片外存貯器地址可選中 SJA1000,CPU 通過這些地址可對 SJA1000 執(zhí)行相應(yīng)的讀寫操作。

          2.3 數(shù)碼管顯示電路設(shè)計

          由于 STC89C52 的 P1、P2、P3 口內(nèi)部都有上拉電阻,為了減少硬件電路的復(fù)雜度,在這里選用 STC89C52 的 P1 口來做為數(shù)碼管的段碼控制口,P2 口的四位做為數(shù)碼管的位選信號,從而省去了數(shù)碼管復(fù)雜的驅(qū)動電路,也降低了硬件設(shè)計的難度;為了節(jié)省單片機的端口資源,同時降低成本,這兒選用四位一體的共陰數(shù)碼管做為顯示設(shè)備,采用動態(tài)掃描的方法顯示,比著用四個獨立的數(shù)碼管來顯示要容易的多,硬件也簡單的多。

          2.4 液晶接口電路設(shè)計

          根據(jù)設(shè)計要求,主控板需要將模擬的三個現(xiàn)場節(jié)點的溫度值讀取過來并在液晶上顯示,為了能夠同時顯示漢字和字符,這兒選用 YJD12864 做為液晶顯示模塊,相比于只能顯示字符的 1602,12864 的顯示更加美觀,更加人性化。YJD12864 有并行數(shù)據(jù)傳輸和串行數(shù)據(jù)傳輸兩種工作方式,本設(shè)計選用 8 位并行傳輸方式,STC 單片機的 P1 口做為 12864 的數(shù)據(jù)口;P2.1 接 12864 的 4 腳,用來向 12864 發(fā)送數(shù)據(jù)和控制指令;P2.2 接 12864 的 5 腳,用來通知 12864 本次操作是讀操作還是寫操作;P2.3 接 12864 的 6 腳,對 12864 操作的使能信號,高電平使能操作。

          2.5 串口通訊電路設(shè)計

          設(shè)計要求中規(guī)定,現(xiàn)場設(shè)備將溫度值傳給主控設(shè)備,然后主控設(shè)備再將數(shù)據(jù)傳送到上位機顯示,并且上位機可以隨時更改現(xiàn)場設(shè)備參數(shù),從而實現(xiàn)遠程控制;為了滿足上述設(shè)計要求,這里使用 485 加 232 的方式通訊,由于 232 的傳輸距離有限,雖然 CAN 總線寬范圍的傳輸距離能夠彌補 232 這一缺點,且設(shè)計成本低,但考慮到現(xiàn)場的各種干擾信號比較復(fù)雜,一旦現(xiàn)場噪聲到達極值時可能會連同上位機一并損壞;而 485 則不同,它是一個半雙工通訊器件,其采用平衡壓差的方式傳輸數(shù)據(jù),使得數(shù)據(jù)線上的衰減和干擾都大大降低,從而加大了傳輸距離,提高了抗干擾能力,故在這里又加了一層 485 的通訊,不僅使現(xiàn)場和上位機有效地隔離,而且進一步加大了數(shù)據(jù)傳輸?shù)木嚯x。

          3 軟件設(shè)計

          智能 CAN 總線節(jié)點的軟件主要用來完成三項任務(wù):一是溫度傳感器的采樣;二是現(xiàn)場節(jié)點將數(shù)據(jù)傳送給主控節(jié)點,由主控節(jié)點將數(shù)據(jù)處理之后送給上位機顯示;三是主控節(jié)點隨時準備接收上位機傳來的參數(shù),并通過 CAN 總線發(fā)給現(xiàn)場節(jié)點修改相關(guān)參數(shù)。主控節(jié)點的流程如圖 2。

          1659016598163337.png

          圖2 主控節(jié)點流程圖

          3.1 溫度采樣系統(tǒng)軟件設(shè)計

          該系統(tǒng),主要操作包括高低溫報警數(shù)據(jù)的寫入、溫度數(shù)據(jù)的讀取、數(shù)據(jù)處理、碼制轉(zhuǎn)換以及數(shù)碼顯示等幾部分;對 DS18B20 處理時要注意以下幾點:①每次讀寫之前要復(fù)位;②收到信號后等待 16 ~ 60 μs 后發(fā)出 60 ~ 240 μs 的存在低脈沖,主 CPU 收到此信號后表示復(fù)位成功;③緊接著依次發(fā)送一條 ROM 指令、RAM 指令,這樣才能對 DS18B20 進行正確操作。

          3.2 CAN通訊控制器初始化

          CAN 初始化主要是設(shè)置 SJA1000 的參數(shù)。需要初始化的 CAN 控制寄存器有:模式寄存器、時鐘分頻寄存器、接收代碼寄存器、輸出控制寄存器等。SJA1000 的初始化程序如下:

          1659016710925092.png

          1659016735348075.png

          1659016784840618.png

          1659016808768787.png

          3.3 LCD顯示及串口發(fā)送接收軟件設(shè)計

          液晶 YJD12864 的初始化程序流程圖如圖 3 所示。

          1659016886376347.png

          在這里需要說明一下,上位機給主控板發(fā)數(shù)據(jù)時,當發(fā)送的第1個數(shù)據(jù)是字符“$”,最后1個數(shù)據(jù)是字符“*”時,主控板才認為接收到的是有效數(shù)據(jù),否則,主控板不對接收到的數(shù)據(jù)進行處理;用發(fā)送的第 2 個字符來區(qū)分要發(fā)送的數(shù)據(jù)是送給哪一個現(xiàn)場節(jié)點的,字符“A” 表示現(xiàn)場節(jié)點 1,字符“B”表示現(xiàn)場節(jié)點 2,字符“C”表示現(xiàn)場節(jié)點 3;第 3 ~ 6 個字符是要傳送的高低溫報警值,高溫在前,低溫在后。

          4 實驗結(jié)果分析

          為了驗證設(shè)計系統(tǒng)的穩(wěn)定性和準確性,對系統(tǒng)顯示模塊、測溫模塊、CAN 總線模塊及串口通信進行調(diào)試。調(diào)試完畢后,我們用設(shè)計的測溫系統(tǒng)在實驗室不同時間段不同地點采集十組數(shù)據(jù),其中上午測試五組,下午測試五組,除了測溫方式不同,其他因素全部相同,具體數(shù)據(jù)如表 1 所示。

          1659016977906765.png

          由表可知,系統(tǒng)對照值與測量值,最大偏差小于0.2,系統(tǒng)測溫方案的可靠性較強。

          5 結(jié)語

          本文利用紅外輻射測溫的原理,計了一種基于 CAN 總線和 DS18B20 為傳感器的多點紅外測溫系統(tǒng),硬件電路由單片機 STC89C52、CAN 控制器、測溫芯片 DS18B20、LCD、LED、串行通訊口、復(fù)位電路等幾部分組成?;?CAN 總線的多點紅外測溫系統(tǒng)具有測溫范圍廣、精度高、環(huán)境適應(yīng)能力強等特點。該系統(tǒng)通過 CAN 適配器與計算機連接,可以方便地構(gòu)成分布式測控系統(tǒng)。實驗表明,該系統(tǒng)不僅具有高精度溫度測控功能,而且通過 CAN 總線實現(xiàn)對多個地區(qū)溫度進行集中監(jiān)控,具有測溫范圍廣、精度高、環(huán)境適應(yīng)能力強等特點。

          參考文獻:

          [1] 王奧運,范冰新,潘文強等.基于CAN總線的遠程溫度采集系統(tǒng)[J].山西電子技術(shù),2015(3)19-21.

          [2] 湯鍇杰,栗燦,王迪等.基于DSB18B20的數(shù)字式溫度采集報警系統(tǒng)設(shè)[J].傳感器與微系統(tǒng),2014,33(3):99-102.

          [3] 周鵬.基于STC89C52單片機的溫度檢測系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2012,35(22):10-13.

          [4] 楊盛泉,劉海泉,劉白林.ZigBee與RS485混合網(wǎng)絡(luò)的糧情監(jiān)控系統(tǒng)的研究[J].西安工業(yè)大學學報,2016,36(9):749-756.

          [5] 楊博雄,倪玉華.無線傳感網(wǎng)絡(luò)[M].北京:人民郵電出版社,2015.

          (注:本文轉(zhuǎn)載自《電子產(chǎn)品世界》2022年7月期)



          評論


          相關(guān)推薦

          技術(shù)專區(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); })();