談ARM對多傳感器的精確定時(shí)

發(fā)布時(shí)間:2010-3-18 07:26    發(fā)布者:李寬
關(guān)鍵詞: arm , 傳感器
煤礦井下環(huán)境十分惡劣,隨時(shí)可能遇到的塌方和煤粉塵大等情況,影響固定報警器檢查瓦斯濃度的正常工作。安全檢查最可靠的方式是,所有的下井人員人人都隨身攜帶煤礦瓦斯報警器,隨時(shí)檢查井下瓦斯濃度;但僅檢查瓦斯濃度往往是不夠的,當井下的一氧化碳的濃度升高時(shí)對人體也是十分有害的。為了確保下井人員的安全,不僅隨時(shí)要檢查瓦斯濃度,同時(shí)也要檢查一氧化碳濃度。

能同時(shí)檢查兩種以上有害氣體的裝置,既要便于攜帶,又要精確定時(shí)檢查多種有害氣體,這里選用32位ARM微處理器來(lái)實(shí)現該功能。

利用32位 ARM微處理器的優(yōu)勢,可以滿(mǎn)足便于攜帶與精確定時(shí)報警的要求。本文將針對精確定時(shí)這一問(wèn)題進(jìn)行一些探討。

1  ARM嵌入式隨身瓦斯報警器的基本原理

如圖1所示,瓦斯報警器主要包括:ARM芯片外部的輸入輸出部分,ARM芯片內部與外部輸入連接的 A/D轉換部分和與芯片內部與外部輸出連接的GPIO部分。



1.1 輸入輸出部分

輸入部分:由瓦斯傳感器與一個(gè)模擬信號放大器通過(guò)跳線(xiàn)連接到P0.22引腳,將瓦斯模擬信號送入AIN0模擬輸入通道0;一氧化碳傳感器與另一個(gè)模擬信號放大器連接到P0.23引腳,將一氧化碳模擬信號送人 AIN1模擬輸入通道1。

輸出部分:由P0.17和P0.18引腳通過(guò)470 Ω電阻LED發(fā)光告警二極管連接;P0.19引腳通過(guò)470 Ω電阻與一個(gè)蜂鳴器相連,電阻的作用是分壓,以便產(chǎn)生中度蜂鳴告警;P0.20引腳直接與另一蜂鳴器相連,以便產(chǎn)生強度蜂鳴告警。

ARM LPC2103微處理器A/D轉換器的特性是:10位逐次逼近式模數轉換器;測量范圍為0~3.3 V;10位轉換時(shí)間≥2.44μs;1路或多路輸入的Burst轉換模式;轉換觸發(fā)信號可選擇輸人引腳的跳變或定時(shí)器的匹配情況;A/D轉換器的基本時(shí)鐘由VPB時(shí)鐘提供,可編程分頻器將時(shí)鐘調整至4.5 MHz(逐次逼近轉換的最大時(shí)鐘),10位精度要求的轉換需要11個(gè)A/D轉換時(shí)鐘。

ARM 微處理器運行程序在A(yíng)/D控制寄存器參數的控制下,將AIN0采集到的瓦斯模擬信號送入10位逐次逼近式模數轉換器,轉換后的數字信號值存入ADDR 0 A/D數字寄存器0。將這一值與瓦斯初告警值、瓦斯中度告警值、瓦斯強度告警值進(jìn)行比較,在哪一種告警范圍,立即進(jìn)行哪一種告警。

將 AIN1采集到的一氧化碳模擬信號送入10位逐次逼近式模數轉換器,轉換后的數字信號值存入ADDR1A/D數字寄存器1。將這一值與一氧化碳初告警值、一氧化碳中度告警值、一氧化碳強度告警值進(jìn)行比較,在哪一種告警范圍,立即進(jìn)行哪一種告警。

1.2 模擬信號采集通道的選擇與設置

從圖1可看到,P0.22引腳連接AIN0通道,通過(guò)設置ADOCR A/D控制寄存器,選擇通道0采集瓦斯濃度信息,并設置轉換時(shí)鐘頻率為1 MHz;BURST=0,軟件控制轉換操作;CLKS=0,使用11clock轉換;PDN=1,正常工作模式;START=4,當EDGE選擇的邊沿出現在MAT0.1時(shí)啟動(dòng)A/D轉換;EDGE=0,MAT0.1下降沿觸發(fā)。

P0.23引腳連接AIN1通道,通過(guò)設置ADOCR A/D控制寄存器,選擇通道1采集一氧化碳濃度信息,設置轉換時(shí)鐘頻率為1 MHz;BURST=0,軟件控制轉換操作;CLKS=0,使用11clock轉換;PDN=1,正常工作模式;START=5,當EDGE選擇的邊沿出現在MAT0.3時(shí)啟動(dòng)A/D轉換;EDGE=0,MAT0.3下降沿觸發(fā)。

2 精確的定時(shí)觸發(fā)

A/D轉換的硬件觸發(fā)可通過(guò)定時(shí)器翻轉功能觸發(fā)A/D轉換,這樣無(wú)需CPU干預就能精確地定時(shí)觸發(fā)(這是本文主要討論的問(wèn)題)。ARM LPC2103定時(shí)器0寄存器結構框圖如圖2所示。



初始化定時(shí)器0時(shí),使定時(shí)器0匹配1(TOMR1)每逢第5 s時(shí)MAT0.1輸出翻轉;同時(shí)使定時(shí)器0匹配3(TOMR1)每逢第10 s時(shí)MAT0.3輸出翻轉。對定時(shí)器0設置代碼如下:



因對于ADCR A/D轉換控制寄存器的START位選擇100~111時(shí),MAT信號不必輸出到引腳上。對于上述代碼初始化定時(shí)器需要說(shuō)明,MAT0.1的 START=4即十六進(jìn)制的100,下降沿觸發(fā)啟動(dòng)A/D轉換。對于MAT0.3的START=5即二進(jìn)制的101,下降沿觸發(fā)啟動(dòng)A/D轉換器。

怎樣精確地定時(shí)觸發(fā)呢?先設置定時(shí)器0清零復位(Fpclk=1 s),每隔5 s,定時(shí)器計數器TC的值與TOMR1設置值相等時(shí),MAT0.1輸出信號翻轉;每隔10 s時(shí),定時(shí)器0復位。這樣在定時(shí)器0復位后的第5 s時(shí),MAT0.1輸出再次翻轉;MAT0.1每隔10 s輸出翻轉一次,它的精確匹配值是:

Fpclk×10 s(復位時(shí)間)-Fpclk×5 s(翻轉時(shí)間)+Fpclk×5(再次翻轉時(shí)間)=10 s

因為MAT0.1翻轉2次才會(huì )有1次下降沿觸發(fā)A/D轉換,采集瓦斯濃度信息定時(shí)觸發(fā),即可精確地計算出MAT0.1每隔20 s產(chǎn)生1次下降沿,定時(shí)觸發(fā)1次,采集一次新的瓦斯濃度信息。

同理,每隔10 s定時(shí)器計數器TC的值與TOMR3設置值相等時(shí),MAT0.3輸出翻轉,并且定時(shí)器0復位。這樣在定時(shí)器0復位后的第10 s時(shí),MAT0.3輸出再次翻轉。MAT0.3每隔10 s輸出翻轉1次,因為MAT0.3翻轉2次才會(huì )有1次采集一氧化碳濃度信息,即可精確地計算出MAT0.3,也是每隔20 s產(chǎn)生1次下降沿,定時(shí)觸發(fā)1次,產(chǎn)生1次新的一氧化碳濃度信息。這樣會(huì )給報警留有較長(cháng)的時(shí)間。

上述兩段就是通過(guò)程序設置,無(wú)需CPU干預就能精確地定時(shí)觸發(fā)(是本文主要討論的問(wèn)題)。這里的每隔20 s定時(shí)觸發(fā)1次,“20 s”這一數據可根據實(shí)際需求修改設定。

3 報警服務(wù)的實(shí)現

數字數據的提取、報警與A/D控制寄存器的設置均可通過(guò)中斷服務(wù)程序來(lái)完成。

定時(shí)器0為4號中斷源,如圖3所示,所以需要用中斷使能寄存器對4號中斷源進(jìn)行使能。采用向量IRQ中斷,需要用VICIntSelect將4號中斷源選擇為向量IRQ,即第4位置1。然后將中斷服務(wù)程序地址賦給VICVectAddr0(因為向量通道0是最快的),最后用向量控制寄存器對向量通道0分配中斷源并使能。



在初始化定時(shí)器0時(shí),將匹配控制寄存器TOMCR賦值;它的二進(jìn)制賦值是 10001000001,即它的十六進(jìn)制賦值是0x441,每3位設置一個(gè)匹配;設置的是當定時(shí)器0計數器的值與匹配0寄存器值相等時(shí)產(chǎn)生一個(gè)中斷,當定時(shí)器0計數器的值與匹配2寄存器值相等時(shí)又產(chǎn)生1次中斷,當定時(shí)器0計數器的值與匹配3寄存器值相等時(shí)定時(shí)器0計數器TC清零復位。

TC 每次復位后將產(chǎn)生2次中斷,產(chǎn)生第1次中斷后,中斷服務(wù)程序將讀取A/D數據寄存器ADDR1的值,并提取10位A/D轉換的結果(即一氧化碳濃度值);再將這一數據與初告警、中度告警和強度告警值進(jìn)行比較,滿(mǎn)足這3種告警的某一種,就立刻進(jìn)行聲光報警。因A/D控制寄存器ADCR的MAT信號不必輸出到引腳上的START位設置是唯一的,中斷服務(wù)程序還需對A/D控制寄存器ADCR進(jìn)行設置。設置START=4,當EDGE選擇的邊沿出現在MAT0.1 時(shí)啟動(dòng)A/D轉換;EDGE=0,MAT0.1為下降沿觸發(fā)。通過(guò)中斷服務(wù)程序來(lái)完成對AIN0通道(即瓦斯濃度信號通道)A/D轉換器的啟動(dòng)。

產(chǎn)生第2次中斷后,中斷服務(wù)程序將讀取A/D數據寄存器ADDR0的值,并提取10位A/D轉換的結果(即瓦斯濃度值);再將這一數據與初度告警、中度告警和強度告警值進(jìn)行比較,滿(mǎn)足這3種告警的某一種,就立刻進(jìn)行該聲光報警。因A/D控制寄存器的MAT信號不必輸出到引腳上的START位置是唯一的,因此還需對A/D控制寄存器進(jìn)行設置。設置START=5,當EDGE選擇的邊沿出現在MAT0.3時(shí)啟動(dòng)ADC轉換;EDGE=0,MAT0.3為下降沿觸發(fā)。通過(guò)中斷服務(wù)程序來(lái)完成對AINl通道(即一氧化碳濃度信號通道)A/D轉換器的啟動(dòng)。

這樣,當TC值與MR0值相等時(shí),響應中斷服務(wù)進(jìn)行一氧化碳值判斷與告警并設置MAT0.1的啟動(dòng)轉換。當TC值與MR1值相等時(shí),設置MAT1輸出信號翻轉;當TC值與MR2值相等時(shí),響應中斷服務(wù)進(jìn)行瓦斯值判斷與告警并設置MAT0.3的啟動(dòng)轉換;當TC值與MR3值相等時(shí),設置MAT3輸出信號翻轉并同時(shí)TC復位。這樣循環(huán)往復,可以無(wú)需 CPU干預就能精確地定時(shí)觸發(fā),精確地按時(shí)進(jìn)行多個(gè)傳感器的觸發(fā)和多個(gè)判斷告警,即通過(guò)中斷服務(wù)程序實(shí)現了有害氣體檢測告警服務(wù)。

結語(yǔ)

根據上述原理,使用ARM LPC2103芯片,已完成了一個(gè)可隨身攜帶的煤礦瓦斯報警器。它能及時(shí)檢測與顯示煤礦、隧道及各種地下工程等環(huán)境中的瓦斯(即甲烷)及一氧化碳濃度。當達到有害濃度值時(shí),可進(jìn)行不同級別的聲光報警。

此種報警器不僅適用于煤礦,安裝其他傳感器后也可用于其他礦山、化工重地、倉庫等具有爆炸危險的氣體環(huán)境中,提高安全監控能力。

將煤礦瓦斯報警器CH4、C20傳感器換成可燃氣體、甲醛傳感器,就可用在廚房和居室,對有害氣體的超標情況進(jìn)行報警。它的用途還可進(jìn)一步擴展。

劉敦放

(重慶普天通信設備有限公司,重慶 400050)

來(lái)源:《單片機與嵌入式系統應用》2010年01期
本文地址:http://selenalain.com/thread-9525-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页