查看: 912|回复: 4

[未解决] 用arduino读取QMC5883L得到的数据不稳定

[复制链接]
  • TA的每日心情
    奋斗
    2019-1-10 20:00
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2018-9-28 11:09 | 显示全部楼层 |阅读模式
    今天淘宝买了一块电子罗盘模块(QMC5883L),按照数据手册进行设置,发现得到的数据不稳定,请教各位大侠,小弟应该进行怎样的修改?
    附上源代码和模块图


    #include <Wire.h>           //使用IIC库
    #define address 0x0D        //QMC5883L的设备地址设置

    void setup(){
      Serial.begin(9600);  //初始化串口和I2C口
      Wire.begin();
    //初始化模块
      Wire.beginTransmission(address);
      Wire.write(0x09); //选择控制寄存器0X09
      Wire.write(0x1D); //设置0x09寄存器为:OSR:512Hz,RNG:+/-8Gauss,ODG:200Hz,MODE:连续工作模式
      Wire.endTransmission();
    }

    void loop(){

      int x,y,z; //triple axis data

      Wire.beginTransmission(address);//读写开始
      Wire.write(0x00); //选择X,Y,Z所在数据储存寄存器
      Wire.endTransmission();

    //读取X、Y、Z三个方向的坐标值
      Wire.requestFrom(address, 6);
      if(6<=Wire.available()){
        x = Wire.read()<<8; //X msb
        x |= Wire.read(); //X lsb
        z = Wire.read()<<8; //Z msb
        z |= Wire.read(); //Z lsb
        y = Wire.read()<<8; //Y msb
        y |= Wire.read(); //Y lsb
      }
    //打印坐标到串口
      Serial.print("x: ");
      Serial.print(x);
      Serial.print("  y: ");
      Serial.print(y);
      Serial.print("  z: ");
      Serial.println(z);
      delay(250);
    }

    QMC5883L.png
    串口输出结果.png
  • TA的每日心情
    奋斗
    2019-1-10 20:00
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2018-9-28 17:11 | 显示全部楼层
    大佬们在哪里?请求各路大侠指点下

    该用户从未签到

    发表于 2019-3-2 09:29 | 显示全部楼层
    本帖最后由 elongshi 于 2019-3-2 10:26 编辑

    告诉你,的确是不稳定,国产QMC5883纯就是个坑,角度跳动太大了。换了N家的都一样!换成芯片上标的L883就好很多,很稳定!记住进口芯片,只标的是L883!而不是5883!
    另外你读取寄存器XYZ值的循错了,如果是进口芯片HMC5883L,顺序是XZY,而国产的QMC5883L顺序是XYZ,但即便改正了,跳动抖动误差还是太大了。

  • TA的每日心情
    开心
    2015-7-10 09:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-3-15 11:19 | 显示全部楼层
    elongshi 发表于 2019-3-2 09:29
    告诉你,的确是不稳定,国产QMC5883纯就是个坑,角度跳动太大了。换了N家的都一样!换成芯片上标的L883就好 ...

    有推荐的模块吗?角度精确点的
  • TA的每日心情
    开心
    2015-7-10 09:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-3-15 11:22 | 显示全部楼层
    elongshi 发表于 2019-3-2 09:29
    告诉你,的确是不稳定,国产QMC5883纯就是个坑,角度跳动太大了。换了N家的都一样!换成芯片上标的L883就好 ...

    我用的是HMC5883L芯片的GY-271模块,角度飘的厉害,你说的L883没有找到
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    BlinkerAT固件不能用
    BlinkerAT固件不能用
    如图,在配网的时候就卡住了,再发指令就没用了,固件和库都是今天刚下载的,以前的也不好
    为什么这个库已经装好了可是在调用的时候却没有显示
    为什么这个库已经装好了可
    为什么这个库已经装好了可是在调用的时候却没有显示求解决
    UART 传输(字符)不稳定,如何解决数据错位和乱码的情况
    UART 传输(字符)不稳定
    求助大家,我正在写一个 UART 传输多组数据的项目,想要将一端 Arduino 的多组数据通
    请问这是什么板子?
    请问这是什么板子?
    如图,两年前比赛学校发的,但网上找不到资料,现在翻出来,想问问有人知道它怎么用吗
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表