欢迎光临
我们一直在努力

2026 年电赛(TI 杯)H 题:硬件选型、电源完整性、引脚分配与逐项上电验证

wengqidaifeng

个人主页:

wengqidaifeng


永远在路上,永远向前

个人专栏:

数据结构

C语言

嵌入式小白启动!

重要 OJ 算法题详解

蓝桥杯备战

C++ 从菜鸟到高手

Python 启航

AI 大模型 Agent:拥抱未来,赋能自己

文章目录

    • 博客系列总目录与阅读路线
    • 推荐阅读顺序
    • 全系列知识地图
    • 总览
    • 仓库资料边界
    • 开源说明
    • 第二篇:硬件选型、电源完整性、引脚分配与逐项上电验证
      • 1. 硬件系统不是元件清单
      • 2. 主控与扩展板选择
      • 3. 电源树与共地原则
      • 4. 电机、驱动和编码器参数
      • 5. 8 路灰度与电平转换
      • 6. MPU6050、OLED、串口和相机
      • 7. 步进机构与机械安全
      • 8. 逐项上电验证流程
      • 9. 与往年题目的硬件差异
      • 10. 本篇结论
      • 11. 硬件故障树与备件策略
    • 接线与上电的可视化检查清单

博客系列总目录与阅读路线

本系列记录 MSPM0G3507 双主控小车从赛题分析、硬件搭建、底层驱动、循迹调试,到摆杆滚球控制和最终测评复盘的完整过程。文章中的路径均为仓库相对路径,代码、测试脚本和模块封装可以直接从公开仓库取得。

推荐阅读顺序

  • 赛题拆解、总体方案与往年控制类小车赛题比较
  • 硬件选型、接线与上电验证
  • 软件架构、SysConfig 与模块化设计
  • 编码器速度环、差速运动学、MPU6050 航向环与直线稳定
  • 八路灰度循迹、直线/半圆分段与 S1/S2/S3 状态机
  • 摆杆机械结构、MaxiCam Pro 测量、步进执行器与三层 PID
  • MaxiCam Pro、双主控通信、VOFA+ 遥测与可复现实验方法
  • 完整测评流程、失败案例复盘、比赛策略与开源交付
  • 全系列知识地图

    #mermaid-svg-HGeQnFz6TtfvS4jp{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-HGeQnFz6TtfvS4jp .error-icon{fill:#552222;}#mermaid-svg-HGeQnFz6TtfvS4jp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HGeQnFz6TtfvS4jp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HGeQnFz6TtfvS4jp .marker.cross{stroke:#333333;}#mermaid-svg-HGeQnFz6TtfvS4jp svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HGeQnFz6TtfvS4jp p{margin:0;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge{stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 text{fill:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth–1{stroke-width:17;}#mermaid-svg-HGeQnFz6TtfvS4jp .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-0{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-0{stroke-width:14;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-1{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-1{stroke-width:11;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 text{fill:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-2{stroke-width:8;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-3{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-3{stroke-width:5;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-4{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-4{stroke-width:2;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-5{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-5{stroke-width:-1;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-6{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-6{stroke-width:-4;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-7{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-7{stroke-width:-7;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-8{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-8{stroke-width:-10;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-9{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-9{stroke-width:-13;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 polygon,#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 text{fill:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .node-icon-10{font-size:40px;color:black;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .edge-depth-10{stroke-width:-16;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled circle,#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:lightgray;}#mermaid-svg-HGeQnFz6TtfvS4jp .disabled text{fill:#efefef;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-root rect,#mermaid-svg-HGeQnFz6TtfvS4jp .section-root path,#mermaid-svg-HGeQnFz6TtfvS4jp .section-root circle,#mermaid-svg-HGeQnFz6TtfvS4jp .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-HGeQnFz6TtfvS4jp .section-root text{fill:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-root span{color:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .section-2 span{color:#ffffff;}#mermaid-svg-HGeQnFz6TtfvS4jp .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-HGeQnFz6TtfvS4jp .edge{fill:none;}#mermaid-svg-HGeQnFz6TtfvS4jp .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-HGeQnFz6TtfvS4jp :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    H题车载平衡滚球

    赛题与指标

    赛道圈时

    启停判据

    滚球目标点

    硬件系统

    MSPM0G3507

    TB6612与编码器

    灰度与MPU6050

    MaxiCamPro与步进

    软件控制

    速度环

    航向环

    灰度状态机

    三层滚球PID控制

    工程方法

    接线验证

    VOFA遥测

    回归测试

    测评复盘

    总览

    这道题不是单独写一个循迹 PID,而是把机械结构、电源、传感器、实时调度、速度闭环、航向辅助、视觉通信、双主控安全和赛道状态机组合成一个可测量、可恢复、可验证的系统。调试时坚持“每次只改变一个因素”,并用串口遥测、上位机回归测试和实车视频记录证据。

    仓库资料边界

    • 小车运动主控工程:公开仓库根目录 smartcar_keil_diag/
    • 通用模块封装:公开仓库中的 ModulePackage/
    • 摆杆/滚球控制参考工程:BalanceController/
    • 硬件与接线说明:Hardware/
    • 主机测试与回归脚本:Tests/
    • 主控、蓝牙、VOFA+ 和双主控协议说明:仓库根目录下相应的 *.md 文件

    主控采用 LCKFB 天猛星 MSPM0G3507,车体约为 30 cm × 24 cm,车轮直径约 65 mm。实际使用的主要器件包括 JGB37-520 直流减速电机、TB6612 驱动器、MPU6050、8 路灰度传感器、MaxiCam Pro 和无编码器步进电机。涉及具体电气参数、安装尺寸和控制增益时,应以实测记录和仓库中的配置为准,不要直接照搬示例数值。

    开源说明

    完整工程、博客、测试脚本和模块封装均发布在 GitHub:

    https://github.com/wengqidaifeng/smartcar_keil_diag

    建议按 01→08 的顺序阅读;需要查代码时从 User/、Source/、ModulePackage/ 和 Tests/ 进入。文章中的结论区分为“源码已实现”、“主机测试已验证”和“必须在实车/机构上复测”三类,便于后来者复现实验并继续改进。

    第二篇:硬件选型、电源完整性、引脚分配与逐项上电验证

    1. 硬件系统不是元件清单

    控制类小车的硬件设计常被简化成“主控加电机驱动加传感器”,但真正决定稳定性的,是电源、地线、机械安装、逻辑电平、引脚复用和故障隔离。本项目使用天猛星 MSPM0G3507、JGB37-520 直流减速电机、TB6612 电机驱动、双 AB 编码器、8 路灰度传感器、MPU6050、OLED、MaxiCamPro、WHEELTEC 步进机构和车载电池。每个模块单独看都很常见,组合以后却会形成多个容易忽略的边界。

    例如,12 V 电池既给直流电机供电,也可能给步进驱动器供电,两个负载同时变化会造成电压波动;电机换向产生的噪声会通过共地或空间耦合干扰编码器和 I²C 总线;步进电机保持时持续发热,会使上层机构热变形并增加功耗;灰度传感器模块输出可能是 5 V,需要电平转换后才能接入 MSPM0;MaxiCamPro 的串口和视频链路同时工作时可能改变帧率。硬件验证必须围绕这些边界展开,而不是只确认“灯亮了”。

    2. 主控与扩展板选择

    MSPM0G3507 具备足够的 GPIO、定时器、UART、I²C 和中断资源,适合做 10 ms 级运动控制。天猛星扩展板将电机、编码器、OLED、串口和传感器接口集中引出,降低了现场飞线的数量,但也意味着引脚并非任意可选。SysConfig 必须是外设复用的唯一配置来源,代码只引用生成宏,不能在驱动文件中再维护一份不同的引脚表。

    当前小车主控的关键分配为:蓝牙/VOFA 使用 PB06/PB07,OLED I²C0 使用 PA31/PA28,左编码器使用 PA15/PA16,右编码器使用 PA17/PA24,MaxiCamPro UART3 使用 PB02/PB03,MPU6050 I²C1 使用 PA11/PA10,TB6612 两路 PWM 使用 PB04/PB01,左右方向分别使用 PA12/PA13 与 PB00/PB16。8 路灰度传感器 X1 到 X8 依次为 PB25、PB24、PB20、PA14、PB18、PB19、PB10、PA07,按键 K1/K2 为 PA26/PA25。

    这里最容易发生的冲突是 PB18:旧接法曾把它当作按键,但新扩展板已将其分配给灰度 X5,因此按键必须迁移到 PA26/PA25(即 K1/K2)。PA10/PA11 在某些板卡资料中常用于默认 UART,本项目则有意复用为 MPU6050 的 I²C1;这一选择已经进入 SysConfig 和接线表,后续不能在不检查冲突的情况下再分给串口。

    3. 电源树与共地原则

    电池总开关关闭时,逻辑部分可能仍能通过 USB 或调试器上电,导致程序看似正常但电机完全不动。现场曾出现三个速度档轮子都不转,最终原因就是电池总开关未打开。这类问题说明电源状态必须进入检查表,而不能由软件人员凭串口现象推断。

    推荐把电源划分为动力域和逻辑域。12 V 动力域供给 TB6612 的 VM 和步进驱动器动力端;稳定的 5 V 或 3.3 V 供给扩展板、OLED、灰度传感器、编码器和摄像头的逻辑部分。MSPM0、TB6612、编码器、灰度传感器电平转换、MPU6050、MaxiCamPro 与步进驱动器的逻辑端必须共地。共地不是把所有地线随意汇在一起,最好采用低阻、短回路和相对集中的地连接,使电机大电流回路不要经过传感器的地线。

    电机端应有足够的去耦电容和合适的线径,动力线与 I²C、编码器信号线尽量分开走线。MPU6050 必须刚性固定在车体底盘坐标系上,不能装在会振动的摆杆支架上。传感器排线应做应力释放处理,避免小车转弯或步进动作时插头松动。若出现偶发 I²C 失败、编码器跳变或串口乱码,应先比较电机开/关时的现象,再考虑软件问题。

    4. 电机、驱动和编码器参数

    JGB37-520 是一款 12 V 减速直流电机,标称转速约 110 rpm,转矩约 3 kg·cm。110 rpm 通常是空载转速,并非负载下的保证值。车轮直径约 65 mm,理论周长约为 π×6.5≈20.42 cm。即使空载达到 110 rpm,理论线速度也只是上限;装车后还会受到重量、轮胎变形、地面摩擦、TB6612 压降和电池电压的影响。

    编码器为 AB 两相增量式,电源接 3.3 V。软件必须明确使用何种边沿和倍频方式,并通过手动转动车轮一整圈来测得“车轮一圈的软件计数”。不能只依据电机资料中的 PPR(每转脉冲数)推算,因为编码器可能安装在电机轴上,减速比和采样方式都会改变最终计数。左右编码器正方向必须统一为小车前进为正,否则速度环会形成正反馈。

    TB6612 的正面朝上只能作为接线方向参考,不代表 A/B 通道必然对应物理左/右轮。首次上电必须架空车轮,分别点动每个通道,记录物理轮、正向电平组合、PWM 极性和编码器符号。主动刹车与普通零 PWM 的桥臂状态不同,终点停车时若要缩短误差,应明确使用哪一种,并验证不会产生过流或机械冲击。

    5. 8 路灰度与电平转换

    当前灰度模块为数字比较器输出,而非模拟 ADC 阵列。实测黑线为高电平、白底为低电平,经过电平转换后接入 MSPM0,软件统一转换为“检测到黑线 active=1”。早期另一款红外模块曾是黑线低电平,因此更换模块后必须重新验证极性;沿用旧极性会让全白与全黑完全颠倒,导致起停线、丢线和权重计算全部错误。

    X1 位于车体最左侧,X8 位于最右侧。逐路遮挡测试必须确认 X1=bit0、X8=bit7,X4/X5 位于中心。仅观察模块指示灯不够,应同时读取 OLED 或串口位图。在白底和黑线条件下,每一路都应稳定至少数十秒;若单路抖动,先调板上电位器、安装高度和遮光,再考虑软件滤波。数字滤波能抑制短毛刺,但无法修复持续数百毫秒的阈值错误。

    启停线只覆盖约四个通道,因此不能再使用“8 路全黑才停止”的旧条件。启动时可要求中间四路满足规定模式,离开起跑线后重新武装;终点判断必须结合运行时间、赛道相位以及“恰好/至少四路黑”的规则,以避免因半圆入口处的胶带或普通横向偏差而误触发。

    6. MPU6050、OLED、串口和相机

    MPU6050 的 AD0 接 GND,7 位 I²C 地址为 0x68。上电后先读 WHO_AM_I,再采集静止零偏。车体未静止时做零偏标定,会把真实角速度当作偏置写入,后续航向积分必然漂移。I²C 总线空闲时,SCL 和 SDA 应被上拉至高电平(接近 3.3 V),且不应被其他模块占用。

    OLED 主要用于现场状态确认,可显示 WAIT/RUN/FAULT 等状态、S1/S2/S3 等开关量、灰度位图以及故障码。不要在 10 ms 的控制周期内每次刷新整屏,I²C 刷新和字模绘制可能破坏周期的确定性。蓝牙/VOFA 串口用于遥测与命令下发,MaxiCamPro 使用独立的 UART,以避免大量遥测数据和视觉帧竞争同一缓冲区。

    MaxiCamPro 可以输出 BALL,count,x,y,z,diam,也可承担图传,但必须实测视频和 UART 同开时的帧率与延迟。相机供电、逻辑电平和 TX/RX 交叉要明确,串口协议使用 115200、8N1 时仍需根据实际设备设置核对。控制器必须处理半帧、超长帧、字段错误和数据过期,不能默认每次读取都是完整有效的一行。

    7. 步进机构与机械安全

    滚球执行器使用 WHEELTEC 相关步进机构和 D36A 驱动。步进驱动器的 EN、DIR、ST 逻辑、细分和电流拨码设置必须以手册和实测为准。首次空载应使用较低电流和较高细分,先确认使能、方向、每圈脉冲数和温升,再连接摇臂。步进电机静止保持时也会发热,不需要保持时应按驱动器逻辑使其进入休眠。

    球槽长度约 25 cm,转轴高度约 6 cm。若半槽长 125 mm,槽底最低点只能下降有限距离,允许倾角需要按几何计算并留出挠度余量。普通家具合页容易产生回差、窜动和不同轴问题,不能作为精密角度轴的唯一支撑。推荐使用明确的单轴转动副,摇臂与连杆两端允许转动,避免多个合页形成过约束。必须设置物理止挡、回零或限位开关,不能只依赖软件步数。

    8. 逐项上电验证流程

    第一步断开动力电,只验证 3.3 V/5 V、OLED、按键、UART 和传感器。第二步读取 MPU6050 地址与静态数据,逐路验证灰度传感器。第三步架空车轮,单轮低 PWM 点动,确认方向和编码器符号;再做双轮同向和反向。第四步打开速度闭环,以 10、20、30 cm/s 分级测试目标速度、实测速度和 PWM。第五步才允许落地进行低速直线测试。步进机构则独立执行“低电流空载—手动转动编码器—回零—软限位—无球动作—放球”的流程。

    每一步都要有可判定的通过条件。例如 UART 不只是“能打印”,还要验证连续数据无丢帧;编码器不只是“有读数”,还要验证一圈计数和方向;电机不只是“会转”,还要验证停止与反转;灰度不只是“能识别”,还要验证顺序和稳定性。只有底层事实可靠,后续调 PID 才有意义。

    9. 与往年题目的硬件差异

    往年普通循迹车通常重心低、执行器少,主要关注电机和传感器。本题在车顶增加球槽、相机和步进机构,重心更高、供电更复杂、线束更容易进入运动区域。往年“跑得越快越好”的机械布置思路未必适用:电池和步进驱动器应尽量放低,球槽转轴应靠近车体几何中心,万向轮载荷不宜过轻,灰度模块离地高度在车辆俯仰时仍应保持稳定。

    这也解释了为什么同一套循迹参数在空车和装上摆杆后可能完全不同。质量、转动惯量、轮胎法向力和电源压降都变了。硬件变更后应重新测速度环、刹车距离和半圆差速,而不是把旧参数视为固定答案。

    10. 本篇结论

    可靠硬件的标志不是“所有模块都亮”,而是每个电源域、逻辑电平、方向、计数、极性、时序和机械限位都有记录、有测试、有失效保护。本项目的引脚表、SysConfig、电源树和逐项验证流程共同构成硬件事实来源。任何人复现时都应保留这种方法,但必须重新验证自己的扩展板、模块版本和机械尺寸,不能只照抄参数。

    11. 硬件故障树与备件策略

    比赛现场的硬件排查应按照能量和信号流进行。电机不动时依次检查电池电压、总开关、VM、STBY、方向引脚、PWM、绕组和机械卡滞;编码器异常时依次检查 VCC/GND、A/B 静态电平、边沿变化、引脚中断、方向解码和计数换算;I²C 异常时检查共地、上拉、地址、SCL/SDA 是否被占用、线长和电机开关噪声。先用万用表或示波器证明物理量存在,再进入软件层,效率远高于直接改驱动。

    应准备最少但关键的备件:一块确认正常的 TB6612、一个灰度模块、一块电平转换模块、一块 MPU6050、备用编码器线、保险丝/开关、杜邦线和常用紧固件。备件必须在赛前测试,未验证的“备用件”可能引入新的版本差异或故障。所有插头贴上方向和功能标签,左右电机、编码器 A/B、相机 TX/RX、步进编码器线序用照片与表格双重记录。

    机械维护也要制度化。每次跑圈后检查轮胎是否松动、联轴器标记是否错位、摆杆轴是否窜动、连杆螺母是否过紧、线束是否接触活动件。若突然出现同一参数下转向变差,先检查轮胎附着、万向轮方向和上层机构松动。控制器可以补偿小偏差,却无法长期补偿持续变化的机械结构。

    接线与上电的可视化检查清单

    #mermaid-svg-fm0tUZF5PcDh00dE{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fm0tUZF5PcDh00dE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fm0tUZF5PcDh00dE .error-icon{fill:#552222;}#mermaid-svg-fm0tUZF5PcDh00dE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fm0tUZF5PcDh00dE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fm0tUZF5PcDh00dE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fm0tUZF5PcDh00dE .marker.cross{stroke:#333333;}#mermaid-svg-fm0tUZF5PcDh00dE svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fm0tUZF5PcDh00dE p{margin:0;}#mermaid-svg-fm0tUZF5PcDh00dE .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-fm0tUZF5PcDh00dE .cluster-label text{fill:#333;}#mermaid-svg-fm0tUZF5PcDh00dE .cluster-label span{color:#333;}#mermaid-svg-fm0tUZF5PcDh00dE .cluster-label span p{background-color:transparent;}#mermaid-svg-fm0tUZF5PcDh00dE .label text,#mermaid-svg-fm0tUZF5PcDh00dE span{fill:#333;color:#333;}#mermaid-svg-fm0tUZF5PcDh00dE .node rect,#mermaid-svg-fm0tUZF5PcDh00dE .node circle,#mermaid-svg-fm0tUZF5PcDh00dE .node ellipse,#mermaid-svg-fm0tUZF5PcDh00dE .node polygon,#mermaid-svg-fm0tUZF5PcDh00dE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fm0tUZF5PcDh00dE .rough-node .label text,#mermaid-svg-fm0tUZF5PcDh00dE .node .label text,#mermaid-svg-fm0tUZF5PcDh00dE .image-shape .label,#mermaid-svg-fm0tUZF5PcDh00dE .icon-shape .label{text-anchor:middle;}#mermaid-svg-fm0tUZF5PcDh00dE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fm0tUZF5PcDh00dE .rough-node .label,#mermaid-svg-fm0tUZF5PcDh00dE .node .label,#mermaid-svg-fm0tUZF5PcDh00dE .image-shape .label,#mermaid-svg-fm0tUZF5PcDh00dE .icon-shape .label{text-align:center;}#mermaid-svg-fm0tUZF5PcDh00dE .node.clickable{cursor:pointer;}#mermaid-svg-fm0tUZF5PcDh00dE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fm0tUZF5PcDh00dE .arrowheadPath{fill:#333333;}#mermaid-svg-fm0tUZF5PcDh00dE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fm0tUZF5PcDh00dE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fm0tUZF5PcDh00dE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fm0tUZF5PcDh00dE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fm0tUZF5PcDh00dE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fm0tUZF5PcDh00dE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fm0tUZF5PcDh00dE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fm0tUZF5PcDh00dE .cluster text{fill:#333;}#mermaid-svg-fm0tUZF5PcDh00dE .cluster span{color:#333;}#mermaid-svg-fm0tUZF5PcDh00dE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fm0tUZF5PcDh00dE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fm0tUZF5PcDh00dE rect.text{fill:none;stroke-width:0;}#mermaid-svg-fm0tUZF5PcDh00dE .icon-shape,#mermaid-svg-fm0tUZF5PcDh00dE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fm0tUZF5PcDh00dE .icon-shape p,#mermaid-svg-fm0tUZF5PcDh00dE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fm0tUZF5PcDh00dE .icon-shape .label rect,#mermaid-svg-fm0tUZF5PcDh00dE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fm0tUZF5PcDh00dE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fm0tUZF5PcDh00dE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fm0tUZF5PcDh00dE :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    12 V 电池

    TB6612 VM

    5 V/3.3 V 稳压

    MSPM0G3507

    MPU6050 I2C

    8 路灰度 GPIO

    左右编码器定时器输入

    UART:VOFA+/MaxiCamPro

    步进驱动 STEP/DIR

    左右直流电机

    OLED 与传感器

    上电阶段先测什么合格现象不合格时不要做什么
    空载 3.3 V、5 V、VM 对地 电压稳定、无明显纹波 不要直接提高 PWM
    GPIO 逐路遮挡灰度 只有对应通道翻转 不要先改权重表
    编码器 手转左右轮 计数方向与物理方向一致 不要用速度环掩盖极性错误
    电机 低占空比点动 左右轮可独立正反转 不要长时间堵转
    赞(0)
    未经允许不得转载:171主机测评 » 2026 年电赛(TI 杯)H 题:硬件选型、电源完整性、引脚分配与逐项上电验证
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址