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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于嵌入式系統(tǒng)的遠程參數測量的設計

          基于嵌入式系統(tǒng)的遠程參數測量的設計

          作者: 時間:2011-12-20 來源:網絡 收藏

          1. 引言

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

          由于性價比高開發(fā)周期短等優(yōu)點目前得到了迅猛發(fā)展,各類 ARM 處理器的應用開發(fā)更是如火如荼。這里介紹 ARM9 芯片 S3C2410 構建的監(jiān)控,該方案先進,集成度較高,在實踐中得到了廣泛的應用。

          2. ARM9 S3C2410X 簡介

          S3C2410X 是三星公司提供的 ARM920T 內核的 32 位 RISC 處理器,它的低功耗、低價格、高性能特別適合于手持設備和通用嵌入式應用場合,為降低整個系統(tǒng)的成本,它提供了豐富的內部設備,包括分開的 16KB 指令 Cache 和 16KB 數據 Cache,MMU 虛擬存儲器管理,24bbp 模式下最大 16M 色 TFT LCD 控制器,支持 NAND Flash 系統(tǒng)引導,片選邏輯和dram 控制器的系統(tǒng)管理器,3 通道 UART,4 通道 DMA,4 通道 PWM 定時器,117個通用 IO 端口和 24 通道外部中斷源,具有日歷功能的 RTC,8 通道 10 位 ADC 和觸摸屏接口,IIC、IIS 接口,USB 主從設備,SDMMC 卡接口,2 通道的 SPI 以及 PLL 時鐘倍頻器。S3C2410X 具有豐富的接口和內嵌硬件控制器,使用其最簡系統(tǒng)即可實現(xiàn)大部分應用系統(tǒng)的功能。

          3. 嵌入式監(jiān)控系統(tǒng)

          本系統(tǒng)需對被測設備如電力設備或太陽能的電壓、電流或溫度、光照度等進行、采集、存儲,并實現(xiàn)監(jiān)控。數據存儲格式為 SNMP 的 MIB 數據庫方式,數據庫能夠通過系統(tǒng)的NMP 代理被遠方操作員的 SNMP 控制平臺所訪問存取。傳輸協(xié)議為以太網的 IP 協(xié)議。信息同時能夠被本地操作顯示,因此本地附有串行接口,基于以上應用需求,實現(xiàn)系統(tǒng)框圖如下圖 1 所示。

          圖 1 系統(tǒng)原理框圖(Fig1 System Diagram)

          本系統(tǒng)需采集遠端、本地兩個溫度檢測,一個光照度檢測,三個直流 DC 8-130V 電壓檢測,三個直流 DC 0-20A@12VDC 電流檢測,一個交流 AC 105-280V 電壓檢測,一個交流AC 0-20A@120VAC 電流檢測。測量使用原理及所用傳感器件下節(jié)敘述。測量時通過 ARM9 的 IO 端口測量溫度和光照度, 通過片內ADC將交直流電壓電流通過傳感器轉變后的輸出電壓進行采樣,然后通過 CPU 計算后存入數據庫。

          4. 測量實現(xiàn)

          測量是本系統(tǒng)的前端電路,也是最終目的。由于 ARM 系統(tǒng) 3.3V 供電,具有通用IO 接口和內置 ADC 電路,因此只要將各測量參數通過相應的傳感設備轉換為 IO 數據或0-3.3V 的模擬電壓量,就可通過 ARM 處理器采集,從而轉換為數字信號進而數字存儲或通過網絡傳輸。各參數的測量采集電路見圖 2 所示。

          直流電壓的采集可以直接通過電阻分壓取得,因為已知需要采集的直流電壓的范圍,將最大電壓值映射為 3.3V,即可獲得圖 2 中的兩個分壓電阻的值。設分壓電阻分別是12KΩ和470KΩ, 則Uo = 12/(12+470)×Ui = Ui/40,按照 ARM 10 位 ADC 采樣結果,如 ADC 采樣值為 Uadc,則采集到的輸入電壓值為:Ui = [ Uadc/1024] ×3.3×40(V)。

          交流電壓的采集采用 TV19G_E 系列精密電壓互感器,該器件采用坡膜合金鐵芯,線性度優(yōu)于 0.1%。體積小,直接焊接在電路板。它是一種電流型電壓互感器,不同的輸入電壓通過限流電阻使一次側流過不同的電流,二次得到一個與一次相同的電流。經運算放大器或電阻直接取樣,得到不同的輸出電壓,如圖 2 所示。

          此時采集到的電壓值實際上是交流電壓的瞬時值,其實時性好,相位失真小,本文用軟件代替硬件實現(xiàn)交流電壓采集可以使得硬件投資減小,實踐證明,采用該方法并通過算法計算后獲得的電壓、電流、有功功率、功率因數等電力參數有著較好的精確度和穩(wěn)定性。

          電壓有效值公式為

          將其離散化,以一個周期內有限個采樣電壓數字量來代替一個周期內連續(xù)變化的電壓函數值,則

          式中 ΔTm為相鄰兩次采樣的時間間隔;um 為第 m-1 個時間間隔的電壓采樣瞬時值;N 為 1 個周期的采樣點數。若相鄰兩采樣的時間間隔相等,即 ΔTm 為常數 ΔT,考慮到 N=(T/ΔT)+1,則有

          周期內等時間間隔準確采樣 16 點并存儲結果,采集完后,對采集的數據進行數字濾波并計算得到相應的值。

          系統(tǒng)中溫度測量采用 DS18B20 分辨率可編程單線數字溫度計,并可結聯(lián)使用。測量溫度范圍為-55 度至+125 度,精度可達 0.5 度,數字精度可編程為9 至12bit。該芯片僅單線輸出,可連接 CPU 的 IO 管腳,需進行編程控制。本系統(tǒng)采用Linux 操作系統(tǒng)下的 IO 輸入輸出設備驅動控制進行讀寫操作,進而實現(xiàn)溫度數據的采集,具體的程序流程如下節(jié)所述。

          圖 3a 電流感應輸出電壓關系圖 圖 3b 光照度頻率關系圖

          系統(tǒng)中光照度測量采用光敏傳感器 TSL235 電路,該電路是光照度到頻率的轉換電路,內置一個硅光敏二極管和電流到頻率的轉換器,輸出為 50%占空比的不同頻率的方波,管腳只有電源、地和輸出,輸出可直接和 CPU 的 IO 相連,CPU 通過 TIMER 控制或中斷檢測即可測得該方波的頻率,從而可計算出相應的光照度。其光照度和頻率的關系曲線如圖 3b 所示。

          5. 軟件模塊

          本系統(tǒng)軟件在 linux 操作系統(tǒng)下實現(xiàn),其軟件結構如圖 4 所示。

          系統(tǒng)中 ADC、IO 等操作均采用設備驅動方法實現(xiàn),先編寫設備驅動程序,將驅動加入到操作系統(tǒng)中,然后在應用中調用驅動程序。如 ds18b20 溫度采集采用 IO 操作的方法。先建立 IO 驅動, module_init(DS18B20_init), 主要實現(xiàn)設備注冊 register_chrdev(240, ds18b20, DS18B20_fops)。DS18B20_fops 文件操作主要包括 ioctl,通過 ioctl 中WriteOneChar,ReadOneChar 等 IO 的控制實現(xiàn)溫度的采集。

          6.結語

          本文介紹了基于 S3C2410X ARM 的參數測量系統(tǒng),該系統(tǒng)可針對電力設備的電壓、電流、溫度、光敏度等進行測量、采集,存儲于系統(tǒng)內部基于 SNMP 的 MIB 數據庫中,并通過網絡協(xié)議進行訪問。系統(tǒng)采用 ARM 嵌入式實現(xiàn),性價比高,功能強,在實際中得到了很好的應用。

          接地電阻相關文章:接地電阻測試方法


          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();