首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Arduino 进行伺服电机控制

在本教程中,我们将通过 ARDUINO UNO 控制伺服电机。伺服电机用于需要精确的轴运动或位置的地方。这些不建议用于高速应用。这些建议用于低速、中等扭矩和精确位置应用。这些电机用于机械臂机器、飞行控制和控制系统。

伺服电机有不同的形状和尺寸。伺服电机主要有这些电线,一根用于正电压,一根用于接地,最后一根用于位置设置。红线连接到电源,黑线连接到地,黄线连接到信号。

伺服电机是直流电机、位置控制系统、齿轮的组合。直流电机轴的位置由伺服系统中的控制电子设备根据 SIGNAL 引脚的 PWM 信号的占空比进行调整。

简单地说,控制电子设备通过控制直流电机来调整轴位置。有关轴位置的数据通过信号引脚发送。到控制器的位置数据应通过伺服电机的信号引脚以 PWM 信号的形式发送。

PWM(脉冲宽度调制)信号的频率可能因伺服电机的类型而异。这里重要的是 PWM 信号的占空比。根据此占空比,控制电子设备调整轴。

如下图所示,要将轴移动到 9 点钟位置,TURN ON RATION 必须为 1/18。18ms 信号中有 1ms 的 ON 时间和 17ms 的 OFF 时间。

对于要移动到 12 点的轴,信号的 ON 时间必须为 1.5ms,OFF 时间应为 16.5ms。该比率由伺服系统中的控制系统解码,并根据该比率调整位置。这里的 PWM 是使用 ARDUINO UNO 生成的。

电路元件

硬件:ARDUINO UNO、电源(5v)、100uF电容、按键(两个)、1KΩ电阻(两个)、伺服电机(需测试) 。

软件:arduino IDE(Arduino nightly)。

Arduino伺服电机电路图及说明

一般情况下,我们需要到控制器的寄存器来调整频率和获取所需的占空比,以实现舵机的精确位置控制,在ARDUINO中我们不需要做这些事情。

在 ARDUINO 中,我们有预定义的库,一旦调用或包含头文件,它将相应地设置频率和占空比。在 ARDUINO 中,我们只需指定所需的伺服位置,UNO 就会自动调整 PWM。

为了获得舵机的准确位置,我们需要做的事情是:

首先我们需要设置 PWM 信号的频率,为此我们应该调用“#include

现在我们需要为舵机定义一个名称“Servo sg90sevo”,这里“sg90servo”是选择的名称,所以在编写potion时我们将使用这个名称,当我们有很多舵机要控制时,这个功能会派上用场,通过这个我们可以控制多达八个舵机。

现在我们告诉UNO舵机的信号引脚连接在哪里或者需要在哪里产生PWM信号。为此,我们有“Sg90.attach(3);”,在这里我们告诉 UNO 我们将伺服器的信号引脚连接到 PIN3。

剩下的就是设置位置了,我们要通过“Sg90.write(30);”来设置舵机的位置,通过这个命令舵机手移动30度,就这样了。之后每当我们需要改变舵机的位置时,我们都需要调用命令“Sg90.write(needed_position_angle);”。在这个电路中,我们将有两个按钮,一个按钮增加舵机的位置,另一个按钮用于减少舵机的位置。

Arduino 伺服电机控制教程 通过下面给出的 C 代码逐步进行说明。

代码

volatile int i=0;//initializing a integer for incrementing and decrementing duty ratio.

#include // header file for controlling servo

Servo servo;//defining the name usage as servo itself

void setup()

{

pinMode(3, OUTPUT);   // sets the pin3 as output

pinMode(0, INPUT);// sets the pin0 as output

pinMode(1, INPUT);// sets the pin1 as output

}

void loop()

{

servo.write(i);//set servo potion ‘i’ degrees

if (digitalRead(0)==LOW)

{

if (i

{

i++;//if pin0 is pressed and degrees is less than 180

delay(30);

}

}

if (digitalRead(1)==LOW)

{

if (i>0)

{

i--;// if pin1 is pressed and degrees is greater than 0

delay(30);

}

}

}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyXKqmiVqtQzGKf6nEh13mfg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券