0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于EsDA MPC-ZC1 快速实现I2C 监控报警

ZLG致远电子 2023-08-23 15:16 次阅读

本文介绍如何通过EsDA开发套件,快速完成一个I2C采集数据的监控报警系统,通过该系统可以减少I2C设备的故障损失和维修成本。

079d14c2-4185-11ee-8e12-92fbcf53809c.jpg  简介

本文基于前文的一篇I2C博客文章继续拓展I2C实时采集后的监控报警实验,PT100温度传感器的温度采集和读取显示不在本文赘述,具体详细的操作步骤可在《EsDA MPC-ZC1 快速实现I2C采集监控》文章中查看。

实验基于EsDA开发平台,MPC_ZC1作为I2C主机设备,TPS02测温模块作为从机设备。因本实验器材是高精度仪器,但实验环境有限所以温度波动范围较大,所以本实验通过报警机制模拟恒温箱(恒温45℃,误差±5℃)的实验场景。设计步骤如下:

设置过温值和低温值;

配置TPS02测温模块configurature寄存器的工作模式;

读取TPS02测温模块configurature寄存器的ALERT报警状态位,过温和低温时做相应的操作。

该实验主要用到timer、fscript、i2c_master_read、i2c_master_write和log节点,具体实现请见下文。


07a45426-4185-11ee-8e12-92fbcf53809c.jpg  模拟恒温箱业务逻辑

1. 设置过温值和低温值

自TPS02RAH从机设备中读取到的实时温度>过温值,则说明需要减缓加热功率;自TPS02RAH从机设备中读取到的实时温度< 过温值,则说明需要增大加热功率。通过以上逻辑去设置模拟恒温箱的过温值和低温值。

本次实现需要用到 timer,fscript, i2c_master_write 这些节点:

timer:timer节点用于触发I2C节点写入值,因过温值和低温值不需要频繁被设置所以timer的定时周期设置大一点;

fscript:根据TPS02设备的数据手册可知,设置温度的上、下限值,都是6个字节,前三个字节对应通道1的上、下限值,后三个字节对应通道2的上、下限值。

i2c_master_write:主要用于向从机设备的Thigh寄存器写温度上限值,Tlow寄存器写温度下限值。

本实验采用的是通道1 ,上限值是50℃(0x06 4000),下限值是45℃(0x05 A000)。

1.1添加节点并连线

timer节点触发通过I2C向TPS02RAH设备的Thigh寄存器和Tlow寄存器写入过温值和低温值,将timer,fscript,i2c_master_write节点加入到画布中,并绘制连线。

07ae58c2-4185-11ee-8e12-92fbcf53809c.png1.2 配置节点

双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_write节点写入温度上、下限值。

双击i2c_master_write的输入节点fscript,并查看TPS02RAH测温模块的数据手册。得知TPS02RAH的Thigh寄存器有6个字节是设置温度的上限值,测温模块有两个通道,所以前三个字节设置通道1的温度上限值,后三个字节设置通道2 的温度上限值;而Tlow寄存器有6个字节是设置温度的下限值,同样,前三个字节设置通道1的温度下限值,后三个字节设置通道2的温度下限值。

设置Tlow寄存器(0x02)如下:

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x05)wbuffer_write_uint8(wb,0xA0)wbuffer_write_uint8(wb,0x00)wbuffer_write_uint8(wb,0x7F)wbuffer_write_uint8(wb,0xFF)wbuffer_write_uint8(wb,0xFA)
output.payload = wbuffer_get_data(wb)output.payloadLength = 6output.subAddress = 0x02

设置Thigh寄存器(0x03)如下:

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x06)wbuffer_write_uint8(wb,0x40)wbuffer_write_uint8(wb,0x00)wbuffer_write_uint8(wb,0x7F)wbuffer_write_uint8(wb,0xFF)wbuffer_write_uint8(wb,0xFA)
output.payload = wbuffer_get_data(wb)output.payloadLength = 6output.subAddress = 0x03

双击i2c_master_write节点,打开属性面板根据TPS02RAH数据手册设置如下图所示,并点击I2C主机配置的铅笔图标去设置I2C主机设备路径名和时钟频率。

配置I2C从机设备寄存器Tlow寄存器(0x02)如下:

07bdd8b0-4185-11ee-8e12-92fbcf53809c.png配置I2C从机设备寄存器Thigh 寄存器(0x03)如下:

07ce706c-4185-11ee-8e12-92fbcf53809c.png

2. 配置报警模式根据TPS02RAH的数据手册可知,报警模式需要在configurature寄存器中进行设置。后读取configurature寄存器的ALERT报警状态位来报警。本实验需要使能通道1 的配置,且需要连续测试的温度值有2个均大于Thigh或者均小于Tlow的情况下才能报警置位(防止温度不稳定,忽高忽低频繁假报警)。

本次实现需要用到 timer,fscript, i2c_master_write 这些节点:

timer: timer节点用于触发I2C节点写入值,因报警模式不需要频繁被设置所以timer的定时周期设置大一点;

fscript:根据TPS02设备的数据手册可知,设置configurature寄存器共两个字节。分别代表两个通道,第一个字节配置通道 1,第二个字节配置通道2。本实验使用的是通道1;

i2c_master_write:主要用于向从机设备的configurature寄存器写工作模式。

2.1添加节点并连线

timer节点触发通过I2C向TPS02RAH设备的configurature寄存器写入报警模式,将timer,fscript,i2c_master_write节点加入到画布中,并绘制连线。

07e0c758-4185-11ee-8e12-92fbcf53809c.png

2.2配置节点

双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_write节点写入报警模式。

双击i2c_master_write的输入节点fscript,因需要使用通道1 且根据数据手册可知:因不支持待机模式所以SD置0;报警信号输出TM为0比较模式;报警引脚输出信号状态控制POL为0;因本实验采取的PT100精度颇高响应超快所以当在过温或低温状态下,触发 ALERT 输出信号的温度值测试个数为2,所以F1置0,F0置1;通道1 的EN置0,使能配置;所以读取configurature寄存器的ALERT报警状态位时,初始状态为高,当高于Thigh超温时,则ALERT报警状态为0,当低于Tlow超温时,则ALERT报警状态为1。

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x28)wbuffer_write_uint8(wb,0xb8)

output.payload = wbuffer_get_data(wb)output.payloadLength = 2output.subAddress = 0x01

双击i2c_master_write节点,打开属性面板根据TPS02RAH数据手册设置如下图所示,并点击I2C主机配置的铅笔图标去设置I2C主机设备路径名和时钟频率。

07f35526-4185-11ee-8e12-92fbcf53809c.png

3. 读取报警状态

根据数据手册以及2.2的操作可知,除去初始状态,configurature寄存器的ALERT报警状态变为0时为超温状态;configurature寄存器的ALERT报警状态变为1时为低温状态。

本次实现需要用到 timer,fscript, i2c_master_read, fscript, log 这些节点:

  • timer: timer节点用于定时触发I2C节点读取数据;
  • fscript:根据TPS02设备的数据手册可知,设置configurature寄存器共两个字节。分别代表两个通道,第一个字节配置通道 1,第二个字节配置通道2。本实验使用的是通道1。并将读取出来的ALERT报警状态提取出来;
  • i2c_master_read:主要用于向从机设备的configurature寄存器读取ALERT报警状态;
  • log:将报警状态打印显示。

3.1添加节点并连线

timer节点定时触发通过I2C向TPS02RAH设备的configurature寄存器读取报警模式,将timer,fscript,i2c_master_read,log节点加入到画布中,并绘制连线。

0801b030-4185-11ee-8e12-92fbcf53809c.png

3.2配置节点

双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_read节点读取报警模式。

双击i2c_master_read的输入节点fscript,并查看数据手册。将configurature寄存器的两个字节读取出来。

0815e9a6-4185-11ee-8e12-92fbcf53809c.png双击i2c_master_read节点,打开属性面板根据TPS02RAH数据手册设置如下图所示,并点击I2C主机配置的铅笔图标去设置I2C主机设备路径名和时钟频率。08212cf8-4185-11ee-8e12-92fbcf53809c.png

双击i2c_master_read的消费者节点fscript,将通道1 的ALERT报警状态从读取到的两个字节的configurature寄存器数据提取出来。

因stat是ALERT报警状态位的赋值,由数据手册可知,当报警信号输出TM为0比较模式,报警引脚输出信号状态控制POL为0时,ALERT报警状态位的赋值stat的初始值是1。因为只需初始化一次所以将stat变量放在Initialize中进行初始化:

Initialize:

stat = 1;

Function:

//将读取的6个uint8_t类型的数据打印rb = rbuffer_create(msg.payload, msg.payloadLength)print("length: "+ msg.payloadLength)
for(var i=0; i1) { d = rbuffer_read_uint8(rb); if(i == 0){ msg.channel1 = (d>>6) & 0x01; } msg.channel2 = (d>>6) & 0x01;}
if(stat != msg.channel1) { stat = msg.channel1; if(stat == 0) { //通道1 从1-->0,超温报警 print("high temp error!\n"); } else if(stat == 1) { //通道1 从0--->1,低温报警 print("low temp error!\n"); }}


07a45426-4185-11ee-8e12-92fbcf53809c.jpg  模拟恒温箱业务实现本模拟实验在高温报警时采取远离热水源的形式来达到减少加热功率的操作;在低温报警时采取靠近热水源的形式来达到增大加热功率的操作,来实现模拟恒温箱。并结合EsDA MPC-ZC1快速实现I2C采集监测实验来实时读取PT100的温度值。0834cb00-4185-11ee-8e12-92fbcf53809c.png实物接线图如下:

0849bdda-4185-11ee-8e12-92fbcf53809c.jpg

因读取温度传感器的数据处理比报警机制处理逻辑要稍靠后一点,显示报警状态后就立马采取了相应的减缓功率措施或增加功率措施。所以下图大部分只截图到正常的温度显示和报警打印显示,而没有具体的超温/低温温度显示。实验结果如下:086337f6-4185-11ee-8e12-92fbcf53809c.png

读取configurature寄存器的ALERT报警状态位可知此时是低温报警,此时需要增加功率。

087145e4-4185-11ee-8e12-92fbcf53809c.png读取configurature寄存器的ALERT报警状态位可知此时是高温报警,此时需要减缓功率。088317ce-4185-11ee-8e12-92fbcf53809c.png读取configurature寄存器的ALERT报警状态位可知此时是低温报警,此时需要增加功率。0891578a-4185-11ee-8e12-92fbcf53809c.png实验结果:通过报警机制可保持45℃恒温,上下5℃波动。

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

    关注

    0

    文章

    343

    浏览量

    40607
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120823
  • ESDA
    +关注

    关注

    0

    文章

    27

    浏览量

    7445
  • MPC
    MPC
    +关注

    关注

    2

    文章

    36

    浏览量

    21076
收藏 人收藏

    评论

    相关推荐

    如何为TC334LP32F200FAAKXUMA1实现I2C

    嗨, 我正在使用 TC334LP32F200FAAKXUMA1 微控制器。 如何为该控制器实现 I2C? 由于没有物理 I2C 硬件,我们能否实现
    发表于 03-04 07:03

    如何基于EsDA开发套件快速使用射频读卡器模块

    无线射频读写卡技术在门禁系统,电子支付领域和物联网等领域中具有越来越广泛的应用。本文将基于EsDA开发套件讲解如何快速上手并开发射频读卡器模块的相关业务,为开发者大大缩短了学习和开发时间成本。项目
    的头像 发表于 01-11 08:24 399次阅读
    如何基于<b class='flag-5'>EsDA</b>开发套件<b class='flag-5'>快速</b>使用射频读卡器模块

    ADE7880使用I2C读取数据,怎么设置I2C快速模式?

    ADE7880使用I2C读取数据问题,怎么设置I2C快速模式,谢谢。
    发表于 12-26 07:41

    EsDA 应用】快速实现串口转HTTP请求

    本文将基于EsDA开发套件快速实现将串口数据转换为HTTP请求的应用开发,实现串口设备与网络服务的互联互通,提供便捷和高效的串口数据转换功能。项目简介HTTP协议是互联网应用最为广泛的
    的头像 发表于 11-09 08:25 486次阅读
    【<b class='flag-5'>EsDA</b> 应用】<b class='flag-5'>快速</b><b class='flag-5'>实现</b>串口转HTTP请求

    全面掌握面试必考题I2C协议 - 第1

    I2C协议
    充八万
    发布于 :2023年09月01日 18:58:30

    0725_03 I2C SDA信号三态开漏模式的原理与实现 - 第8节

    I2CSDA
    充八万
    发布于 :2023年08月20日 02:10:30

    0725_03 I2C SDA信号三态开漏模式的原理与实现 - 第2

    I2CSDA
    充八万
    发布于 :2023年08月20日 02:05:24

    EsDA应用】10分钟快速实现人脸识别

    人脸识别是一种高安全性的生物识别技术,在安防、身份验证等领域被广泛应用。本文主要介绍如何基于EsDA设计的人脸特征值提取节点和特征值比对节点,快速实现人脸识别功能。简介人脸识别是一种高安
    的头像 发表于 06-08 15:01 308次阅读
    【<b class='flag-5'>EsDA</b>应用】10分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>人脸识别

    【产品应用】基于 EsDA MPC-ZC1 快速实现 I2C采集监测

    EsDA开发平台为产品上线提供动力。本文将基于EsDA开发平台,通过拖拽、连线方式,10分钟快速搭建一个I2C数据采集监测业务,为客户产品开发、部署、上线缩短周期。简介
    的头像 发表于 06-08 10:13 333次阅读
    【产品应用】基于 <b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> <b class='flag-5'>快速</b><b class='flag-5'>实现</b> <b class='flag-5'>I2C</b>采集监测

    EsDA应用】10分钟快速实现人脸识别

    人脸识别是一种高安全性的生物识别技术,在安防、身份验证等领域被广泛应用。本文主要介绍如何基于EsDA设计的人脸特征值提取节点和特征值比对节点,快速实现人脸识别功能。    简介 人脸识别是一种高安
    的头像 发表于 06-03 01:30 534次阅读
    【<b class='flag-5'>EsDA</b>应用】10分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>人脸识别

    【产品应用】基于 EsDA MPC-ZC1 快速实现 I2C采集监测

    EsDA开发平台为产品上线提供动力。本文将基于EsDA开发平台,通过拖拽、连线方式,10分钟快速搭建一个I2C数据采集监测业务,为客户产品开发、部署、上线缩短周期。    简介
    的头像 发表于 05-31 18:05 294次阅读
    【产品应用】基于 <b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> <b class='flag-5'>快速</b><b class='flag-5'>实现</b> <b class='flag-5'>I2C</b>采集监测

    EsDA应用】蓝牙服务端节点详解

    蓝牙作为一种近距离无线通信技术,被广泛使用在汽车,智能家居和医疗等领域中。本文主要介绍如何通过EsDA开发套件,快速实现蓝牙服务器的相关应用业务。简介前面文章讲解了ble_client的相关
    的头像 发表于 05-31 09:46 509次阅读
    【<b class='flag-5'>EsDA</b>应用】蓝牙服务端节点详解

    EsDA应用】蓝牙服务端节点详解

    蓝牙作为一种近距离无线通信技术,被广泛使用在汽车,智能家居和医疗等领域中。本文主要介绍如何通过EsDA开发套件,快速实现蓝牙服务器的相关应用业务。    简介 前面文章讲解了ble_client
    的头像 发表于 05-25 00:10 391次阅读
    【<b class='flag-5'>EsDA</b>应用】蓝牙服务端节点详解

    EsDA应用】5分钟快速实现图像人脸检测

    人脸识别是一种高安全性的生物识别技术,广泛应用在安防、身份验证等领域。而人脸检测是进行人脸识别的重要前提,本文主要介绍如何基于EsDA设计的人脸检测节点,快速实现人脸检测功能。简介人脸识别是一种高安
    的头像 发表于 05-18 10:48 399次阅读
    【<b class='flag-5'>EsDA</b>应用】5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>图像人脸检测

    EsDA应用】5分钟快速实现图像人脸检测

    人脸识别是一种高安全性的生物识别技术,广泛应用在安防、身份验证等领域。而人脸检测是进行人脸识别的重要前提,本文主要介绍如何基于EsDA设计的人脸检测节点,快速实现人脸检测功能。    简介 人脸识别
    的头像 发表于 05-17 12:20 378次阅读
    【<b class='flag-5'>EsDA</b>应用】5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>图像人脸检测