GY-25T 是一款低成本数字角度传感器模块。工作电压 3-5v功耗小,体积小,安装方便。 其工作原理是,是通过陀螺仪与 加速度传感器经过数据融合算法 最后得到直接的角度数据。GY-25T 可以设置模块倾斜度报警值,开关量输出。 设定的角度阈值,有超过角度阈值,OUT 引脚直接输出高电平。IIC 模式下,如果需要,可以设置内部 IIC 地址不同,以便多个传感器直接接在同一个总线。
测量范围: -180 度—180 度
更新频率: 200Hz (最快)
工作电压 : 3~5 V
工作电流: 9mA
工作温度 : -20°~ 85°
储存温度 : -40°~ 125°
分辨率 : 0.01 度
设置模块 IIC 模式,需将 PS 引脚连接 GND。设置成为 IIC 模式后, RC 引脚=SCL, TD 引脚=SDA ,INT/OUT 引脚变=IIC 数据更新完成中断标志功能。 INT 引脚平时低电平,内部数据准备就绪 INT 引脚出现上升沿,用户可根据该 引脚出现上升沿后读取内部数据。IIC 设备地址为 00 寄存器值,默认 0xA4。主机 IIC 时钟速率需小于 400K, IIC 内部寄存器地址及含义请参考前面的列表。 请注意你的主机是使用 7bit 地址还是 8bit 地址。IIC 设备地址是可以修改的,可以支持多个不同地址的设备接入同一总线。模块单次写寄存器数量为 1 个。
写时序如下:
模块支持多寄存器连读,读时序如下:
51单片机 | GY25-T |
---|---|
5V | VCC |
GND | GND |
RC | P36 |
TD | P37 |
PS | GND |
IN | P35 |
#include <reg52.h>
#include "usart.h"
#include "iic.h"
#include "stdio.h"
char putchar (char c)
{
ES=0;
SBUF = c;
while(TI==0);
TI=0;
ES=1;
return 0;
}
typedef struct
{
int16_t temp;
int16_t roll;
int16_t pitch;
int16_t yaw;
} gy;
void delay_ms(unsigned int x)
{
while(x--);
}
int main(void)
{
u8 raw_data[9]={0};
uint16_t datas[4]={0},delay_t;
gy my_25t;
u8 td=0;
Usart_Int(9600);
delay_ms(300);//等待模块初始化完成
td=2;
Single_WriteI2C_byte(0xa4,0x02,2);//设置更新频率5hz
switch(td)
{
case 0:delay_t=1010;break;
case 1:delay_t=510;break;
case 2:delay_t=210;break;
case 3:delay_t=110;break;
}
while(1)
{
if(input==0)
{
while(input==0);
if(Single_ReadI2C(0xa4,0x14,raw_data,8))
{
my_25t.roll=((int16_t)raw_data[0]<<8)|raw_data[1];
my_25t.pitch=((int16_t)raw_data[2]<<8)|raw_data[3];
my_25t.yaw=((int16_t)raw_data[4]<<8)|raw_data[5];
my_25t.temp=((int16_t)raw_data[6]<<8)|raw_data[7];
printf("roll:%.2f,",(float)my_25t.roll/100.0f);
printf("pitch:%.2f,",(float)my_25t.pitch/100.0f);
printf("yaw:%.2f,",(float)my_25t.yaw/100);
printf("temp:%.2f\r\n ",(float)my_25t.temp/100.0f);
}
}
}
}