极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23035|回复: 7

怎样读取Gy-521 Z轴的角速度及加速度

[复制链接]
发表于 2014-9-13 12:22:26 | 显示全部楼层 |阅读模式
无论怎样动,az、gz读数好像都没有变化

代码如下

#include "Wire.h"

#include "I2Cdev.h"
#include "MPU6050.h"

MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;

float Ax,Ay,Az;
float Gx,Gy,Gz;

#define LED_PIN 13
bool blinkState = false;

void setup() {
    Wire.begin();

    Serial.begin(38400);

    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();

    Serial.println("Testing device connections...");
    Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");

    pinMode(LED_PIN, OUTPUT);
}

void loop() {
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    Ax=float(ax)/131.00;
    Ay=float(ay)/131.00;
    Az=float(az)/131.00;
    Gx=float(gx)/16384.00;
    Gy=float(gy)/16384.00;
    Gz=float(gz)/16384.00;
   
   
   
    Serial.print("a/g:\t");
    Serial.print(Ax); Serial.print("\t");
    Serial.print(Ay); Serial.print("\t");
    Serial.print(Az); Serial.print("\t");
    Serial.print(Gx); Serial.print("\t");
    Serial.print(Gy); Serial.print("\t");
    Serial.println(Gz);

    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
}

回复

使用道具 举报

发表于 2014-9-13 19:47:28 | 显示全部楼层
代碼已試過沒問題,應是硬件接線的問題。

另外,為甚麼 Gx,Gy,Gz 要除 16384.00?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-16 13:03:21 | 显示全部楼层
eddiewwm 发表于 2014-9-13 19:47
代碼已試過沒問題,應是硬件接線的問題。

另外,為甚麼 Gx,Gy,Gz 要除 16384.00?

gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g,   对应     16384 LSB/g,
就像单位换算一样,要读出来数据要除以16384,才是真正的通常的加速度值。
不同量程,除以的数值不一样!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-16 13:05:27 | 显示全部楼层
我手上的GY-521是10元左右的板子,我怀疑引用的函数库不正确!

请高手们赐教!
回复 支持 反对

使用道具 举报

发表于 2014-9-16 20:45:53 | 显示全部楼层
gump80 发表于 2014-9-16 13:03
gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g,   对应     16384 LSB/g,
就像 ...

但除以 16384.00 這樣大的數,出來的結果就變得很小了,這個要小心啊!

若擔心手上的庫有問題,可用以下這個。


另外注意要連接 INT 啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-17 14:32:18 | 显示全部楼层
INT我没有接,我只接SDA--A4、SCL--A5、VCC--5v、GND这四根线。INT 接arduino板的哪只脚?
回复 支持 反对

使用道具 举报

发表于 2017-3-13 21:05:02 | 显示全部楼层
gump80 发表于 2014-9-16 13:03
gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g,   对应     16384 LSB/g,
就 ...

楼主不对吧,加速度计的典型值是16384,陀螺仪的典型值是131你是除反了吧
回复 支持 反对

使用道具 举报

发表于 2017-8-3 12:15:39 | 显示全部楼层
gump80 发表于 2014-9-17 14:32
INT我没有接,我只接SDA--A4、SCL--A5、VCC--5v、GND这四根线。INT 接arduino板的哪只脚?

请问6050和Arduino mage 2560怎么接线呢?我也只是接了SDL,SCL,VCC,GND
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 11:37 , Processed in 0.041277 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表