本文基于前文的一篇I2C博客文章继续拓展I2C实时采集后的监控报警实验,PT100温度传感器的温度采集和读取显示不在本文赘述,具体详细的操作步骤可在《EsDA MPC-ZC1 快速实现I2C采集监控》文章中查看。
实验基于EsDA开发平台,MPC_ZC1作为I2C主机设备,TPS02测温模块作为从机设备。因本实验器材是高精度仪器,但实验环境有限所以温度波动范围较大,所以本实验通过报警机制模拟恒温箱(恒温45℃,误差±5℃)的实验场景。设计步骤如下:
设置过温值和低温值;
(资料图)
配置TPS02测温模块configurature寄存器的工作模式;
读取TPS02测温模块configurature寄存器的ALERT报警状态位,过温和低温时做相应的操作。
自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)。
timer节点触发通过I2C向TPS02RAH设备的Thigh寄存器和Tlow寄存器写入过温值和低温值,将timer,fscript,i2c_master_write节点加入到画布中,并绘制连线。
双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_write节点写入温度上、下限值。
双击i2c_master_write的输入节点fscript,并查看TPS02RAH测温模块的数据手册。得知TPS02RAH的Thigh寄存器有6个字节是设置温度的上限值,测温模块有两个通道,所以前三个字节设置通道1的温度上限值,后三个字节设置通道2 的温度上限值;而Tlow寄存器有6个字节是设置温度的下限值,同样,前三个字节设置通道1的温度下限值,后三个字节设置通道2的温度下限值。
配置I2C从机设备寄存器Tlow寄存器(0x02)如下:
本次实现需要用到 timer,fscript, i2c_master_write 这些节点:
timer: timer节点用于触发I2C节点写入值,因报警模式不需要频繁被设置所以timer的定时周期设置大一点;
fscript:根据TPS02设备的数据手册可知,设置configurature寄存器共两个字节。分别代表两个通道,第一个字节配置通道 1,第二个字节配置通道2。本实验使用的是通道1;
i2c_master_write:主要用于向从机设备的configurature寄存器写工作模式。
timer节点触发通过I2C向TPS02RAH设备的configurature寄存器写入报警模式,将timer,fscript,i2c_master_write节点加入到画布中,并绘制连线。
双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_write节点写入报警模式。
根据数据手册以及2.2的操作可知,除去初始状态,configurature寄存器的ALERT报警状态变为0时为超温状态;configurature寄存器的ALERT报警状态变为1时为低温状态。
timer节点定时触发通过I2C向TPS02RAH设备的configurature寄存器读取报警模式,将timer,fscript,i2c_master_read,log节点加入到画布中,并绘制连线。
双击timer节点,打开属性面板设置定时周期(ms),触发i2c_master_read节点读取报警模式。
双击i2c_master_read的输入节点fscript,并查看数据手册。将configurature寄存器的两个字节读取出来。
因stat是ALERT报警状态位的赋值,由数据手册可知,当报警信号输出TM为0比较模式,报警引脚输出信号状态控制POL为0时,ALERT报警状态位的赋值stat的初始值是1。因为只需初始化一次所以将stat变量放在Initialize中进行初始化:
Function:
读取configurature寄存器的ALERT报警状态位可知此时是低温报警,此时需要增加功率。