M-Design设计竞赛 - 基于stm32的电子倾角仪设计
该项目使用了stm32f103,实现了电子倾角仪的设计,它的主要功能为:该项目以STM32F103C8T6为核心,对MPU6050的加速度、陀螺仪的采集,通过姿态解算得出翻滚角、俯仰角、偏航角,可以通过按键选择显示角度模式、单位并实时在显示模块显示数据,默认显示为与水平面夹角的绝对角度测量。当按下重置按钮时可显示相对角度,设备的当前角度被重置为零,之后显示屏上显示的数值均是设备按下按键时的角度与当前角度形成的夹角。。
标签
STM32
mpu6050
M-Design设计竞赛
便携
坚果模子
更新2025-04-01
96

项目介绍和创意介绍

本项目参加2025贸泽电子M-Design创意设计竞赛

方向一:边缘智能、智能设备

  • 随着土木工程、航空航天等领域对高精度倾斜测量需求的提升,传统机械式倾角仪存在体积大、操作复杂等问题。本项目基于MEMS传感器技术,设计了一款集高精度、便携性、智能化于一体的电子倾角仪。其核心创新点在于:
  • 采用六轴传感器融合算法实现±0.1°测量精度
  • 首创"绝对/相对"双模式测量机制
  • 自主研发多单位实时转换功能
  • STM32F103C8T6为核心,MPU6050的加速度、陀螺仪的采集通过姿态解算得出翻滚角、俯仰角、偏航,可以通过按键选择显示角度模式、单位并实时在显示模块显示数据默认显示为与水平面夹角的绝对角度测量。当按下重置按钮时可显示相对角度,设备的当前角度被重置为零,之后显示屏上显示的数值均是设备按下按键时的角度与当前角度形成的夹角。

硬件介绍

本系统是便携式电子倾角仪设计,以单片机为核心分为个模块控制模块显示模块传感器模块交互模块。

控制模块是由STM32F103C8T6为核心、晶振及其外部电路组成的。其中STM32F103C8T6基于ARM Cortex-M3 核心,具有较高的性能和低功耗特点,广泛应用于嵌入式系统、工业控制、汽车电子、消费电子、物联网设备等领域。

显示模块采用高分辨率的LCD显示屏组成主要功能是显示角度数据​。

传感器模块是由六轴传感器MPU6050组成,该模块通过IIC协议与单片机进行通讯,传递偏移角度信息并且MPU6050芯片内部集成了一个DMP数据处理模块,该模块已经内置了滤波算法,使MPU6050输出数据的准确性得到了保障

交互模块是由按键组成。可以对电子倾角仪进行系统设置和模式选择。交互模块具有三个按键:第一个按键可进行选择显示角度模式:翻滚角、俯仰角、偏航第二个按键可进行选择显示角度单位:角度制、弧度制、斜率第三个按键可以重置设备的零点,进行相对角度的测量,当按下按键,之后显示屏上显示的数值均是设备按下按键时的角度与当前角度形成的夹角。

  • 方案框图和项目设计思路介绍
  • 首先初始化六轴传感器模块和显示模块,然后读取传感器六轴数据,并检测传感器是否有数据,通过原始的三轴加速度、三轴陀螺仪通过姿态解算得出姿态角,并可以通过按键选择显示角度模式、单位、重置设备的零点并实时显示在显示屏上

原理图和PCB介绍

image.png

image.png

软件流程图和关键代码介绍

image.png

姿态解算核心代码片段(基于DMP)

u8 run_self_test(void)
{
int result;
// char test_packet[4] = {0};
long gyro[3], accel[3];

result = mpu_run_self_test(gyro, accel);
if (result == 0x7) {
/* Test passed. We can trust the gyro data here, so let's push it down
* to the DMP.
*/
float sens;
unsigned short accel_sens;
mpu_get_gyro_sens(&sens);
gyro[0] = (long)(gyro[0] * sens);
gyro[1] = (long)(gyro[1] * sens);
gyro[2] = (long)(gyro[2] * sens);
dmp_set_gyro_bias(gyro);
mpu_get_accel_sens(&accel_sens);
accel[0] *= accel_sens;
accel[1] *= accel_sens;
accel[2] *= accel_sens;
dmp_set_accel_bias(accel);
return 0;
}else return 1;
}

unsigned short inv_orientation_matrix_to_scalar(
const signed char *mtx)
{
unsigned short scalar;

/*
XYZ 010_001_000 Identity Matrix
XZY 001_010_000
YXZ 010_000_001
YZX 000_010_001
ZXY 001_000_010
ZYX 000_001_010
*/
scalar = inv_row_2_scale(mtx);
scalar |= inv_row_2_scale(mtx + 3) << 3;
scalar |= inv_row_2_scale(mtx + 6) << 6;

功能展示及说明

读取传感器六轴数据并通过原始的三轴加速度、三轴陀螺仪通过姿态解算得出姿态角通过按键模块手动选择显示角度模式、单位,默认显示为绝对角度,可通过按键重置设备的零点进行相对角度的测量。

焊接实物图

模式选择

角度显示

右上角显示0 代表显示相对角度

设计中遇到的难题和解决方法

传感器数据融合是项目的核心难点。MPU6050的原始数据噪声较大,通过对比互补滤波、卡尔曼滤波等算法,最终结合DMP硬件滤波与软件动态补偿,实现了±0.1°的精度目标。这让我认识到算法优化需要“软硬结合”,不能仅依赖单一方案。


对本次竞赛的心得体会

  1. 竞赛优势与创新激励
    本次竞赛的“无限制选题”机制极大激发了创造力。我们选择倾角仪这一传统测量工具的智能化改造,既贴合实际需求,又融入了创新算法设计。这种开放模式让参赛者能真正从兴趣出发,探索技术边界。
  2. 通过本次竞赛,我不仅掌握了嵌入式系统开发的完整流程,更培养了“以用户需求为导向”的设计思维。例如,在添加“一键校准”功能时,需从工程人员的使用场景出发,设计简洁的交互逻辑。未来,我计划将本项目进一步拓展
  3. M-design竞赛为电子设计爱好者提供了宝贵的实践平台,让我们从“纸上谈兵”走向“真枪实弹”。这种以问题驱动学习的方式,比传统课程更能锻炼工程能力。期待未来能在更多此类赛事中挑战自我,用技术创新解决实际问题!



软硬件
附件下载
PCB_PCB_电子倾角仪_2025-03-13.json
SCH_电子倾角仪_2025-03-13.json
MPU6050+DMP.zip
团队介绍
本人是一名电子信息专业的学生。
团队成员
坚果模子
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号