ESP32伺服控制的深入教程|Web控制的伺服器

在本教程中,我们将学习如何使用ESP32开发板控制伺服电机。为了演示ESP32伺服控制的工作,我们将首先进行扫描应用程序,在该应用程序中来回振荡。然后,我们将看到如何使用电位器控制伺服器。最后,由于ESP32全都与IoT开发有关,因此我们将使用ESP32项目实施Web控制的伺服器。

伺服扫 -  ESP32

我已经使用ESP8266制作了网络控制的伺服器。如果您对此感兴趣,请检查一下。

笔记:使用ESP8266的Web控制的伺服器是早期实现。如果您想拥有最新的设计(该项目中实施),则可以遵循类似的步骤,并将其应用于ESP8266 Nodemcu董事会。ESP32初学者的项目这是给予的

先决条件

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

我将使用ESP32的PWM外围来控制伺服器,而不是使用库进行伺服电机控制。因此,了解如何生成是很好的PWM信号在ESP32中,使用LEDC外围。

下一个要求非常简单。如果要构建基于ESP32的网络控制伺服项目,然后您必须构建一个网页并将ESP32配置为Web服务器,以托管该网页。了解如何创建ESP32 Web服务器将非常有用。

因此,在进一步进行之前完成这些项目。

关于伺服电机的简短说明

伺服电动机无处不在:机器人技术,行业,自动化,CNC机器,甚至是DIY项目。由于我们对在项目中使用的小型且负担得起的伺服电机感兴趣,因此让我们谈谈两个常用的伺服电机:SG90和MG 996R。

SG-90-MG-996R-Servo-Motors

这两个伺服电动机都很便宜,到处都很容易获得。SG90是塑料齿轮伺服器,扭矩为1.8 kgf.cm,而Mg 996R是一款金属齿轮伺服器,扭矩为9.4 kgf.cm。

如果您查看这些伺服器的数据表,则SG90的旋转角为1800而Mg 996r只有1200回转。

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

伺服pwm period

当脉冲持续时间为1.5ms时,伺服器处于“中间”位置。如果应用了1毫秒的脉冲,伺服器将一直移至左移动,而2ms脉冲将使伺服器一路移动到右侧。

笔记:我将在所有项目中使用SG90伺服电机,因为它更常用和使用。

ESP32伺服控制

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

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

PWM信号的占空比决定了伺服器的位置,最左侧的1ms范围在1毫秒之间,最右侧为2ms,中心位置为1.5ms。

由于占空比通常表示为百分比,因此我们将继续使用相同的时间。因此,当我将占空比设置为50时,这意味着50%的占空比。

需要组件

  • ESP32 Devkit开发委员会
  • 伺服电机
  • 10kΩ电位器
  • 面包板
  • 连接电线

电路原理图

下图显示了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引脚,因此我将Servo的控制线连接到GPIO 16(在板上标记为RX2)。

使用串行控制伺服电机

在第一个项目中,让我们看看如何通过从串行输入中输入“占空比”值来控制伺服电机。该项目只是为了找出“占空比”的极端价值,以完全旋转伺服器。

代码

就我而言,极端的极端值为5,而极右的32值为32。这些是占空周期的限制,我必须遵循极端位置。这些值对您来说可能有所不同,因为每个伺服器都不同。

因此,要找出限制,请在建立连接后将代码上传到ESP32,打开串行监视器,输入不同的占空比值以测试和注意极端。

ESP32伺服清扫

使用上述占空比限制,我们可以编写一个伺服扫描程序,该程序将连续旋转在最左右的位置之间。这是为此的代码。

代码

串行控制 -  Servo-Esp32

使用锅调整伺服的位置

另一个有用的项目是使用电位器精确调整伺服电动机的位置。10kΩ电位器连接到ESP32的ADC引脚。我使用了ADC1_CH0,该ADC1_CH0在开发板上标记为VP。

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

电路原理图

ESP32-Servo-Control-Potentiometer-Circuit

代码

调整 - 塞普特-ESP32

ESP32 Web控制的伺服器

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

为了控制伺服器的位置,我选择了在网页上显示一个滑块。由于SG90伺服器可以定位在0之间0和1800,调整滑块列出伺服的角度,其范围为0至180。

当我们更改滑块的位置时,服务器将收到“ GET”请求以及请求中所需的角度。我们必须将角度从该请求解码,并将角度映射到先前测量的占空比值(5和32)。

代码

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

以下图像使用Chrome浏览器在笔记本电脑上访问了ESP32网络控制的伺服网页的屏幕截图。

网络对照页面

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

ESP32-WEB-Servo-Request

只要ESP32和手机连接到同一Wi-Fi网络,您也可以访问移动设备上的网页。下图是手机上访问的网页的屏幕截图。

ESP32-WEB-Servo-Mobile

结论

使用ESP32开发板控制伺服电机的完整教程。您了解了ESP32伺服控制的工作方式,如何计算伺服PWM信号的占空比,控制伺服器的不同方法:串行输入,使用电位计,最后,使用ESP32在Web控制的伺服器上进行完整的应用程序。

一个回应

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map