HMC5883 电子罗盘

news/2024/12/2 12:53:24/

最近两天学习HMC5883电子罗盘,电子罗盘也叫指南针。

通讯方式:I2C  

HMC寄存器:

#define    Write_Address     0x3C      //定义器件5883在IIC总线中的从地址
#define    Read_Address    0x3D      //地址读
#define    Config_RegA       0x00
#define    Config_RegB      0x01
#define    Mode_Reg          0x02
#define X_MSB                 0x03      //数据寄存器地址
#define X_LSB            0x04
#define Y_MSB            0x07
#define Y_LSB            0x08
#define Z_MSB            0x05
#define Z_LSB            0x06     内容不多,首先是I2c通讯成功之后,通过写或者读方式,读取寄存器的值。首先通过配置寄存器A设置数据传输的速率和测量配置WriteReg_HMC5883(Config_RegA,0x70)。

配置寄存器 B 设置该装置的增益,WriteReg_HMC5883(Mode_Reg,0x00);
模式寄存器是设置数据的传输方式WriteReg_HMC5883(Mode_Reg,0x00); 程序中设置为连续传输。


            X_MSB ,X_LSB  , Y_MSB  , Y_LSB ,  Z_MSB , Z_LSB这六个寄存器是用来存储X轴,Y轴,z轴的数据。MSB存储高八位的数据,LSB存储地八位的数据。把数据保存到数组中,以便后续应用。

    temp=ReadReg_HMC5883(X_MSB); data[0]=(temp<<8)+ReadReg_HMC5883(X_LSB);
    temp=ReadReg_HMC5883(Y_MSB); data[1]=(temp<<8)+ReadReg_HMC5883(Y_LSB);
    temp=ReadReg_HMC5883(Z_MSB);data[2]=(temp<<8)+ReadReg_HMC5883(Z_LSB);    

  在使用之前还需要对电子罗盘进行校正,首相把电子罗盘水平放在平面上,旋转一周,读取这一周的最大最小值,求平均。

 offsetX = (xMax + xMin)/2;    offsetY = (yMax + yMin)/2;   

目前,我只是利用电子罗盘的角度,并不需要进行精确角度,利用相对角度就可以。后期加入mpu6050进行数据融合才校正。

目前,我遇到最棘手的问题是:把电子罗盘放在车头的,结果旋转一周的时候,角度变化并不是十分明显,150以下。我放在空中旋转有360的变化范围,也是我想要的结果。

可能靠近铜柱对磁场有干扰,网上有人说用锡纸裹住也可以。但我试了没有效果,估计是方法不对。留着记录,以便后面研究。


http://www.ppmy.cn/news/157342.html

相关文章

TC8:ARP_36-40

ARP_36: ARP request reception (Target Protocol Address correct) 目的 Tester发送一条Target IP Address字段设置为DUT ip地址的ARP请求(当然其他字段都正确),期望DUT回复一个ARP响应 对于以太网来说,ARP请求或响应的目标协议地址字段应该设置为目的主机的ip地址 测试…

【ntp】ntpdatentpd

ref 随笔分类 - NTPlinux时间同步&#xff0c;ntpd、ntpdateNTP时间服务相关基础及配置文件详解 ntp(ntpq) ntpdate sudo ntpdate cn.pool.ntp.org ntpd Ubuntu适用 service ntp start: 启动ntpd服务service ntp stop: 停止service ntp restart: 重启ntpq -p: 查看运行状…

TPS793475DBVREP

TPS793475DBVREP 规格 产品属性 制造商:Texas Instruments 产品种类:低压差稳压器 RoHS: 详细信息 安装风格:SMD/SMT 封装 / 箱体:SOT-23-5 输出电压:4.75 V 输出电流:200 mA 输出端数量:1 Output 极性:Positive 静态电流:220 uA 输入电压&#xff08;比较小值&#xff09;:2.7…

pt1000计算公式,pt1000分度表

PT1000是铂热电阻&#xff0c;它的阻值会随着温度的变化而改变。PT后的1000即表示它在0℃时阻值为1000欧姆&#xff0c;在300℃时它的阻值约为2120.515欧姆。它的工作原理&#xff1a;当PT1000在0摄氏度的时候&#xff0c;它的阻值为1000欧姆&#xff0c;其阻值随温度呈线性变化…

PTA 174-177

7-174 六度空间 “六度空间”理论又称作“六度分隔&#xff08;Six Degrees of Separation&#xff09;”理论。这个理论可以通俗地阐述为&#xff1a;“你和任何一个陌生人之间所间隔的人不会超过六个&#xff0c;也就是说&#xff0c;最多通过五个人你就能够认识任何一个陌生…

【闲聊STP/RSTP】

闲聊STP/RSTP&#xff08;Spanning Tree Protocol&#xff09; STP&#xff08;Spanning Tree Protocol&#xff09;&#xff0c;1998年IEEE提出的802.1D协议&#xff0c;它是一种二层&#xff08;数据链路层&#xff09;管理协议&#xff0c;通过有选择性地阻塞网络冗余链路来…

TC397 WDG

简介 watchdog&#xff08;WD&#xff09;一方面提供了一种高度可靠和安全的方法来检测软件或硬件故障并从中恢复&#xff0c;另一方面还提供了防止意外寄存器写入访问的保护。 看门狗有两种类型&#xff1a; Safety WD 可防止意外写入关键系统寄存器和存储器。 它由一个定时…

P00587. 染色

P00587. 染色 传统题 1000ms 256MiB Description 机房的窗户是一个n行m列的方格阵&#xff0c;n,m未知 小J准备对窗户进行染色 他准备将最外圈的方格染成红色的&#xff0c;其余方格染成黑色的。 现给出红色方格的个数r和黑色方格的个数b&#xff0c;也就是说你会知道一共…