美文网首页Arduino雕爷学编程
【雕爷学编程】Arduino动手做(152)---BMI160

【雕爷学编程】Arduino动手做(152)---BMI160

作者: 驴友花雕 | 来源:发表于2023-07-04 10:54 被阅读0次

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验一百五十二:BMI160模块 6DOF 6轴 角速度 陀螺仪+重力加速度传感器IICSPI

    00.jpg

    知识点:博世BMI160芯片

    Bosch Sensortec公司推出的最新BMI160惯性测量单元,将最顶尖的16位3轴重力加速度计和超低功耗3轴陀螺仪集成于单一封装。采用14管脚LGA封装,尺寸为2.5×3.0×0.8mm3。当加速度计和陀螺仪在全速模式下运行时,耗电典型值低至950µA,仅为市场上同类产品耗电量的50%或者更低。

    Bosch BMI160专为智能手机、平板电脑、可穿戴设备设计,内置智能计步算法,可通过寄存器直接读取步数。内置的3轴加速度和3轴陀螺仪可以实现跑步,健身等运动检测。内置LDO电源管理芯片,支持3.2~6V宽电压供电,并且板载I2C电平转换电路,兼容Arduino 3.3V以及5V的控制器直接驱动。

    01.jpg

    BMI160的数据流框图

    01-0.jpg

    BMI160参数

    01-.jpg 01-1.jpg 01-2.jpg

    芯片技术规格

    工作电压:3.2V~6V

    电流消耗:<1mA

    接口方式:2.54间距排针

    加速度可选标尺:±2g/±4g/±8g/±16g

    陀螺仪可选标尺:±125°/s,±250°/s,±500°/s,±1000°/s,±2000°/s

    加速度计零点漂移:±40mg

    陀螺仪零点漂移:±10°/s

    可编程频率:25/32Hz~1600Hz

    6D检测定位

    16位数据输出

    抗冲击:10,000 gx 200μs

    2个独立的可编程中断发生器

    内置1024 byte FIFO

    工作温度:-40℃~+85℃

    0-0-.jpg

    GY-BMI160模块(三轴陀螺仪+三轴加速度计)

    使用芯片:BMI160

    电源:3-5v(内部低压差稳压器)

    通讯方式:标准IIC/SPI通讯协议

    内置16bit AD转换芯片,16位数据输出

    陀螺仪范围:±125±250±500±1000±2000°/s

    加速度范围:±2±4±8±16g

    采用沉金PCB,机器焊接工艺,保证质量

    2.54mm 间距

    模组尺寸 13mm*18mm

    05.jpg 06.jpg 04-.jpg 04-0.jpg

    BMI160模块接脚定义

    04-9.jpg

    BMI160模块参考电原理图

    09 (1).jpg 10.jpg 11.jpg

    两种 BMI160 分线板

    03.jpg

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之一:动态读取陀螺仪 x/y/z 值

    实验开源代码

    /*
    
     【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    
     实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
    
     项目之一:动态读取陀螺仪 x/y/z 值
    
     实验接线:
    
     BMI160   UNO
    
     VIN    5V
    
     GND    GND
    
     SCL    A5
    
     SDA    A4
    
     SAO    GND
    
     INT1    D2
    
    */
    
    
    
    #include <BMI160Gen.h>
    
    const int select_pin = 10;
    
    const int i2c_addr = 0x68; //I2C的地址
    
    
    
    void setup() {
    
     Serial.begin(9600);
    
     while (!Serial); // 等待串口打开
    
     // 初始化设备
    
     //BMI160.begin(BMI160GenClass::SPI_MODE, select_pin);
    
     BMI160.begin(BMI160GenClass::I2C_MODE, i2c_addr);
    
    }
    
    
    
    void loop() {
    
     int gx, gy, gz;     // 原始陀螺值
    
     // 从设备读取原始陀螺仪测量值
    
     BMI160.readGyro(gx, gy, gz);
    
     // 显示制表符分隔的陀螺仪 x/y/z 值
    
     Serial.print("xyz:\t");
    
     Serial.print(gx);
    
     Serial.print("\t");
    
     Serial.print(gy);
    
     Serial.print("\t");
    
     Serial.print(gz);
    
     Serial.println();
    
     delay(600);
    
    }
    

    实验串口返回情况

    12.jpg

    实验场景图

    13.jpg

    打开IDE——工具——串口绘图器

    13-.jpg

    实验串口绘图器返回情况(模块平放在桌面上)

    15.jpg

    实验串口绘图器返回情况(手指敲打桌面)

    17.jpg

    实验串口绘图器返回情况(三个方向摇动模块)

    18.jpg

    实验串口绘图器返回情况(大力极限摇动模块)

    19.jpg

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之一:动态读取陀螺仪 x/y/z 值(35秒视频)

    https://v.youku.com/v_show/id_XNTgwMTMzNDg3Mg==.html?spm=a2hcb.playlsit.page.1

    BMI160 技术数据

    数字分辨率
    加速度计 (A):16 位
    陀螺仪(G):16bit
    测量范围(可编程)
    (A):±2g、±4g、±8g、±16g
    (G):±125°/s、±250°/s、±500°/s、±1000°/s、±2000°/s
    灵敏度(校准)
    (A):±2g:16384LSB/g
    ±4g:8192LSB/g
    ±8g:4096LSB/g
    ±16g:2048LSB/g
    (G):±125°/s:262.4 LSB/°/s
    ±250°/s:131.2 LSB/°/s
    ±500°/s:65.6 LSB/°/s
    ±1000°/s:32.8 LSB/° /s
    ±2000°/s:16.4 LSB/°/s
    零重力偏移(典型值,在整个生命周期内)
    (A):±40mg
    (G):± 10°/s
    噪声密度(典型值)
    (A):180 μg/√Hz
    (G):0.008°/s/√Hz
    带宽(可编程):1600 Hz … 25/32 Hz
    数字输入/输出:SPI、I²C、4x 数字中断
    电源电压 (VDD):1.71 … 3.6 V
    I/0 电源电压 (VDDIO):1.2 … 3.6 V
    温度范围:-40 … +85°C
    目前的消费
    完全运行:950 μA
    低功耗模式:3 μA
    FIFO 数据缓冲区:1024 字节
    LGA 封装:2.5 × 3.0 × 0.8 mm³
    抗冲击性:10,000 gx 200 μs
    BMI160 目标应用

    增强现实和沉浸式游戏
    3D 扫描和室内测绘
    室内导航、行人航位推算和计步
    6 轴和 9 轴传感器融合、空中鼠标应用
    光学防抖
    BMI160 目标设备

    手机和平板电脑
    可穿戴设备,例如智能手表、头戴式显示器、运动和健身设备
    游戏控制器和智能遥控器
    玩具,例如四轴飞行器

    0-0-.jpg

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之二:使用中断的BMI160简单计步功能

    实验开源代码

    /*
    
     【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    
      实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
    
     项目之二:使用中断的BMI160简单计步功能
    
     实验接线:
    
     BMI160   UNO
    
     VIN    5V
    
     GND    GND
    
     SCL    A5
    
     SDA    A4
    
     SAO    GND
    
     INT1    D2
    
    */
    
    
    
    #include <BMI160Gen.h>
    
    const int bmi160_i2c_addr = 0x68;
    
    const int bmi160_select_pin = 10;
    
    const int bmi160_interrupt_pin = 2;
    
    void bmi160_intr(void){
    
     Serial.println("BMI160 中断:轻拍!");
    
    }
    
    
    
    void setup() {
    
     Serial.begin(9600); 
    
     while (!Serial);   
    
     // initialize device
    
     Serial.println("正在初始化 IMU 设备...");
    
     //BMI160.begin(BMI160GenClass::SPI_MODE, bmi160_select_pin, bmi160_interrupt_pin);
    
     BMI160.begin(BMI160GenClass::I2C_MODE, bmi160_i2c_addr, bmi160_interrupt_pin);
    
     BMI160.attachInterrupt(bmi160_intr);
    
     BMI160.setIntTapEnabled(true);
    
     Serial.println("初始化 IMU 设备...完成。");
    
    }
    
    
    
    void loop() {
    
    }
    
    

    实验串口返回情况

    22.jpg

    实验场景图

    23.jpg

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之六:简易计步器

    实验开源图形编程(Mind+、编玩边学)

    35.jpg

    实验串口返回情况

    36.jpg

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之七:简易测量三轴数据

    实验开源图形编程(Mind+、编玩边学)

    37.jpg

    实验串口返回情况

    38.jpg

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验一百五十二:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA

    项目之八:简易测量X轴的动态波形

    实验开源图形编程(Mind+、编玩边学)

    39.jpg

    实验串口绘图器返回情况

    40.jpg

    相关文章

      网友评论

        本文标题:【雕爷学编程】Arduino动手做(152)---BMI160

        本文链接:https://www.haomeiwen.com/subject/dtncudtx.html