加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2013-01-01 19:52:05)
标签:

it

四轴飞行器

hmc5883l

电子指南针罗盘模块

三轴磁场传感器

一、器件介绍:

 (1) 器件介绍:

        名称:HMC5883L电子指南针罗盘模块(三轴磁场传感器)

        型号:GY-271

 (2)主要技术参数:

        使用芯片:HMCL5883L

        供电电源:3-5V

        通信方式:IIC通信协议

        测试范围:± 1.3-8高斯

 (3)工作原理:

       传统罗盘用一根被磁化的磁针来感应地球磁场,地球磁场与磁针之间的磁力时磁针转动,直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也一样,只不过把磁针换成了磁阻传感器,然后将感受到的地磁信息转换为数字信号输出给用户使用。

 (4)产品应用领域:

        手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统等。 

 (5)器件尺寸图:

http://s4/mw690/b4d6244ag7b6c337c3433&690Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" TITLE="Arduino Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" />

http://s14/mw690/b4d6244agd23a02ea5a0d&690Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" TITLE="Arduino Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" />

     

二、测试实验:

 (1)实验目的:

     即时得到I平方C总线数据。(Ps:I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线)

 (2)线路连接(理论):

http://s10/mw690/b4d6244agd239d071bd69&690Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" TITLE="Arduino Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" />

 (3)线路连接(实际): 

http://s7/mw690/b4d6244agd2394e787e86&690Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" TITLE="Arduino Uno 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)测试结果图:

http://s10/mw690/b4d6244agd2398abaa669&690Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" TITLE="Arduino Uno HMC5883L电子指南针罗盘模块(三轴磁场传感器)简介及测试实验" />

 (6)操作过程中出现的问题及解决方案:

    无法正常编译,原因:编译器版本过久,换了Arduino-0022编译器后能正常编译。

三、后期工作:

    接下来的工作是测试陀螺仪与Multiwii lite板。

 

(以上资料部分源于互联网)

资料整理人:邓晨涛

实验测试者:邓晨涛,林峻民,彭帆,张世琳(按姓氏首字母排序)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有