履带式底盘比轮式底盘具有更强的越障能力和地形适应性,适合户外探险、物资运输、搜救侦察等场景。本文以金属履带底盘为基础,制作一台高性能履带小车。
一、履带底盘选择
市面上的履带底盘按材质分为:
1. 塑料履带底盘:便宜(30-80元),适合室内和草地。履带易磨损,承重差。
2. 金属履带底盘:价格100-300元,铝合金或不锈钢履带板,承重5-10公斤,适合户外。
3. 3D打印履带:可自定尺寸,但强度和耐磨性不如金属。
推荐:购买成品金属履带底盘套件,通常包含底盘架、左右各一条金属履带、驱动轮、承重轮和履带张紧机构。淘宝搜索"金属履带底盘套件"即可。
二、电机选型
履带底盘需要的扭矩比轮式大很多,电机选型要特别注意:
微型履带(1-2kg小车):N20减速电机,减速比1:50-1:100
中型履带(3-5kg小车):JGB37-520直流减速电机,1:34或1:56减速比
大型履带(5kg以上):带编码器的775电机 + 行星减速器
电机一定要带编码器!没有编码器反馈,履带小车因为摩擦大、阻力不均匀,几乎走不了直线。
三、控制方案
差速转向原理:
履带小车没有转向轮,转弯依靠左右履带的速度差:
前进:左右同速正转
后退:左右同速反转
左转:左履带慢/停/反转,右履带正转
右转:右履带慢/停/反转,左履带正转
原地旋转:左右履带等速反向
// 履带小车差速控制代码(Arduino)
// 通过编码器反馈实现PID速度闭环
const int ENCA_L = 2; // 左电机编码器A相(中断引脚)
const int ENCB_L = 3; // 左电机编码器B相
const int ENCA_R = 18; // 右电机编码器A相
const int ENCB_R = 19;
volatile long leftPulses = 0;
volatile long rightPulses = 0;
float Kp = 1.0, Ki = 0.1, Kd = 0.05;
float leftIntegral = 0, rightIntegral = 0;
float lastLeftError = 0, lastRightError = 0;
void setup() {
pinMode(ENCA_L, INPUT_PULLUP);
pinMode(ENCB_L, INPUT_PULLUP);
pinMode(ENCA_R, INPUT_PULLUP);
pinMode(ENCB_R, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCA_L), readLeftEncoder, RISING);
attachInterrupt(digitalPinToInterrupt(ENCA_R), readRightEncoder, RISING);
// 初始化电机PWM引脚等...
}
void setMotorSpeed(int targetLeft, int targetRight) {
// 使用PID计算PWM值
static unsigned long lastTime = 0;
unsigned long now = millis();
float dt = (now - lastTime) / 1000.0;
lastTime = now;
// 获取当前速度(编码器脉冲/时间)
float leftSpeed = leftPulses / dt;
float rightSpeed = rightPulses / dt;
leftPulses = 0;
rightPulses = 0;
// 左电机PID
float leftError = targetLeft - leftSpeed;
leftIntegral += leftError * dt;
float leftDerivative = (leftError - lastLeftError) / dt;
float leftOutput = Kp*leftError + Ki*leftIntegral + Kd*leftDerivative;
lastLeftError = leftError;
// 右电机PID(同上)
float rightError = targetRight - rightSpeed;
rightIntegral += rightError * dt;
float rightDerivative = (rightError - lastRightError) / dt;
float rightOutput = Kp*rightError + Ki*rightIntegral + Kd*rightDerivative;
lastRightError = rightError;
// 输出PWM
analogWrite(MOTOR_L_PWM, constrain(leftOutput, 0, 255));
analogWrite(MOTOR_R_PWM, constrain(rightOutput, 0, 255));
}
void readLeftEncoder() {
if(digitalRead(ENCB_L) == HIGH) leftPulses++;
else leftPulses--;
}
void readRightEncoder() {
if(digitalRead(ENCB_R) == HIGH) rightPulses++;
else rightPulses--;
}
四、GPS户外导航(进阶)
加装GPS模块(如NEO-6M或NEO-8M),配合电子罗盘,可以实现户外自动驾驶。基本原理:
1. GPS获取当前经纬度和目标经纬度。
2. 计算目标方位角。
3. 电子罗盘读取当前朝向。
4. PID控制履带差速调整航向。
5. 到达目标点后停止。
注意:GPS在室内无信号,必须在室外使用。精度约2-5米。
五、常见问题
Q:履带经常脱落?
A:调整履带张紧度,驱动轮和承重轮必须对正。履带过松容易脱落,过紧会增加摩擦损耗。
Q:履带小车跑偏严重?
A:必须使用编码器闭环控制。开环控制下,左右电机哪怕1%的转速差异也会导致偏航。

微信联系
淘宝联系