打印
[产品应用]

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

[复制链接]
76|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2025-3-5 13:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
资料链接如下:
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[10];  
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;  
  unsigned  int temp;
  char strings[10];

  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[mid] < R ) max = mid;
      else min = mid;
      if( (max-min) <= 1 ) break;
    }

    if ( max == min ) tempture = min * 10;
    else
    {
      temp = ( Table[min] - Table[max] ) / 10;  //计算温度的小数部分
      temp = ( Table[min] - 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

使用特权

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

本版积分规则

2145

主题

16386

帖子

16

粉丝