STM32单片机仿真开发实例 课件 6.4 数字式远程温度传感器的设计_第1页
STM32单片机仿真开发实例 课件 6.4 数字式远程温度传感器的设计_第2页
STM32单片机仿真开发实例 课件 6.4 数字式远程温度传感器的设计_第3页
STM32单片机仿真开发实例 课件 6.4 数字式远程温度传感器的设计_第4页
STM32单片机仿真开发实例 课件 6.4 数字式远程温度传感器的设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.4数字式远程温度传感器的设计能力目标:

认知工业自动化产品中的数字式远程温度传感器,在理解的基础上掌握其主要功能,并完成产品主要功能的设计。任务要求:

绘制数字式远程温度传感器的仿真电路,并完成STM32单片机程序的设计,要求实现如下功能:(1)能检测0~40℃之间的温度变化,分辨率1℃;(2)具备串口通信功能,支持Modbus_RTU通信协议。6.4.1远程温度传感器简介顾名思义,远程温度传感器就是具备远程数据传送能力的温度传感器。

本次任务,我们将设计一款利用热敏电阻与ADC检测温度,并利用RS-485网络传送温度值的远程温度传感器。6.4.2热敏电阻

热敏电阻,顾名思义是一种对温度敏感的特殊电阻元件,分为如下两类:

PTC(PositiveTemperatureCoefficient,正温度系数)电阻②NTC(NegativeTemperatureCoefficient,负温度系数)电阻PTC特征曲线NTC特征曲线(

(✔)NTC电阻的温度和阻值之间的计算关系为:式中:

t——随机温度值(单位℃);

Rt——与温度t对应的阻值(单位Ω);

(t0,R0)——曲线上t0=25℃时的电阻阻值;

B——热敏指数。

温度转换算法:

可由以下三步进行推算:

(由D计算Ut)

(由Ut计算Rt)

(由Rt计算t)

实际上STM32的CPU没有这么强的计算能力,最后一步的对数运算必须借助于“泰勒级数”展开计算,运算效率太低,必须借助于“①查表法”+“②分段线性化”。

①查表法

由以下计算式,推算若干特征点数值②分段线性化

利用“分段线性化”来减轻CPU的计算负担,但误差不可避免。

t-Rt关系Rt

-D关系t-D关系6.4.3DMA与ADC

DMA(DirectMemoryAccess,直接存储器访问)技术的作用在于提供外设与存储器或者存储器之间的高速数据传递,这一过程不经过CPU干预。DMA支持的外设包括通用和高级定时器、ADC、SPI、I2C和USART,等等。

以ADC为例,比较阻塞方式、中断方式、DMA方式三者间的区别:

显然,DMA方式效率最高,ADC的转换和存储过程完全不需要CPU干预,程序对于ADC转换的结果随用随取。工作方式阻塞方式中断方式DMA方式CPU占用时间从开始转换,直到转换完毕,全程占用CPU转换过程不占用CPU,直到转换完毕才请求CPU处理转换结果转换过程不占用CPU,转换结果自动存入指定内存片段,全程不占用CPU6.4.4Modbus_RTU通信协议补充

本次任务将要用到的功能码是“读(多个)寄存器”。“读寄存器”指令,完整的指令格式如表所示。说明:◆地址域,由1个字节构成,即Modbus从站地址,范围0~247(248~255保留);◆起始地址,由2个字节构成,即第一个寄存器的地址,地址范围为0x0000~0xFFFF;

◆寄存器数量,由2个字节构成,即从第一个寄存器开始连续若干个寄存器,,范围1~2000;◆校验码,由2个字节构成,即CRC校验码;◆字节数,由1个字节构成,即寄存器数值占用的字节个数(N),注意寄存器长度是2个字节;

◆寄存器数值,由N个字节构成,是寄存器数量的2倍。主站命令:地址域功能码0x03起始地址H起始地址L寄存器数量H寄存器数量L校验码H校验码L从站响应:地址域功能码0x03字节数寄存器数值(N个字节)校验码H校验码L

下面是“读寄存器”108~110(Hex:006BH~006DH)的实例:

其中:

最后获取的寄存器108~110的值分别是:022BH、0、0064H。注意,这里不是从006CH~006EH6.4.5仿真电路的绘制6.4.6任务程序的编写首先确立ADC转换的数字量与温度值之间的关系,由仿真电路可知NTC电阻阻值Rt与ADC读取数字量D之间的关系:式中,Dmax为数字量最大值,当ADC设定为右对齐时,Dmax取0FFFH,当ADC设定为左对齐时,Dmax取FFF0H。电路元器件参数取值如右图所示。

借助于Excel建立t-Rt计算关系及Rt-D计算关系,最终得到t-D计算关系,如图。

计算得到0~40℃之间每隔1℃的温度值t对应的数字量D,如图。当ADC转换结果D介于两个特征值之间时,比如D2<D≤D1时,由公式这里使用了“分段线性化”的算法来简化计算,从而减轻CPU的负担。

右图中t为D值实际对应的温度值,t’为“分段线性化”之后计算得到的温度值,显然两者之间有偏差,但只要样点取值越密集,两者之间的偏差就会越小。

具体可采用:(1)ADC的阻塞编程法(现场操作演示…)(2)ADC的DMA编程法DMA参数设定如下图所示。本次任务涉及到的与DMA相关的API函数是:HAL_ADC_Start_DMA

启动ADC函数(带DMA)(手册上没有注明形参和返回值,补充一下)形参

•hadc:ADC句柄,例如&hadc1、&hadc2,等;

•pData:转换结果缓冲,实际上就是用于存放ADC转换结果的数组;

•Length:转换结果缓冲数据长度,实际上就是用于存放ADC转换结

果的数组的长度。返回值

•HAL_StatusTypeDef:状态,例如HAL_OK、HAL_ERROR、

HAL_BUSY、HAL_TIMEOUT,不常用。例程://启动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论