失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Arduino笔记四电子指南针罗盘HMC5883L

Arduino笔记四电子指南针罗盘HMC5883L

时间:2019-06-21 06:55:57

相关推荐

Arduino笔记四电子指南针罗盘HMC5883L

电子指南针罗盘HMC5883L是三轴磁阻传感器,用来测量周围的磁感应强度,测量范围-8g~8g单位是高斯。提到磁感应强度最熟悉的应该是高中时学的B单位T特斯拉,其实高斯也是磁感应强度单位,只不过高斯是很小的单位,10000高斯等于1特斯拉。网上是这么定义的:一段导线,若放在磁感应强度均匀的磁场中,方向与磁感应强度方向垂直的长直导在线通有1电磁系单位(emu)的稳恒电流(等于10安培)时,在每厘米长度的导线受到电磁力为1达因,则该磁感应强度就定义为1高斯。即1T(特斯拉)=10000g(高斯)

开发环境:

系统:XP

单板:Arduino Leonardo

平台:Arduino

目标:读三轴方向的磁感应强度,并通过串口显示

一、硬件介绍

电子指南针罗盘HMC5883L内嵌12-Bit ADC,测量磁感应强度范围-8g~8g单位高斯。HMC5883L模块原理图如下:

这里只用到SCL、SDA、VCC_3.3V、GND分别连接到Arduino的对应接口上。Arduino Leonardo上直接标有SDA、SCL连上即可,其它Arduino根据自己的板子连接。

二、编写测试代码

在Arduino上写代码非常简单,很多库都帮你做好了,直接调用即可,十分方便。但Arduino的版本很多,特别是Arduino-1.0以后,有些库有所改变,需要看对应版本的参考手册arduino-1.5.2-windows\arduino-1.5.2\reference下面有详细说明,我也是结合网上找的程序参考这些修改。代码如下:

文件HMC5883.ino

#include <Wire.h> //I2C Arduino Library#define address 0x1E //0011110b, I2C 7bit address of HMC5883void setup(){//Initialize Serial and I2C communicationsSerial.begin(9600);Wire.begin();//Put the HMC5883 IC into the correct operating modeWire.beginTransmission(address); //open communication with HMC5883Wire.write(0x02); //select mode registerWire.write(0x00); //continuous measurement modeWire.endTransmission();}void loop(){int x,y,z; //triple axis data//Tell the HMC5883 where to begin reading dataWire.beginTransmission(address);Wire.write(0x03); //select register 3, X MSB registerWire.endTransmission();//Read data from each axis, 2 registers per axisWire.requestFrom(address, 6);if(6<=Wire.available()){x = Wire.read()<<8; //X msbx |= Wire.read(); //X lsbz = Wire.read()<<8; //Z msbz |= Wire.read(); //Z lsby = Wire.read()<<8; //Y msby |= Wire.read(); //Y lsb}//Print out values of each axisSerial.print("x: ");Serial.print(x);Serial.print(" y: ");Serial.print(y);Serial.print(" z: ");Serial.println(z);delay(250);}

这个不懂只能对着手册看了。

三、编译、测试

Arduino还是很方便操作的,选择好单板、参考,直接点上面的“对勾”就开始编译,编译没问题,点“->”箭头状的,开始上传程序,直至上传进度条完成。

接着打开Tools/Serial Monitor 显示如下:

这是水平放置时的测量结果,倾斜模块可以看到值会变化。

如果觉得《Arduino笔记四电子指南针罗盘HMC5883L》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。