Modbus协议(工业级温湿度传感器)
Modbus协议两种传输方式:
ASCII 模式:
RTU 模式:
温湿度传感器的数据格式
IIC协议(热成像仪AMG8833)
IIC协议的四种基本信号的时序图及程序
void IIC_Start(void)
{
SDA_OUT();
IIC_SDA=1;
delay_us(5);
IIC_SCL=1;
delay_us(5);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(5);
IIC_SCL=0;
}
void IIC_Stop(void)
{
SDA_OUT();//sdaÏßÊä³ö
IIC_SCL=0;
delay_us(5);
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(5);
IIC_SCL=1;
delay_us(5);
IIC_SDA=1;
delay_us(5);
}
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN();
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;
delay_us(5);
return 0;
}
void IIC_Ack(void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
}
void IIC_NAck(void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=1;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
}
IIC协议的数据传输格式
IIC的寻址字节格式
AMG8833热成像仪介绍
AMG8833内部配置了一个热敏电阻。用于检验环境温度。更大的作用是用于测量你的通过IIC时序拿到的数据对不对。其数据格式如下:
0X0E为他的地址低8位。0X0F为它地址的高8位。
高8位的地址中只有bit0 bit1 bit2 是数据位。bit3是符号控制位。
11位数据位组成的数据需要乘0.0625度,才是我们热敏电阻测到的温度值。
程序如下:
u16 thermistoor;
u8 thermistoor_L;
u8 thermistoor_H;
thermistoor=thermistoor_H<<8;
thermistoor=thermistoor|thermistoor_L;
thermistoor=thermistoor&0x7FF;
temperature=thermistoor*0.0625;
AMG8833内部还有用红外测量的温度值。一共64个像素值。分高低地址分别存在地址0X80——0XFF。数据格式
如下:
0X80为他的地址低8位。0X81为它地址的高8位。
高8位的地址中只有bit0 bit1 bit2 是数据位。bit3是符号控制位。
11位数据位组成的数据需要乘0.25度,才是我们红外测到的温度值。
程序如下:
u16 thermistoor;
u8 pixel_L;
u8 pixel_H;
pixel=pixel_H<<8;
pixel=pixel|pixel_L;
pixel=pixel&0x7FF;
temperature=pixel*0.25;
还有一些关于AMG8833热成像仪配置相关的寄存器如下
下面上张热成像仪得到的数据
左上角那个数据是热敏电阻采集得到的数据。下面8*8矩阵的数据按如下格式存放