打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
STM32F103C8T6通过MAX31865读取PT100电阻值

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.程序代码

主函数:
  1. #include "stm32f10x.h"  
  2. #include "usart.h"  
  3. #include "max31865.h"  
  4. #include "HT1621.h"  
  5. #include "stm32f10x_gpio.h"  
  6. #include "spi.h"  
  7.   
  8. extern uint8_t  Data_Buffer[8];    
  9. extern uint8_t DRDY_Status(void);  
  10. //extern void Inital_MAX31865(void) ;  
  11. extern uint8_t MAX31865_Config;   
  12.   
  13.   
  14.  extern float Temperature;  
  15. int main(void)  
  16. {    
  17.    
  18.     GPIO_InitTypeDef GPIO_InitStructure;  
  19.     RCC_DeInit();     
  20.     //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);     
  21.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);     
  22.   
  23.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PA.8  
  24.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  25.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽式输出  
  26.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  27.       
  28.     //用PB0读取MAX31865的状态  
  29.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PB.0  
  30.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  31.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;  //浮空输入  
  32.     GPIO_Init(GPIOB, &GPIO_InitStructure);   
  33.       
  34.     uart_init(9600);  
  35.     printf("\r\nDetect\r\n");     
  36.       
  37.     GPIO_ResetBits(GPIOA, GPIO_Pin_8);//set 0  
  38.       
  39.     delay_init();      
  40.     ht1621_GPIO_Init();  
  41.     ht1621_Init();  
  42.     lcd_clear();//清屏  
  43.       
  44.   <span style="white-space:pre">  </span>SPI1_Init();  
  45.     Max31865_Init();  
  46.       
  47.     while(1)  
  48.     {  
  49.         Temperature = Get_Temperature();  
  50.         printf("temp=%f\r\n",Temperature);  
  51.         ht1621_TempDisplay(Temperature);  
  52.     }  
  53. }  

5.总结

(1)PA4、PA5、PA6、PA7端口可以复用重映像为SPI的CS、SCK、MISO、MOSI,只需要将这四个端口配置为复用推挽输出GPIO_Mode_AF_PP即可:
  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;  
  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
  3. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  
  4. 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

http://blog.csdn.net/GSH_Hello_World/article/details/52900276?fps=1&locationNum=9
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
3
stm32串口程序(全)
STM32笔记之外部中断GPIO
九九的STM32笔记(四)DMA、USART的演示 (www.ourdev.cn)
关于STM32中多串口工作的问题
STM32的ADC及内部温度传感器的使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服