基于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[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;
}

四、实验最终现象



在这里插入图片描述

实验接线箱

在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值