STM32F103C8T6通过MAX31865读取PT100电阻值

发布者:快乐奇迹最新更新时间:2018-04-23 来源: eefocus关键字: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.程序代码

主函数:

#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("\r\nDetect\r\n");     

      

    GPIO_ResetBits(GPIOA, GPIO_Pin_8);//set 0  

      

    delay_init();      

    ht1621_GPIO_Init();  

    ht1621_Init();  

    lcd_clear();//清屏  

      

   SPI1_Init();  

    Max31865_Init();  

      

    while(1)  

    {  

        Temperature = Get_Temperature();  

        printf("temp=%f\r\n",Temperature);  

        ht1621_TempDisplay(Temperature);  

    }  

}  

5.总结


(1)PA4、PA5、PA6、PA7端口可以复用重映像为SPI的CS、SCK、MISO、MOSI,只需要将这四个端口配置为复用推挽输出GPIO_Mode_AF_PP即可:


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


关键字:STM32F103C8T6  MAX31865  读取PT100  电阻值 引用地址:STM32F103C8T6通过MAX31865读取PT100电阻值

上一篇:STM32 延时函数解析
下一篇:ARM CMSIS Driver 学习 之 SPI

推荐阅读最新更新时间:2024-03-16 16:00

高压二极管的好坏怎么检测
  高压二极管,检测时,可用万用表的R×10k档测量其正、反向电阻值。正常的高压二极管,其正向电阻值大于200kΩ,反向电阻值为无穷大。若测得其正、反向均有一定电阻值,则说明该高压二极管已软击穿损坏。   半导体二极管又称晶体二极管,简称二极管(diode);它只往一个方向传送电流的电子零件。它是一种具有1个零件号接合的2个端子的器件,具有按照外加电压的方向,使电流流动或不流动的性质。   几乎在所有的电子电路中,都要用到半导体二极管,它在许多的电路中起着重要的作用,它是诞生最早的半导体器件之一,其应用也非常广泛。   二极管的管压降:硅二极管(不发光类型)正向管压降0.7V,发光二极管正向管压降为随不同发光颜色而不同
[测试测量]
STM32F103C8T6 实现舵机与电机的控制 2个定时器输出不同频率的PWM
智能小家居------舵机开门,电机做风扇 or 拉窗帘、呼吸灯做提示,小OLED屏幕显示当前状态。 直接上代码 背景:我觉得我看了那么多教程了,然而只会玩单个东西,串起来就不太懂。 本项目的代码部分实现用到了2个时钟,TIM2 和 TIM3。 经历的问题:原本我是想只用一个时钟,不同通道来实现PWM的输出,但是我发现 我如果把TIM_TimeBaseInitStructure.TIM_Period = ARR ; //ARR 自动重装器的值 ARR = 20000 -1 时,只能驱动舵机,不能驱动电机。 ARR = 100 -1 时,只能驱动电机,不能驱动舵机。 后来发现: SG90舵机接收的PWM信号频率为50HZ,T=
[单片机]
<font color='red'>STM32F103C8T6</font> 实现舵机与电机的控制 2个定时器输出不同频率的PWM
STM32F103C8T6定时器TIM4通道1、2输出PWM
这美妙的波形,真好,我他喵的终于把你弄出来了。 STM32F103C8T6使用定时器TIM4进行双通道的PWM输出: 下面的图是从STM32中文参考手册中截取的,定时器TIM4的通用和复用功能I/O 我选用的是TIM4_CH1和TIM4_CH2也就是PB6和PB7输出。 注意事项: 输出PWM是属于IO口的复用功能,所以在设置GPIO_Mode的时候一定要设置为GPIO_Mode_AF_PP也就是推挽复用。 我就是被这个卡了好长时间……,感觉自己蠢到家了。 我是用的正点原子的精英板学的32,所以一些写代码的习惯都是学的正点原子的。 下面是代码 timer.c #include timer.h //TIM
[单片机]
<font color='red'>STM32F103C8T6</font>定时器TIM4通道1、2输出PWM
光电微小电流输入的前置放大器的反馈电阻值
图1是低输入偏置电流的OP放大器的电流输入型光 传感器 用前置放大器的例子。检测微弱光的光 传感器 的输出电流为pA~nA级,所以用这些光传感器放大器时,当然反馈 电阻 F,的值要为高 电阻 值。   例如,要用输人电流I(IN)=10nA(10-8A)得到1V的输出电压,则需要   RF=Vo/IIN=10(8)=100(MΩ)   但如果是100MΩ的高电阻,要求得所使用的电阻器的稳定度是相当困难的,如果要求得稳定的性能,就需要高价的电阻器。   图1 光传感器,用 led /' target='_blank' 光电 二极管的前置放大器   因此,如图2所示,在反馈 电路 中插入分压器(这里为1O:1),
[模拟电子]
绝缘电阻值的正确测量方法
在用电过程中就存在着用电安全问题,在电器设备中,例如电机、电缆、家用电器等。现代生活日新月异,人们一刻也离不开电。它们的正常运行之一就是其绝缘材料的绝缘程度即绝缘电阻的数值。当受热和受潮时,绝缘材料便老化。其绝缘电阻便降低。从而造成电器设备漏电或短路事故的发生。为了避免事故发生,就要求经常测量各种电器设备的绝缘电阻。判断其绝缘程度是否满足设备需要。普通电阻的测量通常有低电压下测量和高电压下测量两种方式。而绝缘电阻由于一般数值较高(一般为兆欧级)。在低电压下的测量值不能反映在高电压条件下工作的真正绝缘电阻值。也叫绝缘电阻表。它是测量绝缘电阻最常用的仪表。它在测量绝缘电阻时本身就有高电压,这就是它与测电阻仪表的不同之处。兆欧表用于测量
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved