0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MAX31855熱電偶溫度變送器的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

CHANBAEK ? 來源:木南創(chuàng)智 ? 作者: 尹家軍 ? 2022-12-07 15:42 ? 次閱讀

一些時(shí)候,我們需要通過熱電偶獲取溫度數(shù)據(jù)。在這里我們將討論如何實(shí)現(xiàn)并使用MAX31855熱電偶溫度變送器的驅(qū)動(dòng)問題。

1、功能概述

??MAX31855是具有冷端補(bǔ)償,能將K、J、N、T或E型熱電偶信號(hào)轉(zhuǎn)換成數(shù)字量的熱偶溫度變送器。該熱偶溫度變送器輸出14位帶符號(hào)數(shù)據(jù),通過SPI兼容接口、以只讀格式輸出。其引腳定義疾風(fēng)傳如下圖所示:

Dingtalk_20221206154648.jpg

??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í)鐘周期,其格式如下圖所示:

Dingtalk_20221206154648.jpg

??在時(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ù)位的定義如下:

Dingtalk_20221206154648.jpg

??MAX31855熱偶溫度變送器的溫度分辨率為0.25℃,最高溫度讀數(shù)為+1800℃,最低溫度讀數(shù)為-270℃,對(duì)于K型熱電偶,溫度范圍為-200℃至+700℃,保持±2℃精度。

2、驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

??我們已經(jīng)了解了MAX31855熱偶溫度變送器的基本情況。接下來我們將依據(jù)MAX31855熱偶溫度變送器的各種配置參數(shù)設(shè)計(jì)并實(shí)現(xiàn)MAX31855熱偶溫度變送器的驅(qū)動(dòng)程序。

2.1、對(duì)象定義

??與以前的驅(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ì)象類型如下:

/*定義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ù)如下:

/*初始化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);
}

2.2、對(duì)象操作

??我們之所以定義這一對(duì)象,目的是為了操作該對(duì)象。接下來我們就來考了MAX31855熱偶溫度變送器對(duì)象的操作問題。我們使用MAX31855熱偶溫度變送器就是為了測(cè)量溫度。所以對(duì)MAX31855熱偶溫度變送器對(duì)象所要做的主要操作就是獲取溫度的轉(zhuǎn)換數(shù)據(jù)并解析出溫度值。對(duì)于MAX31855熱偶溫度變送器來說,除了熱電偶的測(cè)量溫度還有冷端的溫度,這兩個(gè)數(shù)據(jù)轉(zhuǎn)換值都是可以讀出來的,他們的格式如下:Dingtalk_20221206154648.jpg

Dingtalk_20221206154648.jpg

??根據(jù)前面的分析以及數(shù)據(jù)格式,我們可以設(shè)計(jì)獲取溫度數(shù)據(jù)的操作函數(shù)如下:

/*獲取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);
}

3、驅(qū)動(dòng)的使用

??我們已經(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)程序的正確性。

3.1、聲明并初始化對(duì)象

??為了基于對(duì)象操作MAX31855熱偶溫度變送器,我們還是需要聲明并初始化MAX31855熱偶溫度變送器對(duì)象變量。

Max31855ObjectType max31855;

??聲明了這個(gè)對(duì)象變量,我們還需要使用前面設(shè)計(jì)的Max31855Initialization對(duì)象初始化函數(shù)對(duì)這個(gè)變量進(jìn)行初始化。這個(gè)變量有幾個(gè)參數(shù):

Max31855ObjectType *tc,     //MAX31855對(duì)象變量
Max31855ReadDataType read,  //讀MAX31855函數(shù)指針
Max31855ChipSelcetType cs   //片選操作函數(shù)指針

??其中第一個(gè)參數(shù)為需要初始化的對(duì)象變量,后面兩個(gè)為操作回調(diào)函數(shù)的指針,這幾個(gè)函數(shù)我們是炫耀實(shí)現(xiàn)的,其原型定義如下:

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)如下:

/*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ì)象如下:

/*初始化MAX31855對(duì)象*/
    Max31855Initialization(&max31855,
                           BmtcReadData,
                           BmtcChipSelcet
                               );

3.2、基于對(duì)象進(jìn)行操作

??事實(shí)上,這個(gè)驅(qū)動(dòng)程序我們已經(jīng)應(yīng)用于具體的項(xiàng)目當(dāng)中,并且使用正常。所以在這個(gè)驗(yàn)證中,我們直接將項(xiàng)目中的實(shí)現(xiàn)代碼節(jié)選如下:

/*獲取MAX31855測(cè)量數(shù)據(jù)*/
    Max31855GetDatas(&max31855);
    aPara.phyPara.temperature=max31855.mTemperature;
    aPara.phyPara.rTemperature=max31855.rTemperature;

4、應(yīng)用總結(jié)

??在我們的項(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ù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 熱電偶
    +關(guān)注

    關(guān)注

    5

    文章

    919

    瀏覽量

    75401
  • 驅(qū)動(dòng)設(shè)計(jì)

    關(guān)注

    1

    文章

    109

    瀏覽量

    15248
  • 溫度變送器
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    15068
  • MAX31855
    +關(guān)注

    關(guān)注

    2

    文章

    7

    瀏覽量

    16261
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MAX31856熱電偶溫度變送器驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

    ?在我們的產(chǎn)品中經(jīng)常有需要溫度檢測(cè)的地方,而熱電偶溫度檢測(cè)電路是我們常用的。熱電偶溫度檢測(cè)的方法很多,有時(shí)出于簡(jiǎn)單方便的考慮我們會(huì)選擇熱
    的頭像 發(fā)表于 05-14 15:38 ?2796次閱讀
    <b class='flag-5'>MAX</b>31856<b class='flag-5'>熱電偶</b><b class='flag-5'>溫度</b><b class='flag-5'>變送器</b><b class='flag-5'>驅(qū)動(dòng)</b>設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    MAX31855測(cè)溫不準(zhǔn),冷端溫度受自身發(fā)熱影響

    最近在搞一個(gè)項(xiàng)目,用到了MAX31855,但是測(cè)試時(shí)發(fā)現(xiàn)測(cè)出來的熱電偶溫度與實(shí)際的溫度差異比較大,了解了下,MAX31855內(nèi)部會(huì)讀取芯片某
    發(fā)表于 08-07 11:23

    MAX31855測(cè)量溫度疑問???

    申請(qǐng)了MAX31855芯片,購買了K型熱電偶,采用STM32進(jìn)行驅(qū)動(dòng),但是在常溫下測(cè)量的數(shù)據(jù)就是不對(duì);時(shí)序波形如下:從邏輯分析儀上看出的波形和規(guī)格書一樣,沒有什么問題但是讀出的溫度值不
    發(fā)表于 04-16 11:35

    【NanoPi M2試用體驗(yàn)】之通過spidev0.0驅(qū)動(dòng)MAX31855芯片采集K型熱電偶溫度(附工程文件)

    M2外擴(kuò)的SPI0接口實(shí)現(xiàn)對(duì)MAX31855對(duì)熱電偶轉(zhuǎn)換后的溫度進(jìn)行采集。本篇試用報(bào)告主要介紹如何通過Nanopi M2已經(jīng)實(shí)現(xiàn)的SPI0
    發(fā)表于 06-12 12:52

    【Nanopi M2試用】之通過spidev0.0驅(qū)動(dòng)MAX31855芯片采集K型熱電偶溫度

    本帖最后由 lee_st 于 2018-2-5 19:31 編輯 【Nanopi M2試用】之通過spidev0.0驅(qū)動(dòng)MAX31855芯片采集K型熱電偶溫度
    發(fā)表于 02-05 19:29

    MAX31855常見問題

    熱電偶數(shù)據(jù)庫中的系數(shù)實(shí)現(xiàn)線性化:作為替代方案,MAX31856支持不同類型熱電偶的線性化處理。MAX31855對(duì)EMI或RF干擾進(jìn)行濾波嗎?
    發(fā)表于 01-10 15:33

    MAX31855讀數(shù)不正常哦

    MAX31855,在實(shí)驗(yàn)室測(cè)試正常,一到工作機(jī)臺(tái)從MAX31855讀到的數(shù)據(jù)是0XFF,有1000多度(實(shí)際溫度20左右),這個(gè)時(shí)候 工作機(jī)臺(tái)的加熱系統(tǒng)還沒有工作。,用的是K型熱電偶,
    發(fā)表于 01-18 10:58

    MAX31855

    MAX31855,在實(shí)驗(yàn)室測(cè)試正常,一到工作機(jī)臺(tái)從MAX31855讀到的數(shù)據(jù)是0XFF,有1000多度(實(shí)際溫度20左右),這個(gè)時(shí)候 工作機(jī)臺(tái)的加熱系統(tǒng)還沒有工作。,用的是K型熱電偶,
    發(fā)表于 01-18 11:10

    MAX31855熱電偶轉(zhuǎn)換器開發(fā)流程

    MAX31855熱電偶轉(zhuǎn)換器開發(fā)流程 一、準(zhǔn)備硬件和相關(guān)知識(shí)實(shí)驗(yàn)連接圖 1.硬件:一塊開發(fā)板、邏輯分析儀、熱電偶(常用的K型熱電偶)、杜邦線等; 2.相關(guān)知識(shí):VHDL基礎(chǔ)、SPI通
    發(fā)表于 03-15 19:39

    MAX31855 冷端補(bǔ)償熱電偶至數(shù)字輸出轉(zhuǎn)換器IC介紹

    MAX31855EASA+T -40°C to +900°C8SO MAX31855RASA+T -50°C to +1770°C 8SO MAX31855具有冷端補(bǔ)償,將K、J、N、T或E型
    發(fā)表于 05-05 12:13

    MAX31855熱電偶至數(shù)字輸出轉(zhuǎn)換器開發(fā)指南

    MAX31855熱電偶至數(shù)字輸出轉(zhuǎn)換器1、【硅天下備樣信息】MAX31855KASA+T -200°C to +1350°C8SO MAX31855JASA+T-40°C to +75
    發(fā)表于 06-16 18:41

    MAX31855熱電偶至數(shù)字輸出轉(zhuǎn)換器

    本帖最后由 junyunlai1 于 2020-7-3 10:01 編輯 MAX31855熱電偶至數(shù)字輸出轉(zhuǎn)換器1、【硅天下備樣信息】MAX31855KASA+T -200°C
    發(fā)表于 06-16 18:45

    MAX31855 冷端補(bǔ)償熱電偶至數(shù)字輸出轉(zhuǎn)換器

    MAX31855冷端補(bǔ)償熱電偶至數(shù)字輸出轉(zhuǎn)換器,這個(gè)轉(zhuǎn)換器解析為0.25 ° C的溫度下,允許讀數(shù)高達(dá)1800° C和高達(dá)-270 ° C低
    發(fā)表于 04-06 18:35 ?3383次閱讀

    MAX31855熱電偶的使用

     我的熱電偶輸出有一個(gè)偏移量/我有多個(gè)熱電偶,但它們?cè)?b class='flag-5'>溫度上“不同意”
    的頭像 發(fā)表于 11-27 10:09 ?2w次閱讀
    <b class='flag-5'>MAX31855</b><b class='flag-5'>熱電偶</b>的使用

    MAX31855熱電偶轉(zhuǎn)換器開發(fā)流程

    MAX31855熱電偶轉(zhuǎn)換器開發(fā)流程 一、準(zhǔn)備硬件和相關(guān)知識(shí) 1.硬件:一塊開發(fā)板、邏輯分析儀、熱電偶(常用的K型熱電偶)、杜邦線等; 2.相關(guān)知識(shí):VHDL基礎(chǔ)、SPI通信; 二
    發(fā)表于 03-25 16:23 ?2726次閱讀