亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY二自由度竞速模拟器:Arduino Nano驱动SG90微型舵机

核心硬件

组件数量备注
Arduino Nano R31紧凑型主控,串口接收SimTools数据
SG90微型舵机2分别驱动俯仰(Pitch)与滚转(Roll)轴

辅助工具与软件

项目原理

SimTools从游戏读取遥测数据(加速度、G力、车辆姿态等),通过串口协议发送给Arduino。Arduino解析协议,将数值映射为舵机角度(0-179°),驱动两个SG90舵机移动微型模拟平台。这是微缩版双轴动感平台;实战级需替换为大扭矩舵机/电机+驱动器+增力机械结构。

DIY二自由度竞速模拟器:Arduino Nano驱动SG90微型舵机
Arduino Nano + 两个SG90舵机构成的微型双轴平台
DIY二自由度竞速模拟器:Arduino Nano驱动SG90微型舵机
SimTools配置界面:映射游戏遥测通道至Arduino串口通道

详细构建教程、机械图纸、调参技巧见社区:xsimulator.net
SimTools用户手册:PDF下载

固件代码(C++)

//********************************************************************************************
// RC模型舵机驱动 - 适配SimTools运动模拟软件
// Original by EAOROBBIE, Modified by aarondc
//********************************************************************************************
#include 
// #define DEBUG 1  // 取消注释启用串口调试输出

const int ACTUATOR_COUNT = 2;              // 双轴
const char ACTUATOR_NAME[ACTUATOR_COUNT] = { 'R', 'L' }; // SimTools发送的通道标识符
const int PINS[ACTUATOR_COUNT] = { 4, 5 }; // 舵机信号线引脚
// 映射范围:SimTools发送0-255 -> 舵机0-179°,左右轴方向相反
const int SCALE[ACTUATOR_COUNT][2] = { { 0, 179 }, { 179, 0 } };
const char EOL = '~';                      // 数据包结束符
const int MAX_CHARS = 3;                   // 最大位数(255)

Servo actuators[ACTUATOR_COUNT];
int actuatorPos[ACTUATOR_COUNT] = { 90, 90 };
int currentActuator = 0, valueCharCount = 0;

enum PortState { PS_READ_ACTUATOR, PS_READ_VALUE };
PortState state = PS_READ_ACTUATOR;

void setup() {
  for (int i=0; i 9) val = 0;
          actuatorPos[currentActuator] = actuatorPos[currentActuator] * 10 + val;
          valueCharCount++;
        } else break;
      }
      if (val == EOL || valueCharCount == MAX_CHARS) {
        #ifdef DEBUG Serial.print("Raw value: "); Serial.println(actuatorPos[currentActuator]); #endif
        // 映射 0-255 -> 对应轴的舵机范围
        actuatorPos[currentActuator] = map(actuatorPos[currentActuator], 0, 255,
                                           SCALE[currentActuator][0], SCALE[currentActuator][1]);
        #ifdef DEBUG Serial.print("Mapped angle: "); Serial.println(actuatorPos[currentActuator]); #endif
        updateActuator(currentActuator);
        state = PS_READ_ACTUATOR;
      }
    }
  }
}

void updateActuator(int idx) { actuators[idx].write(actuatorPos[idx]); }

接线原理图

DIY二自由度竞速模拟器:Arduino Nano驱动SG90微型舵机
Arduino Nano D4/D5分别接两舵机信号线,舵机电源建议外接5V稳压(共地)

进阶建议

制造工艺

  1. 树莓派 DIY 红外运动传感器:从原理到代码的完整指南
  2. 自制LUMAZOID:基于Arduino的音乐可视化灯光控制器
  3. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  4. DIY VR 滑板:用 Arduino、Google Cardboard 与蓝牙打造虚拟滑雪体验
  5. 基于 Arduino Nano 的智能运动感应水枪
  6. DIY Arduino 电子波疗设备 - 基于拉德尼克疗法的 EMR 治疗仪
  7. 使用 Arduino 制作便携式 RFID 门锁——分步指南
  8. DIY三轴CNC立式加工中心:打造精密铣床
  9. Arduino Nano + GY-906 非接触红外测温枪制作指南
  10. DIY 飞行模拟器方向舵脚踏板:分步制作指南
  11. DIY Arduino 身高测量仪:超声波非接触测高,精准易制
  12. Arduino Nano 自制 1MHz 方波发生器:简易 PWM 电路