锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

STM32 磁场传感器HMC5883

时间:2022-11-14 21:30:01 传感器hmc5883l脉冲磁传感器

一、IIC协议

默认(出厂) HMC5883LL 7 位从机地址为0x3C 或0x3D 读出操作。

将测量模式改为连续测量模式,通电时间后传输三个字节:0x3C 0x02 0x00

将00写入第二个寄存器或模式寄存器,完成从单一模式切换到连续测量模式的设置。默认情况下,数据速率为15Hz更新,查询HMC5883L在新测量数据寄存器之前,I2C主机允许产生67毫秒的延迟。计算新数据时钟,发送:0x3D,并记录下的DXRA,DXRB,DZRA,DZRB,DYRA,DYRB时钟脉冲位于寄存器3到8上。HMC5883L,下一个0将自动重新点回寄存器3x3D的查询。在新数据写入任何寄存器之前,所有六个寄存器必须正确读取

(1)首先确定IIC即从机地址IIC设备的地址查手册知为 0x3C

(2)确定HMC5883_Init()初始操作的配置。注意连续测量模式测量数据的实时变化

HMC5883_WriteReg(0x00,0x14); //配置寄存器A:输出速率30HZ正常测量 HMC5883_WriteReg(0x02,0x00); //配置模式寄存器:连续测量模式

(3)读数据

我们需要的数据是X和Y,其中|是按位还是X和Y的高位和低位加起来,先将MSB左移8位再与LSB按位或运算

BUF[1]=Single_Read(HMC5883L_Addr,0x03);   BUF[2]=Single_Read(HMC5883L_Addr,0x04);  BUF[3]=Single_Read(HMC5883L_Addr,0x07);  BUF[4]=Single_Read(HMC5883L_Addr,0x08);  x=(BUF[1] << 8) | BUF[2];   y=(BUF[3] << 8) | BUF[4];   if(x>0x7fff)x-=0xffff;       if(y>0x7fff)y-=0xffff;       angle= atan2(y,x) * (180 / 3.14159265)   180; 

θ=ATan(y/x)求出的θ取值范围是[-PI/2, PI/2]。

θ=ATan2(y, x)求出的θ取值范围是[-PI, PI]。

(二) 什么是磁偏角和方位公式

HMC五八八三轴数位罗盘对角度的计算公式。

angle= atan2(y,x) * (180 / 3.14159265) 180;

其实就是这样:
角度 = atan2(y,x) * (180 / π) 这里的角度是0~360°表示

X轴的正方向是正北 ,即上述0~360角度的180°表示正北,360°表示正南

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章