“SKU:RB-02S112 电子罗盘”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
产品相关推荐
 
(未显示1个用户的7个中间版本)
第1行: 第1行:
[[文件:02S11201.png|500px|缩略图|右]]
+
[[文件:02S112001.png|500px|缩略图|右]]
 
==产品概述==
 
==产品概述==
 
电子罗盘,又称数字罗盘,在现代技术条件中电子罗盘作为导航仪器或姿态传感器已被广泛应用。此款传感器是三轴数字罗盘,采用I2C串行总线接口,芯片选用Honeywell HMC5883L,具有高精度,偏移抑制等特点。此传感器具有12位ADC、低噪声、自检测、低电压操作和宽磁场范围等特点,并且内置驱动电路,采用I2C数字接口,体积小,轻便,操作简单。
 
电子罗盘,又称数字罗盘,在现代技术条件中电子罗盘作为导航仪器或姿态传感器已被广泛应用。此款传感器是三轴数字罗盘,采用I2C串行总线接口,芯片选用Honeywell HMC5883L,具有高精度,偏移抑制等特点。此传感器具有12位ADC、低噪声、自检测、低电压操作和宽磁场范围等特点,并且内置驱动电路,采用I2C数字接口,体积小,轻便,操作简单。
第13行: 第13行:
 
# 重量(g):3g
 
# 重量(g):3g
  
==使用方法==
+
* 产品尺寸图:
 +
[[文件:size036.jpg|500px|缩略图|居中]]
 +
 
 +
==基本使用方法==
 
1、测试环境<br/>
 
1、测试环境<br/>
 
* 硬件环境:Arduino 、电子罗盘
 
* 硬件环境:Arduino 、电子罗盘
第29行: 第32行:
 
4、测试程序<br/>
 
4、测试程序<br/>
 
<pre style='color:blue'>#include <Wire.h>
 
<pre style='color:blue'>#include <Wire.h>
#include <HMC5883L.h>
+
/*
 +
Analog input 4 I2C SDA
 +
Analog input 5 I2C SCL
 +
*/
  
HMC5883L compass;
+
#include <Wire.h> //I2C Arduino Library
  
void setup()
+
#define address 0x1E //0011110b, I2C 7bit address of HMC5883
{
+
 
 +
void setup(){
 +
  //Initialize Serial and I2C communications
 
   Serial.begin(9600);
 
   Serial.begin(9600);
 
+
   Wire.begin();
   // Initialize HMC5883L
+
  Serial.println("Initialize HMC5883L");
+
  while (!compass.begin())
+
  {
+
    Serial.println("Could not find a valid HMC5883L sensor, check wiring!");
+
    delay(500);
+
  }
+
 
    
 
    
   // Set measurement range
+
   //Put the HMC5883 IC into the correct operating mode
   // +/- 0.88 Ga: HMC5883L_RANGE_0_88GA
+
   Wire.beginTransmission(address); //open communication with HMC5883
  // +/- 1.30 Ga: HMC5883L_RANGE_1_3GA (default)
+
   Wire.write(0x02); //select mode register
  // +/- 1.90 Ga: HMC5883L_RANGE_1_9GA
+
   Wire.write(0x00); //continuous measurement mode
   // +/- 2.50 Ga: HMC5883L_RANGE_2_5GA
+
   Wire.endTransmission();
  // +/- 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_1GA
+
  compass.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_75HZ
+
  compass.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_8
+
  compass.setSamples(HMC5883L_SAMPLES_1);
+
 
+
  // Check settings
+
  checkSettings();
+
 
}
 
}
  
void checkSettings()
+
void loop(){
{
+
  Serial.print("Selected range: ");
+
 
    
 
    
   switch (compass.getRange())
+
   int x,y,z; //triple axis data
  {
+
 
    case HMC5883L_RANGE_0_88GA: Serial.println("0.88 Ga"); break;
+
  //Tell the HMC5883 where to begin reading data
    case HMC5883L_RANGE_1_3GA:  Serial.println("1.3 Ga"); break;
+
  Wire.beginTransmission(address);
    case HMC5883L_RANGE_1_9GA:  Serial.println("1.9 Ga"); break;
+
  Wire.write(0x03); //select register 3, X MSB register
    case HMC5883L_RANGE_2_5GA:  Serial.println("2.5 Ga"); break;
+
  Wire.endTransmission();
    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())
+
  //Read data from each axis, 2 registers per axis
  {  
+
   Wire.requestFrom(address, 6);
    case HMC5883L_IDLE: Serial.println("Idle mode"); break;
+
   if(6<=Wire.available()){
    case HMC5883L_SINGLE: Serial.println("Single-Measurement"); break;
+
     x = Wire.read()<<8; //X msb
    case HMC5883L_CONTINOUS:  Serial.println("Continuous-Measurement"); break;
+
     x |= Wire.read(); //X lsb
    default: Serial.println("Bad mode!");
+
     z = Wire.read()<<8; //Z msb
  }
+
     z |= Wire.read(); //Z lsb
 
+
     y = Wire.read()<<8; //Y msb
   Serial.print("Selected Data Rate: ");
+
     y |= Wire.read(); //Y lsb
   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: ");
+
  //Print out values of each axis
   switch (compass.getSamples())
+
   Serial.print("x: ");
  
+
   Serial.print(x);
    case HMC5883L_SAMPLES_1: Serial.println("1"); break;
+
   Serial.print(" y: ");
    case HMC5883L_SAMPLES_2: Serial.println("2"); break;
+
  Serial.print(y);
    case HMC5883L_SAMPLES_4: Serial.println("4"); break;
+
  Serial.print(" z: ");
    case HMC5883L_SAMPLES_8: Serial.println("8"); break;
+
  Serial.println(z);
    default: Serial.println("Bad number of samples!");
+
 
  }
+
  delay(250);
 
+
 
}
 
}
 
+
</pre>
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);
+
} </pre>
+
  
 
5、程序效果<br/>
 
5、程序效果<br/>
第162行: 第92行:
 
==产品相关推荐==
 
==产品相关推荐==
 
[[文件:erweima.png|230px|无框|右]]
 
[[文件:erweima.png|230px|无框|右]]
 +
=== 产品资料 ===
 +
下载链接:https://pan.baidu.com/s/1HsTWYCPT-zUK8L7_o7hpWQ
 +
提取码:540f
 
===产品购买地址===
 
===产品购买地址===
 
* [http://www.alsrobot.cn/goods-772.html 电子罗盘传感器 HMC5883L模块]
 
* [http://www.alsrobot.cn/goods-772.html 电子罗盘传感器 HMC5883L模块]

2021年12月10日 (五) 10:13的最后版本

02S112001.png

目录

产品概述

电子罗盘,又称数字罗盘,在现代技术条件中电子罗盘作为导航仪器或姿态传感器已被广泛应用。此款传感器是三轴数字罗盘,采用I2C串行总线接口,芯片选用Honeywell HMC5883L,具有高精度,偏移抑制等特点。此传感器具有12位ADC、低噪声、自检测、低电压操作和宽磁场范围等特点,并且内置驱动电路,采用I2C数字接口,体积小,轻便,操作简单。

产品参数

  1. 产品类型:数字传感器
  2. 接口类型:KF2510
  3. 工作电压:5V
  4. 工作温度:-25℃~+85℃
  5. 产品尺寸(mm):30x25mm
  6. 固定孔尺寸(mm):M3 * 4个
  7. 固定孔间距:23 * 18 mm
  8. 重量(g):3g
  • 产品尺寸图:
Size036.jpg

基本使用方法

1、测试环境

  • 硬件环境:Arduino 、电子罗盘
  • 软件环境:Arduino IDE 1.7.7

2、引脚定义

  • SDA:I2C总线的数据线引脚
  • SCL:2C总线的时钟信号引脚
  • -:电源负极
  • +:电源正极

3、硬件连接

02S11201.png

4、测试程序

#include <Wire.h>
/*
Analog input 4 I2C SDA
Analog input 5 I2C SCL
*/

#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);
}

5、程序效果
在串口监控窗口中分别打印X、Y、Z轴输出值,如图所示:

02S11202.png

产品相关推荐

Erweima.png

产品资料

下载链接:https://pan.baidu.com/s/1HsTWYCPT-zUK8L7_o7hpWQ 提取码:540f

产品购买地址

相关学习资料