STM32驱动MAX6675读取K型热电偶温度

您所在的位置:网站首页 热电偶控制 STM32驱动MAX6675读取K型热电偶温度

STM32驱动MAX6675读取K型热电偶温度

2023-07-20 10:26| 来源: 网络整理| 查看: 265

   MAX6675 进行热电偶冷端补偿和数字化 K 型热电偶信号。输出 12 位分辨率、 SPI 兼容、只读的数据。转换器的精度为 0.25℃,最高可读+1024℃,如果使用数据的 8LSB 则温度范围为 0℃到+700℃。  

MAX6675模块的原理图:

从网上看到max6675模块并不便宜,正好手头又有MAX6675的芯片于是自己便根据原理图在洞洞板上搭建了一个测试模块

                              

测试结果:将测得的温度信息通过串口1输出到上位机显示

max6675模块部分的测试代码:

#include "stm32f10x.h" #include "usart.h" #include "delay.h" #include "max6675.h" int main(void) { uint16_t temperature; float t; usart1_init(115200); delay_init(); max6675_init(); while(1) { temperature = max6675_readRawValue(); printf("the raw value is:%d\n",temperature); t = max6675_readTemperature(); printf("the temperature is:%.2f\n",t); printf("\n"); delay_ms(500); } }

max6675操作函数库:

头文件:

#ifndef __MAX6675_H #define __MAX6675_H #include "stm32f10x.h" #define MAX6675_CS1_CLK RCC_APB2Periph_GPIOA #define MAX6675_CS1_PORT GPIOA #define MAX6675_CS1_PIN GPIO_Pin_4 void max6675_init(void); //初始化max6675模块 uint8_t max6675_readWriteByte(uint8_t txData); //max6675模块读写一个字节 uint16_t max6675_readRawValue(void); float max6675_readTemperature(void); #endif

 源文件:

#include "max6675.h" #include "spi.h" /** * @brief max66675模块初始化 * @param None * @retval None */ void max6675_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(MAX6675_CS1_CLK, ENABLE); //PORTA时钟使能 GPIO_InitStructure.GPIO_Pin = MAX6675_CS1_PIN; // PA4 推挽 T_CS GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(MAX6675_CS1_PORT, &GPIO_InitStructure); GPIO_SetBits(MAX6675_CS1_PORT,MAX6675_CS1_PIN); // T_CS=1 spi1_init(); } /** * @brief max6675模块读写一个字节的数据 * @param txData:要发送的数据 * @retval 接收到的数据 */ uint8_t max6675_readWriteByte(uint8_t txData) { return spi1_readWriteByte(txData); } /** * @brief max6675模块读取测得的原始数据 * @param None * @retval 温度的原始数据 */ uint16_t max6675_readRawValue(void) { uint16_t tmp; GPIO_ResetBits(MAX6675_CS1_PORT,MAX6675_CS1_PIN); //enable max6675 tmp = max6675_readWriteByte(0XFF); //read MSB tmp 3; } return tmp; } /** * @brief max6675模块读取测得的原始数据 * @param None * @retval 温度值(单位:℃) */ float max6675_readTemperature(void) { return (max6675_readRawValue() * 1024.0 / 4096); }

最后附上测试例程:https://download.csdn.net/download/xiaoyuanwuhui/10606977

该例程的测试环境为STM32f103  用到的硬件资源有 串口1(PA9 PA10)SPI1(PA4 PA5 PA6 )。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3