1558582190 发表于 2016-2-22 22:53:56

求助啊 为什么我的HMC5883L读出的原始数据中Y轴一直都是-4096


这是串口打印的数据
x=-25y=-4096z=-645
x=-25y=-4096z=-645
x=-105y=-4096z=-603
x=-105y=-4096z=-603
x=-105y=-4096z=-603
x=-146y=-4096z=-576
x=-146y=-4096z=-576
x=-146y=-4096z=-576
x=-201y=-4096z=-532
x=-201y=-4096z=-532
x=-201y=-4096z=-532
x=-236y=-4096z=-514
x=-236y=-4096z=-514
x=-236y=-4096z=-514
x=-235y=-4096z=-459
x=-235y=-4096z=-459
x=-235y=-4096z=-459
x=-188y=-4096z=-444
x=-188y=-4096z=-444
x=-188y=-4096z=-444
x=-137y=-4096z=-476
x=-137y=-4096z=-476

这是hmc5883l代码
# include "hmc5883l.h"


//磁力计初始化
void HMC5883L_Init(void)
{
        IIC_Init(); //初始化IIC
       
        MCU_Write_Byte(HMC5883L_ADDR, 0x02, 0x00);
        delay_ms(10);

}


//得到磁力计值(原始值)
//mx,my,mz:磁力计x,y,z轴的原始读数(带符号)
//返回值:0,成功
//    其他,错误代码
u8 HMC5883L_Get_Magnetic(short *mx, short *my, short *mz)
{             
        u8 buf, res;
   
        res = MCU_Read_Len(HMC5883L_ADDR, 0x03, 6, buf);            
   

        if(res == 0)
        {
                *mx = ((u16)buf<<8) | buf;
                *my = ((u16)buf<<8) | buf;
                *mz = ((u16)buf<<8) | buf;
        }        
       
        return res;
}


求大神帮助啊

笑笑我笑了 发表于 2016-2-23 08:24:19

只在XY平面旋转的话,Z轴数据肯定不会有变化啊。

dawanpi 发表于 2016-2-23 08:33:24

笑笑我笑了 发表于 2016-2-23 08:24
只在XY平面旋转的话,Z轴数据肯定不会有变化啊。

5883很敏感的,z轴轻微移动数据也会变化。之前论坛里面有人焊接温度过高导致传感器损坏的,不知道楼主的板子是不是自己焊的?
http://www.amobbs.com/forum.php?mod=viewthread&tid=5642821

1558582190 发表于 2016-2-23 11:36:12

dawanpi 发表于 2016-2-23 08:33
5883很敏感的,z轴轻微移动数据也会变化。之前论坛里面有人焊接温度过高导致传感器损坏的,不知道楼主的 ...

这个是我上淘宝买的

1558582190 发表于 2016-2-23 11:47:04

错了是Z轴
*mx = ((u16)buf<<8) | buf;
*my = ((u16)buf<<8) | buf;
*mz = ((u16)buf<<8) | buf;
03 数据输出 X MSB 寄存器 读
04 数据输出 X LSB 寄存器 读
05 数据输出 Z MSB寄存器 读
06 数据输出 Z LSB 寄存器 读
07 数据输出 Y MSB 寄存器 读
08 数据输出 Y LSB 寄存器 读

1558582190 发表于 2016-2-23 12:02:00

笑笑我笑了 发表于 2016-2-23 08:24
只在XY平面旋转的话,Z轴数据肯定不会有变化啊。

不管我怎么移动和旋转Z轴一直都是-4096会不会是我的模块坏了{:cry:}
页: [1]
查看完整版本: 求助啊 为什么我的HMC5883L读出的原始数据中Y轴一直都是-4096