STM32 实验14 内部温度传感器实验

STM32 实验14 内部温度传感器实验
STM32 实验14 内部温度传感器实验

217

3.14内部温度传感器实验

这一节我们将向大家介绍STM32的内部温度传感器。本节将利用STM32的内部温度传感器来显示温度值,并在TFTLCD 模块上显示出来。本节分为如下几个部分:

3.1

4.1 STM32 内部温度传感器简介

3.1

4.2 硬件设计

3.1

4.3 软件设计

3.1

4.4 下载与测试

218

3.1

4.1 STM32 内部温度传感器简介

STM32有一个内部的温度传感器,可以用来测量CPU 及周围的温度(TA)。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是17.1μs 。 STM32的内部温度传感器支持的温度范围为:-40~125度。精度比较差,为±1.5℃左右。

STM32内部温度传感器的使用很简单,只要设置一下内部ADC ,并激活其内部通道就差不多了。关于ADC 的设置,我们在上一节已经进行了详细的介绍,这里就不再多说。接下来我们介绍一下和温度传感器设置相关的2个地方。

第一个地方,我们要使用STM32的内部温度传感器,必须先激活ADC 的内部通道,这里通过ADC_CR2的AWDEN 位(bit23)设置。设置该位为1则启用内部温度传感器。

第二个地方,STM32的内部温度传感器固定的连接在ADC 的通道16上,所以,我们在设置好ADC 之后只要读取通道16的值,就是温度传感器返回来的电压值了。根据这个值,我们就可以计算出当前温度。计算公式如下:

T (℃)={(V25-Vsense )/Avg_Slope}+25

该式中:

V25=Vsense 在25度时的数值(典型值为:1.43)。

Avg_Slope=温度与Vsense 曲线的平均斜率(单位为mv/℃或uv/℃)(典型值为

4.3Mv/℃)。

利用以上公式,我们就可以方便的计算出当前温度传感器的温度了。

现在,我们就可以总结一下STM32内部温度传感器使用的步骤了,如下:

设置ADC ,并开启ADC_CR2的AWDEN 位。

关于如何设置ADC ,上一节已经介绍了,我们采用与上一节一样的设置,这里我们只要增加使能AWDEN 位这一句就可以了。

读取通道16的AD 值,计算结果。

在设置完之后,我们就可以读取温度传感器的电压值了,得到该值就可以用上面的公式计算温度值了。

3.1

4.2 硬件设计

这部分硬件只需要1个TFTLCD 模块,其他的就不需要了。TFTLCD 的连接在前面已经介绍过了,这里就不再介绍了。

3.1

4.3 软件设计

打开上一节的工程,打开adc.c ,修改Adc_Init 函数代码如下:

void Adc_Init(void)

{

//先初始化IO 口

RCC->APB2ENR|=1<<2; //使能PORTA 口时钟

GPIOA->CRL&=0XFFFF0000;//PA0 1 2 3 anolog 输入

219

//通道10/11设置

RCC->APB2ENR|=1<<9; //ADC1时钟使能

RCC->APB2RSTR|=1<<9; //ADC1复位

RCC->APB2RSTR&=~(1<<9);//复位结束

RCC->CFGR&=~(3<<14); //分频因子清零

//SYSCLK/DIV2=12M ADC 时钟设置为12M,ADC 最大时钟不能超过14M!

//否则将导致ADC 准确度下降!

RCC->CFGR|=2<<14;

ADC1->CR1&=0XF0FFFF; //工作模式清零

ADC1->CR1|=0<<16; //独立工作模式

ADC1->CR1&=~(1<<8); //非扫描模式

ADC1->CR2&=~(1<<1); //单次转换模式

ADC1->CR2&=~(7<<17);

ADC1->CR2|=7<<17; //软件控制转换

ADC1->CR2|=1<<20; //使用用外部触发(SWSTART)!!! 必须使用一个事件来触发

ADC1->CR2&=~(1<<11); //右对齐

ADC1->CR2|=1<<23; //使能温度传感器

ADC1->SQR1&=~(0XF<<20);

ADC1->SQR1&=0<<20; //1个转换在规则序列中 也就是只转换规则序列1

//设置通道0~3的采样时间

ADC1->SMPR2&=0XFFFFF000;//通道0,1,2,3采样时间清空

ADC1->SMPR2|=7<<9; //通道3 239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<6; //通道2 239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<3; //通道1 239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<0; //通道0 239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1&=~(7<<18); //清除通道16原来的设置

ADC1->SMPR1|=7<<18; //通道16 239.5周期,提高采样时间可以提高精确度

ADC1->CR2|=1<<0; //开启AD 转换器

ADC1->CR2|=1<<3; //使能复位校准

while(ADC1->CR2&1<<3); //等待校准结束

//该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。

ADC1->CR2|=1<<2; //开启AD 校准

220

while(ADC1->CR2&1<<2); //等待校准结束

//该位由软件设置以开始校准,并在校准结束时由硬件清除

}

这部分代码与上一节的Adc_Init 代码几乎一摸一样,我们仅仅在里面增加了 ADC1->CR2|=1<<23; //使能温度传感器

铜过该句使能温度传感器。

然后,我们保存一下该文件,接着打开adc.h ,修改文件如下:

#ifndef __ADC_H

#define __ADC_H

//Mini STM32开发板

//ADC 驱动代码

//正点原子@ALIENTEK

//2010/6/7

#define ADC_CH0 0 //通道0

#define ADC_CH1 1 //通道1

#define ADC_CH2 2 //通道2

#define ADC_CH3 3 //通道3

#define TEMP_CH 16 //温度传感器通道

void Adc_Init(void); //ADC 通道初始化

u16 Get_Adc(u8 ch); //获得某个通道值

#endif

这里我们也只增加了一句,就是宏定义多增加了一个温度传感器通道TEMP_CH 。接下来我们就可以开始读取温度传感器的电压了。在test.c 文件里面我们修改main 函数如下:

int main(void)

{

u16 adcx;

float temp;

float temperate;

Stm32_Clock_Init(9);//系统时钟设置

delay_init(72); //延时初始化

uart_init(72,9600); //串口1初始化

LED_Init();

LCD_Init();

Adc_Init();

POINT_COLOR=RED;//设置字体为红色

LCD_ShowString(60,50,"Mini STM32");

LCD_ShowString(60,70,"TEMPERATE TEST");

LCD_ShowString(60,90,"ATOM@ALIENTEK");

LCD_ShowString(60,110,"2010/6/7");

//显示时间

221

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,130,"TEMP_V AL:");

LCD_ShowString(60,150,"TEMP_VOL:0.000V");

LCD_ShowString(60,170,"TEMPERATE:00.00C");

while(1)

{

adcx=Get_Adc(TEMP_CH);

LCD_ShowNum(132,130,adcx,4,16);//显示ADC 的值

temp=(float)adcx*(3.3/4096);

temperate=temp;//保存温度传感器的电压值

adcx=temp;

LCD_ShowNum(132,150,adcx,1,16); //显示电压值整数部分

temp-=(u8)temp; //减掉整数部分

LCD_ShowNum(148,150,temp*1000,3,16);//显示电压小数部分

temperate=(1.43-temperate)/0.0043+25;//计算出当前温度值

LCD_ShowNum(140,170,(u8)temperate,2,16); //显示温度整数部分

temperate-=(u8)temperate;

LCD_ShowNum(164,170,temperate*100,2,16);//显示温度小数部分

LED0=!LED0;

delay_ms(250);

}

}

这里同上一节的主函数也大同小异,上面红色部分代码将温度传感器得到的电压值,换算成温度值。然后,我们在TFTLCD 模块上显示出来。

代码设计部分就为大家讲解到这里,下面我们开始下载与测试。

3.1

4.4 下载与测试

在代码编译成功之后,我们通过下载代码到ALIENTEK MiniSTM32开发板上,可以看到LCD 显示如下内容:

222

图3.14.4.1 内部温度传感器实验测试图

伴随DS0的不停闪烁,提示程序在运行。大家可以看看你的温度值与实际相差是否很大?(因为芯片会发热,一般会比实际温度稍高一些)

温度传感器实验

实验二(2)温度传感器实验 实验时间 2017.01.12 实验编号 无 同组同学 邓奡 一、实验目的 1、了解各种温度传感器(热电偶、铂热电阻、PN 结温敏二极管、半导体热敏电阻、集成温度传感器)的测温原理; 2、掌握热电偶的冷端补偿原理; 3、掌握热电偶的标定过程; 4、了解各种温度传感器的性能特点并比较上述几种传感器的性能。 二、实验原理 1、热电偶测温原理 由两根不同质的导体熔接而成的,其形成的闭合回路叫做热电回路,当 两端处于不同温度时回路产生一定的电流,这表明电路中有电势产生,此电势即为热电势。 试验中使用两种热电偶:镍铬—镍硅(K 分度)、镍铬—铜镍(E 分度)。图2.3.5所示为热电偶的工作原理,图中:T 为热端,0T 为冷端,热电势为)()(0T E T E E AB AB t -=。 热电偶冷端温度不为0℃时(下式中的1T ),需对所测热电势进行修正,修正公式为:),(),(),(0110T T E T T E T T E +=,即: 实际电动势+测量所得电动势+温度修正电势 对热电偶进行标定时,以K 分度热电偶作为标准热电偶来校准E 分度热 电偶。 2、铂热电阻 铂热电阻的阻值与温度的关系近似线性,当温度在C 650T C 0?≤≤?时,

)1(20BT AT R R T ++=, 式中:T R ——铂热电阻在T ℃时的电阻值 0R ——铂热电阻在0℃时的电阻值 A ——系数(=C ??/103.96847-31) B ——系数(= C ??/105.847--71) 3、PN 结温敏二极管 半导体PN 结具有良好的温度线性,PN 结特性表达公式为: γln be e kT U =?, 式中,γ为与PN 结结构相关的常数; k 为波尔兹曼常数,K J /1038.1k 23-?=; e 为电子电荷量,C 1910602.1e -?=; T 为被测物体的热力学温度(K )。 当一个PN 结制成后,当其正向电流保持不变时,PN 结正向压降随温度 的变化近似于线性,大约以2mV/℃的斜率随温度下降,利用PN 结的这一特性可以进行温度的测量。 4、热敏电阻 热敏电阻是利用半导体的电阻值随温度升高而急剧下降这一特性制成的 热敏元件,灵敏度高,可以测量小于0.01℃的温差变化。 热敏电阻分为正温度系数热敏电阻PTC 、负温度系数热敏电阻NTC 和在 某一特定温度下电阻值发生突然变化的临界温度电阻器CTR 。 实验中使用NTC ,热敏电阻的阻值与温度的关系近似符合指数规律,为:)11(00e T T B t R R -=。式中: T 为被测温度(K),16.273t +=T 0T 为参考温度(K),16.27300+=t T T R 为温度T 时热敏电阻的阻值 0R 为温度0T 时热敏电阻的阻值 B 为热敏电阻的材料常数,由实验获得,一般为2000~6000K 5、集成温度传感器 用集成工艺制成的双端电流型温度传感器,在一定温度范围内按1uA/K 的恒定比值输出与温度成正比的电流,通过对电流的测量即可知道温度值(K 氏温度),经K 氏-摄氏转换电路直接得到摄氏温度值。

基于STM32F103嵌入式实验指导书

实验一、STM32的开发环境与简单工程 一、实验目的 1、熟悉STM32开发板的开发环境; 2、熟悉MDK创建和配置STM32工程项目的基本流程; 3、熟悉STM32官方库的应用; 4、规范编程格式。 二、实验内容 本次实验配置MDK集成开发环境,新建一个简单的工程文件,添加STM32官方库并配置工程,编译运行这个工程文件。下载已经编译好的文件到开发板中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。 三、预备知识 基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法。 四、实验设备及工具 硬件:STM32开发平台 软件:STM32官方库;PC机操作系统Windows 98、Windows 2000或Windows XP;KEIL MDK 集成开发环境;串口转usb驱动。 五、实验步骤 1、在准备存放工程文件的目录下创建一新文件夹,命名为Proj_GPIO;在Proj_GPIO 文件夹里面分别再创建四个文件夹:CMSIS、USER、LIB、OBJ。如图1。 其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 处理器系列的与供应商无关的软件抽象层和启动相关的代码文件; USER用于存放我们自己编写的代码文件(含自己移植的底层驱动),还有MDK工程; LIB存放所有的官方底层驱动库文件; OBJ用于工程输出的过程文件和最终的二进制文件。 图1

2、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。 1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的所有文件都到第一步所创建的CMSIS文件夹中; 2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的文件(目录inc和scr)复制到第一步创建的LIB文件夹中; 3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。 3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2; 图2 4、新建一个空文档main.c保存到USER中,然后根 据绝对路径将文件对应添加到工程中,如右图。 5、配置工程属性,右键点击工程文件中的Target 1选择Options for Target ‘Target 1’打开工程选项对话框。做如下修改: 1)Output选项勾选Create HEX File,然后点击Select Folder for Objects按钮定位输出文件保存目录到工程的OBJ文件; 2)Listing选项,同样点击Select Folder for Listings定位输出文件保存目录到工程的OBJ 文件; 3)C/C++选项,Define中填入 STM32F10X_HD, USE_STDPERIPH_DRIVER系统的两个基 本宏定义;配置Include Paths属性,加入工 程中包含头文件的目录;如右图

DS18B20温度传感器实验

DS18B20温度传感器实验 TEMP1 EQU 5AH ;符号位和百位公用的存放单元TEMP2 EQU 5BH ;十位存放单元 TEMP3 EQU 5CH ;个位存放单元 TEMP4 EQU 5DH ; TEMP5 EQU 5EH TEMP6 EQU 5FH ;数据临时存放单元 TEMP7 EQU 60H TEMP8 EQU 61H ORG 0000H AJMP MAIN ORG 0020H MAIN: MOV SP,#70H LCALL INT ;调用DS18B20初始化函数MAIN1: LCALL GET_TEMP ;调用温度转换函数 LCALL CHULI ;调用温度计算函数 LCALL DISP ;调用温度显示函数 AJMP MAIN1 ;循环 INT: L0:

SETB P3.7 ;先释放DQ总线 MOV R2,#250 ;给R2赋延时初值,同时可让DQ保持高电平2us L1: CLR P3.7 ;给DQ一个复位低电平 DJNZ R2,L1 ;保持低电平的时间至少为480us SETB P3.7 ;再次拉高DQ释放总线 MOV R2,#25 L2: DJNZ R2,L2 ;保持15us-60us CLR C ORL C,P3.7 ;判断是否收到低脉冲 JC L0 MOV R6,#100 L3: ORL C,P3.7 DJNZ R6,L3 ;存在低脉冲保持保持60us-240us ; JC L0 ;否则继续从头开始,继续判断 SETB P3.7 RET ;调用温度转换函数 GET_TEMP: CLR PSW.4 SETB PSW.3 ;设置工作寄存器当前所在的区域 CLR EA ;使用DS18B20前一定要禁止任何中断 LCALL INT ;初始化DS18B20 MOV A,#0CCH ;送入跳过ROM命令 LCALL WRITE MOV A,#44H ;送入温度转换命令 LCALL WRITE LCALL INT ;温度转换完成,再次初始化18b20 MOV A,#0CCH ;送入跳过ROM命令 LCALL WRITE MOV A,#0BEH ;送入读温度暂存器命令 LCALL WRITE LCALL READ MOV TEMP4,A ;读出温度的低字节存在TEMP4 LCALL READ MOV TEMP5,A ;读出温度的高字节存在TEMP5 SETB EA RET CHULI : MOV A,TEMP5 ;将温度的高字节取出 JNB ACC.7,ZHENG ;判断最高位是否为0,为0则表示温度为正,则转到ZHENG MOV A,TEMP4 ;否则温度为负,将温度的低字节取出

温度传感器实验设计概要

成都理工大学工程 技术学院 单片机课程设计报告 数字温度计设计

摘要 在这个信息化高速发展的时代,单片机作为一种最经典的微控制器,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,作为自动化专业的学生,我们学习了单片机,就应该把它熟练应用到生活之中来。本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。本文设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。 关键词:单片机,数字控制,数码管显示,温度计,DS18B20,AT89S52。

目录 1概述 (4) 1.1设计目的 (4) 1.2设计原理 (4) 1.3设计难点 (4) 2 系统总体方案及硬件设计...................................................... 错误!未定义书签。 2.1数字温度计设计方案论证 (4) 2.2.1 主控制器 (5) 2.4 系统整体硬件电路设计 (7) 3系统软件设计 (8) 3.1初始化程序 (8) 3.2读出温度子程序 (9) 3.3读、写时序子程序 (10) 3.4 温度处理子程序 (11) 3.5 显示程序 (12) 4 Proteus软件仿真 (13) 5硬件实物 (14) 6课程设计体会 (15) 附录1: (14) 附录2: (21)

1概述 1.1设计目的 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,可广泛用于食品库、冷库、粮库、温室大棚等需要控制温度的地方。目前,该产品已在温控系统中得到广泛的应用。 1.2设计原理 本系统是一个基于单片机AT89S52的数字温度计的设计,用来测量环境温度,测量范围为-50℃—110℃度。整个设计系统分为4部分:单片机控制、温度传感器、数码显示以及键盘控制电路。整个设计是以AT89S52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。单片机把采集到的温度进行相应的转换后,使之能够方便地在数码管上输出。LED采用三位一体共阳的数码管。 1.3设计难点此设计的重点在于编程,程序要实现温度的采集、转换、显示和上下限温度报警,其外围电路所用器件较少,相对简单,实现容易。 2 系统总体方案及硬件设计 2.1数字温度计设计方案论证 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 2.2总体设计框图 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用3位共阴LED数码管以串口传送数据实现温度显示。

大学物理实验-温度传感器实验报告

关于温度传感器特性的实验研究 摘要:温度传感器在人们的生活中有重要应用,是现代社会必不可少的东西。本文通过控制变量法,具体研究了三种温度传感器关于温度的特性,发现NTC电阻随温度升高而减小;PTC电阻随温度升高而增大;但两者的线性性都不好。热电偶的温差电动势关于温度有很好的线性性质。PN节作为常用的测温元件,线性性质也较好。本实验还利用PN节测出了波 尔兹曼常量和禁带宽度,与标准值符合的较好。 关键词:定标转化拟合数学软件 EXPERIMENTAL RESEARCH ON THE NATURE OF TEMPERATURE SENSOR 1.引言 温度是一个历史很长的物理量,为了测量它,人们发明了许多方法。温度传感器通过测温元件将温度转化为电学量进行测量,具有反应时间快、可连续测量等优点,因此有必要对其进行一定的研究。作者对三类测温元件进行了研究,分别得出了电阻率、电动势、正向压降随温度变化的关系。 2.热电阻的特性 2.1实验原理 2.1.1Pt100铂电阻的测温原理 和其他金属一样,铂(Pt)的电阻值随温度变化而变化,并且具有很好的重现性和稳定性。利用铂的此种物理特性制成的传感器称为铂电阻温度传感器,通常使用的铂电阻温度传感器零度阻值为100Ω(即Pt100)。铂电阻温度传感器精度高,应用温度范围广,是中低温区(-200℃~650℃)最常用的一种温度检测器,本实验即采用这种铂电阻作为标准测温器件来定标其他温度传感器的温度特性曲线,为此,首先要对铂电阻本身进行定标。 按IEC751国际标准,铂电阻温度系数TCR定义如下: TCR=(R100-R0)/(R0×100) (1.1) 其中R100和R0分别是100℃和0℃时标准电阻值(R100=138.51Ω,R0=100.00Ω),代入上式可得到Pt100的TCR为0.003851。 Pt100铂电阻的阻值随温度变化的计算公式如下: Rt=R0[1+At+B t2+C(t-100)t3] (-200℃

DS18B20温度传感器实验

DS18B20温度传感器实验Proteus仿真原理图: DS18B20内部结构:

/************************* 源程序 ****************************/ #include #include #define uint unsigned int #define uchar unsigned char #define delayNOP() {_nop_();_nop_();_nop_();_nop_();} sbit DQ = P3^3; sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; uchar code Temp_Disp_Title[]={"Current Temp : "}; uchar Current_Temp_Display_Buffer[]={" TEMP: "}; uchar code Temperature_Char[8] = { 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x0 0 }; uchar code df_Table[]= { 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 }; uchar CurrentT = 0; uchar Temp_Value[]={0x00,0x00}; uchar Display_Digit[]={0,0,0,0}; bit DS18B20_IS_OK = 1; void DelayXus(uint x) { uchar i; while(x--) { for(i=0;i<200;i++); } } bit LCD_Busy_Check(){ bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN=0; return result; } void Write_LCD_Command(uchar cmd) { while(LCD_Busy_Check()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

温度传感器实验

DH-SJ5温度传感器设计性实验装置 使 用 说 明 书 杭州大华科教仪器研究所 杭州大华仪器制造有限公司

一、温度传感器概述 温度是表征物体冷热程度的物理量。温度只能通过物体随温度变化的某些特性来间接测量。测温传感器就是将温度信息转换成易于传递和处理的电信号的传感器。 一、测温传感器的分类 1.1电阻式传感器 热电阻式传感器是利用导电物体的电阻率随温度而变化的效应制成的传感器。热电阻是中低温区最常用的一种温度检测器。它的主要特点是测量精度高,性能稳定。它分为金属热电阻和半导体热电阻两大类。金属热电阻的电阻值和温度一般可以用以下的近似关系式表示,即 R t =R t0[1+α (t-t 0)] 式中,R t 为温度t 时的阻值;R t0为温度t 0(通常t 0=0℃)时对应电阻值;α为温度系数。 半导体热敏电阻的阻值和温度关系为 t B t Ae R = 式中R t 为温度为t 时的阻值;A 、B 取决于半导体材料的结构的常数。 常用的热电阻有铂热电阻、热敏电阻和铜热电阻。其中铂电阻的测量精确度是最高的,它不仅广泛应用于工业测温,而且被制成标准的基准仪。 金属铂具有电阻温度系数大,感应灵敏;电阻率高,元件尺寸小;电阻值随温度变化而变化基本呈线性关系;在测温范围内,物理、化学性能稳定,长期复现性好,测量精度高,是目前公认制造热电阻的最好材料。但铂在高温下,易受还原性介质的污染,使铂丝变脆并改变电阻与温度之间的线性关系,因此使用时应装在保护套管中。用铂的此种物理特性制成的传感器称为铂电阻温度传感器,利用铂的此种物理特性制成的传感器称为铂电阻温度传感器,通常使用的铂电阻温度传感器零度阻值为100Ω,电阻变化率为0.3851Ω/℃,TCR=(R 100-R 0)/(R 0×100) ,R 0为0℃的阻值,R 100为100℃的阻值,按IEC751国际标准,温度系数TCR=0.003851,Pt100(R 0=100Ω)、Pt1000(R 0=1000Ω)为统一设计型铂电阻。铂热电阻的特点是物理化学性能稳定。尤其是耐氧化能力强、测量精度高、应用温度范围广,有很好的重现性,是中低温区(-200℃~650℃)最常用的一种温度检测器。 热敏电阻(Thermally Sensitive Resistor,简称为Thermistor),是对温度敏感的电阻的总称,是一种电阻元件,即电阻值随温度变化的电阻。一般分为两种基本类型:负温度系数热敏电阻NTC (Negative Temperature Coefficient )和正温度系数热敏电阻PTC (Positive Temperature Coefficient )。NTC 热敏电阻表现为随温度的上升,其电阻值下降;而PTC 热敏电阻正好相反。 NTC 热敏热电阻大多数是由Mn(锰)、Ni(镍)、Co(钴)、Fe(铁)、Cu(铜)等金属的氧化物经过烧结而成的半导体材料制成。因此,不能在太高的温度场合下使用。不竟然,其使用范围有的也可以达到了-200℃~700℃,但一般的情况下,其通常的使用范围在-100℃~300℃。 NTC 热敏热电阻热响应时间一般跟封装形式、阻值、材料常数(热敏指数)、热时间常数有关。材料常数(热敏指数)B 值反映了两个温度之间的电阻变化,热敏电阻的特性就是由它的大小决定的,B 值(K )被定义为:2 12 1212111lg lg 3026.211ln ln T T R R T T R R B --?=--= ; R T1:温度 T 1(K )时的零功率电阻值;R T2 :温度 T 2(K )时的零功率电阻值;T 1,T 2 :

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

温度传感器实验

温度传感器实验 传感器是将非电信号转换为电信号的装置,因为电信号容易传递和处理。温度是物体冷热程度的标志,温度传感器就是将温度转换成电信号的传感器。 一.测温传感器的分类 电阻式传感器。常用的有铂热电阻、热敏电阻和铜热电阻。其中铂电阻(Pt100)精确度最高,重现性和稳定性很好,不仅应用广泛,而且被制成标准的基准仪。热敏电阻(Thermally Sensitive Resistor,简称Thermistor),是温度敏感的电阻的总称,是属于热电阻的一部分,一般分为负温度系数热敏电阻NTC(Negative Temperature Coefficient)和正温度系数热敏电阻PTC(Positive Temperature Coefficient)。NTC的电阻值随温度的上升而下降;PTC正好相反。 其它传感器。半导体PN结温度传感器,晶体温度传感器,非接触型温度传感器,热电偶温度传感器,光纤温度传感器,液压温度传感器,智能温度传感器。 二.DH-SJ5温度传感器实验装置 DH-SJ5型温度传感实验装置以九孔板为实验平台,包括铂电阻Pt100、热敏电阻(NTC 和PTC)、铜电阻Cu50、铜-康铜热电偶、PN结、AD590和LM35等分离的温度传感器探头,各种电子元件。能提供了多种测温电路和方法。 本装置采用Pt100铂电阻测温,智能温度控制器控温,控温精度高、范围广、可自由设定所需的温度,数字显示;用低电压恒流加热、安全可靠、无污染,加热电流连续可调;分离的温度传感器,形象直观,组合方便,可比较不同传感器的温度特性;降温实验可采用风扇快速降温;整体结构设计新颖,紧凑合理,外型美观大方。 主要技术指标:电源:AC220V±10%(50/60Hz),工作温度0~40℃,相对湿度<80%,无腐蚀性场合,控温范围:室温~120℃,控温精度:±0.2℃,分辨率:0.1℃。 温控仪与恒温炉的连线如图1,Pt100的插头与温控仪上的插座颜色应当对应连接。 图1DH-SJ5温度传感器实验装置 恒温炉上方有六个插孔,可以插一个测温的Pt100和五个待测量的温度传感器。 警告:在做实验中或做完实验后,禁止手触传感器的钢护套,防止烫伤!

MSP430内部温度传感器测试程序

MSP430内部温度传感器测试程序 //MSP430基础实验开发组件 - ADC12内部模块演示程序之内部温度传感器 //时钟设置: ////ACLK = n/a, MCLK = SMCLK = default DCO ~ 800kHz, ADC12CLK = ADC12OSC //当前演示程序功能描述: ////利用MSP430F14X内部的温度传感器,通过ADC12的通道10进行AD转换 ////计算取得摄氏温度和华氏温度,通过断点在View->Watch中观察温度值 ////由于定标问题, 可能会存在温度的误差 #include unsigned int long temp; unsigned int long TemperF; //华氏温度 unsigned int long TemperC; //摄氏温度 void main(void) { WDTCTL = WDTPW + WDTHOLD; //关闭系统看门狗 ADC12CTL0 = SHT0_8 + REFON + ADC12ON; //内部1.5V参考电压,打开ADC12模块,设置采样保持定时器 ADC12CTL1 = SHP; //采使用采样定时器 ADC12MCTL0 = SREF_1 + INCH_10; //参考电压和通道选择 ADC12IE = BIT0; //ADC12MEM0 ADC12CTL0 |= ENC; //允许转换 _BIS_SR(GIE); //开启系统中断 while(1) { ADC12CTL0 |= ADC12SC; //开始采样并AD转换 //oF = ((x/4096)*1500mV)-923mV)*1/1.97mV = x*761/4096 - 468 //IntDegF = (ADC12MEM0 - 2519)* 761/4096 TemperF = (temp - 2519) * 761; TemperF = TemperF / 4096; //简化的华氏温度转换公式

温度传感器报告

温度传感器是指能感受温度并能转换成可用输出信号的传感器。温度是和人类生活环境有着密切关系的一个物理量,是工业过程三大参量(流量、压力、温度)之一,也是国际单位制(SI)中七个基本物理量之一。温度测量是一个经典而又古老的话题,很久以来,这方面己有多种测温元件和传感器得到普及,但是直到今天,为了适应各工业部门、科学研究、医疗、家用电器等方面的广泛要求,仍在不断研发新型测温元件和传感器、新的测温方法、新的测温材料、新的市场应用。要准确地测量温度也非易事,如测温元件选择不当、测量方法不宜,均不能得到满意结果。 据有关部门统计,2009年我国传感器的销售额为327亿元人民币,其中温度传感器占整个传感器市场的14%,主要应用于通信电子产品、家用电器、楼宇自动化、医疗设备、仪器仪表、汽车电子等领域。 温度传感器的特点 作为一个理想的温度传感器,应该具备以下要求:测量围广、精度高、可靠性好、时漂小、重量轻、响应快、价格低、能批量生产等。但同时满足上述条件的温度传感器是不存在的,应根据应用现场灵活使用各种温度传感器。这是因为不同的温度传感器具有不同的特点。 ● 不同的温度传感器测量围和特点是不同的。 几种重要类型的温度传感器的温度测量围和特点,如表1所示。 ● 测温的准确度与测量方法有关。 根据温度传感器的使用方法,通常分为接触测量和非接触测量两类,两种测量方法的特点如 ● 不同的测温元件应采用不同的测量电路。 通常采用的测量电路有三种。“电阻式测温元件测量电路”,该测量电路要考虑消除非线性误差和热电阻导线对测量准确度的影响。“电势型测温元件测量电路”,该电路需考虑线性化和冷端补偿,信号处理电路较热电阻的复杂。“电流型测温元件测量电路”,半导体集成温度传感器是最典型的电流型温度测量元件,当电源电压变化、外接导线变化时,该电路输出电流基本不受影响,非常适合远距离测温。 温度测量的最新进展 ● 研制适应各种工业应用的测温元件和温度传感器。 铂薄膜温度传感器膜厚1μm,可置于极小的测量空间,作温度场分布测量,响应时间不超过1ms,偶丝最小直径25μm,热偶体积小于1×10-4mm3,质量小于1μg。 多色比色温度传感器能实时求出被测物体发射率的近似值,提高辐射测温的精

DS1621温度传感器实验

/*************** writer:shopping.w ******************/ #include #include #define uint unsigned int #define uchar unsigned char bit I2C_Busy, NO_Ack,Bus_Fault,point; uchar bdata a; sbit LSB = a^0; sbit MSB = a^7; sbit SDA = P3^3; sbit SCL = P3^2; uchar Array[] = {'0','1','2','3','4','5','6','7','8','9'}; uchar command_data[]= { 0xac,0x00,0xee,0xa1,0x00,0x00,0xa2,0x00,0x00,0xaa }; uchar Prompt[]="Waiting for a while...\r"; uchar i; void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } void SendStop() { SDA = 0; SCL = 1; _nop_(); SDA = 1; I2C_Busy = 0; } void SendByte(uchar wd) { uchar i; a = wd; for(i=0;i<8;i++) { SCL = 0; _nop_(); _nop_(); SDA = MSB;

温度传感器报告

温度传感器报告

温度传感器是指能感受温度并能转换成可用输出信号的传感器。温度是和人类生活环境有着密切关系的一个物理量,是工业过程三大参量(流量、压力、温度)之一,也是国际单位制(SI)中七个基本物理量之一。温度测量是一个经典而又古老的话题,很久以来,这方面己有多种测温元件和传感器得到普及,但是直到今天,为了适应各工业部门、科学研究、医疗、家用电器等方面的广泛要求,仍在不断研发新型测温元件和传感器、新的测温方法、新的测温材料、新的市场应用。要准确地测量温度也非易事,如测温元件选择不当、测量方法不宜,均不能得到满意结果。 据有关部门统计,2009年我国传感器的销售额为327亿元人民币,其中温度传感器占整个传感器市场的14%,主要应用于通信电子产品、家用电器、楼宇自动化、医疗设备、仪器仪表、汽车电子等领域。 温度传感器的特点 作为一个理想的温度传感器,应该具备以下要求:测量范围广、精度高、可靠性好、时漂小、重量轻、响应快、价格低、能批量生产等。但同时满足上述条件的温度传感器是不存在的,应根据应用现场灵活使用各种温度传感器。这是因为不同的温度传感器具有不同的特点。 ● 不同的温度传感器测量范围和特点是不同的。 几种重要类型的温度传感器的温度测量范围和特点,如表1所示。 ● 测温的准确度与测量方法有关。 根据温度传感器的使用方法,通常分为接触测量和非接触测量两类,两种测量方法的特点如 ● 不同的测温元件应采用不同的测量电路。 通常采用的测量电路有三种。“电阻式测温元件测量电路”,该测量电路要考虑消除非线性误差和热电阻导线对测量准确度的影响。“电势型测温元件测量电路”,该电路需考虑线性化和冷端补偿,信号处理电路较热电阻的复杂。“电流型测温元件测量电路”,半导体集成温度传感器是最典型的电流型温度测量元件,当电源电压变化、外接导线变化时,该电路输出电流基本不受影响,非常适合远距离测温。 温度测量的最新进展 ● 研制适应各种工业应用的测温元件和温度传感器。 铂薄膜温度传感器膜厚1μm,可置于极小的测量空间,作温度场分布测量,响应时间不超过1ms,偶丝最小直径25μm,热偶体积小于1×10-4mm3,质量小于1μg。 多色比色温度传感器能实时求出被测物体发射率的近似值,提高辐射测温的精

温度传感器实验

实验二(2)温度传感器实验 实验时间 实验编号 无 同组同学 邓奡 一、实验目的 1、了解各种温度传感器(热电偶、铂热电阻、PN 结温敏二极管、半导体热敏电阻、集成温度传感器)的测温原理; 2、掌握热电偶的冷端补偿原理; 3、掌握热电偶的标定过程; 4、了解各种温度传感器的性能特点并比较上述几种传感器的性能。 二、实验原理 1、热电偶测温原理 由两根不同质的导体熔接而成的,其形成的闭合回路叫做热电回路,当两端处于不同温度时回路产生一定的电流,这表明电路中有电势产生,此电势即为热电势。 试验中使用两种热电偶:镍铬—镍硅(K 分度)、镍铬—铜镍(E 分度)。图所示为热电偶的工作原理,图中:T 为热端,0T 为冷端,热电势为 )()(0T E T E E AB AB t -=。

热电偶冷端温度不为0℃时(下式中的1T ),需对所测热电势进行修正,修正公式为:),(),(),(0110T T E T T E T T E +=,即: 实际电动势+测量所得电动势+温度修正电势 对热电偶进行标定时,以K 分度热电偶作为标准热电偶来校准E 分度热电偶。 2、铂热电阻 铂热电阻的阻值与温度的关系近似线性,当温度在C 650T C 0?≤≤?时, )1(20BT AT R R T ++=, 式中:T R ——铂热电阻在T ℃时的电阻值 0R ——铂热电阻在0℃时的电阻值 A ——系数(=C ??/103.96847-31) B ——系数(=C ??/105.847--71) 3、PN 结温敏二极管

半导体PN 结具有良好的温度线性,PN 结特性表达公式为: γln be e kT U = ?, 式中,γ为与PN 结结构相关的常数; k 为波尔兹曼常数,K J /1038.1k 23-?=; e 为电子电荷量,C 1910602.1e -?=; T 为被测物体的热力学温度(K )。 当一个PN 结制成后,当其正向电流保持不变时,PN 结正向压降随温度的变化近似于线性,大约以2mV/℃的斜率随温度下降,利用PN 结的这一特性可以进行温度的测量。 4、热敏电阻 热敏电阻是利用半导体的电阻值随温度升高而急剧下降这一特性制成的热敏元件,灵敏度高,可以测量小于℃的温差变化。 热敏电阻分为正温度系数热敏电阻PTC 、负温度系数热敏电阻NTC 和在某一特定温度下电阻值发生突然变化的临界温度电阻器CTR 。 实验中使用NTC ,热敏电阻的阻值与温度的关系近似符合指数规律,为: )11(00 e T T B t R R -=。式中: T 为被测温度(K),16.273t +=T 0T 为参考温度(K),16.27300+=t T T R 为温度T 时热敏电阻的阻值 0R 为温度0T 时热敏电阻的阻值

温度传感器实验报告

温度传感器实验 姓名学号 一、目的 1、了解各种温度传感器(热电偶、铂热电阻、PN 结温敏二极管、半导体热敏电阻、集成温度传感器)的测温原理; 2、掌握热电偶的冷端补偿原理; 3、掌握热电偶的标定过程; 4、了解各种温度传感器的性能特点并比较上述几种传感器的性能。 二、仪器 温度传感器实验模块 热电偶(K 型、E 型) CSY2001B 型传感器系统综合实验台(以下简称主机) 温控电加热炉 连接电缆 万用表:VC9804A,附表笔及测温探头 万用表:VC9806,附表笔 三、原理 (1)热电偶测温原理 由两根不同质的导体熔接而成的闭合回路叫做热电回路,当其两端处于不同温度时则回路中产生一定的电流,这表明电路中有电势产生,此电势即为热电势。

图1中T 为热端,To 为冷端,热电势 本实验中选用两种热电偶镍铬—镍硅(K 分度)和镍铬—铜镍(E 分度)。 (2)热电偶标定 以K 分度热电偶作为标准热电偶来校准E 分度热电偶,被校热电偶热电势与标准热电偶热电势的误差为 式中:——被校热电偶在标定点温度下测得的热电势平均值。 ——标准热电偶在标定点温度下测得的热电势平均值。 ——标准热电偶分度表上标定温度的热电势值。

——被校热电偶标定温度下分度表上的热电势值。 ——标准热电偶的微分热电势。 (3)热电偶冷端补偿 热电偶冷端温度不为0℃时,需对所测热电势值进行修正,修正公式为: E(T,To)=E(T,t1)+E(T1,T0) 即:实际电动势=测量所得电势+温度修正电势 (4)铂热电阻 铂热电阻的阻值与温度的关系近似线性,当温度在0℃≤T≤650℃时, 式中:——铂热电阻T℃时的电阻值 ——铂热电阻在0℃时的电阻值 A——系数(=3.96847×10-31/℃) B——系数(=-5.847×10-71/℃2) 将铂热电阻作为桥路中的一部分在温度变化时电桥失衡便可测得相应电路的输出电压变化值。 (5)PN结温敏二极管 半导体PN 结具有良好的温度线性,根据PN 结特性表达公式 可知,当一个PN 结制成后,其反向饱和电流基本上只与温度有关,温度每升高一度,PN 结正向压降就下降2mv,利用PN 结的这一特性可以测得温度的变化。 (6)热敏电阻 热敏电阻是利用半导体的电阻值随温度升高而急剧下降这一特性制成的热敏元件。它呈负温度特性,灵敏度高,可以测量小于0.01℃的温差变化。图2为金属铂热电阻与热敏电阻温度曲线的比较。

实验五 温度传感器实验

实验五:温度传感器实验 一、实验目的 1.熟练掌握proteus,keil等软件的使用。 2.掌握单片机下载程序的使用。 3.熟悉单片机开发板原理图,了解各接口的作用。 4.掌握DS18B20读写时序的编程方法。 二、实验器材 单片机开发板 1块 电脑 1台 温度传感芯片ds18b20 1块 串口数据线 1根 三、实验原理 1.DS18B20 一线总线温度传感器 工作原理:本实验通过DS18B20采集环境温度,当单片 机检测到DSl820的存在便可以发出ROM操作命令之一, Read ROM(读ROM) Match ROM(匹配ROM) Skip ROM(跳过ROM) Search ROM(搜索ROM) Alarm search(告警搜索) 然后对发存储器操作命令对 DS18B20进行读写数据转换等操作。单片机使用时间隙 (time slots)来读写DSl820的数据位和写命令字的位,然后将读到的数据转换BCD码在数码管显示出来。 本实验通过DS18B20采集环境温度,当单片机检测到DSl820的存在便可以发出ROM 操作命令,然后存储器操作命令对DS18B20进行读写数据、转换等操作。单片机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位,然后将读到的数据转换为BCD码在数码管显示出来,于是我们就可以在数码管上读取环境的温度了。 四实验过程 1.打开keil,直接在keil的环境下编写C源代码(或者汇编代码),编译无错误后,然后生成hex文件。如下图所示:

2.然后用proteus 打开仿真图,双击单片机,再点击文件样式的小图标,将生成的hex 文件加载到单片机,如下图所示:

(完整word版)STM32的485最简单例程

485最基本的半双工通信配置 采用STM32F103ZET6串口3连接485芯片通信口,485芯片的A,B通过485转串口模块与电脑相连,完成在串口软件上输入输出功能。 串口3,配置函数: void USART3_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); // USART3_TX -> PB10 , USART3_RX ->PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); USART_https://www.360docs.net/doc/8e3246349.html,ART_BaudRate = 115200; // 1200; USART_https://www.360docs.net/doc/8e3246349.html,ART_WordLength = USART_WordLength_8b; USART_https://www.360docs.net/doc/8e3246349.html,ART_StopBits = USART_StopBits_1; USART_https://www.360docs.net/doc/8e3246349.html,ART_Parity = USART_Parity_No; //USART_Parity_Even; USART_https://www.360docs.net/doc/8e3246349.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_https://www.360docs.net/doc/8e3246349.html,ART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef PDU_USART3_DMA

相关文档
最新文档