-1

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

我想要伺服器做的就是:

  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);                       
  }
  }
4

1 回答 1

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

从机械上讲,由伺服库控制的那种伺服不太可能强大到足以打开或关闭普通门;如果它是娃娃屋的门或猫皮瓣,你会没事的,但否则你应该使用更强大的执行器和终端止动装置和一些力传感器,这样你就不会压伤人。

于 2017-01-24T09:03:27.683 回答