“10 DOF IMU Sensor (D)”的版本间的差异
Waveshare-admin(讨论 | 贡献) 小 (Text replace - "http://www.waveshare.net/" to "http://www.waveshare.net/") |
小 (文本替换 - 替换“<h1>技术支持</h1>”为“=售后=”) |
||
(未显示5个用户的27个中间版本) | |||
第1行: | 第1行: | ||
+ | <div class="wiki-pages blue-color"> | ||
+ | <!--<div class="tabberlive newwsnav" id="wsnavbar"> | ||
+ | <ul class="tabbernav"> | ||
+ | <li class="nav-link">[[#myintro|说明]]</li> | ||
+ | <li class="nav-link">[[#myresources|资料]]</li> | ||
+ | <li class="nav-link">[[#myfaq|FAQ]]</li> | ||
+ | <li class="nav-link">[[#mysupport|售后]]</li> | ||
+ | </ul> | ||
+ | </div>--> | ||
<div class="tabber"> | <div class="tabber"> | ||
{{外围模块|colorscheme=blue | {{外围模块|colorscheme=blue | ||
− | |img=[[File:10-DOF-IMU-Sensor-D-1.jpg|360px |alt=10 DOF IMU Sensor (D)|link= | + | |img=[[File:10-DOF-IMU-Sensor-D-1.jpg|360px |alt=10 DOF IMU Sensor (D)|link=https://{{SERVERNAME}}/shop/10-DOF-IMU-Sensor-D.htm | 10 DOF IMU Sensor (D)]] |
|category1=加速度/角速度/指南针 | |category1=加速度/角速度/指南针 | ||
|category2=传感器 | |category2=传感器 | ||
第10行: | 第19行: | ||
| interface1 =I2C | | interface1 =I2C | ||
}} | }} | ||
− | <div class="tabbertab" title="说明"> | + | <div class="tabbertab" title="说明" id="myintro"> |
+ | =说明= | ||
==产品概述== | ==产品概述== | ||
这是一款10轴传感器,板载低功耗ICM20948(3轴加速度、3轴陀螺仪和3轴磁力计),内置数字运动处理引擎,可减少复杂的融合演算数据,减轻处理器的负荷,相比MPU9250,精度更高,拥有更低的功耗,更适用于可穿戴设备。板载BMP280(气压高度计),内置温度传感器,可进行温度补偿,相比BMP180,拥有更强的性能和更低的功耗。通过I2C通信就能获取10轴数据。 | 这是一款10轴传感器,板载低功耗ICM20948(3轴加速度、3轴陀螺仪和3轴磁力计),内置数字运动处理引擎,可减少复杂的融合演算数据,减轻处理器的负荷,相比MPU9250,精度更高,拥有更低的功耗,更适用于可穿戴设备。板载BMP280(气压高度计),内置温度传感器,可进行温度补偿,相比BMP180,拥有更强的性能和更低的功耗。通过I2C通信就能获取10轴数据。 | ||
==产品特性== | ==产品特性== | ||
*供电范围:3.3V~5V(内部低压差稳压) | *供电范围:3.3V~5V(内部低压差稳压) | ||
− | + | *加速度计特性: | |
− | *分辨率:16位 | + | **分辨率:16位 |
− | *量程(可选):±2、±4、±8、±16g | + | **量程(可选):±2、±4、±8、±16g |
− | *工作电流:68.9uA | + | **工作电流:68.9uA |
− | 陀螺仪特性: | + | *陀螺仪特性: |
− | *分辨率:16位 | + | **分辨率:16位 |
− | *量程(可选):±250、±500、 ±1000、±2000°/sec | + | **量程(可选):±250、±500、 ±1000、±2000°/sec |
− | *工作电流:1.23mA | + | **工作电流:1.23mA |
− | 磁力计特性: | + | *磁力计特性: |
− | *分辨率:16位 | + | **分辨率:16位 |
− | *量程:±4900µT | + | **量程:±4900µT |
− | *工作电流:90uA | + | **工作电流:90uA |
− | + | *气压高度计特性: | |
− | *气压分辨率:0.0016hPa | + | **气压分辨率:0.0016hPa |
− | *温度分辨率:0.01°C | + | **温度分辨率:0.01°C |
− | *量程:300~1100hPa(海拔高度:+9000m ~ -500m) | + | **量程:300~1100hPa(海拔高度:+9000m ~ -500m) |
− | *气压相对精度(700hPa~900hPa,25°C~40°C):±0.12hPa(±1m) | + | **气压相对精度(700hPa~900hPa,25°C~40°C):±0.12hPa(±1m) |
− | *工作电流(1Hz更新速率,超低功耗模式):2.8uA | + | **工作电流(1Hz更新速率,超低功耗模式):2.8uA |
+ | |||
==接口说明== | ==接口说明== | ||
第39行: | 第50行: | ||
|引脚号||标识||描述 | |引脚号||标识||描述 | ||
|-align="center" | |-align="center" | ||
− | |1||VCC||3.3V | + | |1||VCC|| 3.3V~5.5v电源 |
|-align="center" | |-align="center" | ||
|2||GND|| 电源地 | |2||GND|| 电源地 | ||
第51行: | 第62行: | ||
|6||FSYNC||ICM20948帧同步信号 | |6||FSYNC||ICM20948帧同步信号 | ||
|} | |} | ||
− | = | + | </div> |
− | == | + | |
− | + | =传感器介绍= | |
− | + | <div class="tabbertab" title="传感器介绍"> | |
− | + | {{10 DOF IMU Sensor Introduction}} | |
− | + | </div> | |
− | + | =RPI使用教程= | |
− | + | <div class="tabbertab" title="RPI使用教程"> | |
− | + | {{10 DOF IMU for RPIuse}} | |
− | + | </div> | |
− | + | =STM32使用教程= | |
− | + | <div class="tabbertab" title="STM32使用教程"> | |
− | + | {{10 DOF IMU for STM32 use}} | |
− | + | </div> | |
− | + | =Arduino使用教程= | |
− | + | <div class="tabbertab" title="Arduino使用教程"> | |
+ | {{10 DOF IMU for Arduino use}} | ||
+ | </div> | ||
− | + | <div class="tabbertab" title="资料" id="myresources"> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <h1>资料</h1> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===文档=== | ===文档=== | ||
− | *[ | + | *[https://{{SERVERNAME}}/w/upload/7/75/10_DOF_IMU_Sensor_D_User_Manual.pdf 用户手册] <br> |
− | *[ | + | *[https://{{SERVERNAME}}/w/upload/a/a4/10_DOF_IMU_Sensor_D_Schematic.pdf 原理图]<br /> |
<!--*[[:File:10_DOF_IMU_Sensor_D_Schematic.pdf|原理图]] <br>--> | <!--*[[:File:10_DOF_IMU_Sensor_D_Schematic.pdf|原理图]] <br>--> | ||
===程序=== | ===程序=== | ||
− | *[ | + | *[https://www.waveshare.net/w/upload/c/c1/10_DOF_IMU_Sensor_D_Code.7z 示例程序] <br> |
===视频=== | ===视频=== | ||
*[[10-DOF-IMU-Sensor-B-Video|演示视频]][[File:video-logo.png|23px|link=10-DOF-IMU-Sensor-B-Video]] | *[[10-DOF-IMU-Sensor-B-Video|演示视频]][[File:video-logo.png|23px|link=10-DOF-IMU-Sensor-B-Video]] | ||
===数据手册=== | ===数据手册=== | ||
− | *[ | + | *[https://www.waveshare.net/w/upload/1/18/DS-000189-ICM-20948-v1.3.pdf ICM-20948] |
*[[:File:BST-BMP280-DS001-09-371189.pdf|BST-BMP280-DS001-09-371189]] | *[[:File:BST-BMP280-DS001-09-371189.pdf|BST-BMP280-DS001-09-371189]] | ||
*[[:File:NDC7002N.pdf|NDC7002N]] | *[[:File:NDC7002N.pdf|NDC7002N]] | ||
*[[:File:RT9193.pdf|RT9193]] | *[[:File:RT9193.pdf|RT9193]] | ||
− | |||
+ | |||
+ | </div> | ||
+ | <div class="tabbertab" title="FAQ" id="myfaq"> | ||
+ | |||
+ | <h1>FAQ</h1> | ||
+ | {{10-DOF-IMU-Sensor-FAQ}}</div> | ||
+ | <div class="tabbertab" title="售后" id="mysupport"> | ||
+ | |||
+ | =售后= | ||
+ | <br /> | ||
+ | {{Service20}}</div> | ||
</div> | </div> | ||
− | |||
− |
2023年1月14日 (六) 14:45的最新版本
| ||||||||||||||||||||||||
|
说明
产品概述
这是一款10轴传感器,板载低功耗ICM20948(3轴加速度、3轴陀螺仪和3轴磁力计),内置数字运动处理引擎,可减少复杂的融合演算数据,减轻处理器的负荷,相比MPU9250,精度更高,拥有更低的功耗,更适用于可穿戴设备。板载BMP280(气压高度计),内置温度传感器,可进行温度补偿,相比BMP180,拥有更强的性能和更低的功耗。通过I2C通信就能获取10轴数据。
产品特性
- 供电范围:3.3V~5V(内部低压差稳压)
- 加速度计特性:
- 分辨率:16位
- 量程(可选):±2、±4、±8、±16g
- 工作电流:68.9uA
- 陀螺仪特性:
- 分辨率:16位
- 量程(可选):±250、±500、 ±1000、±2000°/sec
- 工作电流:1.23mA
- 磁力计特性:
- 分辨率:16位
- 量程:±4900µT
- 工作电流:90uA
- 气压高度计特性:
- 气压分辨率:0.0016hPa
- 温度分辨率:0.01°C
- 量程:300~1100hPa(海拔高度:+9000m ~ -500m)
- 气压相对精度(700hPa~900hPa,25°C~40°C):±0.12hPa(±1m)
- 工作电流(1Hz更新速率,超低功耗模式):2.8uA
接口说明
引脚号 | 标识 | 描述 |
1 | VCC | 3.3V~5.5v电源 |
2 | GND | 电源地 |
3 | SDA | I2C 数据线 |
4 | SCL | I2C 时钟线 |
5 | INT | ICM20948数字中断输出 |
6 | FSYNC | ICM20948帧同步信号 |
传感器介绍
简介
板载ICM20948芯片包含3轴加速度、3轴角速度、3轴磁力计传感器,下图为传感器的坐标轴定义:
基本设置
加速度传感器
- 加速度传感器输出的数据为运动加速度与重力加速度的合成值。
- 当传感器静止放置时,运动加速度为0,此时传感器输出的3轴数值为重力加速度在各坐标轴上的分量。
- 如果是水平放置,此时理论输出值为 X轴0g、Y轴0g、Z轴-1g。Z轴输出为负值是因为重力加速度方向是向下,而传感器Z轴方向是向上,所以为负值。这里正负仅表示加速度方向与坐标轴方向的关系。
- 这里需要注意的是,即便传感器绝对水平放置,加速度传感器输出的值也不会等于理论值(0g,0g,-1g),这是因为每颗传感器都有自己独特的零偏存在。在实际使用过程中可以视情况适当去除零偏误差,一般可采集数据后做数据拟合等方法进行去除。
ICM20948加速度量程设置
- ICM20948支持多种量程,包括±2g、±4g、±8g、±16g,在示例程序中采用的是±2g,如果需要更改量程,可以通过修改<ACCEL_CONFIG>寄存器,下图为datasheet中<ACCEL_CONFIG>寄存器取值与量程的对应关系:
- 以STM32示例代码为例,±2g在代码中设置方法如下:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_ACCEL_CONFIG, REG_VAL_BIT_ACCEL_DLPCFG_6 | REG_VAL_BIT_ACCEL_FS_2g | REG_VAL_BIT_ACCEL_DLPF);
- 如果需要修改为±8g,做如下修改即可:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_ACCEL_CONFIG, REG_VAL_BIT_ACCEL_DLPCFG_6 | REG_VAL_BIT_ACCEL_FS_8g | REG_VAL_BIT_ACCEL_DLPF);
ICM20948加速度单位转换
- 不同量程时,从传感器寄存器读出的原始值,需要除以相应的转换系数,即可转换为单位为g的加速度,下表各量程对应的系数值:
- 当量程为±2g, 传感器原始值/16384即可得到单位为g的加速度值。
角速度传感器
- 角速度传感器得到的数值为绕各坐标轴旋转的角速度,当旋转方向与坐标轴标注方向相同时为正,旋转方向与坐标轴标注方向相反时为负。角速度同样存在零偏误差,一般可采用静止放置取均值的方法进行去除。
ICM20948角速度量程设置
- ICM20948支持多种量程,包括±250、±500、 ±1000、±2000°/sec,在示例程序中采用的是±1000°/sec,如果需要更改量程,可以通过修改<GYRO_CONFIG_1>寄存器,下图为datasheet中<GYRO_CONFIG_1>寄存器取值与量程的对应关系:
- 以STM32示例代码为例,±1000°/sec在代码中设置方法如下:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_GYRO_CONFIG_1, REG_VAL_BIT_GYRO_DLPCFG_6 | REG_VAL_BIT_GYRO_FS_1000DPS | REG_VAL_BIT_GYRO_DLPF);
- 如果需要修改为±2000°/sec,做如下修改即可:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_GYRO_CONFIG_1, REG_VAL_BIT_GYRO_DLPCFG_6 | REG_VAL_BIT_GYRO_FS_2000DPS | REG_VAL_BIT_GYRO_DLPF);
ICM20948角速度单位转换
- 不同量程时,从传感器寄存器读出的原始值,需要除以相应的转换系数,即可转换为单位为°/sec的角速度,下表为各量程对应的系数值:
当量程为±1000°/sec, 传感器原始值/32.8即可得到单位为°/sec的角速度。
磁力计传感器
- 磁力计传感器测量的是传感器周边磁场大小,当附近没有较强磁场(电机等)时,磁力计传感器输出的数值为地磁场在三个坐标轴的分量。
ICM20948磁力计
- 从传感器寄存器读出的原始值,需要乘以转换系数,即可转换为单位为μT($10^-6$特斯拉)的磁场强度,下表为ICM20948中磁力计的转换系数:
RPI使用教程
开启I2C接口
- 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
sudo reboot
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用
BCM2835
#打开树莓派终端,并运行以下指令 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
lgpio
#打开树莓派终端,并运行以下指令 wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
下载测试程序
打开树莓派终端,执行:
sudo apt-get install p7zip-full -y sudo wget https://www.waveshare.net/w/upload/c/c1/10_DOF_IMU_Sensor_D_Code.7z 7z x 10_DOF_IMU_Sensor_D_Code.7z -O./10_DOF_IMU_Sensor_D_Code cd 10_DOF_IMU_Sensor_D_Code/RaspberryPi/
硬件连接
10 DOF | Raspberry Pi | 功能 |
Board物理引脚序号 | ||
VCC | 5V | 电源输入 |
GND | GND | 电源地 |
SDA | 3 | I2C数据输入 |
SCL | 5 | I2C时钟信号 |
运行测试程序
以下命令请在RaspberryPi下执行,否则不在索引不到目录;
C
- 重新编译,编译过程可能需要几秒
BCM2835
cd BCM2853 sudo make clean sudo make sudo ./10Dof-D_D
wiringPi
cd wiringPi sudo make clean sudo make sudo ./10Dof-D_Demo
注意:如果运行过BCM2835,请重启之后再运行wiringPi。
现象
串口输出数据含义
Roll, Pitch, Yaw | Roll 倾角(°), Pitch 倾角(°), Yaw 倾角(°) |
Acceleration | 加速度(LSB,可换算为 g①) |
Gyroscope | 陀螺仪角速度(LSB,可换算为°/秒②) |
Magnetic | 电子罗盘(LSB,可转换μT③) |
Angle | 方向角(°),理论上等于 Yaw 倾角。 |
Pressure | 气压值(hPa) |
Altitude | 海拔高度(m) |
Temperature | 温度值(℃) |
备注:
①:示例程序串口输出的加速度为寄存器原始值(既寄存器数值),该数值
除以16384后,即可转化为单位为g(重力加速度常数)的数值。
②:示例程序串口输出的角速度为寄存器原始值(既寄存器数值),该数值
除以32.8后,即可转化为单位为dps(角度/秒)的数值。
③:示例程序串口输出的磁传感器数值为寄存器原始值(既寄存器数值),该
数值乘以0.15,即可转化为单位为μT(10-6特斯拉)的数值。
STM32使用教程
我们提供的例程是基于STM32F103RBT6,提供的连接方式是对应的STM32F103RBT6的引脚为例,如果有需要使用其他STM32,请按实际引脚连接
硬件连接
PCF8591 | STM32 | 功能 |
VCC | 3.3V | 电源输入 |
GND | GND | 电源地 |
SDA | SDA/PB9 | I2C数据输入 |
SCL | SCL/PB8 | I2C时钟信号 |
软件说明
例程是基于HAL库进行开发的。
请在资料里面下载程序,找到STM32程序文件目录,打开10 DOF IMU Sensor (D)\10_DOF_IMU_Sensor_D_Code\STM32\STM32F103RB\MDK-ARM
目录下的10 DOF IMU Sensor (D).uvprojx,即可看到程序。
串口输出数据含义
Roll, Pitch, Yaw | Roll 倾角(°), Pitch 倾角(°), Yaw 倾角(°) |
Acceleration | 加速度(LSB,可换算为 g①) |
Gyroscope | 陀螺仪角速度(LSB,可换算为°/秒②) |
Magnetic | 电子罗盘(LSB,可转换μT③) |
Angle | 方向角(°),理论上等于 Yaw 倾角。 |
Pressure | 气压值(hPa) |
Altitude | 海拔高度(m) |
Temperature | 温度值(℃) |
备注:
①:示例程序串口输出的加速度为寄存器原始值(既寄存器数值),该数值
除以16384后,即可转化为单位为g(重力加速度常数)的数值。
②:示例程序串口输出的角速度为寄存器原始值(既寄存器数值),该数值
除以32.8后,即可转化为单位为dps(角度/秒)的数值。
③:示例程序串口输出的磁传感器数值为寄存器原始值(既寄存器数值),该
数值乘以0.15,即可转化为单位为μT(10-6特斯拉)的数值。
Arduino使用教程
本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可
硬件连接
您可以对照以下表格连线。
10 DOF | Arduino | 功能 |
VCC | 5V | 电源输入 |
GND | GND | 电源地 |
SDA | SDA | I2C数据输入 |
SCL | SCL | I2C时钟信号 |
安装编译软件(Windows教程)
运行程序
- 在我们提供的资料里面下载程序,并解压,再进入10_DOF_IMU_Sensor_D_Code/Arduino/10Dof-D_Demo目录下
- 把该程序复制到Arduino安装目录下的Libraries文件夹中,然后打开Arduino文件编译下载即可使用
- 双击打开10Dof-D_Demo.ino文件。
- 选择你的开发板,跟对应的端口。
进行编译下载,如下图:
下载成功后,运行SSCOM,就可以实时查看传感器的状态啦。
串口输出数据含义
Roll, Pitch, Yaw | Roll 倾角(°), Pitch 倾角(°), Yaw 倾角(°) |
Acceleration | 加速度(LSB,可换算为 g①) |
Gyroscope | 陀螺仪角速度(LSB,可换算为°/秒②) |
Magnetic | 电子罗盘(LSB,可转换μT③) |
Angle | 方向角(°),理论上等于 Yaw 倾角。 |
Pressure | 气压值(hPa) |
Altitude | 海拔高度(m) |
Temperature | 温度值(℃) |
备注:
①:示例程序串口输出的加速度为寄存器原始值(既寄存器数值),该数值
除以16384后,即可转化为单位为g(重力加速度常数)的数值。
②:示例程序串口输出的角速度为寄存器原始值(既寄存器数值),该数值
除以32.8后,即可转化为单位为dps(角度/秒)的数值。
③:示例程序串口输出的磁传感器数值为寄存器原始值(既寄存器数值),该
数值乘以0.15,即可转化为单位为μT(10-6特斯拉)的数值。
FAQ
加速度输出频率:4~4000Hz
角速度输出频率:4~8000Hz
加速度计一般不用校准。 是想做温漂吗?简单的可以放到温箱里,做各个温度的分段零飘采集。 如果使用环境温度变化不大,则不用校准。
气压计只能用于测量相对高度,且测量值不具备重复性(除非是特定实验室环境)。所以气压计一般用来测量短时的高度差。
测量绝对高度(海拔)一般是用GPS。