STM32读取HMC5883L的偏航角数据

STM32读取HMC5883L的偏航角数据,第1张

HMC5883L是一种IIC通信的电子罗盘芯片,输出与北的角度偏差,数值是0-360度,靠西方向增长,可以理解为逆时针为正。配合GPS模块简直就是四轴飞行器的铁杆标配。

HMC5883L也是一个IIC器件,具体的 *** 作方式和前面介绍的MPU6050类似,这里就不在赘述了。主要区别在于5883作为IIC从机时,其地址为0x3C。

初始化HMC5883的方法和初始化MPU6050的方法差不太多,主要是模拟出IIC信号,对对应的寄存器 *** 作,具体的可查看HMC5883的说明手册。

取平均值之后,利用磁偏角公式可以求出角度。

如果前面MPU6050弄明白了,那5883也很容易弄懂。值得注意的有如下两个问题:

1. 接线

HMC5883和MPU605需要连接在同一个IIC总线上,下图是我们的接线方式。

最下方是没有用到的BMP模块

2. 四元数融合算法

要将HMC5883用到自主导航小车的姿态估算中,我们采用的是四元数融合算法,需要上传MPU6050和HMC5883的原始数据。如何进行四元数融合解算,我准备在下一篇文章写出。

本文首发https://blog.csdn.net/weixin_38172545/article/details/103044853

模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲(可以配置一个外部中断捕获DRDY引脚的下降沿,并在中断服务程序中读取数据),在STM32中可以设置一个下降沿触发的外部中断,并在中断服务程序中调用角度数据读取函数。

HMC5883和MPU6050是完全一样的。我之前用的STM32,加了一大堆头文件和函数什么的。前阵子在用别的芯片,感觉费事,就直接调在I2C时把两个传感器的配置一写。

读MPU6050时,只需要读一个X轴,然后把缓存区设成长度为6,它就能把XYZ三轴的高低位都读出来。HMC5883也是一样。只需要去读第一个X轴的地址。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7891733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存