面向AWorks框架和接口编程温度检测模块的软件详细资料概述

电子说

1.2w人已加入

描述

本文导读

AWorks作为一个物联网生态系统,底层需要大量的信号(温度、电压、电流……)采集模块,以实现对外部世界的感知。为此,ZLG致远电子自主研发了一系列硬件模块,本文介绍了其中的TPS0xR/T系列温度检测模块和EMM400x系列能效检测模块。本文为《面向AWorks框架和接口的编程(上)》第三部分软件篇——第14章——第1~2小节:温度检测模块——TPS0xR/T和能效检测模块EMM400x。

本章导读

AWorks平台作为IoT物联网生态系统,底层需要大量的基础硬件模块,以实现对外部世界的感知,如温度的采集、电压和电流的采集等等。为此,经过长期的调研、分析和开发,ZLG推出了一系列完全自主研发的通用模块,主要有:温度检测模块、能效检测模块、信号调理模块等。在实际应用中,这些信号采集模块都需要通过某种接口(例如: I²C、SPI、UART等)与控制器相连,当应用使用的模块过多时,MCU控制器本身提供的接口可能不够,基于此,ZLG还推出了一系列接口扩展模块,可以实现对MCU接口的扩展。

为了便于使用,使用户可以快速将模块应用到实际项目中。ZLG推出的一系列模块都提供了对应的AWorks驱动,使用户可以跳过从寄存器开始开发的步骤,直接基于接口使用这些模块。各类模块的使用方法类似,因而仅从每一类模块中选择一个典型模块进行介绍,它们的型号分别为:TPS02R(温度检测模块)、EMM400(能效检测模块)、TPS08U(信号调理模块)和

RTM11AT(接口扩展模块)。

14.1  温度检测模块——TPS0xR/T

TPS0xR/T系列温度检测模块是ZLG致远电子精心设计的隔离温度测量模块。TPS0xR/T包含了一系列型号,型号主要根据通道数目、通信接口(I²C或SPI)以及支持的传感器类型(PT100热电阻或热电偶)进行划分,选型表详见表14.1。

表14.1 TPS0xR/T系列热电阻、热电偶温度检测模块

接口编程

表14.2 TPS0xT测温范围和精度与热电偶类型的关系

接口编程

在AWorks中,TPS0xR/T系列模块的使用方法都是类似的,本节将以TPS02R模块为例,讲解该系列温度检测模块在AWorks中的使用方法。

14.1.1  TPS02R简介

TPS02R模块是一款隔离热电阻温度测量模块。只需接入 PT100 热电阻,即可完成温度的采集,采用标准I²C接口直接输出以℃为单位的温度数据。模块内置电气隔离,保障测量结果不受干扰。采用超小的体积设计,更易于集成到各种测温设备中。

1.  产品特性

TPS02R主要有以下特性:

两通道 PT100 热电阻测量,I²C通信接口;

-200℃ ~ 850℃测温范围;

0.01℃测温分辨率,±(0.02%+0.1℃)测温误差;

隔离耐压 2500VRMS;

工作环境 -40℃ ~ +85℃;

3.3V 供电电压;

温度报警输出;

隔离耐压 2500VRMS。

2.  引脚分布

TPS02R具有12个外部引脚,其引脚定义见图14.1,引脚功能描述见表14.3。

接口编程

图14.1 TPS02R引脚图

表14.3 TPS02R引脚功能表 

接口编程

TPS02R的通信接口为标准的I²C接口,主控芯片可以通过I²C总线读取两路通道的温度值。需要特别注意的是,A0(#5)引脚决定了该模块的7位I²C从机地址。若该引脚接地,则从机地址为0x48;若该引脚连接到VCC或者直接悬空,则从机的地址为0x49。

TPS02R的ALERT引脚为报警信号输出引脚,ALERT引脚可以与一路温度值关联,当该路温度状态异常时(超过上限或低于下限温度值时)报警,以及时通知主控进行处理。

3.  应用电路

TPS02R为两通道的热电阻测量模块,其中RA1、RB1和RC1为通道1的接口,RA2、RB2和RC2为通道2的接口。若用户只用一个通道,比如通道1,则仅需将通道1的相关引脚(RA1、RB1和RC1)与一路三线制热电阻 PT100 相连。对于未使用到的通道2,为了避免影响到通道1的采集,应将RA2、RB2和RC2这三个引脚短接起来,详见图14.2(a)。也可以使用通道2,而不使用通道1,详见图14.2(b)。

接口编程

图14.2 单路测温电路

若用户使用两路通道,则相应的应用电路详见图14.3。该电路为典型的双路测温电路,其中,将RA1、RB1和RC1与一路三线制热电阻 PT100 相连; 同时将RA2、RB2和RC2与另一路三线制热电阻 PT100 相连。

注意,在各个典型应用电路中,A0引脚均直接接地,因此,模块的7位I²C从机地址地址为0x48。

接口编程

图14.3 双路测温电路

14.1.2  添加TPS02R硬件设备

通过对AWbus-lite的介绍可知,在AWorks中,所有硬件设备均由AWbus-lite统一管理,在使用某一硬件设备前,必须在硬件设备列表(详见程序清单12.1)中添加该硬件设备。一个硬件设备由struct awbl_devhcf类型的结构体常量进行描述。回顾该类型的定义,详见程序清单14.1。

程序清单14.1 struct awbl_devhcf类型定义(awbus_lite.h)

接口编程

1.  设备名

设备名往往与驱动名一致,TPS02R的驱动名在对应的驱动头文件(awbl_tps02r.h)中定义,详见程序清单14.2。

程序清单14.2 TPS02R驱动名定义(awbl_tps02r.h)

接口编程

基于此,设备名应为:AWBL_TPS02R_NAME。

2. 设备单元号

设备单元号用于区分系统中几个相同的硬件设备,它们的设备名一样,复用同一份驱动。若当前系统仅使用了一个TPS02R模块,则设置为0即可。

3.  设备父总线的类型

TPS02R的通信接口为I²C,是一种I²C从机器件,其对应的父总线类型为:AWBL_BUSID_I²C。

4.  设备父总线的编号

设备父总线的编号取决于实际硬件中TPS02R的I²C接口与哪条I²C总线相连,每条I²C总线对应的编号在aw_prj_params.h文件中定义,例如,在i.MX28x硬件平台中,默认有3条I²C总线:硬件I²C0、I²C1和GPIO模拟I²C,它们对应的总线编号分别为0、1、2。详见程序清单14.3。

程序清单 14.3  I²C总线编号定义

接口编程

若TPS02R连接在GPIO模拟I²C0上,则该设备的父总线编号为:GPIO_I²C0_BUSID。

5.  设备实例

在awbl_tps02r.h文件中,定义了TPS02R的设备类型为:struct awbl_tps02r_dev。基于该类型,可以定义一个设备实例,详见程序清单14.4。

程序清单14.4 定义TPS02R设备实例

接口编程

其中,__g_tps02r_dev_0的地址即可作为p_dev的值。

6.  设备信息

在awbl_tps02r.h文件中,定义了TPS02R的设备信息类型为:struct awbl_tps02r_devinfo,其定义详见程序清单14.5。

程序清单14.5 struct awbl_tps02r_devinfo定义

接口编程

其中,start_id表示为TPS02R设备分配的传感器通道起始id。为了区分各个传感器通道,需要为每个通道分配一个id。对于特定的传感器,其可以为系统提供的传感器通道数是固定不变的,例如,TPS02R可以为系统提供2路温度传感器通道:PT100通道1和PT100通道2。为了简单起见,用户仅需提供一个通道起始id,其它通道按顺序依次进行编号,TPS02R的2路温度通道ID即为start_id和(start_id+1),若start_id为1,则TPS02R两个通道占用的ID即为1和2。通道ID用于区分系统中所有的传感器通道,不同传感器设备占用的传感器通道必须不同。为了便于传感器通道id的管理,避免重复分配,统一将设备提供的一系列传感器通道的起始id定义在

aw_pri_params.h文件中,例如,TPS02R提供的2路传感器通道的起始id可以定义为:

接口编程

基于此,start_id的值可以设置为

SENSOR_TPS02R_0_START_ID,后续若需修改起始id,仅需修改对应的宏值即可。

alert_pin表示与TPS02R的ALERT引脚相连接的主控引脚号。TPS02R具有温度报警输出功能, ALERT引脚可以与某一路温度关联,当该路温度超过上限温度值或低于下限温度值时,TPS02R将通过ALERT引脚通知主控,以便使主控可以及时处理报警事件。若使用i.MX28x的PIO2_14与TPS02R的ALERT引脚相连,则alert_pin的值应设置为PIO2_14。特别地,若用户不需要使用报警功能,则只需将alert_pin设置为-1即可。

i2c_addr表示TPS02R的7位I²C从机地址。该值跟具体的应用电路有关,在典型应用电路中, TPS02R的A0引脚与GND想连接,因此,若直接使用典型应用电路,则从机地址为0x48,此时,将i2c_addr设置为0x48即可。

基于以上信息,可以定义完整的设备信息,范例详见程序清单14.6。

程序清单14.6 TPS02R设备信息定义范例

接口编程

综合上述设备名、设备单元号、父总线类型、父总线编号、设备实例和设备信息,可以完成一个TPS02R硬件设备的描述,其定义详见程序清单14.7。

程序清单14.7 TPS02R硬件设备宏的详细定义(awbl_hwconf_tps02r_0.h)

接口编程

其中,定义了硬件设备宏:

AWBL_HWCONF_TPS02R_0,为便于裁剪,使用了一个使能宏AW_DEV_EXTEND_TPS02R_0对其具体内容进行了控制,仅当使能宏被有效定义时,AWBL_HWCONF_TPS02R_0才表示一个有效的硬件设备。在硬件设备列表中,加入该宏即可完成设备的添加,详见程序清单14.8。

程序清单14.8 在硬件设备列表中添加设备

接口编程

实际上,在模板工程的硬件设备列表中,

AWBL_HWCONF_TPS02R_0宏默认已添加,同时,定义该宏的文件

(awbl_hwconf_tps02r_0.h)也以配置模板的形式提供在模板工程中,无需用户从零开始自行开发。

14.1.3  使用TPS02R模块

TPS02R可以采集两路温度,因而可以为系统提供两路温度传感器通道。在添加TPS02R设备时,将TPS02R提供的传感器通道的起始id定义为:SENSOR_TPS02R_0_START_ID,该值默认为1,由此可见,TPS02R为系统提供的传感器通道资源详见表14.4。

表14.4 TPS02R为系统提供的传感器通道资源

接口编程

基于此,应用程序即可使用“通用传感器接口”(详见表6.6)操作id为1和 2的传感器通道,从这些通道中获取温度值。例如,每隔一秒读取TPS02R通道1(id为1)或通道2(id为2) 的温度数据,并将温度值通过串口打印出来。范例程序详见程序清单14.9。

程序清单14.9 使用TPS02R的范例程序

接口编程

接口编程

由于TPS02R 精度可达到0.000122℃,因此,在打印温度时,显示了6位小数,为便于打印显示,打印前将温度单位转换为了

AW_SENSOR_UNIT_MICRO(即:-6)。

14.2  能效检测模块——EMM400x

EMM400x是ZLG致远电子精心设计的系列能效检测模块。EMM400x包含了一系列型号,型号主要根据通道数目进行划分,选型表详见表14.5。

表14.5 EMM400x系列能效检测模块选型表

接口编程

在AWorks中,EMM400x系列模块的使用方法都是类似的,本节将以EMM400A模块为例,讲解该系列能效检测模块在AWorks中的使用方法。

14.2.1  EMM400A简介

EMM400A是ZLG致远电子针对板级电路推出的能效管理模块,集电量测量单元、DC-DC隔离电源、通讯信号隔离电路于一体,可独立完成市电电压、电流、有功功率和电能的测量,使主设备对用电设备做出有效管控。精度高达2%,内置2500V电器隔离电路,可有效隔离市电与板内弱电。该模块采用超小体积设计,在保证PCB紧凑型的同时,为用户提供最便捷的能效管理方案。该产品无需外围元器件,使用方便,接法简单。通讯方式使用的单串口通信,用户只需要接收数据,不需要发送数据以操作模块寄存器,大大节省了程序使用资源。

1.  产品特性

免校准单相电能计量;

数据传输方式:串口,波特率4800bps;

有效输入电压:80~260Vrms,精度2%;

有效输入电流:0.010~1.5Arms,精度2%;

输入有功功率:0.8~390W,精度 2%,绝对误差0.06W;

隔离耐压 2500VDC;

工作温度:-40℃~+85℃。

接口编程

图14.4 EMM400A引脚定义

2.  引脚分布

EMM400为DIP-6封装,其引脚定义见图14.4,引脚功能描述见表14.6。

表14.6 EMM400A引脚功能描述

接口编程

3.  应用电路

EMM400A外部接线详见图14.5。无需外围元器件,只需按照推荐电路进行接线:1脚接电网的零线,2脚接负载的低端,4脚接电网的火线;6脚接单片机的数字地,7脚接MCU的RX接收引脚,8脚接3.3V电源输入。

接口编程

图14.5 EMM400A外围电路接法

在该推荐电路的使用中,外部电路的搭接应注意高压侧的布线安全,在高压线的高端和低端最好应满足EN60950上推荐电气间隙,即至少距离3mm;同时,PCB线路应设计得尽量宽、尽量短,使得线路阻抗尽量小,减小线损。

4.  通讯方式说明

EMM400作为单相多功能计量模块,其自身提供高频脉冲用于电能计量。EMM400使用串口进行通讯,用户可以通过串口直接读取电压、电流、有功功率的相关计算参数如校准系数、信号周期等。

串口相关参数固定为: 4800bps,8位数据位,1位偶校验,1位停止位。EMM400上电后,每隔50ms自动将包含电压系数、电压周期、电流系数、电流周期、功率系数、功率周期、校准次数、CF脉冲个数的数据包通过串口发送出去。一个数据包固定为24字节,数据包格式详见表14.7。

表14.7 EMM400数据包格式

接口编程

获取到各个数据后,即可通过公式计算出电流、电压、视在功率、有功功率、无功功率、电量等数据。各计算公式及说明详见表14.8。

表14.8 EMM400相关数据计算公式

接口编程

上述通讯协议和计算公式仅供了解,在实际应用中,AWorks已经提供了EMM400的驱动,无需用户通过串口获取各个计算参数再代入公式中运算,用户可以直接使用通用传感器接口获取电流、电压、视在功率、有功功率、无功功率、电量等数据。

14.2.2  添加EMM400硬件设备

在AWorks中,硬件设备由AWBus-lite统一管理,向AWBus-lite中添加一个硬件设备需要确认6点信息:设备名、设备单元号、父总线类型、父总线编号、设备实例和设备信息。

1.  设备名

设备名往往与驱动名一致,EMM400驱动名在EMM400的驱动头文件(awbl_emm400.h)中定义,详见程序清单14.10。

程序清单14.10 EMM400驱动名定义(awbl_emm400.h)

接口编程

基于此,设备名应为:

AWBL_EMM400_NAME。

2.  设备单元号

设备单元号用于区分系统中几个相同的硬件设备,它们的设备名一样,复用同一份驱动。若系统仅使用了一个EMM400,则设置为0即可。

3.  设备父总线的类型

EMM400模块需要通过串口通信,在当前系统中,串口仅作为简单的数据传输模块,并没有视为一个独立的总线类型,因而EMM400视为由CPU直接控制,挂在PLB总线上。基于此,bus_type的值为AWBL_BUSID_PLB。

4.  设备父总线的编号

EMM400设备挂在PLB总线上,系统仅有一条PLB总线, bus_index的值只能为0。

5.  设备实例

在awbl_emm400.h文件中,定义了EMM400的设备类型为:struct awbl_emm400_dev。基于该类型,可以定义一个设备实例,详见程序清单14.11。

程序清单14.11 定义EMM400设备实例

接口编程

其中,__g_emm400_dev0的地址即可作为p_dev的值。

6.  设备信息

设备信息的具体类型是由设备驱动定义的。在awbl_emm400.h文件中,定义了EMM400的设备信息类型为:awbl_emm400_devinfo_t,其定义详见程序清单14.12。

程序清单14.12 设备信息类型(awbl_emm400.h)

接口编程

其中,start_id表示为EMM400A设备分配的传感器通道起始id。EMM400可以为系统提供6路的传感器通道, 它们按顺序分别用于获取电压有效值、电流有效值、视在功率、有功功率、无功功率和用电量。起始id标识了6个通道的起始id,EMM400占用的id范围即为:start_id ~ (start_id + 6 - 1)。例如,start_id为3,则占用的id范围为:3 ~ 8。为了便于传感器通道id的管理,统一将设备提供的一系列传感器通道的起始id在aw_pri_params.h中定义,例如,EMM400提供的6路传感器通道的起始id可以定义为:

接口编程

基于此,start_id的值可以设置为

SENSOR_EMM400_0_START_ID,后续若需修改起始id,仅需修改对应的宏值即可。

com_id为与EMM400模块通信的的串口号,可用串口号与具体使用的硬件平台相关,在aw_prj_params.h文件中定义。例如,在i.MX28x硬件平台中,支持6个串口,包括一个调试串口和5个应用串口,它们的串口号定义详见程序清单14.13。

程序清单14.13 串口号定义

接口编程

若使用AUART0与EMM400通信,则com_id的值为IMX28_AUART0_COMID。

至此,可以定义完整的设备信息,范例详见程序清单14.14。

程序清单14.14 EMM400设备信息定义范例

接口编程

综合上述设备名、设备单元号、父总线类型、父总线编号、设备实例和设备信息,可以可以完成一个EMM400硬件设备的描述,其定义详见程序清单14.15。

程序清单14.15 EMM400硬件设备宏的详细定义(awbl_hwconf_emm400_0.h)

接口编程

接口编程

其中,定义了硬件设备宏:

AWBL_HWCONF_EMM400_0,为便于裁剪,使用了一个使能宏AW_DEV_EXTEND_EMM400_0对其具体内容进行了控制,仅当使能宏被有效定义时,AWBL_HWCONF_EMM400_0才表示一个有效的硬件设备。在硬件设备列表中,加入该宏即可完成设备的添加,详见程序清单14.16。

程序清单14.16 在硬件设备列表中添加设备

接口编程

实际上,在模板工程的硬件设备列表中,

AWBL_HWCONF_EMM400_0宏默认已添加,同时,定义该宏的文件

(awbl_hwconf_emm400_0.h)也以配置模板的形式提供在模板工程中,无需用户从零开始自行开发。

14.2.3  使用EMM400模块

EMM400可以采集6路传感器信号:电压有效值、电流有效值、视在功率、有功功率、无功功率和用电量。在添加EMM400设备时,将EMM400提供的传感器通道的起始id定义为:SENSOR_EMM400_0_START_ID,该值默认为3,由此可见,EMM400为系统提供的传感器通道资源详见表14.9。

表14.9 EMM400为系统提供的传感器通道资源

接口编程

基于此,应用程序即可使用“通用传感器接口”(详见表6.6)操作id为3 ~ 8的传感器通道,从这些通道中获取相应的传感器值。例如,每隔一秒打印一次所有通道的值,范例程序详见程序清单14.17。

程序清单14.17 使用EMM400的范例程序

接口编程

接口编程

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分