Arduino开发NTC热敏电阻实验

哈喽,
大家好呀我是一名初次学习Arduino的一名初学者,很高兴跟大家分享这次的学习经验,秉承着互相学习,互相进步的原则,我将这次项目的经验分享给大家。

1.这是NTC模块的电路图:

因为NTC热敏电阻是负温度系数电阻,就是温度越高阻值反而越低,也有正温度系数电阻PTC,随着温度的升高,阻值也增加。所以我们不能直接测量NTC热敏电阻的阻值,只能测量热敏电阻的电压,通常我们会将两个电阻串联的方式,通过分压比算出热面电阻的电压,然后算出阻值。
2.这是Arduino与NTC热敏电阻模块的接线图:


3.由于热敏电阻是可变电阻,因此在计算温度之前,需要测量电阻。但是,Arduino无法直接测量电阻,只能测量电压。
Arduino将在热敏电阻和已知电阻之间的一点上测量电压。这被称为分压器。分压器的公式为:

算出电压后可以根据公式,反向求出R2的阻值,公式为:
R2=(R1*VOUT)/(VIN-VOUT)
4.大家可以参考程序解读这部分内容,在程序中第一步先算出VOUT的电压用的是:

const float voltagePower=5;
//获得A1处的电压值
double digitalValue=analogRead(A1);
double voltageValue=(digitalValue/1023)voltagePower;
//将模拟量换算转换 为电压值。
5.然后就是求热敏电阻的阻值:
//通过分压比获得热敏电阻的阻值
double Rt=(voltageValue
R1)/(voltagePower-voltageValue);
Serial.print(“Current registor value=”);
Serial.println(Rt);
可以通过Arduino自带的串口监视器查看数据。
6.就是通过公式算出温度,公式为:
Rt = R EXP(B(1/T1-1/T2))
NTC 热敏电阻温度计算公式:Rt = R EXP(B(1/T1-1/T2))
其中,T1和T2指的是K度,即开尔文温度。
Rt 是热敏电阻在T1温度下的阻值。
R是热敏电阻在T2常温下的标称阻值。100K的热敏电阻25℃的值为100K(即R=100K)。T2=(273.15+25)
EXP是e的n次方
B值是热敏电阻的重要参数
通过转换可以得到温度T1与电阻Rt的关系T1=1/(ln(Rt/R)/B+1/T2)
对应的摄氏温度t=T1-273.15,同时+0.5的误差矫正。

以上就是我在做NTC热敏电阻这个项目时的流程和方法,希望能对大家有所帮助,欢迎大家互相交,互相学习共同进步嘛。
附两张效果图:测量的还是很准确的,嘿嘿。
摄氏度 ℃

华氏度 ℉

下面是代码:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include<math.h>

const float voltagePower=5;
//const float Rs=10;//采样电阻为10千欧
const int B=3590;
const double T1=273.15+25.0;//常温
const double R1=10.0;//常温对应的阻值,注意单位是千欧

#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);

static const unsigned char PROGMEM str1[] =
{
0x00,0x00,0x00,0x00,0x00,0x10,0x1B,0xE8,0x09,0x18,0x01,0xF0,0x21,0x70,0x01,0x80,
0x00,0x08,0x1B,0xFC,0x12,0xA8,0x12,0xA8,0x22,0xCC,0x2F,0x30,0x00,0x00,0x00,0x00
};/“温”,0/

static const unsigned char PROGMEM str2[] ={
0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x70,0x0F,0xC0,0x0B,0x20,0x09,0xD0,0x0F,0x40,
0x09,0x80,0x08,0xE0,0x11,0x40,0x11,0x40,0x20,0xC0,0x41,0x30,0x0E,0x1E,0x00,0x00
};
/“度”,1/
static const unsigned char PROGMEM str3[] =
{
0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0xA0,0x09,0x10,0x3D,0x08,0x0A,0xC7,
0x1C,0x10,0x2C,0x10,0x49,0x50,0x09,0x20,0x08,0x20,0x17,0xFC,0x00,0x00,0x00,0x00
};/“检”,0/

static const unsigned char PROGMEM str4[] =
{
0x00,0x00,0x00,0x00,0x00,0x04,0x17,0xC4,0x04,0x84,0x05,0x94,0x25,0xA4,0x25,0xA4,
0x15,0xA4,0x26,0x84,0x23,0x04,0x22,0xC4,0x04,0x54,0x00,0x0C,0x00,0x00,0x00,0x00
};/“测”,1/
static const unsigned char PROGMEM str5[] =
{
0x00,0x00,0x20,0x00,0x50,0x00,0x50,0xF0,0x23,0x0C,0x02,0x04,0x06,0x00,0x04,0x00,
0x04,0x00,0x04,0x00,0x04,0x04,0x06,0x04,0x03,0x0C,0x01,0xF8,0x00,0x00,0x00,0x00
};//

static const unsigned char PROGMEM str6[] =
{
0x00,0x00,0x20,0x00,0x50,0x00,0x53,0xFE,0x23,0x00,0x03,0x00,0x03,0x00,0x03,0x00,
0x03,0xF8,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};/°F/
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 初始化OLED并设置其IIC地址为 0x3C
display.setTextColor(WHITE);//开像素点发光
}

void loop() {
display.clearDisplay();//清屏
delay(1000);

/display.setTextSize(1); //设置字体大小
display.setCursor(40, 5);//设置显示位置
display.println("-Welcom-");//输出字符
/
// 设置字体颜色,白色可见
display.setTextColor(WHITE);
display.drawBitmap(25, 4, str1, 16, 16,1); //温
display.drawBitmap(45, 4, str2, 16, 16, 1); //度
display.drawBitmap(65, 4, str3, 16, 16, 1); //检
display.drawBitmap(85, 4, str4, 16, 16, 1); //测
display.drawBitmap(90, 25, str5, 16, 16, 1); //℃
display.drawBitmap(110, 45, str6, 16, 16, 1); //℉
delay(100);
words_display();
delay(1000);
display.display();
}

/const float voltagePower=5.0;
const float Rs=16;//采样电阻为21.5千欧
const int B=3950;
const double T1=273.15+25;//常温
const double R1=10;//常温对应的阻值,注意单位是千欧
/

void words_display()
{
//获得A1处的电压值
double digitalValue=analogRead(A1);
double voltageValue=(digitalValue/1023)*voltagePower;//将模拟量换算转换为电压值
Serial.print(“Current voltage value=”);
Serial.println(voltageValue);

//通过分压比获得热敏电阻的阻值
//double Rt=((voltagePower-voltageValue)Rs)/voltageValue;
//double Rt=R1
((voltagePower/voltageValue)-1);
double Rt=(voltageValue*R1)/(voltagePower-voltageValue);
Serial.print(“Current registor value=”);
Serial.println(Rt);

//换算得到温度值
Serial.print(“Current temperature value=”);
const double C=(((T1B)/(B+T1log(Rt/R1)))-273.15);//摄氏度
const double F=(C1.8)+32;//华氏度
Serial.println();
delay(1000);
/

换算华氏公式华氏度 = 32°F+ 摄氏度 × 1.8
换算摄氏公式摄氏度 = (华氏度 - 32°F) ÷ 1.8
*/

//设置字体大小
display.setTextSize(1);
display.setCursor(0, 30);
display.print("Celsius: ");
//显示传感器的值:
display.print©;
display.setTextSize(1);
display.setCursor(0,50);
display.print("Fahrenheit: ");
//显示传感器的值:
display.println(F);
}

# **Arduino开发NTC热敏电阻实验**相关推荐

  1. Arduino STM32用NTC热敏电阻 OLED显示屏制作温度计

    1.材料清单 STM32F103C8T6开发板(黑色板).NTC热敏电阻.12864OLED显示屏(四脚).microUSB数据线.导线及面包板 2.电路连接 NTC热敏电阻连接电路:GND-> ...

  2. 【Arduino+ESP32专题】案例:简单的实现NTC热敏电阻检测板卡温度

    在文章[分立元件]NTC热敏电阻的B值中我们了讲解了负温度系数 (NTC) 热敏电阻的B值,提到了B常数显示的是热敏电阻的电阻值变化倾向,是负温度系数(NTC) 热敏电阻的基本特性参数之一.如下图所示 ...

  3. STM32物联网项目-ADC采集实验板板温度(NTC热敏电阻)

    STM32 ADC采集板载温度 STM32 ADC简介 ​ STM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用, 也可以使用双重模 ...

  4. Arduino与Proteus仿真实例-NTC热敏电阻驱动仿真

    NTC热敏电阻驱动仿真 热敏电阻是由半导体材料制成的温度传感元件,该材料经过烧结以显示电阻的较大变化与温度的微小变化成比例. 该电阻可以通过使用通过热敏电阻的小且经测量的直流或直流电来测量,以测量产生 ...

  5. 看完相当于学过并实践用过arduino! ——复现arduino开发板的众多小实验

    吃饱喝足,回学校了.今天到了arduino开发板和一整套学习工具,马上就回宿舍开始学习,直播更新 回到宿舍吃点补品就开始啦. 首先是开箱,整个箱子的图片就不拍了,是一个塑料盒子.里面包含一本教材和各种 ...

  6. STC15单片机-ADC获取环境温度(NTC热敏电阻)

    ADC获取环境温度 STC15L2K32S2 ADC结构 STC15系列单片机ADC由多路选择开关.比较器.逐次比较寄存器.10位DAC.转换结果寄存器(ADC_RES和ADC_RESL)以及ADC_ ...

  7. 热敏电阻制作温度传感器的c语言,課题一NTC热敏电阻的温度测量和控制系统.doc...

    課题一NTC热敏电阻的温度测量和控制系统 2011年暑期电子设计大赛课题一 基于NTC热敏电阻的温度测量与控制系统的设计 学生姓名杜衡.向奇林.刘露平院系名称物理与电子工程学院专业名称电子信息工程班级 ...

  8. Ardunio开发实例-热敏电阻温度传感器

    热敏电阻温度传感器 热敏电阻温度传感器使用热敏电阻检测环境温度. 当环境温度降低时,热敏电阻的电阻将增加. 这就是我们用来计算环境温度的特性. 热敏电阻是可变电阻器,其电阻会随温度变化. 根据其电阻对 ...

  9. 【原创】ESP32+NTC热敏电阻测温SD卡采集OLED显示,Begabung_TC250

    摘要 利用ESP32设计一款八通道热敏电阻采集方案,并使用SD卡采集及OLED显示,通过Arduino_IDE编写.本产品在淘宝店Begabung发售,型号:TC250. 内容         零件准 ...

最新文章

  1. 给博客增加了一个主题Nautica02Liquid
  2. Linux多线程实践(6) --Posix读写锁解决读者写者问题
  3. kafka管理器kafka-manager部署安装
  4. 统计一段英文中单词的个数c语言,C语言统计一篇英文短文中单词的个数实例代码...
  5. table ADR6 引起的equipment download error
  6. 链表(单链表、双链表、内核链表)
  7. springboot整合redisson实现多种分布式锁
  8. 解决“(1146, “Table ‘mydb.django_session‘ doesn‘t exist“)”报错的方法
  9. ERP项目实施记录08
  10. javascript 学习总结(五)Function对象
  11. 最新版c语言经典习题100例(最全面)
  12. js 获取屏幕高宽_js获取屏幕高度宽度
  13. mcafee mysql audit_mysql添加mcafee 审计插件
  14. macOS 开发 - 打包 PKG(使用 Packages)
  15. 微信小程序 action-sheet组件 + 分享代码实现
  16. hourglass论文_Hourglass模块 网络结构 代码
  17. python程序实现最大限度突破高德地图爬虫限制,包括.exe文件的编译,提供最大限度爬虫高德地图poi思路
  18. 彻底删除2345输入法
  19. 公众号滑动图代码_公众号怎么制作图片滑动的效果?怎么做可以上下滑动的长图?...
  20. TCP 的那些事 | SACK

热门文章

  1. 一款很实用的欠压过压保护电路
  2. 两倍屏和三倍屏中的1px处理方法
  3. 原生JS基础实现萤火虫效果【附源码及封装函数】
  4. 固态继电器基础知识和工作原理
  5. 为员工长工资。从最低工资调起每人长10%,但工资总额不能超过5万元,
  6. 视频教程-OmniFocus高效能时间/任务管理-其他
  7. python爬取喜马拉雅有声小说
  8. matlab角度转弧度函数
  9. 贵阳大数据及网络安全精英对抗赛-解题赛WP
  10. 微型计算机中央处理器集成,微型计算机的中央处理器是由哪些超大规模的集成电路组成的...