Bluetooth 伺服电机不良行为

Bluetooth 伺服电机不良行为,bluetooth,arduino,arduino-uno,servo,Bluetooth,Arduino,Arduino Uno,Servo,我正在尝试制作一个自动门,在通过蓝牙接收命令时打开/关闭门 我只想让伺服机构做的是: 给Arduino通电时保持稳定。(目前,它会旋转到一定角度,然后重新接通Arduino电源) 从0度旋转到90度并停止,收到另一个命令时,它应从90度旋转到0度并停止 这是我的代码: else如果(val=='i'){ myservo.write(0); 延迟(4000); 对于(位置=0;位置=0;位置-=1){ myservo.write(pos); 延误(15); } } 这是伺服电子学的一个特点。通电

我正在尝试制作一个自动门,在通过蓝牙接收命令时打开/关闭门

我只想让伺服机构做的是:

  • 给Arduino通电时保持稳定。(目前,它会旋转到一定角度,然后重新接通Arduino电源)

  • 从0度旋转到90度并停止,收到另一个命令时,它应从90度旋转到0度并停止

  • 这是我的代码:

    else如果(val=='i'){
    myservo.write(0);
    延迟(4000);
    对于(位置=0;位置=0;位置-=1){
    myservo.write(pos);
    延误(15);
    }
    }
    
  • 这是伺服电子学的一个特点。通电前或通电后几毫秒内,向伺服提供PWM信号。如果您想继续使用Arduino,引导加载程序会等待几秒钟,在此期间伺服没有信号,因此添加一个晶体管以打开伺服电源,这是启动代码中的最后一件事。如果您可以直接对微控制器进行编程并移除Arduino引导加载程序,那么微控制器应该开始足够快地执行伺服控制,而不会出现明显的故障。在这两种情况下,伺服仍将跳到启动时您告诉它的位置,而不是随机位置;您可以在EEROM中保存最后一个命令位置,这样跳跃将不那么明显,但是如果没有动力,伺服将在机械加载的情况下移动,因此可能仍然存在跳跃。没有一种方式可以对RC伺服系统说“保持当前位置”
  • 您的
    val==“i”
    val==“j”
    分支将伺服快速移动到零,然后从90缓慢旋转到零或从零旋转到90。记住你所处的位置,在从该位置移动到所需位置之前不要移动到零
    机械上,伺服库控制的那种伺服系统不可能足够强,无法打开或关闭正常的门;如果是玩偶家里的门或猫襟,你就可以了,但如果不是这样,你应该使用更强大的执行器、末端挡块和一些力传感器,这样你就不会压碎人。

    你应该提到你正在使用的电机的具体型号,并提供一个最小的、可重复的示例。此外,您应该用代码描述Arduino的预期行为,以及您观察到的intead的行为。事实上,你的帖子甚至不包含任何问题,因此也不清楚。请提供更多关于开机时间和动作的信息。以上帝的名义,这是一个特定的角度。1°或176°或什么?电机是如何连接的?型号:-Tower Pro SG90当我给我的arduino通电时,伺服电机来回旋转到一定角度。我不知道确切的角度,但大约是20度。当我点击手机应用程序上的开门按钮时,它会通过蓝牙HC-05传递“i”。在这种情况下,我希望它从0度旋转到90度。但它做的是以正常速度从0旋转到90度,然后突然又转到0度,然后以正常速度开始旋转到90度,4-5次后,电机突然转到0度,开始发出噪音。我想要它做的是当我按下开门按钮时,它应该从0度旋转到90度,然后停止。当我按下关门按钮时,它应该会回来。在给arduino通电时,它突然以巨大的扭矩旋转。我希望它是稳定的。