You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino通过TB6560控制步进电机:电机到位后自动返回问题求助

步进电机到达目标角度后自动返回的问题解决

问题根源

核心问题在于Serial.parseInt()的默认行为:当串口监视器没有新输入时,该函数会返回0。你的代码每次loop()循环都会执行angle = Serial.parseInt(),导致电机转到目标角度后,下一次循环因无新输入将angle设为0,触发电机转回0度。此外还有两处细节问题:

  • currentAngle未初始化,默认值为0但逻辑上需明确初始状态
  • 0角度处理代码冗余,且整数除法计算numstep易产生精度丢失

修改方案

  1. 仅在串口有新数据输入时,才读取并处理目标角度
  2. 明确初始化currentAngle为0
  3. 优化步数计算逻辑,避免整数除法的精度误差
  4. 移除冗余的0角度判断代码

修改后的代码

// 定义引脚编号
const int stepPin = 3;
const int dirPin  = 2;
const int enPin  = 4;

int currentAngle = 0; // 初始化当前角度为0
int targetAngle;

const float stepPerAngle = 1.8; // 全步模式下每步对应1.8度

void setup() {
  Serial.begin(9600);
  // 设置引脚为输出模式
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);
  
  digitalWrite(enPin, LOW); // 使能电机驱动
  digitalWrite(dirPin, HIGH);
}

void loop() {
  // 仅当串口有可用数据时,读取目标角度
  if (Serial.available() > 0) {
    targetAngle = Serial.parseInt();
    
    // 可选:过滤超出合理范围的角度值
    if (targetAngle < 0) targetAngle = 0;
    
    if (currentAngle != targetAngle) {
      int angleDiff = abs(targetAngle - currentAngle);
      // 使用round函数四舍五入,避免整数除法导致的步数误差
      int numSteps = round(angleDiff / stepPerAngle);
      
      // 设置电机转动方向
      digitalWrite(dirPin, currentAngle < targetAngle ? HIGH : LOW);
      
      // 执行步进动作
      for (int x = 0; x < numSteps; x++) {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(1000);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(1000);
      }
      
      // 更新当前角度为目标角度
      currentAngle = targetAngle;
      
      // 调试输出
      Serial.print("当前角度=");
      Serial.print(currentAngle);
      Serial.print(" | 目标角度=");
      Serial.print(targetAngle);
      Serial.print(" | 步数=");
      Serial.println(numSteps);
    }
  }
  
  delay(100); // 减小循环延迟,提升串口响应速度
}

关键修改说明

  • 通过Serial.available()判断输入,避免无输入时强制将目标角度设为0
  • 初始化currentAngle为0,明确电机初始位置
  • 用round()处理步数计算,解决整数除法的精度丢失问题
  • 简化方向判断逻辑,移除冗余的0角度分支
  • 降低循环末尾的延迟,提升串口指令的响应效率

内容的提问来源于stack exchange,提问作者Manthan Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:42:49