当前位置: 首页 > news >正文

广州 网站定制最有吸引力的营销模式

广州 网站定制,最有吸引力的营销模式,响应式官方网站,厦门网站制作公司找哪家有时候我们需要检测一些无法直接接触的器件的温度。为了实现这一需求#xff0c;我们通常会选择红外温度传感器来实现这一功能。考虑到复用的问题#xff0c;我们一般会将操作元器件的代码抽象为驱动函数以备调用。这里我们就来设计并实现TSEV01CL55红外温度传感器的驱动。 …有时候我们需要检测一些无法直接接触的器件的温度。为了实现这一需求我们通常会选择红外温度传感器来实现这一功能。考虑到复用的问题我们一般会将操作元器件的代码抽象为驱动函数以备调用。这里我们就来设计并实现TSEV01CL55红外温度传感器的驱动。 1、功能概述 TSEV01CL55是一种基于红外辐射检测的无接触测温系统。TSEV01CL55在前端装有红外传感器(热电堆)。 1.1、硬件描述 TSEV01CL55适用于需要非接触式温度测量的广泛应用场合。TSEV01CL55红外温度传感器测温时热堆传感器必须指向所要测量的目标对象。TSEV01CL55红外温度传感器的引脚定义如下 TSEV01CL55红外温度传感器测温基本工作原理是用热电堆传感器探测红外辐射该传感器将入射辐射转换成模拟电压用热敏电阻测定传感器温度。根据测到的目标温度和环境温度数据进一步的进行模拟信号处理和调理使用处理单元计算环境温度和物体温度。 1.2、通讯接口 TSEV01CL55红外温度传感器对外通讯采用数字输出总线(I2C)。通过I2C总线和响应的操作命令就可以得到物体温度和环境温度数据。这两个值都是以百分之一的度数传输的。相关的操作命令如下 TSEV01CL55红外温度传感器测温有一定的范围限制当环境或物体温度超过指定温度范围时温度输出显示以下数据 TSEV01CL55红外温度传感器的I2C硬件模块在SCL“锁存”问题上进行了更改。修改后的I2C模块不再下拉SCL命令主程序等待数据的计算。因此主设备必须增加等待时间以确保从设备能够组织数据。对于标准数据传输(比如读取温度)1ms的时间足够从设备组织数据。对于需要更多时间的操作(如读取/写入EEPROM)应该留取足够的时间等待从设备处理数据。 向TSEV01CL55红外温度传感器写命令时序如下 从TSEV01CL55红外温度传感器读数据时序如下 上述时序图是读取目标温度的时序图。其它数据的读写过程类似在此不再赘述。 2、驱动设计与实现 我们已经了解了TSEV01CL55红外温度传感器的基本情况。接下来我们将设计并实现TSEV01CL55红外温度传感器的通用驱动程序。 2.1、对象定义 在使用一个对象之前我们需要获得一个对象。同样的我们想要TSEV01CL55红外温度传感器对象就需要先定义TSEV01CL55红外温度传感器的对象。如何得到TSEV01CL55红外温度传感器的对象呢接下来我们就来考虑这个问题。 2.1.1、对象的抽象 我们要得到TSEV01CL55红外温度传感器对象需要先分析器基本特性。一般来说一个对象至少包含两方面的特性属性与操作。接下来我们就来从这两个方面思考一下TSEV01CL55红外温度传感器的对象。 先来考虑属性作为属性肯定是用于标识或记录对象特征的东西。我们来考虑TSEV01CL55红外温度传感器对象属性。作为I2C通讯从设备在总线上唯一区别不同设备的就是设备地址。所以我们将I2C设备地址作为对象的一个属性。TSEV01CL55红外温度传感器所检测的环境温度和目标温度虽然不能唯一标识TSEV01CL55红外温度传感器对象但可以记录当前的状态所以我们将其作为对象的属性。 接着我们还需要考虑TSEV01CL55红外温度传感器对象的操作问题。对于I2C通讯设备我们需要向设备写命令同时也要从设备接收数据但不论是接收数据还是发送命令都依赖于硬件接口和相关的硬件平台所以我们将写命令和收数据作为TSEV01CL55红外温度传感器对象的两个操作。此外操作过程中我们需要时序操作而延时操作都依赖于具体的平台所以我们将延时操作作为TSEV01CL55红外温度传感器对象的一个操作。 根据上述我们对TSEV01CL55红外温度传感器的分析我们可以定义TSEV01CL55红外温度传感器的对象类型如下 //定义TSEV01CL55红外温度传感器对象类型 typedef struct HLPTObject{uint8_t devAddress;           //对象的地址float tempObject;             //对象温度值float tempAmbient;            //环境温度void (*Delayms)(volatile uint32_t nTime);       //延时操作指针void (*Receive)(struct HLPTObject *hlptuint8_t *rDatauint16_t rSize);          //接收数据操作指针void (*Transmit)(struct HLPTObject *hlptuint8_t *wDatauint16_t wSize);        //发送数据操作指针 }HLPTObjectType; 2.1.2、对象初始化 我们知道一个对象仅作声明是不能使用的我们需要先对其进行初始化所以这里我们来考虑TSEV01CL55红外温度传感器对象的初始化函数。一般来说初始化函数需要处理几个方面的问题。一是检查输入参数是否合理二是为对象的属性赋初值三是对对象作必要的初始化配置。据此我们设计TSEV01CL55红外温度传感器对象的初始化函数如下 /* 红外温度传感器对象初始化 */ void HLPTInitialization(HLPTObjectType *hlpt         //初始化的对象变量uint8_t address              //设备I2C地址HLPTReceive receive          //接收函数指针HLPTTransmit transmit  //发送函数指针HLPTDelayms delayms            //毫秒延时函数指针) {if((hlptNULL)||(receiveNULL)||(transmitNULL)||(delaymsNULL)){return;}hlpt-Receivereceive;hlpt-Transmittransmit;hlpt-Delaymsdelayms;hlpt-tempObject0.0;hlpt-tempAmbient0.0;if(address0x00){hlpt-devAddressaddress;}else{hlpt-devAddressHLPTSlaveAddress;} } 2.2、对象操作 我们已经完成了TSEV01CL55红外温度传感器对象类型的定义和对象初始化函数的设计。但我们的主要目标是获取对象的信息接下来我们还要实现面向TSEV01CL55红外温度传感器的各类操作。 面向TSEV01CL55红外温度传感器的操作比较简单最主要的就是读取温度数据包括环境温度和目标温度。所以我们开发获取面向TSEV01CL55红外温度传感器数据的操作如下 /* 读取数据 */ static uint16_t ReadDataFromHLPT(HLPTObjectType *hlptuint8_t cmd) {uint8_t data[2];uint16_t tempCode;hlpt-Transmit(hlptcmd1);hlpt-Delayms(1);hlpt-Receive(hlptdata2);tempCode(data[0]8)data[1];return tempCode; } 3、驱动的使用 我们已经设计并实现了TSEV01CL55红外温度传感器的驱动程序接下来我们将考虑设计一个简单的应用来验证这一驱动。 3.1、声明并初始化对象 使用基于对象的操作我们需要先得到这个对象所以我们先要使用前面定义的TSEV01CL55红外温度传感器对象类型声明一个TSEV01CL55红外温度传感器对象变量具体操作格式如下 HLPTObjectType hlpt; 声明了这个对象变量并不能立即使用我们还需要使用驱动中定义的初始化函数对这个变量进行初始化。这个初始化函数所需要的输入参数如下 HLPTObjectType *hlpt初始化的对象变量 uint8_t address设备I2C地址 HLPTReceive receive接收函数指针 HLPTTransmit transmit发送函数指针 HLPTDelayms delayms毫秒延时函数指针 对于这些参数对象变量我们已经定义了。而设备地址根据实际情况输入就好了。主要的是我们需要定义几个函数并将函数指针作为参数。这几个函数的类型如下 /*延时操作指针类型*/ typedef void (*HLPTDelayms)(volatile uint32_t nTime);/*接收数据操作指针类型*/ typedef void (*HLPTReceive)(struct HLPTObject *hlptuint8_t *rDatauint16_t rSize);/*发送数据操作指针类型*/ typedef void (*HLPTTransmit)(struct HLPTObject *hlptuint8_t *wDatauint16_t wSize);对于这几个函数我们根据样式定义就可以了具体的操作可能与使用的硬件平台有关系。具体函数定义如下 /*从TSEV01CL55接收数据*/ static void ReceiveFromHLPT(HLPTObjectType *shtuint8_t *rDatauint16_t rSize) {HAL_I2C_Master_Receive(hlpti2c sht-devAddressrData rSize 1000); }/*向TSEV01CL55传送数据*/ static void TransmitToHLPT(HLPTObjectType *shtuint8_t *tDatauint16_t tSize) {HAL_I2C_Master_Transmit(hlpti2csht-devAddresstDatatSize1000); } 对于延时函数我们可以采用各种方法实现。我们采用的STM32平台和HAL库则可以直接使用HAL_Delay()函数。于是我们可以调用初始化函数如下 HLPTInitialization(hlpt0x54ReceiveFromHLPTTransmitToHLPTHAL_Delay); 3.2、基于对象进行操作 我们定义了对象变量并使用初始化函数给其作了初始化。接着我们就来考虑操作这一对象获取我们想要的数据。我们在驱动中已经将获取数据并转换为转换值的比例值接下来我们使用这一驱动开发我们的应用实例。 /*读取温度值*/ void GetTemperatureData(void) {float tempObject;float tempAmbient;GetHLPTemperature(hlpt);tempObjecthlpt.tempObject;tempAmbienthlpt.tempAmbient; } 4、应用总结 我们实现了TSEV01CL55红外温度传感器的驱动并再次基础上设计了一个简单的验证应用。我们得到了目标温度和环境温度。这说明我们的驱动设计是成功的。 在使用驱动时我们需要注意与TSEV01CL55红外温度传感器的I2C通讯会出现锁死的情况特别是使用硬件I2C收发器的时候。而且TSEV01CL55红外温度传感器不会在数据准备好后下拉SCL电平所以读取数据时需要给以足够的延时来保证数据准备就绪。 在使用TSEV01CL55红外温度传感器的驱动时还应注意TSEV01CL55红外温度传感器有一个固定的地址0x54在初始化时输入此地址若不给定这个地址就会以广播的方式通讯。 欢迎关注
http://www.zqtcl.cn/news/466862/

相关文章:

  • 建设 互动 网站 模式网络营销模式不是孤立存在的
  • 怡梦姗网站做么上海21世纪人才网官网登录
  • 家政网站建设方案分析哈尔滨做网站找哪家好
  • 如何建设论坛网站营销宣传策划方案
  • 企业网站推广排名技术网
  • 网站建设网页设计培训学校延边网站建设
  • 自己做网站需要的技术个人简历表格下载
  • 做网站建设小程序ukidc做电影网站
  • 网站内容分析软文范例100字
  • 网站建站策划用vs做网站
  • 如何建自己的网站做农村电子商务的网站有哪些内容
  • 手机销售网站设计怎么推广软件让别人下载
  • 贵州三蒲建设工程有限公司网站莱阳网站制作
  • 外贸买家网站适合初学者模仿的网站
  • 安徽蚌埠怀远县建设局网站米卓网站建设
  • 网站框架怎么建设微信旧版本下载
  • 速贝网站友情链接怎么做企业网站开发的设计流程
  • 网站建设 安庆网站开发免责合同
  • 天津深圳网站开发定制网络工程考研方向
  • 做app网站的公司哪家好济南网站建设市场
  • 自己做网站页面网站国内空间和国外空间
  • 桂城网站制作公司asp.net jsp 网站
  • 太原免费静态网页制作网站如何搭建钓鱼网站
  • 英语门户网站织梦源码修改wordpress登录页面
  • 网络建设和网站建设网站快速收录提交
  • 免费的建设网站软件北京电力交易中心谢开
  • 建设一个网站需要提供什么手续好看的美食网站设计
  • 西宁网站seo公司网站建设和维护释义
  • 建站平台有哪些免费一键搭建网站wordpress ent 主题
  • 国内比较大的源码网站营销型网站与普通网站的区别