首页

深入教程在ESP32伺服控制| Web控制伺服

在本教程中,我们将学习如何使用ESP32开发板控制伺服电机。为了演示ESP32伺服控制的工作,我们将首先做一个扫描应用程序,其中伺服来回摆动。然后我们将看到如何控制伺服使用一个电位器。最后,由于ESP32是关于物联网开发的,我们将使用ESP32项目实现一个Web控制伺服。

Servo-Sweep-ESP32

我已经做了一个Web控制伺服使用ESP8266。如果你对此感兴趣,可以去看看。

注意:使用ESP8266的Web控制伺服系统是一个早期的实现。如果您希望获得最新的设计(如本项目中实现的),也可以按照类似的步骤将其应用到ESP8266 NodeMCU板上。

先决条件

在继续之前没有太多的需要,但有两个早期的ESP32项目,这将有助于实现这个ESP32伺服控制项目容易。第一个是ESP32 PWM教程,第二个是ESP32 Web服务器教程。

代替使用一个库的伺服电机控制,我将使用ESP32的PWM外围控制伺服。因此,了解如何生成是很好的脉宽调制信号在ESP32中使用LEDC外设。

下一个要求非常简单。如果你想建立一个基于ESP32的Web控制伺服项目,然后您必须构建一个Web页面,并将ESP32配置为Web服务器来承载该Web页面。掌握如何创建ESP32 Web服务器的知识将非常有用。

所以,在进一步进行之前,先完成这些项目。

关于伺服电机的简要说明

伺服电机的应用无处不在:机器人,工业,自动化,数控机床,甚至DIY项目。由于我们对在我们的项目中使用的小型和廉价的伺服电机感兴趣,让我们谈谈两种常用的伺服电机:SG90和MG 996R。

sg - 90 mg - 996 r -伺服马达

这两种伺服电机都很便宜,在任何地方都很容易买到。SG90是一种塑料齿轮伺服电机,扭矩为1.8 kgf。而MG 996R是一种金属齿轮伺服,扭矩为9.4 kgf.cm。

如果你看一下这些伺服系统的数据表,SG90的旋转角度为1800而MG 996R只有1200旋转。

从数据表中得到的重要一点是,这两个伺服器的控制信号都是一个周期为20ms (50 Hz)的PWM信号,脉冲持续时间必须在1ms到2ms之间。

Servo-PWM-Period

当脉冲持续时间为1.5ms时,伺服系统处于“中间”位置。如果施加1ms的脉冲,伺服系统会一直向左移动,而施加2ms的脉冲会让伺服系统一直向右移动。

注意:我将在所有项目中使用SG90伺服电机,因为它更普遍可用和使用。

ESP32伺服控制

如前所述,我们将使用LEDC PWM控制器来设置伺服的控制信号,而不是使用“Servo”库。关于LEDC PWM控制器的美妙之处在于,你可以完全控制PWM信号产生的参数,例如,频率,分辨率和占空比。

PWM信号的频率设置为50hz,必须符合伺服电机的规格。使用标准的8位分辨率。重要的部分是设置占空比。

PWM信号的占空比决定了伺服系统的位置,其范围在最左1ms,最右2ms和中心1.5ms之间。

由于占空比通常用百分比表示,我们将继续使用相同的方法。所以当我把占空比设为50时,它的占空比是50%。

组件的要求

  • ESP32 DevKit开发板
  • 伺服电机
  • 10 KΩ电位计
  • 电路试验板
  • 连接电线

线路图

下图显示了ESP32和伺服电机之间的连接。SG90和MG 996R伺服电机的工作电压为4.8V。将VCC(红色)线连接到ESP32的VIN上。VIN是从USB输入的。所以大概是5V。将GND(棕色)线连接到ESP32的GND引脚上。

ESP32-Servo-Control-Circuit

最后是PWM控制线(橙色)。将此电线连接到ESP32的PWM引脚。由于ESP32上没有专用的PWM引脚,本质上你可以配置任何GPIO引脚作为PWM引脚,我将伺服控制线连接到GPIO 16(在板上标记为RX2)。

采用串行控制伺服电机

在第一个项目中,让我们看看如何通过输入“占空比”值来控制伺服电机。这个项目只是为了计算出伺服系统完全旋转的“占空比”的极值。

代码

在我的例子中,占空比的极值是5(极左)和32(极右)。这些是极限的工作周期,我必须遵循极端的职位。这些值对您来说可能不同,因为每个Servo都不同。

因此,为了找出极限,连接后将代码上传到ESP32,打开串行监视器,输入不同的占空比值进行测试,并记录极端值。

ESP32伺服扫

利用上述占空比限制,我们可以编写一个伺服扫描程序,该程序将在极左和极右位置之间持续振荡。下面是它的代码。

代码

Serial-Control-of-Servo-ESP32

用锅调整伺服位置

另一个有用的项目是使用电位器精确地调整伺服电机的位置。一个10 KΩ电位器连接到ESP32的ADC引脚。我使用ADC1_CH0,它在开发委员会上被标记为VP。

来自ADC输出的数字值将在0 - 4095范围内(因为它是一个12位ADC)映射到占空比的极端值(5和32)。

线路图

ESP32-Servo-Control-Potentiometer-Circuit

代码

Adjust-Servo-POT-ESP32

ESP32 Web控制伺服

ESP32伺服控制的最终项目是Web控制伺服。用网页创建web服务器的过程与我们在ESP32 web服务器教程中看到的相同。

为了控制伺服的位置,我选择了一个滑块显示在网页上。由于SG90伺服可以定位在00和180年0,调整滑块设置伺服的角度,其范围是,好吧,0到180。

当我们改变滑块的位置时,服务器会接收到一个' GET '请求以及请求中嵌入的期望角度。我们必须解码这个请求的角度,并将这个角度映射到先前测量的占空比值(5和32)。

代码

我注释了代码中所有重要的部分。根据您的要求修改代码(CSS样式,滑块,伺服占空比范围等)。另外,更改代码中的SSID和Password(第5和6行)。

下图是ESP32的Web Controlled Servo网页的屏幕截图,使用Chrome浏览器在笔记本电脑上访问。

Web-Controlled-Servo-Page

每当我们改变滑块的位置时,ESP32 Web服务器就会收到一个请求,下面的图像是显示请求的串行监视器的屏幕截图。

ESP32-Web-Servo-Request

您也可以通过手机访问web页面,只要ESP32和手机连接到同一个Wi-Fi网络即可。下图是通过手机访问网页的截图。

ESP32-Web-Servo-Mobile

结论

一个完整的教程控制伺服电机使用ESP32开发板。你学习了ESP32伺服控制的工作原理,如何计算伺服的PWM信号的占空比,控制伺服的不同方式:串行输入,扫描,使用电位器,最后,一个完整的应用在Web控制伺服使用ESP32。

一个回应

留下一个回复

您的电子邮件地址将不会被公布。必需字段被标记

Electronicshub图标
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu