tpgf 发表于 2025-3-5 13:17

基于CW32热敏电阻采集温度应用

资料链接如下:
BD网盘链接:
https://pan.baidu.com/s/1BBQ_7AmfirJPsXr2zxaOJw
提取码:6bc3
相关视频:基于CW32热敏电阻采集温度应用

一、简介

利用NTC热敏电阻来采集温度具有高灵敏度、快速响应、宽温度测量范围和成本效益高等优势,这使得它成为许多应用中常用的温度传感器之一。

本篇文章就来讲解基于CW32热敏电阻采集温度的应用


二、所需物料

本实验用到了CW32 Cortex-M实训套件实验箱、NTC热敏电阻及Keil5开发环境。




CW32 Cortex-M实训套件




NTC热敏电阻实物




热敏电阻原理图




热敏电阻主要技术参数







NTC具体原理可观看视频,或参考以下链接中的文章:热敏电阻温度采集简述

三、核心代码
/*

用TFT屏幕显示

1.热敏电阻的阻值

2.转换得到的温度

显示界面如下

-----------------------
      NTC

R:****
   Tempture:****
-----------------------
*/

#include "main.h"
#include "table.h"   //阻温表
#include "config.h"
#include "LCD_calculate.h"
#include "Lcd_Driver.h"

char temp;
unsigned char cnt = 0;
float dat_AD = 0;//ADC采集电压
int R = 0;//电阻值
float tempture = 0; //温度

void ADC_Configuration(void); // ADC初始化配置
float Get_ADC(void);//采集电压值

int main()
{
unsigned char max,min,mid;
unsignedint temp;
char strings;

RCC_Configuration(); //时钟配置
ADC_Configuration(); //ADC配置

Lcd_Init();          //TFT屏初始化配置
Lcd_Clear(GRAY0);    //清屏操作

Gui_DrawFont_GBK16(0,0,WHITE,RED,"       NTC      "); //第一行:ADC TEST:
Gui_DrawFont_GBK16(0,32,WHITE,RED,"R:");             //第二行:R:
Gui_DrawFont_GBK16(0,48,WHITE,RED,"Temperature:"); //第三行:Temperature:

while(1)
{   
    dat_AD = Get_ADC()*3.3/4095;//单片机的参考电压为3.3V,12位的ADC
    R = dat_AD*10000/(5-dat_AD);//VCC接5V,测得VCC实际电压值为4.58V,更为精准

    max = 97;//温度上限97
    min = 0;   //温度下限0

    while(1)   //二分查找法
    {
      mid = ( max + min ) / 2;
      if( Table < R ) max = mid;
      else min = mid;
      if( (max-min) <= 1 ) break;
    }

    if ( max == min ) tempture = min * 10;
    else
    {
      temp = ( Table - Table ) / 10;//计算温度的小数部分
      temp = ( Table - R ) / temp;   
      tempture = temp;
      tempture = 10 * min + tempture;//扩大十倍,方便计算
    }
    tempture /= 10;

    sprintf(strings,"%d",R);//TFT显示阻值
    Gui_DrawFont_GBK16(16,32,WHITE,RED,strings);
    Gui_DrawFont_GBK16(48,32,WHITE,RED,"          ");

    sprintf(strings,"%.1f",tempture);
    Gui_DrawFont_GBK16(96,48,WHITE,RED,strings); //TFT显示温度

    delay_ms(500);
}
}
float Get_ADC() //ADC采集
{
unsigned int temp_dat_adc = 0;

ADC_SoftwareStartConvCmd(ENABLE);
while(ADC_GetITStatus(ADC_IT_EOC))
{
    ADC_ClearITPendingBit(ADC_IT_EOC);      
    temp_dat_adc=ADC_GetConversionValue();      
}
return   (float)temp_dat_adc;
}



四、实验最终现象





实验接线箱



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2302_81038468/article/details/136496779

小小蚂蚁举千斤 发表于 2025-3-13 22:21

学习一下

中国龙芯CDX 发表于 2025-3-19 22:29

NTC热敏电阻了解一下

jf101 发表于 2025-3-20 17:38

热敏电阻采集原理非常清晰
页: [1]
查看完整版本: 基于CW32热敏电阻采集温度应用