用Arduino和Basra主控板,从零搭建一个能跑能转的阿克曼小车(附完整代码和3D打印文件)
2026/5/9 9:48:41 网站建设 项目流程

用Arduino和Basra主控板打造阿克曼转向小车的完整实践指南

第一次看到汽车底盘转向时那种精妙的机械联动,总让人忍不住想拆开看看内部结构。现在,你完全可以用Arduino和Basra主控板亲手复刻这种经典转向系统。不同于普通玩具车的简单转向,阿克曼几何能让车轮在转弯时自动调整角度,就像真正的汽车一样优雅。本文将带你从零件堆开始,一步步组装出能跑能转的智能小车。

1. 硬件准备与选型要点

1.1 核心部件清单

制作阿克曼转向小车需要以下核心组件(完整清单见文末表格):

  • Basra主控板:基于Arduino UNO架构但强化了电机驱动能力,内置稳压电路可直接接7.4V锂电池
  • 转向舵机:推荐SG90或MG995,扭矩至少3kg·cm才能带动转向机构
  • 驱动电机:TT马达套装(含减速齿轮和车轮),转速在200RPM左右最合适
  • 结构件
    • 3D打印的车架(提供STL文件下载)
    • M3螺丝螺母套装
    • 铝合金舵机臂
    • 2mm厚亚克力板制作转向连杆

提示:购买舵机时注意区分模拟舵机和数字舵机,后者转向精度更高但价格稍贵。

1.2 关键参数匹配表

部件推荐型号关键参数注意事项
主控板Basra V3.2输入电压7-12V需配合Bigfish扩展板使用
舵机MG995扭矩4.5kg·cm金属齿轮更耐用
驱动电机TT马达套装减速比1:48带编码器版本可测速
电池7.4V锂电池容量≥1500mAh需配XT60插头

1.3 工具准备

除了电子部件,还需要准备这些工具:

  • 烙铁和焊锡(用于连接电机线)
  • 热熔胶枪(固定线路和传感器)
  • 螺丝刀套装(M2/M3规格)
  • 万用表(检查电路通断)

2. 机械结构组装详解

2.1 车架3D打印要点

提供的STL文件包含以下核心部件:

  • 主底盘(含电机安装位)
  • 前轮转向座(带舵机固定孔)
  • 电池仓(适配7.4V锂电池尺寸)

打印建议:

# 推荐Cura切片参数 层高:0.2mm 填充密度:20% 打印温度:PLA材料200℃ 支撑类型:仅接触构建板

2.2 阿克曼转向机构原理

传统平行转向会导致内外轮转弯半径不同,而阿克曼几何通过精心设计的转向连杆,使内侧轮转角始终大于外侧轮。实际组装时要注意:

  1. 舵机臂与转向横拉杆成90°垂直
  2. 左右转向节臂的安装角度需对称
  3. 转向连杆长度建议50-70mm(根据车宽调整)

2.3 分步组装流程

  1. 安装驱动部分

    • 用M3螺丝固定TT马达到底盘后部
    • 安装后轮并确保转动顺畅
  2. 组装转向系统

    # 伪代码表示组装顺序 def assemble_steering(): 安装前轮转向座到底盘前端 用轴承固定转向节销 连接舵机与转向横拉杆 调整连杆长度至车轮居中
  3. 电路布置技巧

    • 用扎带固定线束避免缠绕
    • 舵机信号线远离电机电源线
    • 电池尽量靠近底盘中心降低重心

3. 电路连接与Basra配置

3.1 接线图详解

Basra主控板的典型接口分配:

  • D4:舵机信号线(PWM控制)
  • D5/D6:电机驱动信号
  • VIN:接7.4V锂电池正极
  • GND:公共接地

注意:Bigfish扩展板必须正确插入Basra主控板,否则电机无法工作。

3.2 Arduino IDE环境配置

  1. 安装Basra板支持包:

    • 在首选项添加https://www.robotway.com/package_basra_index.json
    • 开发板选择"Basra Uno"
  2. 必需库安装:

    #include <Servo.h> // 舵机控制库 #include <AFMotor.h> // 电机驱动库
  3. 上传测试程序前,务必检查:

    • 端口选择正确(如COM3)
    • 开发板类型为"Basra Uno"
    • 已关闭其他占用串口的程序

4. 代码编写与运动控制

4.1 转向角度映射原理

舵机角度与车轮转向角的非线性关系需要特别处理。实测数据表明:

舵机角度(°)左轮转角(°)右轮转角(°)
60+35+25
9000
120-25-35

对应的转向补偿算法:

float mapSteering(int servoAngle) { // 非线性映射公式 float wheelAngle = 0.5 * pow(servoAngle-90, 1.5); return constrain(wheelAngle, -40, 40); }

4.2 完整运动控制代码

#define SERVO_PIN 4 #define MOTOR_PIN1 5 #define MOTOR_PIN2 6 Servo steeringServo; int centerAngle = 90; // 舵机中位角度 void setup() { steeringServo.attach(SERVO_PIN); pinMode(MOTOR_PIN1, OUTPUT); pinMode(MOTOR_PIN2, OUTPUT); calibrateSteering(); // 转向校准 } void loop() { moveForward(2000); // 前进2秒 turnLeft(30, 1500); // 左转30度持续1.5秒 turnRight(30, 1500); } void calibrateSteering() { steeringServo.write(centerAngle); delay(500); } void moveForward(int duration) { digitalWrite(MOTOR_PIN1, HIGH); digitalWrite(MOTOR_PIN2, LOW); steeringServo.write(centerAngle); delay(duration); } void turnLeft(int angle, int duration) { int servoAngle = centerAngle + angle; steeringServo.write(servoAngle); digitalWrite(MOTOR_PIN1, HIGH); digitalWrite(MOTOR_PIN2, LOW); delay(duration); }

4.3 常见问题调试

转向不灵活

  1. 检查舵机扭矩是否足够
  2. 润滑转向节轴承
  3. 调整连杆减少虚位

电机转速不稳

# 用串口监视器检查电压 void checkVoltage() { int sensorValue = analogRead(A0); float voltage = sensorValue * (5.0 / 1023.0) * 2; Serial.print("Voltage: "); Serial.println(voltage); }

5. 进阶改造与扩展

5.1 增加无线控制

通过HC-05蓝牙模块可实现手机控制:

  1. 接线:

    • TX→D0
    • RX→D1
    • VCC→5V
  2. 修改代码添加蓝牙指令解析:

    if(Serial.available()) { char cmd = Serial.read(); switch(cmd) { case 'F': moveForward(500); break; case 'L': turnLeft(30, 300); break; } }

5.2 安装超声波避障

SR04超声波模块的安装要点:

  • 固定在前保险杠位置
  • 触发和回波引脚接D7/D8
  • 供电需稳定5V

避障逻辑代码片段:

long getDistance() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); return pulseIn(ECHO_PIN, HIGH) * 0.034 / 2; }

5.3 性能优化技巧

  • 减重设计:在非承重部位打减重孔
  • 提升续航:改用18650电池组
  • 增强抓地力:车轮缠电工胶布增大摩擦

组装过程中最让我意外的是转向连杆的微妙影响——长度相差仅2mm就会导致左右转向不对称。经过三次迭代,最终采用可调式连杆设计,用M3螺纹杆搭配尼龙锁紧螺母,实现了0.5mm级的精细调节。

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

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

立即咨询