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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MMA7260QT三軸加速度傳感器的跌倒探測(cè)儀的研制

          基于MMA7260QT三軸加速度傳感器的跌倒探測(cè)儀的研制

          作者:上海復(fù)旦光華信息科技股份有限公司 張 鑫 孫新香 時(shí)間:2008-08-01 來(lái)源:世界電子元器件 收藏

            事務(wù)處理及狀態(tài)機(jī)
            根據(jù)跌倒探測(cè)器的設(shè)計(jì)需求,系統(tǒng)要同時(shí)具備計(jì)步器、跌倒檢測(cè)、報(bào)警處理、系統(tǒng)設(shè)置和無(wú)線通信控制等功能。

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

            事務(wù)處理的方法借鑒操作系統(tǒng)中的線程概念。首先將每項(xiàng)事務(wù)執(zhí)行的操作明確,確定每種操作的優(yōu)先級(jí)、相互關(guān)系和對(duì)資源的要求,然后在主循環(huán)中設(shè)置各種操作的啟動(dòng)機(jī)制,從總體上看,這些事物在主循環(huán)中并行地得到實(shí)現(xiàn)。跌倒探測(cè)器事務(wù)處理的調(diào)用關(guān)系如圖6所示。


           

            針對(duì)某些項(xiàng)事務(wù)處理的實(shí)現(xiàn),在軟件設(shè)計(jì)中采用了狀態(tài)機(jī)的方法以確保整個(gè)任務(wù)能夠順暢而正確地得以實(shí)現(xiàn)。

            系統(tǒng)設(shè)置
            系統(tǒng)設(shè)置主要完成一些初始化操作和需要使用者進(jìn)行確認(rèn)的系統(tǒng)信息的設(shè)定操作。
          系統(tǒng)初始化工作主要由完成,包括各種配置寄存器的設(shè)置、初始化指令和存儲(chǔ)緩沖區(qū)的設(shè)置,初始化工作將保證系統(tǒng)各功能組件能夠在上電后正常啟動(dòng)。

            初始化--_Init( ):
            通過(guò)設(shè)置相應(yīng)的控制寄存器實(shí)現(xiàn)MCU的啟動(dòng)和對(duì)各功能外設(shè)(Peripheral)的管理:
          時(shí)鐘:MCU工作采用內(nèi)部時(shí)鐘,通過(guò)設(shè)置ICS控制寄存器實(shí)現(xiàn);

          端口:根據(jù)系統(tǒng)端口分配方案,結(jié)合相關(guān)外設(shè)--I2C、SCI的控制寄存器實(shí)現(xiàn);
          I2C控制器:傳輸速率、地址選擇設(shè)定;
          SCI控制器:波特率設(shè)置。

            初始化--LCD_Init( ):
            通過(guò)指令初始化驅(qū)動(dòng)控制芯片HT1621B,完成液晶顯示器的初始化。

            存儲(chǔ)緩沖區(qū)初始化--RT_Data、 Word_Base[ ]:
            MC9S08QG8內(nèi)部集成了512字節(jié)的RAM滿(mǎn)足程序運(yùn)行所需。而在跌倒探測(cè)器運(yùn)行過(guò)程中,MCU持續(xù)采集的數(shù)據(jù),并進(jìn)行處理,因此要為數(shù)據(jù)分析預(yù)先開(kāi)辟好緩存區(qū)。同樣,在利用CDMA發(fā)布報(bào)警信息時(shí),報(bào)警信息文字內(nèi)容需要在進(jìn)行軟件設(shè)計(jì)時(shí)預(yù)先設(shè)定好,并在需要使用時(shí)通過(guò)指針調(diào)用。

            需要使用者進(jìn)行確認(rèn)的系統(tǒng)信息的設(shè)定,是指跌倒探測(cè)器報(bào)警信息的接收方可以根據(jù)實(shí)際情況由使用者進(jìn)行設(shè)定,例如親屬的移動(dòng)電話或急救中心的固定座機(jī)(要求能夠接收短信)。使用者可以通過(guò)按鍵配合液晶,輸入接收方的號(hào)碼即可,必要時(shí)使用者也可以對(duì)接收方號(hào)碼進(jìn)行修改。

            按鍵功能
            按鍵功能在軟件設(shè)計(jì)中單獨(dú)提出是因?yàn)楸鞠到y(tǒng)受限于MCU端口數(shù)量,無(wú)法按照預(yù)先設(shè)計(jì)的人機(jī)交互需求安排足夠端口作為鍵盤(pán)掃描之用。本設(shè)計(jì)中最終確定使用2個(gè)按鍵,按鍵的功能設(shè)定及使用方法設(shè)計(jì)如下。

            "Alam"鍵(啟動(dòng)報(bào)警接收方號(hào)碼輸入、手動(dòng)報(bào)警):
            跌倒探測(cè)器一般工作模式下,長(zhǎng)按(超過(guò)2秒)"Alam"鍵,啟動(dòng)報(bào)警信息發(fā)布功能,適用于除跌  倒情況外其他緊急情況;
            跌倒探測(cè)器一般工作模式下,按"Alam"鍵,跌倒探測(cè)器進(jìn)入設(shè)置報(bào)警接收方號(hào)碼狀態(tài),配合"Alter"鍵實(shí)現(xiàn)號(hào)碼輸入;
            跌倒探測(cè)器進(jìn)入報(bào)警處理狀態(tài)(蜂鳴器beep)時(shí),按"Alam"鍵,直接發(fā)布報(bào)警信息,然后關(guān)閉蜂鳴器;
            "Alter"鍵(計(jì)步器啟動(dòng)、暫停、清零、取消報(bào)警、設(shè)置報(bào)警接收方號(hào)碼):
            跌倒探測(cè)器一般工作模式下,按"Alter"鍵在計(jì)步器啟動(dòng)、暫停和清零三項(xiàng)功能之間切換;
            跌倒探測(cè)器進(jìn)入報(bào)警接收方號(hào)碼輸入狀態(tài)時(shí),"Alter"鍵執(zhí)行液晶顯示的數(shù)字加1的操作,數(shù)字從0-9循環(huán);
            跌倒探測(cè)器進(jìn)入報(bào)警處理狀態(tài)(蜂鳴器beep)時(shí),按"Alter"鍵取消報(bào)警,然后關(guān)閉蜂鳴器。

            計(jì)步器
            MCU始終在分析佩戴者身體姿態(tài)的信息,因此可以將佩戴者的行走動(dòng)作分析作為一項(xiàng)附屬結(jié)果輸出,從而使跌倒探測(cè)器還具有了計(jì)步器的功能。

            參考圖1,在理想狀態(tài)下的步行過(guò)程中,X軸和Z軸都應(yīng)該能夠檢測(cè)到加速度的周期性變化--X軸由前進(jìn)的動(dòng)作引起,Z軸由身體的上下起伏引起,這種周期性的變化可以為步行動(dòng)作的分析提供依據(jù)。由于在實(shí)際使用過(guò)程中,身體隨邁步動(dòng)作產(chǎn)生相應(yīng)的晃動(dòng)同樣會(huì)引起在三個(gè)正交坐標(biāo)軸方向上的輸出,因此在設(shè)計(jì)檢測(cè)算法時(shí)應(yīng)設(shè)定合適的加速度閾值。只有超過(guò)一定幅度的輸出才被看作是由于邁步動(dòng)作所引起,避免由于正常的身體晃動(dòng)引入的各種偽差。計(jì)步器實(shí)現(xiàn)的軟件流程如圖7。


             跌倒檢測(cè)
            危險(xiǎn)的或者可能已產(chǎn)生較嚴(yán)重后果的跌倒發(fā)生后,人體通常處于水平狀態(tài),因此對(duì)于這種類(lèi)型的跌倒,要求跌倒探測(cè)器都能夠檢測(cè)到并實(shí)施報(bào)警處理機(jī)制。而對(duì)于其他較為復(fù)雜的跌倒過(guò)程,則需要通過(guò)報(bào)警機(jī)制的配合,實(shí)現(xiàn)對(duì)跌倒探測(cè)及危險(xiǎn)報(bào)警的準(zhǔn)確觸發(fā)。跌倒檢測(cè)的算法狀態(tài)機(jī)如圖8所示,


           

            跌倒檢測(cè)算法描述如下:

            1)主循環(huán)等待,監(jiān)測(cè)Z軸加速度變化,如果超過(guò)閾值,進(jìn)入下一步;
            2)等待加速度恢復(fù)到正常范圍內(nèi),進(jìn)入下一步;
            3)再設(shè)置延時(shí)10秒,等待佩戴者狀態(tài)穩(wěn)定;
            4)數(shù)據(jù)分析,如果發(fā)現(xiàn)佩戴者身體水平,認(rèn)為發(fā)生跌倒?fàn)顩r,觸發(fā)報(bào)警處理。

            報(bào)警處理
            在本設(shè)計(jì)中,采用跌倒檢測(cè)算法和多種報(bào)警模式相結(jié)合的方式。跌倒探測(cè)器檢測(cè)到跌倒發(fā)生時(shí),系統(tǒng)必須能夠準(zhǔn)確無(wú)誤地將報(bào)警信息發(fā)布出去,才能保證跌倒者獲得救助。跌倒包含很多種類(lèi)型,有些情況下,檢測(cè)到的"跌倒"是有意識(shí)的行為--或者根本不是跌倒--假陽(yáng)性;另外,有時(shí)跌倒者仍然還保持一定的行動(dòng)能力,為了盡快得到救助,自身可以采取一定的行動(dòng);還有一種情況,跌倒造成比較嚴(yán)重的后果,跌倒者已無(wú)法行動(dòng)。

            針對(duì)上面提到的幾種情況,報(bào)警處理的軟件設(shè)計(jì)將加以區(qū)分對(duì)待:

            檢測(cè)到跌倒后,系統(tǒng)啟動(dòng)30S的倒計(jì)時(shí)器,并打開(kāi)蜂鳴器,每3S響一次,如果沒(méi)有接收到任何輸入,30S結(jié)束后,系統(tǒng)自動(dòng)發(fā)布報(bào)警信息;

            進(jìn)入30S倒計(jì)時(shí)后,蜂鳴器"beep",系統(tǒng)可以響應(yīng)用戶(hù)輸入,跌倒探測(cè)器的兩個(gè)按鍵分別設(shè)置為"手動(dòng)報(bào)警"和"取消(報(bào)警)"的功能,如果用戶(hù)按"手動(dòng)報(bào)警"鍵,系統(tǒng)發(fā)布報(bào)警信息;

            如果用戶(hù)按"取消"鍵,系統(tǒng)關(guān)閉30S倒計(jì)時(shí)和蜂鳴器,不作任何處理,直接返回計(jì)步器和跌倒檢測(cè)狀態(tài)。

            通信控制

            報(bào)警信息通過(guò)CDMA短信的方式發(fā)送給接收方,跌倒探測(cè)器采用DTGS-800b型CDMA模塊,通信控制就是使其能夠正常工作的一段例程。DTGS-800b型CDMA模塊提供RS232接口,MCU可以根據(jù)需要通過(guò)AT命令實(shí)施對(duì)通信過(guò)程的控制。具體通信例程根據(jù)設(shè)計(jì)需求應(yīng)包括如下內(nèi)容:

          啟動(dòng)CDMA模塊--Comm_Start( );
          啟動(dòng)GpsOne?服務(wù)--Gps_Start( );
          獲得GPS空間定位信息--Gps_Position( );
          發(fā)送短信息報(bào)警--Send_SMS( )。
          由于通信例程涉及的狀態(tài)不多,基本是按照上面的順序進(jìn)行,因而程序結(jié)構(gòu)比較簡(jiǎn)單,這里就不再贅述。


           

          結(jié)論

            按照上述方案設(shè)計(jì)完成的跌倒探測(cè)器樣機(jī)線路板如圖9所示,左圖為帶有CDMA模塊線路,右圖為不帶CDMA模塊線路,可見(jiàn)其下方是讀SIM卡電路。上電后,該線路板各功能模塊工作正常,能夠完成加速度采集、EEPROM數(shù)據(jù)存儲(chǔ)和跌倒報(bào)警短信發(fā)送(包括自動(dòng)、手動(dòng)和取消模式),按鍵液晶均能夠正常

          蜂鳴器相關(guān)文章:蜂鳴器原理

          上一頁(yè) 1 2 下一頁(yè)

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