Arduino Uno + HMC5883L电子罗盘 实验

article/2025/10/13 16:06:22

 

 

实现  HMC5883L 电子罗盘 简单的数据读取实验

 

实验效果

本实验,简单显示从HMC5883L 读取到的数据

 

BOM表

Arduino Uno  *  1

HMC5883L(gy-273) * 1

跳线若干

 

接线图

Arduino Uno            <---->   HMC5883L

5v                               <---->             VCC

GND                          <---->             GND

A5(SCL)                    <---->             SCL

A4(SDA)                    <---->             SDA                                               

 

开源程序

下载库文件   https://github.com/jarzebski/Arduino-HMC5883L

把文件夹保存在libraries 文件夹里

 

打开Arduino IDE --> 文件  --> 示例 --> Arduino-HMC5883L-master --> HMC5883L_simple   

就会见到如下代码:

 

/*HMC5883L Triple Axis Digital Compass. Simple Example.Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-magnetometr-hmc5883l.htmlGIT: https://github.com/jarzebski/Arduino-HMC5883LWeb: http://www.jarzebski.pl(c) 2014 by Korneliusz Jarzebski
*/#include <Wire.h>
#include <HMC5883L.h>HMC5883L compass;void setup()
{Serial.begin(9600);// Initialize HMC5883LSerial.println("Initialize HMC5883L");while (!compass.begin()){Serial.println("Could not find a valid HMC5883L sensor, check wiring!");delay(500);}// Set measurement range// +/- 0.88 Ga: HMC5883L_RANGE_0_88GA// +/- 1.30 Ga: HMC5883L_RANGE_1_3GA (default)// +/- 1.90 Ga: HMC5883L_RANGE_1_9GA// +/- 2.50 Ga: HMC5883L_RANGE_2_5GA// +/- 4.00 Ga: HMC5883L_RANGE_4GA// +/- 4.70 Ga: HMC5883L_RANGE_4_7GA// +/- 5.60 Ga: HMC5883L_RANGE_5_6GA// +/- 8.10 Ga: HMC5883L_RANGE_8_1GAcompass.setRange(HMC5883L_RANGE_1_3GA);// Set measurement mode// Idle mode:              HMC5883L_IDLE// Single-Measurement:     HMC5883L_SINGLE// Continuous-Measurement: HMC5883L_CONTINOUS (default)compass.setMeasurementMode(HMC5883L_CONTINOUS);// Set data rate//  0.75Hz: HMC5883L_DATARATE_0_75HZ//  1.50Hz: HMC5883L_DATARATE_1_5HZ//  3.00Hz: HMC5883L_DATARATE_3HZ//  7.50Hz: HMC5883L_DATARATE_7_50HZ// 15.00Hz: HMC5883L_DATARATE_15HZ (default)// 30.00Hz: HMC5883L_DATARATE_30HZ// 75.00Hz: HMC5883L_DATARATE_75HZcompass.setDataRate(HMC5883L_DATARATE_15HZ);// Set number of samples averaged// 1 sample:  HMC5883L_SAMPLES_1 (default)// 2 samples: HMC5883L_SAMPLES_2// 4 samples: HMC5883L_SAMPLES_4// 8 samples: HMC5883L_SAMPLES_8compass.setSamples(HMC5883L_SAMPLES_1);// Check settingscheckSettings();
}void checkSettings()
{Serial.print("Selected range: ");switch (compass.getRange()){case HMC5883L_RANGE_0_88GA: Serial.println("0.88 Ga"); break;case HMC5883L_RANGE_1_3GA:  Serial.println("1.3 Ga"); break;case HMC5883L_RANGE_1_9GA:  Serial.println("1.9 Ga"); break;case HMC5883L_RANGE_2_5GA:  Serial.println("2.5 Ga"); break;case HMC5883L_RANGE_4GA:    Serial.println("4 Ga"); break;case HMC5883L_RANGE_4_7GA:  Serial.println("4.7 Ga"); break;case HMC5883L_RANGE_5_6GA:  Serial.println("5.6 Ga"); break;case HMC5883L_RANGE_8_1GA:  Serial.println("8.1 Ga"); break;default: Serial.println("Bad range!");}Serial.print("Selected Measurement Mode: ");switch (compass.getMeasurementMode()){  case HMC5883L_IDLE: Serial.println("Idle mode"); break;case HMC5883L_SINGLE:  Serial.println("Single-Measurement"); break;case HMC5883L_CONTINOUS:  Serial.println("Continuous-Measurement"); break;default: Serial.println("Bad mode!");}Serial.print("Selected Data Rate: ");switch (compass.getDataRate()){  case HMC5883L_DATARATE_0_75_HZ: Serial.println("0.75 Hz"); break;case HMC5883L_DATARATE_1_5HZ:  Serial.println("1.5 Hz"); break;case HMC5883L_DATARATE_3HZ:  Serial.println("3 Hz"); break;case HMC5883L_DATARATE_7_5HZ: Serial.println("7.5 Hz"); break;case HMC5883L_DATARATE_15HZ:  Serial.println("15 Hz"); break;case HMC5883L_DATARATE_30HZ: Serial.println("30 Hz"); break;case HMC5883L_DATARATE_75HZ:  Serial.println("75 Hz"); break;default: Serial.println("Bad data rate!");}Serial.print("Selected number of samples: ");switch (compass.getSamples()){  case HMC5883L_SAMPLES_1: Serial.println("1"); break;case HMC5883L_SAMPLES_2: Serial.println("2"); break;case HMC5883L_SAMPLES_4: Serial.println("4"); break;case HMC5883L_SAMPLES_8: Serial.println("8"); break;default: Serial.println("Bad number of samples!");}}void loop()
{Vector raw = compass.readRaw();Vector norm = compass.readNormalize();Serial.print(" Xraw = ");Serial.print(raw.XAxis);Serial.print(" Yraw = ");Serial.print(raw.YAxis);Serial.print(" Zraw = ");Serial.print(raw.ZAxis);Serial.print(" Xnorm = ");Serial.print(norm.XAxis);Serial.print(" Ynorm = ");Serial.print(norm.YAxis);Serial.print(" ZNorm = ");Serial.print(norm.ZAxis);Serial.println();  delay(100);
}

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/ZYHPbdBX.shtml

相关文章

【模块学习】关于磁力计HMC5883L型号探索

关于磁力计HMC5883L型号探索 一&#xff0e;序言 在众多磁力计中&#xff0c;HMC5883L因为其廉价实用而受到大多数嵌入式开发小白的追捧。然而某宝上不仅仅有HMC5883L这一款&#xff0c;还有QMC5883和HMC5983&#xff0c;常有商家搞不清芯片就出售&#xff0c;导致提供的数据手…

HMC5883Lnbsp;磁力计校准

原文地址&#xff1a;HMC5883L 磁力计校准 作者&#xff1a;WalkAnt 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁力计在含有…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录 硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式 QMC5883L连续测量模式待命模式 主要差异寄存器寄存器列表HMC5883LQMC5883L 配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器 QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register 数据输出寄存器…

ESP32设备驱动-HMC5883L磁场传感器驱动

HMC5883L磁场传感器驱动 1、HMC5883L介绍 霍尼韦尔 HMC5883L 是一款表面贴装、多芯片模块,专为低场磁场传感而设计,具有数字接口,适用于低成本罗盘和磁力计等应用。 HMC5883L 包括我们先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含放大、自动消磁带驱动…

STM32读取HMC5883L的偏航角数据

HMC5883L是一种IIC通信的电子罗盘芯片&#xff0c;输出与北的角度偏差&#xff0c;数值是0-360度&#xff0c;靠西方向增长&#xff0c;可以理解为逆时针为正。配合GPS模块简直就是四轴飞行器的铁杆标配。 5883的初始化 HMC5883L也是一个IIC器件&#xff0c;具体的操作方式和…

HMC5883L 磁力计校准

原文地址&#xff1a; http://blog.sina.com.cn/s/blog_402c071e0102v8ie.html 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁…

使用Arduino和HMC5883L磁力计的数字罗盘

原文&#xff1a;https://circuitdigest.com/microcontroller-projects/digital-compass-with-arduino-and-hmc5883l-magnetometer 使用Arduino和HMC5883L磁力计的数字罗盘 ARDUINO的 经过**阿斯温斯拉吉(Aswinth Raj)** 2018年11月6日 人脑由复杂的结构层构成&#xff0c…

地磁计HMC5883L

信方式&#xff1a;IIC 工作电压&#xff1a;2.16~3.6V 工作电流&#xff1a;100uA 罗盘航向精度&#xff1a;1~2 当达到预定的最大输出频率&#xff0c;才需要监控DRDY中断引脚 I2C接口 装置包含一个7-bits串行地址&#xff0c;并且支持标注和快速模式&#xff08;100kHZ和400…

3轴数字罗盘IC HMC5883L介绍

3轴数字罗盘IC HMC5883L简介 霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大…

HMC5883L

霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校…

STM32模拟I2C协议获取HMC5883L电子罗盘磁角度数据 (HAL)

STM32模拟I2C协议获取HMC5883L电子罗盘磁角度数据(HAL) HMC5883L 传感器采用霍尼韦尔各向异性磁阻(AMR)技术&#xff0c;应用于罗盘和三轴磁场角度检测领域&#xff0c;常用于水平物体转动的角度识别。HMC5883L 采用I2C总线接口&#xff0c;2.16~3.6V供电范围&#xff0c;带有…

[11]ESP32+三轴磁罗盘HMC5883L移植与调试

文章目录 一、开发笔记二、初始化与工作流程1. 设置测量模式2. 设置采样率&#xff08;默认15Hz&#xff09;3. 设置测量范围4. 校准5. 开始测量6. 自测试操作&#xff08;可选&#xff09; 三、寄存器表1. 00-配置寄存器A2. 01-配置寄存器B3. 02-模式寄存器4. 09-状态寄存器5.…

STM32 HAL I2C读取HMC5883L磁偏角的实践

STM32 HAL I2C读取HMC5883L磁偏角的实践 源由成果代码头文件 G85HAL.h子文件 G85HAL.C主程序调用配置I2C引脚参考链接 源由 用传统的方式编写I2C总线数据读取&#xff0c;程序代码细碎&#xff0c;不好维护&#xff0c;移植性不好。CUBE MX配置方便灵活&#xff0c;程序架构好…

(二十六)树莓派3B+ 获取HMC5883L的磁场数据

模块介绍 霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动…

HMC5883L校准

HMC5883L 磁力计校准 (2015-02-14 11:48:21) 转载▼ 标签&#xff1a; hmc5883 磁力计 校准 分类&#xff1a; 电子技术 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blo…

STC 51单片机53——电子指南针HMC5883l

#include <REG51.H> #include <math.h> //Keil library #include <stdio.h> //Keil library #include <INTRINS.H> #define uchar unsigned char #define uint unsigned int //使用的端口&#xff0c;请按照以下接线 sbit …

HMC5883l磁力计数据读取

1.数据手册地址 2.芯片介绍 设备的7位地址为0x1e&#xff0c;读地址为0x3d&#xff0c;写地址为0x3c。如图 2.主要需要配置的寄存器有3个。分别是配置寄存器A&#xff08;0x00&#xff09;&#xff0c;配置寄存器B&#xff08;0x01&#xff09;和模式寄存器&#xff08;0x03&…

ESP8266-Arduino编程实例-HMC5883L磁场传感器

HMC5883L磁场传感器 1、HMC5883L介绍 霍尼韦尔 HMC5883L 是一款表面贴装、多芯片模块,专为低场磁场传感而设计,具有数字接口,适用于低成本罗盘和磁力计等应用。 HMC5883L 包括我们先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含放大、自动消磁带驱动器、…

HMC5883L电子罗盘原理及应用,全网最详细~

寄存器配置部分 HMC5883L模块具有两个配置寄存器&#xff0c;配置寄存器A用来配置该装置设置的数据输出速率和测量配置&#xff1b;配置寄存器 B 设置装置的增益。 模式寄存器则是用来设定装置的操作模式&#xff0c;有连续测量模式&#xff0c;单一测量模式和闲置模式等。具…

HMC5883L磁力计使用

一、器件简介 HMC5883L是一款三轴磁场传感器&#xff0c;电子指南针罗盘模块。采用IIC通讯协议。 二、工作原理 传统罗盘用一根被磁化的磁针来感应地球磁场&#xff0c;地球磁场与磁针之间的磁力时磁针转动&#xff0c;直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也…