使用Arduino开发板控制伺服电机

大多数情况下,直流电机控制的控制方法都是非常简单的(只需要连接电源和地)。伺服电机有一些不同,它使用3根线连接(电源、地和信号)将电机移动到某个旋转位置。该位置由信号线上发送的信号决定。一旦电机到达信号指定的位置,它将保持其位置,并抵抗试图将其从该位置移动的任何外力。该电阻称为伺服的转矩额定值,可在数据表中找到。
脉冲宽度调制PWM:
参考:PWM占空比控制电机转速
当我们使用Arduino编程时,这种伺服电机背后的理论并不太重要。我们可以导入一个库来满足大多数的PWM应用场景。该库称为Servo库,您可以在Arduino参考页查看的该库的所有不同函数,或者在太极创客上有相应的中文版关于库的介绍。

使用伺服库的基本操作如下:
(参考:【【太极创客】零基础入门学用Arduino 第二部分 meArm机械臂 合辑-哔哩哔哩】)

  1. 将伺服电机命名servo,可以使用Servo [servo name];函数实现。
  2. 将伺服关联到一个引脚,这个引脚将是我们伺服的信号引脚,并使用 [servo name].attach([PinNumber]);
  3. 为伺服的位置创建一个变量(或者只是使用一个整数值)
  4. 现在我们可以使用[servo name].write([position integer])写入伺服的位置。

以Arduino Uno和一个小型爱好伺服为例,您的设置应该看起来像这样,请注意,我们使用的PWM引脚10,但可以使用任何PWM引脚!
在这里插入图片描述

#include  //import the servo library

Servo coreservo; //Name the Servo

void setup() {
  coreservo.attach(10); 
  /*Attach the named servo object to Digital IO 13, use following syntax: 
  servoname.attach(Pin#, minimum Pulse width (ms), maximum pulse width (ms)); 
  if you want to define the pulse widths for your motor*/

}

void loop() {
  coreservo.write(0);
  delay(200);
  coreservo.write(90);
  delay(200);
  coreservo.write(180);
  delay(200);
  /* If you wanted to read the angle of your servo at any given time, use servoname.read();
   * If you wanted to write a pulse of a certain width use servoname.writemicroseconds(value in microseconds);
   */
}

Guess you like

Origin blog.csdn.net/lihe4151021/article/details/121500987