0

这是我的电路连接的粗略草图:

图像

8 个伺服电机由外部直流电源供电。电源、伺服电机和Arduino的接地是通用的。Arduino 由笔记本电脑供电

#include <VarSpeedServo.h>

VarSpeedServo rot1;    
VarSpeedServo rot2;    
VarSpeedServo rot3;   
VarSpeedServo rot4;

VarSpeedServo grip1;   
VarSpeedServo grip2;   
VarSpeedServo grip3;   
VarSpeedServo grip4;

void setup() {

rot1.attach(11);
grip1.attach(10);

rot2.attach(1);
grip2.attach(2);

rot3.attach(8);
grip3.attach(9);

rot4.attach(5);
grip4.attach(7);

home1();
delay(1000);
home2();
delay(1000);
home3();
delay(1000);
home4();

}

void loop() {
}

void home1()
{
 rot1.write(0, 30, true);
 delay(2000);
 rot1.detach();
 grip1.write(40, 30, true);
 delay(2000);
 grip1.detach();
}

void home2()
{
  rot2.write(0, 30, true);
  delay(2000);
  rot2.detach();
  grip2.write(40, 30, true);
  delay(2000);
  grip2.detach();
}

void home3()
{
  rot3.write(180, 30, true);
  delay(2000);
  rot3.detach();
  grip3.write(160, 30, true);
  delay(2000);
  grip3.detach();
}

void home4()
{
  rot4.write(180, 30, true);
  delay(2000);
  rot4.detach();
  grip4.write(80, 30, true);
  delay(2000);
  grip4.detach();
}
  1. 上述程序用于控制 8 个伺服电机。我正在建造一个魔方解决机器人。它有 4 个臂,每个臂有 2 个伺服电机。一个电机打开手柄以固定立方体,另一个电机以特定角度旋转立方体。

  2. 当我上传程序时,伺服电机最初会转到不同的位置,然后根据程序移动。我不知道这背后的原因是什么。

  3. 我应该更改程序中的某些内容还是应该更改电路中的某些内容?

4

1 回答 1

0

我假设您使用的是标准伺服电机,而不是“连续旋转”伺服电机?您在基本层面上面临的问题很难解决。

伺服电机在断电时,默认情况下倾向于保持在最后一个命令位置(假设齿轮系上的任何类型的负载在不使用时都不会移动它),并且没有办法首先找到开始知道伺服电机目前处于什么位置,因为目前没有从伺服电机返回到 arduino 的位置反馈信号可用。

我可以建议的是,如果它非常重要,那么您必须将某种电位器机械地耦合到伺服连杆,并通过模拟输入引脚读回它的真实位置。

希望这会对你有所帮助。

于 2018-09-11T09:05:35.930 回答