繁体   English   中英

伺服电机故障

[英]Servo motor misbehavior

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

我想让伺服做的是:

  1. 在给 Arduino 加电时保持稳定。 (目前它旋转到某个角度并在为 Arduino 通电时恢复)。

  2. 从 0 度旋转到 90 度并停止,收到另一个命令它应该从 90 度旋转到 0 度并停止。

这是我的代码:

else if (val=='i'){
myservo.write(0);
delay(4000);
for(pos = 0; pos <= 90; pos += 1){
    myservo.write(pos);              
    delay(15);                       
 }
}
  else if (val=='j'){
myservo.write(0);
delay(4000);
 for(pos = 90; pos >= 0; pos -= 1){
    myservo.write(pos);              
    delay(15);                       
  }
  }
  1. 这是伺服系统的电子特性。 在上电之前或在上电后的几毫秒内向伺服提供 PWM 信号。 如果你想继续使用 Arduino,引导加载程序会等待几秒钟,在此期间伺服没有信号,所以添加一个晶体管来打开伺服的电源,作为启动代码中的最后一件事。 如果您可以直接对微控制器进行编程并移除 Arduino 引导加载程序,那么微控制器应该能够足够快地开始执行您的伺服控制,而不会出现明显的故障。 在任何一种情况下,伺服仍会跳到您在启动时告诉它的位置而不是随机位置; 您可以将最后一个命令位置保存在 EEROM 中,这样跳跃就不那么明显了,但是当未通电时,如果机械加载,伺服将移动,因此可能仍然存在跳跃。 没有办法对 RC 伺服说“保持当前位置”。
  2. 你的val == 'i' , val == 'j'分支在从 90 到 0 或从 0 到 90 缓慢旋转之前将伺服快速移动到零。记住你所在的位置,在移动之前不要移动到零位置到所需位置。

在机械上,伺服库控制的那种伺服不太可能强大到足以打开或关闭普通门; 如果是玩偶屋里的门或猫瓣,你会没事的,但否则你应该使用更强大的执行器和限位器以及一些力传感器,这样你就不会压到人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM