摘要:本文介绍使用HMC5883L电子罗盘模块来辨别方向
在前边制作避障小车的时候,大家可能已经发现,虽然两个轮子的驱动信号是一样的,但是小车可能不走直线,走过一端距离之后,小车就会偏向一边。这是由于电机的个体差异导致的,虽然是同一标准、同一批次生产的电动机,但在电气特性上还是存在着些许的差距,经过比较长距离的累积之后,表现出来的就是两个轮子累计转过的圈数不同,小车就会朝一边偏。
小车跑偏的一个解决办法就是通过长距离的测试,找出两个轮子转速的差距,然后调整控制信号PWM的占空比率,让转速慢的轮子占空比率大一些,而转速快的轮子占空比率小一些,就可以在很大程度上改善这个问题了。这种解决办法要经过很多次的测试,才能找到一个比较满意的参数出来。
那么有没有更好的办法呢?能不能让小车自己知道自己在朝哪个方向行驶,自己进行调整呢?答案当然是肯定的。可以给小车安装一个电子罗盘模块,让小车自己知道自己在朝着哪个方向行驶。
我们知道,地球附近的空间遍布着地磁场,地磁场的方向是从地球的地磁北极(地理南极附近)指向地磁南极(地理北极附近),传统的指南针就是利用了地磁场来辨别方向的。基于HMC5883L芯片的电子罗盘模块同样也是利用了这一原理,它通过测量相互垂直的X轴、Y轴和Z轴的磁场的磁通量大小,因为这三个方向的磁通量的矢量和始终指向地磁南极(地理北极附近),所以,就可以计算出HMC5883L电子罗盘模块的水平方向角了,从而可以确定自己的朝向。
和前面的红外测距模块一样,HMC5833L电子罗盘模块也是通过内部寄存器来和外界交互的,通过这些寄存器可以对其设置,也可以得到模块的测量数据。具体的寄存器如下表:
地址 |
名称 |
访问 |
用途 |
00 |
配置寄存器A |
读/写 |
采样平均数、数据输出速率和测量配置寄存器 |
01 |
配置寄存器B |
读/写 |
增益配置寄存器 |
02 |
模式寄存器 |
读/写 |
测量模式配置寄存器,连续模式/单一模式(默认)。 |
03 |
数据输出X MSB寄存器 |
读 |
通道X测量结果的高位数据。 |
04 |
数据输出X LSB寄存器 |
读 |
通道X测量结果的低位数据。 |
05 |
数据输出Z MSB寄存器 |
读 |
通道Z测量结果的高位数据。 |
06 |
数据输出Z LSB寄存器 |
读 |
通道Z测量结果的低位数据。 |
07 |
数据输出Y MSB寄存器 |
读 |
通道Y测量结果的高位数据。 |
08 |
数据输出Y LSB寄存器 |
读 |