要通过Arduino精准控制24V电动轮毂的转动,需结合电机驱动、反馈信号(如编码器或霍尔传感器)和控制算法。以下是完整的硬件连接、软件实现和调试步骤:


1. 系统组成

模块 推荐型号/方案 作用
主控 Arduino Uno/Nano/ESP32 生成PWM信号,处理反馈数据。
电机驱动 BTS7960/DRV8871/VNH5019 提供大电流驱动(支持24V,峰值电流>10A)。
电动轮毂 24V无刷轮毂电机 执行转动
转速反馈 霍尔传感器(内置)或增量式编码器 测量实际转速,构成闭环控制。
电源管理 24V锂电池 + 5V降压模块 为Arduino和驱动模块供电。

2. 硬件连接

无刷轮毂电机控制

无刷电机需通过电调(ESC)控制,接线如下:

Arduino              无刷电调 (BLDC ESC)          24V无刷轮毂
──────             ───────────────             ───────
PWM Pin 9 ──────>  PWM信号输入                   UVW三相线
GND      ──────>  GND                          
                   + ──────── 24V正极
                   - ──────── 24V负极

配置电调

  1. 电调需校准油门行程(参考电调说明书)。

  2. 控制信号为50Hz PWM(1ms~2ms脉宽对应停转~全速)。

转速反馈连接
  • 霍尔传感器(无刷电机内置):
    将霍尔信号线(H1/H2/H3)接Arduino外部中断引脚(如D2/D3)。

  • 增量式编码器
    A/B相接Arduino中断引脚(如D2/D3),Z相接普通IO(可选)。


3. 控制算法(PID闭环控制)

(1) 测速代码(编码器/霍尔脉冲计数)
volatile long encoderCount = 0;
void countPulse() { encoderCount++; }

void setup() {
  attachInterrupt(digitalPinToInterrupt(2), countPulse, RISING); // 编码器A相接D2
  Serial.begin(115200);
}
(2) PID速度控制
float Kp = 1.0, Ki = 0.1, Kd = 0.05;  // PID参数需调试
float targetRPM = 100.0;               // 目标转速(RPM)
float currentRPM = 0.0;

void loop() {
  // 1. 计算当前RPM(每100ms采样一次)
  static unsigned long lastTime = 0;
  unsigned long currentTime = millis();
  if (currentTime - lastTime >= 100) {
    currentRPM = (encoderCount * 600.0) / (ppr * 0.1); // ppr=每转脉冲数
    encoderCount = 0;
    lastTime = currentTime;

    // 2. PID计算
    float error = targetRPM - currentRPM;
    static float integral = 0, lastError = 0;
    integral += error * 0.1;  // 0.1s为采样时间
    float derivative = (error - lastError) / 0.1;
    float output = Kp * error + Ki * integral + Kd * derivative;
    lastError = error;

    // 3. 输出PWM(限制范围0~255)
    output = constrain(output, 0, 255);
    analogWrite(9, output);  // 驱动模块PWM输入
  }
}

4. 关键调试步骤

(1) 开环测试
  • 固定PWM值(如analogWrite(9, 150)),观察电机是否转动,确认硬件连接正确。

(2) PID调参
  1. Ki=0, Kd=0,逐渐增大Kp直到电机转速出现小幅震荡。

  2. Kp的50%作为初始值,加入Ki消除静差(如目标转速与实际转速的稳态误差)。

  3. 最后加入Kd抑制超调。

(3) 校准测速
  • 轮周长测量:标记轮胎,滚动一周测量地面距离(如30cm直径轮子周长≈94cm)。

  • 每转脉冲数(PPR)

    • 霍尔传感器:PPR = 电机极对数(如10极对电机PPR=10)。

    • 编码器:PPR = 编码器线数 × 4(四倍频计数)。


5. 注意事项

  • 电源隔离:电机电源与Arduino电源需分开,避免干扰。

  • 死区保护:H桥驱动时,正反转PWM之间插入死区时间(如1ms)。

  • 过流保护:驱动模块加装保险丝或电流检测(如ACS712)。

  • 紧急停止:预留硬件急停开关,直接切断电机电源。


6. 扩展功能

  • 无线控制:通过ESP32的WiFi/蓝牙接收速度指令。

  • 数据监控:通过串口打印实时转速和PWM输出(用于PID调试)。

  • 多电机同步:使用CAN总线协调多个轮子(如ROS + CAN库)。


总结

  • 硬件:选择匹配的驱动模块(电流>电机额定值),确保反馈信号稳定。

  • 软件:PID闭环控制 + 脉冲计数测速,需动态调整参数。

  • 安全:加强电源和信号隔离,避免烧毁Arduino。

完成上述步骤后,可实现±5%以内的转速控制精度(具体取决于编码器分辨率和PID调参)。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐