打印
[活动]

便携式测温设备 热电偶型,国内外品牌的有推荐没有?

[复制链接]
689|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shizhy123|  楼主 | 2020-4-9 08:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
maximQ820270087| | 2020-5-6 21:59 | 只看该作者
这款测温方案可以吗

MAX31855电路和程序,实现SPI和软件模拟时序两种方式读取数据

1. 概述

MAX31855为热电偶至数字输出转换器,内置14位模/数转换器(ADC)。器件带有冷端补偿检测和修正、数字控制器、SPI兼容接口,以及相关的控制逻辑,在温度控制器、过程控制或监测系统中设计用于配合外部微控制器(μC)工作。提供多个版本的器件,每个版本针对特定的热电偶类型(K、J、N、T或E型)进行优化和调整。热电偶类型以器件型号后缀表示(例如MAX31855K)。

器件输出14位带符号数据,通过SPI兼容接口、以只读格式输出。转换的温度分辨率为0.25℃,最高温度读数为+1800℃,最低温度读数为-270℃,对于K型热电偶,温度范围为-200℃至+700℃,保持±2℃精度。


2. 特性

冷端补偿
14位、0.25℃分辨率
提供K、J、N、T和E型热电偶器件版本
简单的SPI兼容接口(只读)
检测热电偶对GND或VCC短路
检测热电偶开路


3. 典型应用电路




实际应用电路




4. SPI串口协议及时序



器件处理来自热电偶的读数,并通过串口发送数据。驱动CS为低电平,并在SCK端施加时钟信号,从SO读取结果。器件始终在后台执行转换,只有CS为高电平时才能更新故障状态和温度数据。

驱动CS为低电平时,SO引脚将输出第一位数据。通过串口读取完整的冷端补偿热电偶温度,需要14个时钟周期。读取热电偶和参考端温度需要32个时钟周期。在时钟下降沿读取输出位。第一位D31为热电偶温度符号位。

D[30:18]位包含温度转换数据,顺序为MSB至LSB。D16位正常状态下为低电平,热电偶输入开路或对GND或VCC短路时变为高电平。参考端温度数据从D15开始。

输出转换数据时,CS任何时候均可变为高电平。



5. 存储器映射 — 位加权和功能说明




6. 程序源码 MAX31855测温程序,分别使用STM32硬件SPI和软件模拟时序两种方式读取温度数据。


/**

  ******************************************************************************

  * @file           : max31855.c

  * @brief          : MAX31855 cold-junction compensated thermocouple-to-digital

  *                   converter program body.

  ******************************************************************************

  *

  * Copyright (c) respeke, www.etdev.net

  * 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();

  }

}
……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

394

帖子

3

粉丝