2024年电赛H题全开源

当题目出来的的那一刻,看到了M0芯片,我们实验室只有一块板子,并且我没有接触过M0,电赛只准备了TI的MSP430f5529。但是我并没有放弃,决然的选择了H题。基本上将四问全做出来,可是测试由于使用了感为科技的寻迹模块,因此只测试了题目的第一问。

一、元器件选择

小车底盘我们选择了轮趣科技的MG310电机,加48mm的轮子。

控制MCU选择M0G3507

寻迹感为科技的寻迹

角度传感器采用JY61P

PCB开源地址:

代码开源链接:Gitee

三、题目规划与思路

题目主要就是小车需要再没有黑线的地方固定一个角度走直线,在黑线部分进行寻迹,因此我们使用角度传感器获取角度数据,采用PID控制让小车走直线到达黑线七点,再采用寻迹PID使小车寻到黑线末端。

OLED负责显示菜单,便于我们控制小车执行任务

角度传感器和MCU之间采用串口通讯获取角度数据

四、问题分析与解决

由于角度采用PID控制,但是角度传感的值是从-180到+180,这虽然是线性数据,但是当小车在运动旋转180度之后角度会从-180直接变为180,这使得我们无法进行PID控制。解决的方法就是,将角度值转化弧度值,因为sin-180=sin180,这样角度数据就连续起来了。

小车停止位置采用距离控制停止不准确的问题,最终方案是当小车寻不到黑线时我们就认为到达A,B,C,D四个点。

弧度,角度的关系

在编程中sin(90)是多少呢?

答案并不是1,而是0.8939......

在标准数学库中sin()函数是基于弧度来计算的而不是角度

弧度=度数*(π/180)

角度 = 弧度*(180/π)

五、总结

在制作小车过程中虽然遇到了很多困难与挫折但是我们要坚持下来,解决问题才是根本,有错误必有源头,顺着错误找源头才是正解!

代码地址:empty_LP_MSPM0G3507_nortos_ticlang · fighter/电子设计大赛 - 码云 - 开源中国 (gitee.com)

视频链接:【fighter】视频已打包,欢迎围观!_哔哩哔哩_bilibili

2024H ,自动驾驶小车系统源代码+原理图(高分项目),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2024H ,自动驾驶小车系统源代码+原理图(高分项目)2
### 关于2024子设计竞H的程序设计与解思路 #### 1. MPU6050漂移问及其解决方案 MPU6050作为惯性测量单元,在长时间运行过程中可能会出现数据漂移现象。这种漂移会对定位精度造成严重影响,尤其是在需要返回起点的任务中[^1]。为了应对这一挑战,可以采用以下方法: - **硬件复位策略**:通过重新上的方式清除传感器内部累积误差。然而,这种方法可能导致任务切换困难。因此,可以通过设置两个GPIO引脚来检测当前任务状态并动态调整工作模式。 - **软件校正算法**:引入卡尔曼滤波器或者互补滤波器对原始加速度计和陀螺仪的数据进行融合处理,从而减少噪声干扰以及长期积累产生的偏差。 以下是基于Arduino平台的一个简单示例代码片段用于初始化MPU6050模块并与之交互: ```cpp #include <Wire.h> #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" // Class declaration for the MPU6050 MPU6050 mpu; int16_t ax, ay, az; int16_t gx, gy, gz; void setup() { Wire.begin(); Serial.begin(9600); while(!Serial); // wait until serial port opens mpu.initialize(); if (!mpu.testConnection()) { Serial.println("MPU6050 connection failed"); while (1) {} } Serial.println("MPU6050 initialized successfully!"); } void loop() { mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); Serial.print("a/g: "); Serial.print(ax); Serial.print(", "); Serial.print(ay); Serial.print(", "); Serial.print(az); Serial.print("\t"); Serial.print(gx); Serial.print(", "); Serial.print(gy); Serial.print(", "); Serial.println(gz); } ``` 此代码实现了基本的功能框架,实际应用时还需要加入针对特定需求的数据分析部分。 #### 2. 处理TI开发板锁定问及串口通信异常情况 对于提到的部分TI最小系统板存在锁死状况无法正常进入调试模式的情况[^2],建议尝试以下几种途径解决问: - 使用官方推荐工具Chain Loader配合RST/BSL按键组合完成固件刷写操作; - 如果条件允许的话更换其他品牌兼容性强的产品以规避此类风险; 至于串口中断频繁发生的现象,则可能是由于波特率配置不当或者是外部磁环境恶劣所引起。适当降低通讯速率或将设备远离强磁场区域均有助于改善该症状表现形式之一即为接收缓冲区溢出错误提示信息不断弹出直至整个应用程序崩溃退出为止。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值