新浪博客

Arduino Uno + HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验

2013-01-01 19:52阅读:
一、器件介绍:
(1) 器件介绍:
名称:HMC5883L电子指南针罗盘模块(三轴磁场传感器)
型号:GY-271
(2)主要技术参数:
使用芯片:HMCL5883L
供电电源:3-5V
通信方式:IIC通信协议
测试范围:± 1.3-8高斯
(3)工作原理:
传统罗盘用一根被磁化的磁针来感应地球磁场,地球磁场与磁针之间的磁力时磁针转动,直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也一样,只不过把磁针
换成了磁阻传感器,然后将感受到的地磁信息转换为数字信号输出给用户使用。
(4)产品应用领域:
手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统等。
(5)器件尺寸图:
Arduino <wbr>Uno <wbr>+ <wbr>HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验
Arduino <wbr>Uno <wbr>+ <wbr>HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验

二、测试实验:
(1)实验目的:
即时得到I平方C总线数据。(Ps:I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线)
(2)线路连接(理论):
Arduino <wbr>Uno <wbr>+ <wbr>HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验
(3)线路连接(实际):
Arduino <wbr>Uno <wbr>+ <wbr>HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验

(4)运行代码:
#include <Wire.h>
#include <HMC5883L.h>
HMC5883L compass;
void setup()
{
Serial.begin(9600);
Wire.begin();
compass = HMC5883L();
compass.SetScale(1.3);
compass.SetMeasurementMode(Measurement_Continuous);
}
void loop()
{
MagnetometerRaw raw = compass.ReadRawAxis();
MagnetometerScaled scaled = compass.ReadScaledAxis();
float xHeading = atan2(scaled.YAxis, scaled.XAxis);
float yHeading = atan2(scaled.ZAxis, scaled.XAxis);
float zHeading = atan2(scaled.ZAxis, scaled.YAxis);
if(xHeading < 0) xHeading += 2*PI;
if(xHeading > 2*PI) xHeading -= 2*PI;
if(yHeading < 0) yHeading += 2*PI;
if(yHeading > 2*PI) yHeading -= 2*PI;
if(zHeading < 0) zHeading += 2*PI;
if(zHeading > 2*PI) zHeading -= 2*PI;
float xDegrees = xHeading * 180/M_PI;
float yDegrees = yHeading * 180/M_PI;
float zDegrees = zHeading * 180/M_PI;
Serial.print(xDegrees);
Serial.print(',');
Serial.print(yDegrees);
Serial.print(',');
Serial.print(zDegrees);
Serial.println(';');
delay(100);
}

(5)测试结果图:
Arduino <wbr>Uno <wbr>+ <wbr>HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验

(6)操作过程中出现的问题及解决方案:
无法正常编译,原因:编译器版本过久,换了Arduino-0022编译器后能正常编译。
三、后期工作:
接下来的工作是测试陀螺仪与Multiwii lite板。

(以上资料部分源于互联网)
资料整理人:邓晨涛
实验测试者:邓晨涛,林峻民,彭帆,张世琳(按姓氏首字母排序)

我的更多文章

下载客户端阅读体验更佳

APP专享