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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 根據(jù)ARM7無線傳輸?shù)臒犭娕歼h(yuǎn)程監(jiān)控系統(tǒng)策略

          根據(jù)ARM7無線傳輸?shù)臒犭娕歼h(yuǎn)程監(jiān)控系統(tǒng)策略

          作者: 時間:2011-04-16 來源:網(wǎng)絡(luò) 收藏

          引言
          目前,很多功能強(qiáng)大的嵌入式處理器都基于ARM內(nèi)核構(gòu)建。這樣的配置系統(tǒng)性價比高,可擴(kuò)展性能強(qiáng)。
          工業(yè)檢測系統(tǒng)應(yīng)用中,作為一種主要的測溫元件,熱電偶具有結(jié)構(gòu)簡單、制造容易、使用方便、測溫范圍寬、測溫精度高等特點,可以廣泛應(yīng)用于工業(yè)溫度控制過程中。但是熱電偶輸出電勢極其微弱,而且存在冷端溫度誤差和輸出電勢與被測溫度的非線性問題,易引起較大測量誤差,需要極其復(fù)雜的信號處理電路。MAX6675是Maxim公司推出的K型熱電偶串行模數(shù)轉(zhuǎn)換器,該型號芯片能夠獨立完成信號放大、冷端補償、線性化、A/D轉(zhuǎn)換及SPI串口數(shù)字化輸出功能,能夠簡化熱電偶測量智能裝置的軟硬件模塊的設(shè)計。
          移動檢測終端可以快速投入現(xiàn)場,系統(tǒng)調(diào)試周期短。隨著無線3G業(yè)務(wù)的普及,各種基于無線通信的傳輸成本快速下降,無線、移動、遠(yuǎn)程測溫控制系統(tǒng)將更加普及。國內(nèi)外基于無線通信的相關(guān)研究也開始變得很熱門,有相關(guān)產(chǎn)品投入市場。本文根據(jù)溫度監(jiān)控領(lǐng)域的發(fā)展趨勢,開發(fā)一套基于ARM7處理器和GPRS無線傳輸模塊的嵌入式無線熱電偶測溫控制系統(tǒng)。

          1 系統(tǒng)的構(gòu)成和工作原理
          溫度遠(yuǎn)程無線監(jiān)控系統(tǒng)以應(yīng)用為中心,由SPI接口連接MAX6675采集溫度數(shù)據(jù),通過串口發(fā)送到華為GTM900A無線傳輸模塊。由于GPRS網(wǎng)絡(luò)(2.5G移動通信技術(shù))支持TCP/IP協(xié)議,這使得無線數(shù)據(jù)傳輸變得更加輕松,而且相對價格比短消息等要便宜許多。為了能夠遠(yuǎn)程設(shè)置參數(shù),系統(tǒng)支持通過短信的方式設(shè)置相關(guān)核心參數(shù)。終端設(shè)備系統(tǒng)結(jié)構(gòu)框圖如圖1所示。


          本系統(tǒng)的終端設(shè)備采用模塊化的結(jié)構(gòu)設(shè)計思想,將終端設(shè)備分為主控模塊和各個功能模塊。主控模塊和各功能模塊之間有統(tǒng)一的或者特定的接口形式,用戶可根據(jù)實際情況選用不同的功能模塊。各種類型的數(shù)據(jù)可以在系統(tǒng)中同時傳輸而不相互干擾,同時也可根據(jù)市場變換的需求繼續(xù)擴(kuò)展其他功能模塊。
          溫度遠(yuǎn)程無線監(jiān)控系統(tǒng)的幾個主要模塊功能如下:
          ①傳感器數(shù)據(jù)處理模塊。根據(jù)實際需要,采集熱電偶溫度傳感器數(shù)據(jù)。當(dāng)采集到的數(shù)據(jù)值高于或者低于報警值時,啟動自動報警模塊,提醒巡查人員注意。
          ②LCD顯示模塊。顯示檢測到的溫度數(shù)據(jù)及相關(guān)的系統(tǒng)核心參數(shù),以便相關(guān)工作人員觀測數(shù)據(jù)。
          ③自動報警模塊。在系統(tǒng)檢查到有效報警信息后,該模塊馬上使嵌入式設(shè)備上的蜂鳴器發(fā)出警報聲,與此同時發(fā)送報警信息。該信息通過GPRS網(wǎng)絡(luò)及時傳回遠(yuǎn)端的監(jiān)控管理中心,以便工作人員及時發(fā)現(xiàn)并采取相應(yīng)的處理措施。
          ④參數(shù)配置模塊。系統(tǒng)的核心參數(shù)配置通過I2C總線保存在Atmel AT24C01芯片里,系統(tǒng)啟動時讀取相關(guān)參數(shù)。參數(shù)的設(shè)置可以通過多種方式(串口、短信和網(wǎng)絡(luò))實現(xiàn)。
          ⑤ARM7核心控制模塊。采用低功耗、高性能嵌入式SoC芯片Samsung S3C4480X以及8MB RAM和2 MBFlash ROM。
          ⑥熱電偶溫度采集處理模塊。通用I/O口用軟件來模擬SPI操作,實現(xiàn)ARM7與MAX6675的通信。
          ⑦GPRS無線數(shù)據(jù)傳輸模塊。考慮到系統(tǒng)的實際需求,采用華為GTM900A模塊。該模塊支持AT指令,模塊的控制、數(shù)據(jù)的傳輸可以通過AT指令發(fā)送或者讀取該設(shè)備的串口。
          ⑧遠(yuǎn)程監(jiān)控軟件模塊。遠(yuǎn)程監(jiān)控軟件采集端和控制端。采集端需要連接到Internet上,有固定的IP地址,負(fù)責(zé)遠(yuǎn)程終端數(shù)據(jù)的接收和發(fā)送??刂贫擞刹僮魅藛T使用,在界面上顯示各個終端的運行情況、當(dāng)前的實時溫度數(shù)據(jù),操作人員的指令通過控制端下發(fā)到采集端,最后通過采集端發(fā)送到各個對應(yīng)的終端。

          2 系統(tǒng)的軟件設(shè)計流程
          系統(tǒng)啟動時,為支持通過串口設(shè)置相關(guān)參數(shù),按照順序提示用戶輸入相關(guān)配置參數(shù)。如果用戶超過了一定的時間不操作,系統(tǒng)就進(jìn)入初始化模塊,啟動GPRS模塊,對短信命令進(jìn)行處理(初始化自有點到點協(xié)議模塊)。主應(yīng)用程序的流程如圖2所示。


          系統(tǒng)運行中,TimerO的中斷處理程序處理自有的點到點協(xié)議,包括處理“登陸”、“心跳”和“退出”命令。在系統(tǒng)的發(fā)送數(shù)據(jù)緩沖隊列中讀取數(shù)據(jù),將數(shù)據(jù)打包成“數(shù)據(jù)”命令,通過串口發(fā)送到GPRS模塊。如果GPRS模塊有數(shù)據(jù),再在串口中讀出遠(yuǎn)程監(jiān)控中心發(fā)送過來自有協(xié)議的各種命令,只將“數(shù)據(jù)”命令解析后存入接收數(shù)據(jù)緩沖隊列中,其他協(xié)議維持命令由相應(yīng)的子程序進(jìn)行處理。
          主應(yīng)用程序通過少數(shù)幾個系統(tǒng)狀態(tài)全局變量、發(fā)送數(shù)據(jù)緩沖隊列和接收數(shù)據(jù)緩沖隊列與數(shù)據(jù)通信模塊進(jìn)行交互,也就是與TimerO的中斷處理程序進(jìn)行交互。主應(yīng)用程序不需要了解自有點到點協(xié)議的編解碼過程以及數(shù)據(jù)鏈路的維護(hù)工作,使模塊直接的耦合度降低。主應(yīng)用程序通過SPI總線實時地讀取MAX6675采集到的熱電偶溫度數(shù)據(jù),實時檢查GPRS模塊狀態(tài)(如果GPRS模塊錯誤超過規(guī)定次數(shù),重新啟動GPRS模塊),實時地將報警數(shù)據(jù)存入發(fā)送數(shù)據(jù)緩沖隊列中并同時啟動報警模塊,實時地處理接收數(shù)據(jù)緩沖隊列中的數(shù)據(jù),實時處理GPRS模塊短信命令數(shù)據(jù),實時顯示系統(tǒng)采集的溫度數(shù)據(jù)和狀態(tài)信息,定時地將采集到的數(shù)據(jù)存入發(fā)送數(shù)據(jù)緩沖隊列中。

          3 MAX6675與S3C4480X的接口實現(xiàn)
          MAX6675芯片內(nèi)部集成了冷端補償電路。該芯片有簡單的3位串行SPI接口,可將溫度信號轉(zhuǎn)換成12位的數(shù)字量,溫度分辨率達(dá)O.25℃。芯片內(nèi)部含有熱電偶斷線檢測電路。其冷端補償溫度范圍為-20~80℃,應(yīng)用的環(huán)境溫度范圍比較寬,可以測量0~1 023.75℃的被測溫度,基本符合工業(yè)溫度測量的實際需要。當(dāng)MAX6675的CS引腳從高電平變?yōu)榈碗娖綍r,芯片將停止任何信號轉(zhuǎn)換并在時鐘SCK的作用下通過S0引腳向外輸出已轉(zhuǎn)化的數(shù)據(jù),此數(shù)據(jù)是經(jīng)過放大了的A/D轉(zhuǎn)換后的數(shù)字量與冷端補償之和;相反,當(dāng)芯片的CS引腳從低電平變回高電平時,MAX-6675芯片將進(jìn)行新的溫度數(shù)字化工作。CS引腳從高電平變?yōu)榈碗娖綍r,第1個字節(jié)D15出現(xiàn)在引腳SO上。該系列芯片的1個完整的數(shù)據(jù)讀過程需要16個時鐘周期,數(shù)據(jù)的讀取通常在SCK的下降沿完成。需要指出的是,此芯片的A/D轉(zhuǎn)換耗時在O.17~0.22 s之間,比一般的A/D轉(zhuǎn)換芯片μs級的轉(zhuǎn)換時間要長許多,相應(yīng)的溫度轉(zhuǎn)換模塊需要進(jìn)行相應(yīng)的優(yōu)化設(shè)計,不能占用太多CPU資源。
          MAlX6675采用標(biāo)準(zhǔn)的SPI串行外設(shè)總線與ARM7進(jìn)行對接,因此該芯片只能作為從設(shè)備(即串行接口芯片)。SPI(SeriaI Peripheral Int-erface)總線系統(tǒng)是一種同步串行外設(shè)接口,是Motorola公司推出的總線標(biāo)準(zhǔn),它可以使ARM7單片機(jī)與各種外圍設(shè)備以串行方式進(jìn)行通信。由于S3C44BOX單片機(jī)不具有SPI串行總線接口,在芯片對接時可以使用通用I/O口,用軟件來模擬SPI操作,包括串行時鐘、數(shù)據(jù)輸入/輸出。

          4 GPRS無線數(shù)據(jù)傳輸模塊
          溫度采集處理模塊采集到的數(shù)據(jù)通過SPI總線傳送到處理器,經(jīng)過串口AT指令傳輸?shù)紾PRS模塊,然后由GPRS模塊通過GPRS網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)將數(shù)據(jù)傳送到遠(yuǎn)端接在互聯(lián)網(wǎng)上的控制中心主機(jī),在控制中心的網(wǎng)絡(luò)上可以通過組態(tài)軟件建立小型集散控制系統(tǒng)。至于組態(tài)軟件的選擇,可以根據(jù)需要選用商業(yè)組態(tài)軟件,或者像筆者碩士畢業(yè)論文所做的小型集散控制系統(tǒng)控制軟件。
          有關(guān)利用AT命令操作GPRS模塊在相關(guān)文獻(xiàn)中已有描述,這里以華為GTM900A模塊為例說明相關(guān)操作。表1描述了華為GPRS模塊AT指令基本功能指令集,通過對這些指令的運用就可以進(jìn)行GPRS模塊的初始化、打開鏈路、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉鏈路等一些常用的操作。
          基于ARM系列的32位單片機(jī)RAM資源比較豐富,利用C、C++等高級語言就能夠編寫應(yīng)用軟件。在這里選用C語言開發(fā)GPRS模塊功能程序。利用ARM7S3C4480X芯片上提供的16字節(jié)的FIFO串口,向串口傳送AT命令對GPRS模塊進(jìn)行操作。下面是一段用C語言編寫的打開TCP連接的模塊程序:



          GPRS模塊是具有登陸GPRS網(wǎng)絡(luò)功能的芯片加上相應(yīng)的協(xié)助處理數(shù)字電路,在模塊內(nèi)部裝上開通GPRS功能的移動電話卡,通過串行協(xié)議與ARM7處理器進(jìn)行通信。將數(shù)據(jù)以數(shù)據(jù)包的形式,先通過PPP和運營商的Internet接入服務(wù)器連接,然后把數(shù)據(jù)包發(fā)送到In


          上一頁 1 2 下一頁

          評論


          相關(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); })();