如果你正在准备TI杯电赛的智能车项目,特别是面对三轮两驱底盘这个看似简单却暗藏玄机的核心部件,这篇文章可能会帮你避开至少3个关键坑点。很多参赛队伍在底盘安装阶段就埋下了后续调试困难的隐患——电机安装角度偏差1度,可能导致整车跑偏;底盘刚性不足,高速过弯时直接影响控制精度;线束布局不当,轻则信号干扰,重则短路烧板。
三轮两驱底盘作为智能车最基础的运动平台,其安装质量直接决定了后续算法调试的天花板。本文将基于实际参赛经验,从零件清点、机械装配、电机调试到整车校准,完整拆解安装全流程,重点解决几个容易被忽视但至关重要的问题:如何确保两驱动轮绝对平行?怎样调整万向轮预紧力避免抖动?电机编码器安装有哪些细节影响PID控制精度?
1. 三轮两驱底盘的核心设计原理与选型考量
三轮两驱底盘由两个主动驱动轮和一个从动万向轮构成,这种结构在电赛智能车中平衡了灵活性和控制复杂度。与四轮差速或阿克曼转向相比,三轮结构省去了转向舵机,直接通过左右轮差速实现转向,简化了控制逻辑,特别适合路径跟踪、循迹等典型电赛场景。
但简化不意味着简单。三轮底盘对机械精度要求极高:两驱动轮必须绝对平行,且轴线严格垂直于车身纵轴;万向轮安装位置需精确计算,确保重心分布合理。常见的安装误区包括:
- 认为万向轮只是支撑件,忽略其摩擦力和抖动对控制的影响
- 过度追求轻量化导致底盘刚性不足,高速运行时车体振动
- 电机固定孔位存在装配间隙,累积误差导致轮系不平行
在材料选择上,电赛常用2mm铝基板作为底盘,平衡重量和强度。驱动电机首选带编码器的直流减速电机,编码器精度直接影响闭环控制效果。万向轮建议选择轴承结构而非简单轴套,减少转向阻力。
2. 安装前的工具与零件准备清单
完整的安装过程需要以下工具和材料,提前准备齐全能显著提高效率:
工具类:
- 十字/一字螺丝刀套装(建议磁性头,防止螺丝掉落)
- 内六角扳手套装(常见M2-M5规格)
- 尖嘴钳、剥线钳、斜口钳
- 数字万用表(检查线路通断)
- 电烙铁及焊锡(电机线缆固定)
- 水平尺或简易平行度检测工具
- 螺丝胶(中等强度,防止振动松动)
零件清单核对表:
- 底盘板 ×1(确认孔径与电机匹配) - 直流减速电机 ×2(带编码器,确认减速比和电压) - 万向轮 ×1(承重需大于整车重量1.5倍) - 电机固定螺丝 ×8(通常M3×10mm) - 联轴器 ×2(匹配电机轴和轮轴直径) - 车轮 ×2(橡胶胎面,直径根据规则选择) - 编码器安装套件 ×2(包括码盘、光电传感器) - 螺丝、螺母、垫片套装(多种规格备用) - 硅胶线(红黑各1米,电机电源线) - 杜邦线(编码器信号线连接) - 扎带、热缩管(线束固定与绝缘)特别提醒:电机和编码器需成对使用,同一批次电机性能一致性更好。首次安装前,建议用万用表测量每个电机电阻,差值应小于5%。
3. 底盘机械结构安装步骤详解
3.1 底盘板预处理与基准线标记
首先清洁底盘板表面,去除毛刺。用直尺和记号笔在底盘板上画出中心线和电机安装基准线。这两条线是后续安装的精度基础:
- 沿底盘板纵向画中心线(如图1虚线所示)
- 在距离底盘后缘合适位置(通常1/3车长)画横向基准线,该线必须与中心线垂直
- 在横向基准线上标记两个电机安装点,确保两点对称且距离符合轮距要求
图示说明: 前缘 ↑ | 中心线 | | [电机L]---横向基准线---[电机R] | | 万向轮安装区 后缘3.2 电机安装与平行度调整
这是整个安装过程中最关键的环节,平行度误差必须控制在0.5°以内:
- 将电机放置于安装点,轻微拧紧固定螺丝(不要完全锁死)
- 用联轴器连接电机轴和车轮轴,暂时不装车轮
- 用直尺或卡尺测量两电机轴间距,前后端差值应小于1mm
- 使用水平尺检查两电机轴是否平行(如图2所示)
- 交替拧紧对角螺丝,分两次上紧,最终扭矩约0.8-1N·m
- 安装车轮,再次检查轮缘间距一致性
常见问题:如果底盘安装孔位偏差较大,可使用垫片微调。严禁强行扩孔破坏结构强度。
3.3 万向轮安装与重心调整
万向轮不仅提供支撑,还影响转向灵活性和直线稳定性:
- 确定万向轮安装位置:整车重心应略偏向驱动轮侧(约60%重量在驱动轮)
- 安装万向轮支架,确保垂直度
- 调整万向轮预紧力:太松会导致晃动,太紧增加转向阻力
- 测试万向轮360°旋转顺畅度,必要时添加润滑脂
重心位置验证方法:安装电池和主控板后,抬起万向轮侧,驱动轮应能平稳着地而不前翻。
4. 电机与编码器电气连接规范
4.1 驱动电路接线
典型的L298N或TB6612FNG驱动模块接线如下:
// 电机驱动引脚定义示例(基于STM32) #define MOTOR_L1 GPIO_PIN_0 // 左电机IN1 #define MOTOR_L2 GPIO_PIN_1 // 左电机IN2 #define MOTOR_R1 GPIO_PIN_2 // 右电机IN1 #define MOTOR_R2 GPIO_PIN_3 // 右电机IN2 #define PWM_L GPIO_PIN_4 // 左电机PWM #define PWM_R GPIO_PIN_5 // 右电机PWM电源接线顺序:电池→开关→驱动模块→电机。务必先接电源线,后接信号线。电源正负极必须使用不同颜色硅胶线区分,接线处用热缩管绝缘。
4.2 编码器安装与接线
编码器安装精度直接影响测速准确性:
- 将编码盘固定在电机轴末端,确保同心度
- 光电传感器固定在支架上,调整与编码盘间隙(通常0.5-1mm)
- 用示波器或逻辑分析仪检查编码器波形(如有条件)
编码器接线示例(正交编码器模式):
左编码器:VCC(3.3V) | GND | A相 | B相 右编码器:VCC(3.3V) | GND | A相 | B相接线后立即用万用表检查是否有短路。编码器线建议使用屏蔽线或双绞线,减少干扰。
5. 整车机械精度验证方法
安装完成后,必须进行以下验证测试:
5.1 直线行驶测试
将车置于光滑地面,手动推动前进3米,观察是否偏离直线。允许偏差:3米内横向偏移小于10cm。如果偏差过大,按以下顺序调整:
- 检查轮胎气压是否一致(如果是充气胎)
- 检查两轮直径是否相同(用卡尺测量)
- 重新校准电机安装平行度
- 检查万向轮是否居中
5.2 旋转对称性测试
标记起点,分别控制左右轮相同PWM值正反转,测量旋转90°所需时间,左右差异应小于10%。如果差异明显,可能原因:
- 电机性能不一致
- 车轮与地面摩擦系数不同
- 机械传动阻力不均
5.3 底盘刚性测试
用手施加适度扭力,检查底盘是否有明显变形。特别是电池安装区域,变形会导致重心变化影响控制。
6. 基础控制程序与参数整定
6.1 电机驱动基础代码
以下为STM32 HAL库的电机控制示例:
// 电机初始化函数 void Motor_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; // 使能时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_TIM2_CLK_ENABLE(); // 配置GPIO GPIO_InitStruct.Pin = MOTOR_L1 | MOTOR_L2 | MOTOR_R1 | MOTOR_R2; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // PWM定时器配置 TIM_HandleTypeDef htim2; htim2.Instance = TIM2; htim2.Init.Prescaler = 83; // 84MHz/84 = 1MHz htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 999; // 1MHz/1000 = 1kHz PWM htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init(&htim2); } // 设置电机速度和方向 void Set_Motor_Speed(int motor_id, int speed) // speed范围:-1000~+1000 { if(motor_id == MOTOR_LEFT) { if(speed >= 0) { HAL_GPIO_WritePin(GPIOA, MOTOR_L1, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA, MOTOR_L2, GPIO_PIN_RESET); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, speed); } else { HAL_GPIO_WritePin(GPIOA, MOTOR_L1, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, MOTOR_L2, GPIO_PIN_SET); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, -speed); } } // 右电机类似... }6.2 编码器读数与速度计算
// 编码器读数处理 int32_t Read_Encoder(uint8_t encoder_id) { if(encoder_id == ENCODER_LEFT) { return TIM3->CNT; // 左编码器接TIM3 } else { return TIM4->CNT; // 右编码器接TIM4 } } // 速度计算(每100ms调用一次) void Calculate_Speed(void) { static int32_t last_count_l = 0, last_count_r = 0; int32_t current_count_l = Read_Encoder(ENCODER_LEFT); int32_t current_count_r = Read_Encoder(ENCODER_RIGHT); speed_left = (current_count_l - last_count_l) * 10; // 脉冲/秒 speed_right = (current_count_r - last_count_r) * 10; last_count_l = current_count_l; last_count_r = current_count_r; }6.3 PID参数初步整定
首次调试建议从保守参数开始:
// PID参数结构体 typedef struct { float Kp; // 比例系数 float Ki; // 积分系数 float Kd; // 微分系数 float integral; // 积分项 float prev_error; // 上次误差 } PID_Controller; PID_Controller speed_pid_left = {0.5, 0.01, 0.05, 0, 0}; PID_Controller speed_pid_right = {0.5, 0.01, 0.05, 0, 0}; float PID_Calculate(PID_Controller* pid, float error, float dt) { pid->integral += error * dt; float derivative = (error - pid->prev_error) / dt; float output = pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative; pid->prev_error = error; return output; }整定顺序:先P后I最后D。观察电机响应,目标是在保证不振荡的前提下快速跟踪速度指令。
7. 常见安装问题与解决方案
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 车辆直线行驶跑偏 | 两轮不平行、轮胎气压不均、电机性能差异 | 测量轮距前后一致性、检查轮胎、测试电机空载电流 | 重新调整电机安装角度、统一轮胎气压、匹配电机 |
| 转向时车身抖动 | 万向轮预紧不当、重心过高、底盘刚性不足 | 检查万向轮摆动间隙、测量重心高度、测试底盘扭转变形 | 调整万向轮预紧螺母、降低重心、加强底盘结构 |
| 编码器读数异常 | 传感器间隙过大、线缆接触不良、电源干扰 | 观察编码器波形、检查接线、测量电源纹波 | 调整传感器位置、重新焊接接头、添加滤波电容 |
| 电机响应迟缓 | PWM频率过低、驱动电流不足、机械阻力大 | 检查PWM波形、测量驱动电压电流、手动转动电机轴 | 提高PWM频率至1k-5kHz、检查驱动模块散热、润滑轴承 |
| 高速运行时振动 | 动平衡不良、螺丝松动、共振频率匹配 | 检查车轮偏心、紧固所有螺丝、改变运行速度 | 做动平衡调整、使用螺丝胶防松、避开共振转速 |
8. 电赛实战经验与优化建议
8.1 机械结构优化方向
- 轻量化设计:在保证刚性的前提下,对非承重区域进行镂空处理。使用碳纤维板可进一步减重,但成本较高。
- 模块化布局:将电池、主控、传感器分区布置,方便维护和重心调整。
- 快速拆装设计:使用尼龙搭扣固定电池,磁吸式传感器支架,节省调试时间。
8.2 电气系统可靠性提升
- 电源管理:增加电容缓冲电路,减少电机启动时的电压跌落。建议在驱动模块电源输入端并联4700μF电解电容和100nF陶瓷电容。
- 信号隔离:电机PWM信号与编码器信号走线分开,避免干扰。模拟传感器电源最好独立稳压。
- 接地策略:采用星型接地,数字地、模拟地、功率地在一点共地。
8.3 控制算法进阶思路
基础速度闭环稳定后,可逐步引入:
- 前馈补偿:根据加速度指令提前补偿电机电压,减少响应延迟
- 自适应PID:根据运行状态自动调整PID参数,适应不同路面条件
- 运动学标定:通过实验精确测量轮距、轮胎直径等参数,提高模型准确性
8.4 比赛前的最终检查清单
[ ] 机械部分: - 所有螺丝紧固,关键部位点胶防松 - 车轮转动灵活,无卡滞 - 万向轮转向顺畅 - 整车重心位置合理 [ ] 电气部分: - 电源极性正确,电压正常 - 电机正反转逻辑正确 - 编码器AB相信号正常 - 所有接插件接触可靠 [ ] 软件部分: - 基本运动功能测试通过 - 紧急停止功能有效 - 参数保存机制可靠 - 日志记录功能正常三轮两驱底盘的精细安装是电赛智能车项目成功的基础。很多队伍在算法调试遇到瓶颈时,最终发现问题都源于机械安装的细微偏差。建议在安装阶段多花时间精确调整,特别是电机平行度和编码器安装这两个关键点。完成后保存一套基准参数和机械尺寸记录,便于后续维护和复制。
实际比赛中,稳定的机械平台往往比复杂的控制算法更可靠。当遇到控制异常时,首先检查机械结构和传感器安装,而不是盲目修改算法参数。这套安装方法经过多届比赛验证,能够为后续的循迹、避障、路径规划等高级功能提供坚实基础。