標題: MAX31855熱電偶至數字輸出轉換器開發筆記 [打印本頁]
作者: QQ820270087 時間: 2020-3-15 17:43
標題: MAX31855熱電偶至數字輸出轉換器開發筆記
MAX31855KASA+T -200°C to +1350°C 8SO
MAX31855JASA+T -40°C to +750°C 8SO
MAX31855NASA+T -200°C to + 1300°C 8SO
MAX31855SASA+T -50°C to +1600°C 8SO
MAX31855TASA+T -250°C to +400°C 8SO
MAX31855EASA+T -40°C to +900°C 8SO
MAX31855RASA+T -50°C to +1770°C 8SO
2、【典型應用電路】
2.png (47.3 KB, 下載次數: 69)
下載附件
2020-3-15 17:39 上傳
5.png (79.9 KB, 下載次數: 42)
下載附件
2020-3-15 17:39 上傳
3、【實際應用電路】
1電氣連接.png (848.76 KB, 下載次數: 36)
下載附件
2020-3-15 17:40 上傳
2 1.png (149.03 KB, 下載次數: 39)
下載附件
2020-3-15 17:40 上傳
4. SPI串口協議及時序
3.png (63.34 KB, 下載次數: 65)
下載附件
2020-3-15 17:40 上傳
4.png (124.36 KB, 下載次數: 45)
下載附件
2020-3-15 17:40 上傳
器件處理來自熱電偶的讀數,并通過串口發送數據。驅動CS為低電平,并在SCK端施加時鐘信號,從SO讀取結果。器件始終在后臺執行轉換,只有CS為高電平時才能更新故障狀態和溫度數據。
驅動CS為低電平時,SO引腳將輸出第一位數據。通過串口讀取完整的冷端補償熱電偶溫度,需要14個時鐘周期。讀取熱電偶和參考端溫度需要32個時鐘周期。在時鐘下降沿讀取輸出位。第一位D31為熱電偶溫度符號位。
D[30:18]位包含溫度轉換數據,順序為MSB至LSB。D16位正常狀態下為低電平,熱電偶輸入開路或對GND或VCC短路時變為高電平。參考端溫度數據從D15開始。
輸出轉換數據時,CS任何時候均可變為高電平。
5. 存儲器映射—位加權和功能說明
6.png (272.25 KB, 下載次數: 43)
下載附件
2020-3-15 17:42 上傳
6. 程序源碼MAX31855測溫程序,分別使用STM32硬件SPI和軟件模擬時序兩種方式讀取溫度數據。
/**
******************************************************************************
* @file : max31855.c
* @brief : MAX31855 cold-junction compensated thermocouple-to-digital
* converter program body.
******************************************************************************
* All rights reserved.
*
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "max31855.h"
#include "stm32f1xx_hal.h"
/* External variables --------------------------------------------------------*/
SPI_HandleTypeDef hspi1;
/* Private variables ---------------------------------------------------------*/
float tcTemp = 0, cjTemp = 0;
bool tcError = false;
/* Private function prototypes -----------------------------------------------*/
/**
* @brief Delay about 11ns per NOP (72MHz*1.25MIPS/MHz=90MIPS)
* @param None
* @retval None
*/
static void SPI_Delay(uint32_t counter)
{
for(int i=0; i<counter; i++)
{
__NOP();
}
}
未完待續……
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |