1.MAX31865
(1)簡介
MAX31865是簡單易用的熱敏電阻至數字輸出轉換器,優化用于鉑電阻溫度檢測器(RTD)。外部電阻設置RTD靈敏度,高精度Δ- Σ ADC將RTD電阻與基準電阻之比轉換為數字輸出。MAX31865輸入具有高達±45V的過壓保護,提供可配置的RTD及電纜開路、短路條件檢測。
(2)特點和優點
集成更低系統功耗,簡化設計,減少設計周期:
簡便的RTD鉑電阻之數字轉換器;
支持100Ω至1kΩ (0°C時)鉑電阻RTD (PT100至PT1000);
兼容于2線、3線和4線傳感器連接;
SPI兼容接口;
20引腳TQFN和SSOP封裝;
高精度設備滿足誤差預算:
15位ADC分辨率,標稱溫度分辨率為0.03125°C (隨RTD非線性變化);
整個工作條件下,總精度保持在0.5°C (0.05%滿量程);
全差分VREF輸入;
轉換時間:21ms (最大值);
集成故障檢測,增加系統穩定性:
±45V輸入保護;
故障檢測(RTD開路、RTD短路到量程范圍以外的電壓或 RTD元件短路)。
(3)引腳圖和引腳說明
(4)SPI讀寫數據傳輸時序圖
(5)轉換溫度原理
(6)內部寄存器
(7)典型應用電路
(8)實際電路圖(三線制)
2.PT100溫度傳感器
圖中的兩個紅線中的任意一個和藍線之間即為PT100電阻,二線制時只需要將兩根紅線中的一根和藍線接入到電路即可,三線制時需要將三根線都接入電路。
3.液晶顯示屏顯示
使用TB1621驅動LCD進行顯示。
4.程序代碼
主函數:
[cpp] view plain
#include “stm32f10x.h”
#include “usart.h”
#include “max31865.h”
#include “HT1621.h”
#include “stm32f10x_gpio.h”
#include “spi.h”
extern uint8_t Data_Buffer[8];
extern uint8_t DRDY_Status(void);
//extern void Inital_MAX31865(void) ;
extern uint8_t MAX31865_Config;
extern float Temperature;
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_DeInit();
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PA.8
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽式輸出
GPIO_Init(GPIOA, &GPIO_InitStructure);
//用PB0讀取MAX31865的狀態
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PB.0
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; //浮空輸入
GPIO_Init(GPIOB, &GPIO_InitStructure);
uart_init(9600);
printf(“ Detect ”);
GPIO_ResetBits(GPIOA, GPIO_Pin_8);//set 0
delay_init();
ht1621_GPIO_Init();
ht1621_Init();
lcd_clear();//清屏
“white-space:pre”》 SPI1_Init();
Max31865_Init();
while(1)
{
Temperature = Get_Temperature();
printf(“temp=%f ”,Temperature);
ht1621_TempDisplay(Temperature);
}
}
5.總結
(1)PA4、PA5、PA6、PA7端口可以復用重映像為SPI的CS、SCK、MISO、MOSI,只需要將這四個端口配置為復用推挽輸出GPIO_Mode_AF_PP即可:
[cpp] view plain
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
(2)三線制中MAX31865的5引腳和6引腳應該是連接起來的,之前的PCB上由于馬虎未連接;
(3)端口的輸入模式
GPIO_Mode_AIN:模擬輸入模式
GPIO_Mode_IN_FLOATING:浮空輸入模式(復位后的狀態)
GPIO_Mode_IPD:下拉輸入模式
GPIO_Mode_IPU :上拉輸入模式
(4)端口的輸出模式
GPIO_Mode_Out_OD :通用開漏輸出模式
GPIO_Mode_Out_PP:通用推挽輸出模式
GPIO_Mode_AF_OD :復用開漏輸出模式
GPIO_Mode_AF_PP: 復用推挽輸出模式
(5) 在輸出模式下,有2M、10M、50MHz三種輸出速度可選擇,這個速度是指I/O端口驅動電路的響應速度而不是輸出信號的速度,輸出信號的速度與程序有關。
GPIO_Speed_10MHz,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
評論
查看更多