在本教程中,我们将学习如何使用ESP32开发板控制伺服电机。为了演示ESP32伺服控制的工作,我们将首先进行扫描应用程序,在该应用程序中来回振荡。然后,我们将看到如何使用电位器控制伺服器。最后,由于ESP32全都与IoT开发有关,因此我们将使用ESP32项目实施Web控制的伺服器。
我已经使用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。
这两个伺服电动机都很便宜,到处都很容易获得。SG90是塑料齿轮伺服器,扭矩为1.8 kgf.cm,而Mg 996R是一款金属齿轮伺服器,扭矩为9.4 kgf.cm。
如果您查看这些伺服器的数据表,则SG90的旋转角为1800而Mg 996r只有1200回转。
从数据表中获取的一个重要点是,这两个伺服器的控制信号是一个PWM信号,其周期为20ms(50 Hz),并且脉冲持续时间必须在1ms至2ms之间。
当脉冲持续时间为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引脚之一。
最后,PWM控制线(橙色)。将该电线连接到ESP32的任何PWM引脚。由于ESP32上没有专用的PWM引脚,因此您可以将任何GPIO引脚配置为PWM引脚,因此我将Servo的控制线连接到GPIO 16(在板上标记为RX2)。
使用串行控制伺服电机
在第一个项目中,让我们看看如何通过从串行输入中输入“占空比”值来控制伺服电机。该项目只是为了找出“占空比”的极端价值,以完全旋转伺服器。
代码
就我而言,极端的极端值为5,而极右的32值为32。这些是占空周期的限制,我必须遵循极端位置。这些值对您来说可能有所不同,因为每个伺服器都不同。
因此,要找出限制,请在建立连接后将代码上传到ESP32,打开串行监视器,输入不同的占空比值以测试和注意极端。
ESP32伺服清扫
使用上述占空比限制,我们可以编写一个伺服扫描程序,该程序将连续旋转在最左右的位置之间。这是为此的代码。
代码
使用锅调整伺服的位置
另一个有用的项目是使用电位器精确调整伺服电动机的位置。10kΩ电位器连接到ESP32的ADC引脚。我使用了ADC1_CH0,该ADC1_CH0在开发板上标记为VP。
ADC输出的数字值将在0 - 4095的范围内(因为它为12位ADC)被映射到占空比的极端(5和32)。
电路原理图
代码
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和手机连接到同一Wi-Fi网络,您也可以访问移动设备上的网页。下图是手机上访问的网页的屏幕截图。
结论
使用ESP32开发板控制伺服电机的完整教程。您了解了ESP32伺服控制的工作方式,如何计算伺服PWM信号的占空比,控制伺服器的不同方法:串行输入,使用电位计,最后,使用ESP32在Web控制的伺服器上进行完整的应用程序。
一个回应
伟大的教程,
但是我仍然需要互联网连接https://code.jquery.com/jquery-3.6.0.min.js\ \
为此有工作吗?