OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7385|回复: 2

STM32F407+MAX31855 +K型热电偶进行测温方案

[复制链接]

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2020-2-19
在线时间
10 小时
发表于 2022-5-2 14:17:04 | 显示全部楼层 |阅读模式
MAX31855为热电偶至数字输出转换器,内置14位模/数转换器(ADC)。器件带有冷端补偿检测和修正、数字控制器、SPI兼容接口,以及相关的控制逻辑,在温度控制器、过程控制或监测系统中设计用于配合外部微控制器(μC)工作。提供多个版本的器件,每个版本针对特定的热电偶类型(KJNTE)进行优化和调整。热电偶类型以器件型号后缀表示(例如MAX31855K)器件输出14位带符号数据,通过SPI兼容接口、以只读格式输出。转换的温度分辨率为0.25℃,最高温度读数为+1800℃,最低温度读数为-270℃,对于K型热电偶,温度范围为-200℃至+700℃,保持±2℃精度。
MAX31855KASA+T硅天下科技开发资料技术支持
STM32F407+MAX31855 +K型热电偶进行测温方案
一、首先硬件方面的实现:
                              
2max31855原理图.png
1.MAX31855测温电路原理图
硬件注意事项:
1.由于MAX31855本身不具备抗干扰性,要添加抗干扰电路;(也可以使用硅天下新推出的MAX31856,自带抗干扰及先行修正电路)
2.热电偶分正负极,注意别接反了
二、软件程序大概分为三部分
2.1首先是声明和定义
[mw_shl_code=c,true]
#define  GPIOA_MAX31855_SCK             GPIO_Pin_1
#define  GPIOC_MAX31855_CS              GPIO_Pin_5
#define  GPIOC_MAX31855_SC             GPIO_Pin_4
#define  GPIOA_MAX31855_SCK_H       GPIO_SetBits(GPIOA,GPIOA_MAX31855_SCK)
#define  GPIOA_MAX31855_SCK_L      GPIO_ResetBits(GPIOA,GPIOA_MAX31855_SCK)
#define  GPIOC_MAX31855_CS_H      GPIO_SetBits(GPIOC,GPIOC_MAX31855_CS)
#define  GPIOC_MAX31855_CS_L        GPIO_ResetBits(GPIOC,GPIOC_MAX31855_CS)
#define  GPIOC_MAX31855_SC_IN (GPIOC->IDR & GPIOC_MAX31855_SC)
[/mw_shl_code]
2.2MAX31855的初始化
图2串口时许图.png
2.时序图
[mw_shl_code=c,true]
void MAX31855_Init()
{
       GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
       GPIO_InitStructure.GPIO_Pin = GPIOA_MAX31855_SCK;//max31855 sck
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType= GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pin = GPIOC_MAX31855_CS;//max31855 cs
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType= GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP;
  GPIO_Init(GPIOC,&GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pin = GPIOC_MAX31855_SC;//max31855 sc
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN;//注意读数据的端口要设置为普通输入模式
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP;
  GPIO_Init(GPIOC,&GPIO_InitStructure);
        
        GPIOA_MAX31855_SCK_L;
       GPIOC_MAX31855_CS_H;
}
[/mw_shl_code]
7存储器映射-位加权和功能.png
3.位加权和功能
热电偶温度数据格式,参考端温度数据.png
4.热电偶温度格式
根据datasheet可以知道,在data32位数据中,[31:18]14位带符号的热电偶温度,[15:4]12位带符号的内部温度。14位的数据表示是热电偶远端,即你想测量的物体的温度。而12位的数据则代表与电路板接触的那一端的热电偶的温度,通常这个温度是固定不变的,与室温接近。
2.3最后是MAX31855读数据和数据处理的过程
[mw_shl_code=c,true]
floatMAX31855_ReadData()
{u32 data=0;//用于存储从max31855读取的数据
u16Thermocouple=0;  //
float Ther=0;
int i;      
GPIOC_MAX31855_CS_L;//片选,低电平有效
delay_us(1);
for(i=31;i>=0;i--)
{        //按位读取一共是32位数据,从高位开始读取
GPIOA_MAX31855_SCK_H; //时序是在上升沿的时候读取数据,在初始化的时候,SCK为低,所以此时拉高
delay_us(1);
  if(GPIOC_MAX31855_SC_IN)//开始读数据,如果当前位为1的话,则通过左移至相应位置,如果是0则不处理
               {
      data|=((u32)1<<i);       //左移至i位,赋值给datai
               }
               
               GPIOA_MAX31855_SCK_L;//读取一位完成
               delay_us(1);
       }
       GPIOC_MAX31855_CS_H;//32位读取完成后取消片选
/**********下面对data进行处理****************/
Thermocouple=((temp_data>>18)&0x1fff);//取出[30:18]热电偶的数据 ,我这里没有取出符号位
Ther=Thermocouple*0.25;  //从图5中可以看出,温度的分辨率是0.25摄氏度,固数据应乘0.25,参考端的温度应该乘0.0625,我这里没有对这部分数据进行处理。
return Ther;
}
[/mw_shl_code]
软件部分注意事项
1. MAX31855读数据的时序图,控制引脚有:一个片选(cs),一个时钟(sck),一个读数据(sc)
2.对读取到的32位的数据进行处理,分清楚哪个是你所需要的数据。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2023-3-23
在线时间
1 小时
发表于 2023-3-23 09:30:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-11-30
在线时间
73 小时
发表于 2023-8-7 18:14:30 | 显示全部楼层
帖子很好,但是这里面忽略了一个非常非常重要的问题,就是热电偶的阻值对测温结果的影响较大,会导致工程失败
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 08:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表