news 2026/6/15 20:36:49

STM32与NTC测温

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32与NTC测温

简介通过stm32与ntc热敏电阻进行对水温的检测,测温范围为0~60℃,当温度超过60℃时,led闪烁,采用6针的OLED(spi通信协议)显示ntc的ad值和水温。

功能

1、温度测量范围:室温~60°,需在屏幕上显示;
2、温度测量精度:±2°;
3、超温提示,设定温度大于 60°时报警。

简易电路图

NTC测温电阻一端接地,一端接电阻接口

和第一个图的原理一样,就是和10K的电阻分压测量

思路

1.A0口采用模拟输入(ADC专用)对ntc进行ad采集,将采集到的AD值在OLED显示
2.ntc与10k电阻在3.3V下串联分压,将ntc所在的温度与对应的ad值(通过电压进行计算)进行比对,用excel进行简单的拟合,即可求出温度与ad的对应关系进而在OLED上显示
3.通过代码控制gpio口使其在>60摄氏度时led闪烁,

代码部分(含解析)

1、采集(AD.C)

#include "stm32f10x.h" // Device header void AD_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); //开启时钟,ADC都是APB2上的设备 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //开启GPIOA的时钟(要用到A0口) RCC_ADCCLKConfig(RCC_PCLK2_Div6); //分频ADCCLK=72/6 GPIO_InitTypeDef GPIO_Initstructure; GPIO_Initstructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入ADC专用 //断开GPIO防止GPIO输入输出对模拟电压造成干扰 GPIO_Initstructure.GPIO_Pin = GPIO_Pin_0;//即A0口 GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;//输入速度 GPIO_Init (GPIOA, &GPIO_Initstructure); //GPIO初始化 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_7Cycles5); //ADCx,指定通道,规则组里的次序(序列), //指定通道的采样时间,参数小转换快不稳定 ADC_InitTypeDef ADC_InitStructure;//定义结构体 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独立模式 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //对齐方式:右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1; //扫描模式下通道数目:1 ADC_InitStructure.ADC_ScanConvMode = DISABLE; //扫描模式: 单次模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //外部触发转换选择:软件触发 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //转换模式(连续/单次):连续 ADC_Init(ADC1, &ADC_InitStructure); //初始化结构体 ADC_Cmd(ADC1, ENABLE);//给ADC供电 ADC_ResetCalibration(ADC1);//复位校准 while (ADC_GetResetCalibrationStatus(ADC1) == SET);//等待复位校准完成 ADC_StartCalibration(ADC1);//开始校准 while (ADC_GetCalibrationStatus(ADC1) == SET);//等待校准完成 } uint16_t AD_GetValue(void) { ADC_SoftwareStartConvCmd(ADC1, ENABLE);//软件触发 while (ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == RESET);//规则或注入 return ADC_GetConversionValue(ADC1);//返回ADC的值 }

2、主函数(main.c)

#include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "AD.h" uint16_t ADValue; uint16_t TEMP; //分别定义变量 int main(void) { OLED_Init();//OLED初始化 AD_Init();//ADC初始化 OLED_ShowString(1, 1, "ADValue:"); OLED_ShowString(2, 1, "TEMP:"); //OLED显示 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打开时钟 GPIO_InitTypeDef GPIO_Initstructure1; GPIO_Initstructure1.GPIO_Mode=GPIO_Mode_Out_PP;//输出模式为推挽输出 GPIO_Initstructure1.GPIO_Pin=GPIO_Pin_10;//选中引脚A0 GPIO_Initstructure1.GPIO_Speed=GPIO_Speed_50MHz;//输出速度为50MHz GPIO_Init(GPIOB,&GPIO_Initstructure1);//用结构体参数来初始化GPIO口 //使用GPIOA while (1) { ADValue=AD_GetValue(); OLED_ShowNum(1,9,ADValue,4); TEMP=((uint16_t)ADValue-(uint16_t)1002)/(38); //通过excel拟合的函数从而求得的公式 OLED_ShowNum(2,9,TEMP,2); Delay_ms(500);//显示时间延时0.5s GPIO_ResetBits(GPIOB,GPIO_Pin_10);//led默认为灭 if(TEMP>60)//判断是否超过60 { while (1) { GPIO_ResetBits(GPIOB,GPIO_Pin_10);//亮 Delay_ms(100); GPIO_SetBits(GPIOB,GPIO_Pin_10);//灭 Delay_ms(100); ADValue=AD_GetValue(); if(ADValue<3200) //若小于60℃,退出循环 break; } } } }

数据分析

1.求出ntc的ad值

通过原ntc温度对应电阻,在3.3v的串联电路下求其分压,与ad值0~4095对应

2.数据拟合

将对应数据转换成温度与NTC的ad值对应的曲线,并求出曲线的近似函数,进而确定温度与adc的对应关系。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 15:08:22

【Java毕设源码分享】基于springboot+vue的研究生科研文档资料管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/15 1:51:51

鸿蒙开发:那些让我熬秃头的“灵异事件”

Hello&#xff0c;兄弟们&#xff0c;我是 V 哥&#xff01; 咱们干鸿蒙开发的&#xff0c;平时是不是觉得自己像个法师&#xff1f;特别是刚从 Android 或者 Vue 转过来的兄弟&#xff0c;面对 ArkTS 这一套声明式 UI&#xff0c;有时候真觉得自己是在做法术。 代码写得行云流…

作者头像 李华
网站建设 2026/6/15 13:43:11

CSS 定位属性(relative、absolute、fixed、sticky)与实用技巧总结

本文系统整理了CSS定位的核心属性和应用技巧。主要包含&#xff1a;5种定位类型&#xff1a;static(默认)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)、sticky(粘性定位)及其应用场景常用定位技巧&#xff1a;包括居中定位、固定页眉页脚、悬浮按钮、粘性侧边栏…

作者头像 李华
网站建设 2026/6/15 12:53:07

Windows用户如何避免常见部署问题?权威解答来了

Windows用户如何避免常见部署问题&#xff1f;权威解答来了 背景与挑战&#xff1a;从Linux到Windows的迁移痛点 随着AI生成技术的普及&#xff0c;越来越多开发者希望在本地Windows系统上运行如Image-to-Video图像转视频生成器这类基于深度学习的应用。然而&#xff0c;尽管原…

作者头像 李华
网站建设 2026/6/15 8:17:00

营销团队如何3天上线动态海报系统?

营销团队如何3天上线动态海报系统&#xff1f; 从静态到动态&#xff1a;营销内容的效率革命 在数字营销竞争日益激烈的今天&#xff0c;视觉冲击力和内容更新速度直接决定用户点击率与转化效果。传统海报设计流程依赖设计师手动制作、反复修改&#xff0c;周期长、成本高。而…

作者头像 李华
网站建设 2026/6/15 14:19:47

导师严选2026 AI论文写作软件TOP9:继续教育必备测评

导师严选2026 AI论文写作软件TOP9&#xff1a;继续教育必备测评 2026年AI论文写作软件测评&#xff1a;为何值得一看 随着人工智能技术在学术领域的不断渗透&#xff0c;AI论文写作工具已成为科研人员和继续教育学员不可或缺的辅助工具。然而&#xff0c;市场上产品繁多&#x…

作者头像 李华