别再只用TT马达了!用STM32+双电机+编码器,手把手教你组装一台能测速的智能小车底盘
2026/6/9 5:58:57 网站建设 项目流程

从TT马达到双电机编码器:打造高精度智能小车底盘的完整指南

当你第一次用TT马达组装智能小车时,那种简单接上电池就能跑的新鲜感确实令人兴奋。但很快就会发现,这种俗称"香蕉电机"的小马达在精确控制方面捉襟见肘——速度不稳定、无法反馈真实转速、更谈不上闭环控制。这就是为什么进阶玩家最终都会转向双电机+编码器的方案。

1. 为什么需要升级你的小车驱动系统

TT马达(香蕉电机)作为入门级选择,价格低廉且接线简单,但其核心问题在于开环控制特性。这意味着:

  • 速度飘移:电池电压下降时转速明显降低
  • 无法测速:缺少反馈机制,不知道实际轮速
  • 控制粗糙:只能通过PWM占空比粗略调节
  • 扭矩不足:负载变化时容易堵转

相比之下,带霍尔编码器的直流电机方案解决了所有这些问题。我去年指导的大学生创新项目中,小组从TT马达升级到编码器电机后,赛道循迹精度直接从75%提升到98%。这不仅仅是数字的变化——当你看到小车首次实现真正的匀速行驶时,那种工程实现的满足感是入门级方案无法提供的。

霍尔编码器通过在电机转轴安装磁铁和传感器,每转产生固定数量的脉冲,通过统计脉冲频率即可计算实时转速

下表对比了两种方案的关键差异:

特性TT马达方案双电机+编码器方案
速度控制开环,粗略闭环,精确到±1RPM
速度反馈不可用实时脉冲计数
扭矩通常≤0.5kg·cm可选用3kg·cm以上型号
适用场景玩具级应用竞赛、科研级应用
成本10-20元/个50-200元/个

2. 硬件选型:构建高性价比驱动系统

2.1 电机与编码器选择要点

市场上适合智能小车的电机主要分三类:

  1. N20金属齿轮电机:体积小(20mm直径),通常自带编码器,但扭矩有限
  2. 37GB系列电机:平衡尺寸与性能,300-500RPM适合多数场景
  3. 大扭矩直流电机:需要配合减速箱,适合重型底盘

我推荐初升级者选择37GB520电机(12V,300RPM),搭配6线霍尔编码器(每转13PPR)。这个组合的优势在于:

// 编码器常见参数示例 #define ENCODER_PPR 13 // 每转脉冲数 #define WHEEL_DIAMETER 65 // 毫米单位 #define PI 3.1415926 float calculateSpeed(uint32_t pulseCount, uint32_t timeMs) { float circumference = WHEEL_DIAMETER * PI; float distancePerPulse = circumference / ENCODER_PPR; float speed = (pulseCount * distancePerPulse) / (timeMs / 1000.0); return speed; // 单位:mm/s }

2.2 关键配件清单

组装一套完整的驱动系统需要以下组件:

  • 电机固定支架:建议选择L型铝合金支架
  • 联轴器:6mm转5mm规格连接电机轴与轮毂
  • 驱动电路:TB6612或DRV8833电机驱动模块
  • 主控板:STM32F103C8T6最小系统板性价比最高
  • 电源管理:建议使用2S锂电(7.4V)配合降压模块

3. 机械组装:从零件到完整底盘

3.1 电机安装步骤详解

  1. 定位电机支架:在底盘后部对称标记安装孔,间距匹配电机尺寸
  2. 固定支架:使用M3×8mm螺丝配合防松螺母固定
  3. 安装电机:将电机插入支架,用M3×6mm螺丝紧固
  4. 连接联轴器:先紧固电机轴侧,再安装轮毂侧

注意联轴器两端需要留0.5mm间隙避免轴向应力

常见问题排查表:

现象可能原因解决方案
电机转动有异响联轴器偏心重新校正安装位置
车轮摆动轴套间隙过大添加垫片或更换联轴器
编码器读数不稳定磁铁距离过远调整传感器间距至1mm内

3.2 转向系统优化方案

虽然前文提到的舵机转向方案可行,但对于追求精准控制的场景,我推荐尝试双电机差速转向。这种方法:

  • 取消机械转向结构,简化底盘设计
  • 通过左右轮速度差实现转向
  • 转向半径可精确控制

实现差速转向需要修改电机控制代码:

# 差速转向控制示例 def set_motor_speeds(target_speed, turn_ratio): left_speed = target_speed * (1 - turn_ratio) right_speed = target_speed * (1 + turn_ratio) # 限制在PWM可输出范围内 left_speed = max(min(left_speed, 100), -100) right_speed = max(min(right_speed, 100), -100) set_pwm(left_motor, left_speed) set_pwm(right_motor, right_speed)

4. 电子系统:从接线到速度闭环

4.1 编码器信号处理电路

霍尔编码器通常输出两相正交信号(A/B相),需要正确接入STM32:

  1. 电源连接:VCC接3.3V,GND共地
  2. 信号接入:A/B相分别接定时器的CH1/CH2(如TIM2)
  3. 上拉电阻:信号线建议接10kΩ上拉

STM32CubeMX配置步骤:

  • 启用对应定时器的Encoder Mode
  • 设置计数范围为0-65535(16位)
  • 配置输入滤波器(建议4-8个时钟周期)

4.2 速度闭环控制实现

完整的PID控制流程包括:

  1. 速度采样:定时读取编码器计数值
  2. 计算实际速度:使用移动平均滤波
  3. PID运算:输出PWM调节量
  4. 抗饱和处理:限制积分项积累
// 简易PID实现示例 typedef struct { float Kp, Ki, Kd; float integral; float prev_error; } PIDController; float pid_update(PIDController* pid, float error, float dt) { pid->integral += error * dt; float derivative = (error - pid->prev_error) / dt; pid->prev_error = error; return pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative; }

调试技巧:

  • 先调P项直到出现小幅振荡
  • 加入D项抑制振荡
  • 最后加入I项消除静差
  • 测试时逐步提高目标速度

5. 进阶功能扩展

5.1 无线控制实现方案

利用WiFi模块(如ESP8266)可以轻松实现:

  1. 手机APP控制:通过TCP协议发送控制指令
  2. 网页监控:实时显示小车速度和传感器数据
  3. 视频传输:配合摄像头模块实现FPV功能

典型通信协议设计:

指令字节功能数据范围
0x01设置目标速度-100~+100
0x02设置转向角度-30~+30度
0x03请求传感器数据

5.2 运动性能优化技巧

在实际测试中,这些小技巧能显著提升表现:

  • 加速度限制:避免急启急停导致的打滑
def smooth_acceleration(current, target, max_delta): if abs(target - current) <= max_delta: return target return current + copysign(max_delta, target - current)
  • 轮胎处理:用砂纸轻微打磨增加摩擦力
  • 重心调整:电池位置影响转向特性
  • 运动学校准:测量实际轮距并修正转向模型

6. 从原型到产品级的思考

当完成基础功能后,可以考虑这些提升方向:

  • 加入IMU传感器:实现航向估计和更复杂的运动控制
  • 开发上位机软件:实时绘制速度曲线和调试参数
  • 设计3D打印件:定制化传感器支架和外壳
  • 能量回收系统:刹车时通过电机发电回充电池

在最近一次校园竞赛中,采用这套方案的队伍不仅完成了基础循迹,还实现了动态避障和编队行驶。这充分证明了良好硬件基础对功能扩展的重要性——就像盖房子,地基牢固才能建得更高。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询