雷竞技注册
项目

伺服电机控制与Arduino

2015年6月3日,经过蒂姆杨ood

你可以将小型伺服电机直接连接到Arduino来非常精确地控制轴的位置。

你可以将小型伺服电机直接连接到Arduino来非常精确地控制轴的位置。

因为伺服电机使用反馈来确定轴的位置,你可以非常精确地控制那个位置。因此,伺服电机被用来控制物体的位置,旋转物体,移动机器人的腿,手臂或手,移动传感器等,具有很高的精度。伺服电机体积小,因为它们有内置电路来控制它们的运动,它们可以直接连接到Arduino。

大多数伺服电机有以下三个连接:

  • 黑/棕色地线。
  • 红色电源线(5V左右)。
  • 黄色或白色pwm线。

在这个实验中,我们将电源和接地引脚直接连接到Arduino 5V和GND引脚上。PWM输入将连接到Arduino的数字输出引脚之一。

实验1

硬件要求

  • 1 x Towerpro SG90伺服电机
  • 1 x Arduino Mega2560
  • 3 ×跳线

接线图

伺服电机最好的地方在于它可以直接连接到Arduino。将电机与Arduino连接如下表所示:

  • 伺服红线 - 5V Pin Arduino
  • 伺服棕色线 - 地面别针Arduino
  • 伺服黄线 - PWM(9)PIN Arduino

警告:不要试图用手旋转伺服电机,可能会损坏电机。

代码

程序开始运行时,伺服电机将从0度旋转到180度,一次一度。当电机旋转180度时,它将开始沿另一个方向旋转,直到返回原位位置。

#include // servo library servo servo_test;//初始化连接伺服嵌段= 0的伺服对象;void setup(){servo_test.attach(9);//将伺服信号引脚连接到Arduino} void Loop(){for(角度= 0;角度<180;角度+ = 1)//命令从0度移动到180度{servo_test.write(角度);//命令将伺服旋转到指定的角度延迟(15);延迟(1000);for(角度= 180;角度> = 1;角度-= 5)//命令从180度移动到0度{servo_test.write(角度);//命令将伺服旋转到指定的角度延迟(5);延迟(1000);}

servo_motor.zip.

实验2

这个实验与实验1本质上是相同的,除了我们添加了一个位置控制电位器。Arduino读取电位器中间引脚上的电压,并调整伺服电机轴的位置。

硬件要求

  • 1 x Towerpro SG90伺服电机
  • 1 x Arduino Mega2560
  • 1 x 20kΩ电位器
  • 1 x面包板
  • 6 x跳线电线

接线图

将电路连接为如下图所示:

  • 伺服红线 - 5V Pin Arduino
  • 伺服棕色线 - 地面别针Arduino
  • 伺服黄线 - PWM(9)PIN Arduino
  • 电位器引脚1 - 5V引脚Arduino
  • 电位器销3 - 地面别针Arduino
  • 电位器引脚2 -模拟输入(A0)引脚Arduino

代码

一旦程序启动,旋转电位器应使伺服电机的轴旋转。

#include // servo library servo servo_test;//初始化连接伺服嵌段= 0的伺服对象;int potentio = a0;//初始化a0analog引脚的电位计void setup(){servo_test.attach(9);//将伺服的信号引脚连接到Arduino的PIN9} void Loop(){角= analogread(potentio);//读取0到1023角度之间的电位计值=地图(角度,0,1023,0,179);//将电位器值缩放到0到180之间的伺服伺服值的值值)伺服_test.write(角度);//命令将伺服旋转到指定的角度延迟(5);}

servo_motor_with_arduino.zip

自己试试这个项目吧!得到bom。

视频进行实验1

视频进行实验2

20的评论
  • Shafiq Roslan. 2015年12月13日

    我应该使用什么电源?

    喜欢的。 回复
  • 布鲁诺•卡斯特罗 2016年8月30日

    我使用相同的代码,但我等待5秒做代码…在那5秒里,他发出了噪音,我怎么能使用伺服停止3分钟静音(没有声音)?

    喜欢的。 回复