角度传感器测量实验 GY-25

GY-25 角度测量实验

GY-25是一款倾斜度传感器模块,价格在40块钱左右,主要是因为在家,没把实验室的传感器拿回来,所以用这款来尝试控制算法,用于获得数据。其工作电压在3-5v功耗小,体积小。其工作原理是通过陀螺仪与加速度传感器通过数据融合算法最后得到直接的酵素数据。其体积小、高性价比、串口输出格式是特点,可以应用于许多方面。

技术参数 & 引脚说明

名称参数
测量范围-180°~180°
分辨率0.01°
测量精度
重复精度
响应频率100HZ(115200bps)
工作电压3~5V
工作电流15mA
工作温度-20°~85°
存储温度-40°~125°
尺寸11.5mm×15.5mm
表1.技术参数
引脚名称说明
Pin1VCC3-5V
Pin2RX串口数据接受
Pin3TX串口数据发送
Pin4GND接地
Pin5RST内部使用,不需要连接,悬空
Pin6B0内部使用,不需要连接,悬空
Pin7SCLI2C 时钟,按需连接
Pin8SDAI2C 数据,按需链接
表2.引脚说明

命令字节

  • 0xA5+0x51:查询模式,直接返回角度值,需每次读取都发送
  • 0xA5+0x52:自动模式,直接返回角度值,只需要初始化时发送一次
  • 0xA5+0x53:自动模式,ASC码输出,便于直接电脑助手查看
  • 0xA5+0x54:校正模式,校正俯仰横滚角0度,需要保持水平时候发送
  • 0xA5+0x55:校正模式,校正航向0度,航向任意角度清零

代码

//GY-25  ARDUINO
//   GY25                  arduino UNO
//   VCC----------------------VCC
//   RX-----------------------TX
//   TX-----------------------RX
//   GND----------------------GND

#include <Wire.h>
int YPR[3];
unsigned char Re_buf[8],counter=0;
unsigned char sign=0;

void setup()
{
  Serial.begin(115200);  
  delay(2000);   
  Serial.write(0XA5);
  Serial.write(0X52);    //初始化GY25,连续输出模式
}
//-------------------------------------------------------------
void loop() {
  serialEvent();
  if(sign)
  {  
     sign=0;
     if(Re_buf[0]==0xAA && Re_buf[7]==0x55)        //检查帧头,帧尾
     {                 
            YPR[0]=(Re_buf[1]<<8|Re_buf[2])/100;   //合成数据,去掉小数点后2位
            YPR[1]=(Re_buf[3]<<8|Re_buf[4])/100;
            YPR[2]=(Re_buf[5]<<8|Re_buf[6])/100;
              
            Serial.print("YPR[0]: ");
            Serial.print(YPR[0]);      //显示航向
            Serial.print(" "); 
            Serial.print("YPR[1]: ");                    
            Serial.print(YPR[1]);     
            Serial.print(" ");
            Serial.print("YPR[2]: ");  
            Serial.print(YPR[2]);   
            Serial.println("");   
            delay(100);           
   }
  }
}
//---------------------------------------------------------------
void serialEvent() {
  while (Serial.available()) {   
    Re_buf[counter]=(unsigned char)Serial.read();
    if(counter==0&&Re_buf[0]!=0xAA) return;      // 检查帧头         
    counter++;      
    if(counter==8)                //接收到数据
    {   
       counter=0;                 //重新赋值,准备下一帧数据的接收
       sign=1;
    }      
  }
}

软串口

由于角度传感器共需要两个,但是,硬件串口只有一个,所以需要增加一个软串口来完成同时获得两个角度传感器的数值,如果存在硬件串口和软件串口的差异,可以通过同时启用两个软串口,来解决这个问题。软串口通信的库函数是SoftwareSerial库,那么这个库的使用只需要简单知道如下语法,其他的和Serial相同。

#include <SoftwareSerial.h>  //包含头文件
Software mySerial(rxPin,txPin) //创建SoftwareSerial类,并完成引脚定义

之后就可以开开心心的用软串口读取数据啦。

  • 6
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值