简介
起初,惯性测量单元是一个措施,在飞机的速度、定位报告的电子装置,与引力,组合使用加速度计,陀螺仪,磁力计。现在伊穆斯是常用的人机交互(HCI)、航海和平衡技术应用于辆Segway众所周知。采用DFrobot的高集成度低成本的10自由度传感器。集合了ADXL345加速度计、VCM5883L磁罗盘、ITG3205陀螺仪以及BMP280气压传感器和温度传感器。它小巧玲珑的身材能够适合大多数控制系统要求,它设计精巧的安装孔也使传感器的数据更加精确和可靠。内置了低噪声的低压线性稳压器,还扩展了电源电压输入范围,支持3V-5V电源电压。当然了,10自由度IMU也可以直接和Arduino控制板兼容。
版本升级:V2.0把BMP085升级成了BMP280气压传感器,V1.0用户可以下载V1.0库文件。
技术规格
- 工作电压:3.3V-5V DC
- 低噪声LDO稳压器
- I2C接口
- 集成10自由度姿态传感器
- ADXL345加速度计
- ITG3200陀螺
- VCM5883L罗盘
- BMP280气压传感器(V2.0版本)
- Arduino 控制器兼容
- 工作温度:-20-70 ℃
- 产品尺寸:26*18 mm
引脚说明
:
标号 | 名称 | 功能描述 |
---|---|---|
1 | VIN | 电源正极 |
2 | GND | 电源负极 |
3 | SCL | I2C串行时钟线 |
4 | SDA | I2C串行数据线 |
引脚说明
使用教程
准备
硬件
- 1 x UNO控制板
- 1 x 10 DOF Sensor模块
- 杜邦线若干
软件
- Arduino IDE, 点击下载Arduino IDE
- VCM5883库
- BMP280库
- FreeSixIMU 库文件
关于如何安装库文件,点击链接
连接图
样例代码
#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <Wire.h>
float angles[3]; // yaw pitch roll
// Set the FreeSixIMU object
FreeSixIMU sixDOF = FreeSixIMU();
void setup() {
Serial.begin(9600);
Wire.begin();
delay(5);
sixDOF.init(); //begin the IMU
delay(5);
}
void loop() {
sixDOF.getEuler(angles);
Serial.print(angles[0]);
Serial.print(" | ");
Serial.print(angles[1]);
Serial.print(" | ");
Serial.println(angles[2]);
delay(100);
}
测量结果
样例代码
测试BMP280
/*!
* read_data.ino
*
* Download this demo to test simple read from bmp280, connect sensor through IIC interface
* Data will print on your serial monitor
*
* Copyright [DFRobot](https://www.dfrobot.com), 2016
* Copyright GNU Lesser General Public License
*
* version V1.0
* date 12/03/2019
*/
#include "DFRobot_BMP280.h"
#include "Wire.h"
typedef DFRobot_BMP280_IIC BMP; // ******** use abbreviations instead of full names ********
BMP bmp(&Wire, 0x76);
#define SEA_LEVEL_PRESSURE 1015.0f // sea level pressure
// show last sensor operate status
void printLastOperateStatus(BMP::eStatus_t eStatus)
{
switch(eStatus) {
case BMP::eStatusOK: Serial.println("everything ok"); break;
case BMP::eStatusErr: Serial.println("unknow error"); break;
case BMP::eStatusErrDeviceNotDetected: Serial.println("device not detected"); break;
case BMP::eStatusErrParameter: Serial.println("parameter error"); break;
default: Serial.println("unknow status"); break;
}
}
void setup()
{
Serial.begin(115200);
bmp.reset();
Serial.println("bmp read data test");
while(bmp.begin() != BMP::eStatusOK) {
Serial.println("bmp begin faild");
printLastOperateStatus(bmp.lastOperateStatus);
delay(2000);
}
Serial.println("bmp begin success");
delay(100);
}
void loop()
{
float temp = bmp.getTemperature();
uint32_t press = bmp.getPressure();
float alti = bmp.calAltitude(SEA_LEVEL_PRESSURE, press);
Serial.println();
Serial.println("======== start print ========");
Serial.print("temperature (unit Celsius): "); Serial.println(temp);
Serial.print("pressure (unit pa): "); Serial.println(press);
Serial.print("altitude (unit meter): "); Serial.println(alti);
Serial.println("======== end print ========");
delay(1000);
}
产品尺寸
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |