电子指南针罗盘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 HMC5883
void setup(){
//Initialize Serial and I2C communications
Serial.begin(9600);
Wire.begin();
//Put the HMC5883 IC into the correct operating mode
Wire.beginTransmission(address); //open communication with HMC5883
Wire.write(0x02); //select mode register
Wire.write(0x00); //continuous measurement mode
Wire.endTransmission();
}
void loop(){
int x,y,z; //triple axis data
//Tell the HMC5883 where to begin reading data
Wire.beginTransmission(address);
Wire.write(0x03); //select register 3, X MSB register
Wire.endTransmission();
//Read data from each axis, 2 registers per axis
Wire.requestFrom(address, 6);
if(6<=Wire.available()){
x = Wire.read()<<8; //X msb
x |= Wire.read(); //X lsb
z = Wire.read()<<8; //Z msb
z |= Wire.read(); //Z lsb
y = Wire.read()<<8; //Y msb
y |= Wire.read(); //Y lsb
}
//Print out values of each axis
Serial.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相关推荐

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

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--电子指南针 电子指南针罗盘HMC5883L是三轴磁阻传感器,用来测量四周的磁感应强度,测量范围-8g~8g单位是高斯.提到磁感应强度最熟 ...

  2. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

    arduino开发ESP8266学习笔记四-–舵机 使用时发现会有ESP8266掉电的情况,应该是板上的稳压芯片的限流导致的,观测波形,发现当舵机运转时,电源线3.3V不再是稳定的3.3V,大概是在3 ...

  3. Arduino笔记实验(初级阶段)—Keypad小键盘

    Arduino笔记实验(初级阶段)-Keypad小键盘 文章目录 Arduino笔记实验(初级阶段)-Keypad小键盘 前言 一.电路图 二.集成库方案(Keypad) 三方集成库 代码 实验效果展 ...

  4. Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 文章目录 Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 前言 一.电路图 二.火焰传感器(4引脚)-有源蜂鸣器 代码 ...

  5. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  6. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  7. MSSQL编程笔记四 解决count distinct多个字段的方法

    MSSQL编程笔记四 解决count distinct多个字段的方法 参考文章: (1)MSSQL编程笔记四 解决count distinct多个字段的方法 (2)https://www.cnblog ...

  8. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

  9. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档

    POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...

  10. Ethernet/IP 学习笔记四

    Ethernet/IP 学习笔记四 EtherNet/IP Quick Start for Vendors Handbook (PUB213R0): https://www.odva.org/Port ...

最新文章

  1. case when里的like功能 ////// 截取(substr)
  2. java 默认字符集 iso_第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及......
  3. python抓取微博数据中心_有哪些「神奇」的数据获取方式?
  4. matlab gui设计实例_S-Funciton应用实例
  5. 空之轨迹sc存档_《空之轨迹》:一部优秀到让续作也无法超越的经典单机游戏!...
  6. DNS攻击原理与防范
  7. winserver 服务开机启动
  8. android 7.0电视,将智能电视升级到Android 7.0有什么经验?为索尼用户祝福
  9. 云视通存储怎么不是24小时_降压目标不是一次血压正常,而是24小时血压都要正常...
  10. 爬取http://ycb-benchmarks.s3-website-us-east-1.amazonaws.com/的链接并下载文件
  11. HasMany() = (1..*) HasOptional() = (1..0,1) HasRequired() = (1..1)
  12. QT5之MYSQL操作
  13. IPv6带给互联网的新契机
  14. restlet client插件下载
  15. 麻省理工学院计算机硕士几年制,2020年麻省理工学院硕士读几年
  16. java8 lambda 处理分类和子分类的技巧
  17. sun.misc.BASE64Encoder是内部专用 API, 可能会在未来发行版中删除
  18. f文件服务器,f文件服务器
  19. shell字符串切割 去除文件名后缀
  20. 影像篡改与识别(一):胶片时代

热门文章

  1. aac怎么转化为mp3格式?
  2. 关于MyEclipse 10 破解程序打开的原因
  3. 同步助手java_QQ同步助手Java版发布:八大手机平台全覆盖
  4. 操作系统期末考试重点知识
  5. 【日常】DES加密算法python实现_以密码编码学与网络安全——原理与实践(第六版)课后习题3.11为例
  6. Spring Boot日志格式化JSON方案
  7. ThinkPad E450 10.11 驱动HD4400的注意即解决方法_s芃成_新浪博客
  8. 【HUSTOJ】1051: 字符图形7-星号菱形
  9. 刷机-3.71M33升级到3.71M33-3的方法
  10. Servlet实现一个登陆界面