您好, 歡迎來到化工儀器網(wǎng),! 登錄| 免費(fèi)注冊(cè)| 產(chǎn)品展廳| 收藏商鋪|
當(dāng)前位置:恒泰聯(lián)測(cè)儀器儀表制造(蘇州)有限公司>>振動(dòng)傳感器>>一體化振動(dòng)變送器>> 一體化帶磁吸座風(fēng)機(jī)振動(dòng)傳感器HDYD115
參 考 價(jià) | 面議 |
產(chǎn)品型號(hào)
品 牌
廠商性質(zhì)生產(chǎn)商
所 在 地蘇州市
更新時(shí)間:2024-04-26 09:58:02瀏覽次數(shù):68次
聯(lián)系我時(shí),,請(qǐng)告知來自 化工儀器網(wǎng)一體化風(fēng)機(jī)軸承振動(dòng)保護(hù)傳感器HZ896
一體化現(xiàn)場(chǎng)引風(fēng)機(jī)振動(dòng)測(cè)量傳感器JMB35L
一體化防水型風(fēng)機(jī)振動(dòng)傳感器BSZ808A
應(yīng)用領(lǐng)域 | 石油,電子,交通,電氣,綜合 |
---|
一些時(shí)候,,我們需要通過熱電偶獲取溫度數(shù)據(jù)。在這里我們將討論如何實(shí)現(xiàn)并使用MAX31855熱電偶溫度變送器的驅(qū)動(dòng)問題,。
MAX31855是具有冷端補(bǔ)償,能將K,、J,、N、T或E型熱電偶信號(hào)轉(zhuǎn)換成數(shù)字量的熱偶溫度變送器,。該熱偶溫度變送器輸出14位帶符號(hào)數(shù)據(jù),,通過SPI兼容接口、以只讀格式輸出,。其引腳定義疾風(fēng)傳如下圖所示:
MAX31855器件處理來自熱電偶的讀數(shù),,并通過串口發(fā)送數(shù)據(jù),。當(dāng)片選信號(hào)為低電平,并在SCK端施加時(shí)鐘信號(hào),,即可從SO讀取結(jié)果,。MAX31855器件始終在后臺(tái)執(zhí)行轉(zhuǎn)換,只有片選信號(hào)CS為高電平時(shí)才能更新故障狀態(tài)和溫度數(shù)據(jù),。片選信號(hào)CS為低電平時(shí),,SO引腳將輸出位數(shù)據(jù)。通過SPI接口讀取完整的冷端補(bǔ)償熱電偶溫度,,需要14個(gè)時(shí)鐘周期,。讀取熱電偶和參考端溫度需要32個(gè)時(shí)鐘周期,其格式如下圖所示:
在時(shí)鐘下降沿讀取輸出位,。位D31為熱電偶溫度符號(hào)位,。D[30:18]位包含溫度轉(zhuǎn)換數(shù)據(jù),順序?yàn)镸SB至LSB,。D16位正常狀態(tài)下為低電平,,熱電偶輸入開路或?qū)ND或VCC短路時(shí)變?yōu)楦唠娖健⒖级藴囟葦?shù)據(jù)從D15開始,。個(gè)數(shù)據(jù)位的定義如下:
MAX31855熱偶溫度變送器的溫度分辨率為0.25℃,,溫度讀數(shù)為+1800℃,溫度讀數(shù)為-270℃,,對(duì)于K型熱電偶,,溫度范圍為-200℃至+700℃,保持±2℃精度,。
我們已經(jīng)了解了MAX31855熱偶溫度變送器的基本情況。接下來我們將依據(jù)MAX31855熱偶溫度變送器的各種配置參數(shù)設(shè)計(jì)并實(shí)現(xiàn)MAX31855熱偶溫度變送器的驅(qū)動(dòng)程序,。
與以前的驅(qū)動(dòng)設(shè)計(jì)一樣,我們依然是基于對(duì)象來設(shè)計(jì)MAX31855熱偶溫度變送器的驅(qū)動(dòng)程序,。所以我們要先抽象并定義MAX31855熱偶溫度變送器對(duì)象類型,。一般來講對(duì)象包括屬性與操作兩方面,我們將據(jù)此逐一分析MAX31855熱偶溫度變送器對(duì)象的屬性與操作,。
先考慮MAX31855熱偶溫度變送器對(duì)象的屬性,。對(duì)于MAX31855熱偶溫度變送器來說,每次訪問返回的數(shù)據(jù)格式是固定的,,這其中包括一些狀態(tài)位,所以為了記錄這些狀態(tài)位我們定義一個(gè)狀態(tài)量作為對(duì)象的屬性,。還有讀回來的原始數(shù)據(jù)編碼,、解析出來的檢測(cè)溫度和冷端溫度實(shí)際上表示了MAX31855熱偶溫度變送器當(dāng)時(shí)所處的狀態(tài),,所以我們將其定義為對(duì)象的屬性。
再來考慮MAX31855熱偶溫度變送器對(duì)象的操作,。對(duì)于MAX31855熱偶溫度變送器來說,,操作就是獲取溫度檢測(cè)數(shù)據(jù),而讀取數(shù)據(jù)操作本身依賴于具體的軟硬件平臺(tái),,所提我們將其定義為對(duì)象的操作,。而MAX31855熱偶溫度變送器采用SPI接口需要控制片選信號(hào),當(dāng)然在總線上只有一臺(tái)設(shè)備時(shí),,我們可以直接將其通過硬件選中,,但為了通用性我們還是使用軟件來控制片選操作,所以我們將片選動(dòng)作作為對(duì)象的一個(gè)操作,。
根據(jù)上述對(duì)MAX31855熱偶溫度變送器對(duì)象屬性和操作的分析,,我們可以抽象的到MAX31855熱偶溫度變送器的對(duì)象類型如下:
復(fù)制/*定義MAX31855對(duì)象類型*/typedef struct Max31855Object { uint8_t status; uint32_t dataCode; float mTemperature; //TC測(cè)量溫度 float rTemperature; //冷端溫度 void (*ReadData)(uint8_t *rData,uint16_t rSize); void (*ChipSelcet)(Max31855CSType cs); //片選信號(hào)}Max31855ObjectType;
抽象了對(duì)象類型后就可聲明對(duì)象變量,可是這個(gè)對(duì)象變量必須作必要的初始化才能使用,。所以我們需要一個(gè)初始化函數(shù)來對(duì)其進(jìn)行初始化,。在此函數(shù)中,我們將檢測(cè)變量的有效性和初始狀態(tài)賦值,,并對(duì)設(shè)備進(jìn)行必要的配置,。根據(jù)這些要求我們?cè)O(shè)計(jì)MAX31855熱偶溫度變送器的對(duì)象初始化函數(shù)如下:
復(fù)制/*初始化MAX31855對(duì)象*/void Max31855Initialization(Max31855ObjectType *tc, Max31855ReadDataType read, Max31855ChipSelcetType cs ){ if((tc==NULL)||(read==NULL)) { return; } tc->ReadData=read; if(cs!=NULL) { tc->ChipSelcet=cs; } else { tc->ChipSelcet=DefaultChipSelect; } tc->status=0; tc->dataCode=0; tc->mTemperature=0.0; tc->rTemperature=0.0; tc->ChipSelcet(Max31855CS_Disable);}
我們之所以定義這一對(duì)象,,目的是為了操作該對(duì)象,。接下來我們就來考了MAX31855熱偶溫度變送器對(duì)象的操作問題。我們使用MAX31855熱偶溫度變送器就是為了測(cè)量溫度,。所以對(duì)MAX31855熱偶溫度變送器對(duì)象所要做的主要操作就是獲取溫度的轉(zhuǎn)換數(shù)據(jù)并解析出溫度值,。對(duì)于MAX31855熱偶溫度變送器來說,除了熱電偶的測(cè)量溫度還有冷端的溫度,,這兩個(gè)數(shù)據(jù)轉(zhuǎn)換值都是可以讀出來的,,他們的格式如下:
根據(jù)前面的分析以及數(shù)據(jù)格式,我們可以設(shè)計(jì)獲取溫度數(shù)據(jù)的操作函數(shù)如下:
復(fù)制/*獲取MAX31855測(cè)量數(shù)據(jù)*/void Max31855GetDatas(Max31855ObjectType *tc){ uint8_t rData[4]; uint16_t tCode=0; uint16_t rCode=0; tc->ChipSelcet(Max31855CS_Enable); tc->ReadData(rData,4); tCode=(rData[0]<<8)+rData[1]; tCode=(tCode>>2); rCode=(rData[2]<<8)+rData[3]; rCode=(rCode>>4); tc->mTemperature=CalcMeasureTemperature(tCode); tc->rTemperature=CalcColdEndTemperature(rCode); tc->dataCode=(rData[0]<<24)+(rData[1]<<16)+(rData[2]<<8)+rData[3]; tc->ChipSelcet(Max31855CS_Disable);}
我們已經(jīng)設(shè)計(jì)并實(shí)現(xiàn)了MAX31855熱偶溫度變送器對(duì)象的驅(qū)動(dòng)程序,。這一驅(qū)動(dòng)程序的設(shè)計(jì)還需要驗(yàn)證,所以我們需要設(shè)計(jì)一個(gè)簡(jiǎn)單的應(yīng)用來驗(yàn)證這一驅(qū)動(dòng)程序的正確性,。
為了基于對(duì)象操作MAX31855熱偶溫度變送器,我們還是需要聲明并初始化MAX31855熱偶溫度變送器對(duì)象變量,。
復(fù)制Max31855ObjectType max31855;
聲明了這個(gè)對(duì)象變量,,我們還需要使用前面設(shè)計(jì)的Max31855Initialization對(duì)象初始化函數(shù)對(duì)這個(gè)變量進(jìn)行初始化。這個(gè)變量有幾個(gè)參數(shù):
復(fù)制Max31855ObjectType *tc, //MAX31855對(duì)象變量Max31855ReadDataType read, //讀MAX31855函數(shù)指針Max31855ChipSelcetType cs //片選操作函數(shù)指針
其中個(gè)參數(shù)為需要初始化的對(duì)象變量,,后面兩個(gè)為操作回調(diào)函數(shù)的指針,,這幾個(gè)函數(shù)我們是炫耀實(shí)現(xiàn)的,,其原型定義如下:
復(fù)制typedef void (*Max31855ReadDataType)(uint8_t *rData,uint16_t rSize);typedef void (*Max31855ChipSelcetType)(Max31855CSType cs); //片選信號(hào)
這些函數(shù)的實(shí)現(xiàn)依賴于具體的軟硬件平臺(tái),我們這里實(shí)現(xiàn)基于STM32F103的操作函數(shù),,依據(jù)原型定義我們實(shí)現(xiàn)如下:
復(fù)制/*SPI1讀數(shù)據(jù)操作*/static void BmtcReadData(uint8_t *rData,uint16_t rSize){ HAL_SPI_Receive (&hspi1, rData, rSize, 1000);}/*SPI1片選操作函數(shù)*/static void BmtcChipSelcet(Max31855CSType cs){ if(Max31855CS_Enable == cs) { HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET); return; } HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET);}
這要初始化函數(shù)的全部參數(shù)皆已定義,,我們可以初始化MAX31855熱偶溫度變送器對(duì)象如下:
復(fù)制/*初始化MAX31855對(duì)象*/ Max31855Initialization(&max31855, BmtcReadData, BmtcChipSelcet );
事實(shí)上,,這個(gè)驅(qū)動(dòng)程序我們已經(jīng)應(yīng)用于具體的項(xiàng)目當(dāng)中,,并且使用正常。所以在這個(gè)驗(yàn)證中,,我們直接將項(xiàng)目中的實(shí)現(xiàn)代碼節(jié)選如下:
復(fù)制/*獲取MAX31855測(cè)量數(shù)據(jù)*/ Max31855GetDatas(&max31855); aPara.phyPara.temperature=max31855.mTemperature; aPara.phyPara.rTemperature=max31855.rTemperature;
在我們的項(xiàng)目中,我們使用驅(qū)動(dòng)實(shí)現(xiàn)了熱電偶的溫度采集,,在使用過程中運(yùn)行很穩(wěn)定,,數(shù)據(jù)獲取及解析也沒有問題,所以驅(qū)動(dòng)程序的設(shè)計(jì)應(yīng)該是符合要求的,。
在使用驅(qū)動(dòng)程序的時(shí)候要注意,,MAX31855熱偶溫度變送器SPI端口的時(shí)鐘頻率有要求,主設(shè)備輸出的串行時(shí)鐘不要超過5MHz,,我們?cè)O(shè)置為2.5MHz時(shí)運(yùn)行比較穩(wěn)定,。
在使用驅(qū)動(dòng)時(shí)需注意,采用SPI接口的器件需要考慮片選操作的問題,。如果片選信號(hào)是通過硬件電路來實(shí)現(xiàn)的,,我們?cè)诔跏蓟瘯r(shí)給其傳遞NULL值。如果是軟件操作片選則傳遞我們編寫的片選操作函數(shù),。
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
以上信息由企業(yè)自行提供,信息內(nèi)容的真實(shí)性,、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),,化工儀器網(wǎng)對(duì)此不承擔(dān)任何保證責(zé)任。
溫馨提示:為規(guī)避購(gòu)買風(fēng)險(xiǎn),,建議您在購(gòu)買產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。