關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 數(shù)字傳感器MPXY8020A與MSP430的接口設(shè)計

        數(shù)字傳感器MPXY8020A與MSP430的接口設(shè)計

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

        uchar i;
        P3DIR |=mpxy8020_clk+mpxy8020_dat;
        //CLK和DAT引腳為輸出
        Delay650us();
        P30UT&=~mpxy8020_clk; //CLK引腳清0
        for(i=0;i8;i++){
        if((_dataBIT7)=BIT7)f
        //高位在前
        P3OUT |=mpxy8020_dat; //OUT引腳置1
        else{
        P3OUT = ~mpxy8020_dat //OUT引腳清0
        }
        P3OUT |=mpxy8020_clk; //CLK引腳置1
        Dday20us(1);
        P30UT&=~mpxy8020_clk; //CLK引腳清0
        Delay20us(1)。
        _data=_data1;
        //左移1位
        }

        4. 2. 2溫度和氣壓數(shù)據(jù)的讀取

        獲取MPXY8020A氣壓和溫度數(shù)據(jù)的方法有逐次逼近法和報警值檢查法。逐次逼近法能夠獲得8位精度的轉(zhuǎn)換結(jié)果,但需要較長的轉(zhuǎn)換時間和消耗較多的電能。報警值檢查法是預(yù)先設(shè)置一個氣壓或溫度的報警值,然后監(jiān)測OUT引腳的電平來確定氣壓和溫度值是否超過報警值。這是一種低功耗模式,在不需要知道準確的氣壓/溫度值時,可采用這種工作方式。本系統(tǒng)中采用的是逐次逼近法。

        MPXYS020A利用外部的F1232作為逐次逼近程序的控制器,F1232將猜測的極限值通過SPI串行地發(fā)送到的DAR(數(shù)/模轉(zhuǎn)換寄存器)。器件內(nèi)DAR將此猜測值變?yōu)槟M值,并與待測的氣壓值比較,通過OUT引腳給出比較后的結(jié)果。每次比較需用64個時鐘周期。例如:第1次猜測值為0x80,如果檢測OUT腳為高電平,則說明氣壓值大于0x80,F1232通過SPI再送人0xC0,檢測OUT引腳的狀態(tài),如果這次OUT引腳是低電平,說明氣壓在0x80和0xC0之間,重復(fù)這樣的過程,直到逼近近似值。整個過程類似對分搜索,首先,取全量程值的一半作為第1個猜測值,并送人數(shù)/模轉(zhuǎn)換寄存器,然后監(jiān)測傳感器OUT引腳的輸出狀態(tài)。若OUT引腳的輸出為“低”,說明猜測值太大或者和取樣值接近;若OUT引腳的輸出保持“高”,則說明猜測值太小。轉(zhuǎn)換結(jié)果寄存器作為一個變量由MSP430F135實時修改。如果猜測值太小,結(jié)果寄存器的最低位置“1”;如果猜測值太大,結(jié)果寄存器的最低位置“0”,使用新的猜測值繼續(xù)逼近,直到得到最終結(jié)果。

        用逐次逼近的方法讀取MPXY8020A溫度數(shù)據(jù)的程序代碼如下:
        void MPXY8020A_temperature_sample(void){
        uchar MPXY8020A_temp=0;
        P3D1R=~mpxy8020_ut; //INPUT
        MPXY8020A_temp=BIT7;//N始值為128,即位7=1
        MPXY8020A_standby_state(); //待機模式
        MPXY8020A__sendByte(MPXY8020A_Xemp);
        //發(fā)送極限值
        MPXYS020A_temperature_state(); //測量溫度模式
        MPXY8020A_output_state(); //讀數(shù)據(jù)模式
        if((P31N&mpxy8020_out)==mpxy8020_out){
        //比較OUT引腳是否為1
        MPXYS020A_temp |=BIT6; //位6=1
        }
        else{
        MPXY8020A_temp=~B1T7;//位7=0
        MPXY8020A_temp |=BIT6; //位6=1
        ://省略部分為從位6到位1的重復(fù)逼近的程序,其c
        //代碼與位7的相似
        MPXY8020A_standby_state(); //待機模式
        MPXY8020A_sendByte(MPXY8020A_temp);
        //發(fā)送極限值
        MPXY8020A_temperature_state(); //測量溫度模式
        MPXY8020A_output_state(); //讀數(shù)據(jù)模式
        if((P3IN&mpxy8020_out)==mpxy8020_out)
        //比較OUT引腳是否為1
        {}
        else{
        MPXY8020A_temp=~BITO;//位0=0
        }
        temperature=MPXY8020A_temp;
        //用全局變量儲存采樣值

        讀取MPXY8020A氣壓數(shù)據(jù)的函數(shù)代碼與讀取溫度的函數(shù)相似。限于篇幅,本文不再細述。

        4.2.3溫度和氣壓數(shù)據(jù)的轉(zhuǎn)換

        (1)溫度數(shù)據(jù)的轉(zhuǎn)換
        根據(jù)表3,可以把溫度采樣值轉(zhuǎn)換為實際溫度值。實際溫度值的單位為℃。眾所周知,單片機對浮點數(shù)的處理能力不強,因此,為了便于單片機進行運算和保留更高的準確度,對轉(zhuǎn)換后的實際溫度值放大了100倍。例如,1501對應(yīng)于15.01℃。

        當采樣溫度值小于-40℃對應(yīng)的值時,按0.8℃/位的變化率進行計算。溫度采樣值小于25℃對應(yīng)的采樣值時,以上限為基準進行計算,因為其上限出現(xiàn)的機率更大,這樣得出的結(jié)果誤差會小些;當采樣溫度值大于25℃對應(yīng)的采樣值時,以下限為基準進行計算,因為下限出現(xiàn)的機率更大。比如,采樣值介于25℃對應(yīng)的采樣值和70℃對應(yīng)的采樣值之間,則以25℃為基準。

        本文引用地址:http://www.104case.com/article/162197.htm


        (2)氣壓數(shù)據(jù)的轉(zhuǎn)換
        MPXY8020A測量的氣壓范圍約為0~600 kPa,測得的值與氣壓之間的轉(zhuǎn)換關(guān)系由下式給出:P=2.5×Output±氣壓誤差式中,Output為測量得到的值(在0~255之間),氣壓誤差由MPXY8020A的數(shù)據(jù)手冊給出(將在下一節(jié)中討論);P為轉(zhuǎn)換后的氣壓值,單位為kPa。

        4.2.4氣壓數(shù)據(jù)的誤差處理

        MPXY8020A所測得的氣壓是存在誤差的,并且,在不同的溫度區(qū)間、不同的工作電壓、不同的氣壓的情況下,其誤差也不一樣。MPXY8020A的氣壓誤差由其數(shù)據(jù)手冊給出,表4列出其在250 kPa~450 kPa氣壓區(qū)間下的誤差值。

        由表4可以看出,陰影部分的誤差較小。當電壓低于2.5 V或者溫度過低或者溫度過高的情況下,所測得的溫差比較大。為了減小測量誤差,MPXY8020A應(yīng)工作于2.5~3.3 V的電壓區(qū)間。

        由于各個傳感器的誤差不盡相同,因此,可以通過實際測量得出其具體的氣壓誤差,然后再在程序中加上或者減去這個誤差值,這樣所得出的氣壓值就更加接近真實值。此外,也可以通過分段多次測量的方法,得到更好的測量結(jié)果。


        結(jié) 論
        MPXY8020A為式氣壓和溫度傳感器,體積小、簡單、工作穩(wěn)定可靠、功耗小;適用于對體積要求比較高的氣壓和溫度測量系統(tǒng),尤其適用于無線汽車輪胎氣壓監(jiān)測系統(tǒng)。本已應(yīng)用于某無線汽車輪胎氣壓監(jiān)測系統(tǒng)中,經(jīng)實踐證明使用效果良好。

        分頻器相關(guān)文章:分頻器原理

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 五莲县| 桃源县| 神木县| 耿马| 潞西市| 石门县| 江西省| 万安县| 镇雄县| 浏阳市| 芦山县| 浑源县| 娱乐| 庄河市| 吉林省| 鹿泉市| 吴忠市| 泾阳县| 广元市| 蓝山县| 剑川县| 广昌县| 清苑县| 镇原县| 微山县| 阳高县| 安化县| 通河县| 九寨沟县| 靖江市| 龙胜| 景德镇市| 乌恰县| 北票市| 霍山县| 湘乡市| 马龙县| 宁陕县| 思南县| 乌恰县| 望奎县|