舵机的使用方法(ESP32--Arduino)

       舵机是一种精密控制类电动机,也是电动机的一种,它的主要作用是旋转到某一指定位置,在机器人领域使用得相当的广泛,用来实现各种机械臂和机器人关节的运动。

       舵机的原理图如下所示:一、不同舵机的差异 

1. 扭矩:

       舵机的扭矩决定了它能驱动的负载大小,是选型时的重要指标。扭矩越大,能承受的外部负载就越强。

2. 工作角度:

       舵机的控制角度范围影响其在机械系统中的适用性。有些舵机能提供180度的角度控制,而有些则能提供360度或更多,这需要根据应用需求来选择。

3. 速度:

       转速由舵机无负载情况下转过一定角度所需时间来衡量,与马达类型、电压、齿轮箱减速比等因素有关。快速响应的应用场合需要选择转速快的舵机。

4. 通讯协议:

       不同的舵机可能支持不同的通讯协议,如PWM或总线控制信号。PWM舵机需要持续输入信号,而总线舵机具有保持功能,可以按需求选择适合的通讯方式。

5. 工作电压:

       舵机的工作电压直接关系到其动力输出和能耗,需要根据系统供电情况和能耗要求进行选择。

6. 外壳及齿轮材质:

       外壳和齿轮的材质会影响舵机的耐用性和重量。金属齿轮通常更耐用但会增加重量,塑料齿轮则相反。

7. 尺寸:

       根据安装空间和机械设计的需求,选择合适尺寸的舵机至关重要。

8. 马达类型:

       不同类型的马达(如直流电机、步进电机等)有不同的特性,例如步进电机可以提供精确的位置控制。

9. 配件:

       舵机的配件,如线缆长度、连接器类型也需要考虑,以便与现有系统兼容。

10. 可靠性指标:

       对于设备中使用的舵机,除了基本的动力性能外,还要关注寿命、稳定性、一致性、噪音和耐高低温等可靠性要求。

二、如何控制舵机工作

  1.控制原理

     当舵机收到某个范围内的脉冲信号后,会依据该脉冲的宽度,转到相应的位置。直到下一个控制脉冲来临之前,该舵机的位置均不会发生改变。输入的控制脉宽与舵机的角度之间的关系如下图所示:

        360度舵机通常无限位器,所以可以连续旋转。360度舵机的控制通过20ms的脉冲来进行控制(高电平宽度不大于2.5ms)当脉冲高电平宽度在1.5ms附近时,360度舵机停止运动,当脉冲高电平宽度大于1.5ms时,舵机为正转状态,高电平时长越长,电机转速越快。当脉冲高电平时长小于1.5ms时,舵机为反向转动状态,高电平时间越短,电机转速越快。

  2.引脚

      舵机的三个引脚:电源+、电源GND和信号线。

  3.代码   

    1.180度舵机

//驱动180读舵机  安装ServoESP32库
//接线 棕色 负极   红色 5V    橘黄色 信号线 D4
//安装库 ServoESP32
//控制舵机正传180度  反转180度
#include <Servo.h>
 
static const int servoPin = 4;
Servo servo1;
 
void setup() {
    Serial.begin(115200);
    servo1.attach(servoPin);
}
 
void loop() {
    for(int posDegrees = 0; posDegrees <= 180; posDegrees++) {
        servo1.write(posDegrees);
        Serial.println(posDegrees);
        delay(20);
    }
    for(int posDegrees = 180; posDegrees >= 0; posDegrees--) {
        servo1.write(posDegrees);
        Serial.println(posDegrees);
        delay(20);
    }
}

    2.360度舵机

#include <Arduino.h>
int t = 100; 
int channel_PWM = 3;  //使用3号通道 定时器1  总共16个通道 
// 舵机频率,那么周期也就是1/50,也就是20ms ,PWM⼀共有16个通道,0-7位⾼速通道由80Mhz时钟驱动,后⾯8个为低速通道由1Mhz
int freq_PWM = 50;  //50HZ pwm波
// PWM分辨率,取值为 0-20 之间  ,这⾥填写为10,那么后⾯的ledcWrite 这个⾥⾯填写的pwm值就在 0 - 2的10次⽅ 之间 也就是 0-1024,如果是要求不⾼的东西你可以直接拿1000去算了
int res_PWM = 10;  //分辨率  0-1024  共1025
const int  PWM_PIN = 4; //使用4号引脚
void setup() {
  ledcSetup(channel_PWM,freq_PWM,res_PWM);  //设置通道
  ledcAttachPin(PWM_PIN,channel_PWM);  //将引脚绑定到通道上
}
//正传t秒 停止t秒 反转t秒 停止t秒 循环...
void loop() {
  ledcWrite(channel_PWM,52); //20ms⾼电平为1ms左右 ,也就是1/20*1024 = 52,此时360度舵机正传5秒
  delay(t);
  ledcWrite(channel_PWM, 77);  //20ms⾼电平为1.5ms左右 ,也就是1.5/20*1024 = 77,此时360度舵机⼏乎停转
  delay(t);
  ledcWrite(channel_PWM, 102);  //20ms⾼电平为2ms左右 ,也就是2/20*1024 = 102,此时360度舵机反转
  delay(t);
  ledcWrite(channel_PWM, 77);  //20ms⾼电平为1.5ms左右 ,也就是1.5/20*1024 = 77,此时360度舵机⼏乎停转
  delay(t);
  //ledcDetachPin(PWM_Pin);  //这个是解除IO⼝的pwm输出功能模式
}

  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬件部件 乐鑫ESP32S× 1个 Raspberry Pi Pi NoIR相机V2× 1个 软件应用程序和在线服务 Arduino IDE 这次我们为机器人配备了摄像头,使其成为监控机器人车。可以使用ESP32-CAM模块轻松构建此网络控制的监视车。除了ESP32-Camera模块之外,在这里我们还将使用两个带有Robot底盘的DC电动机和L293D电动机驱动器模块来制造此Robotic小车。ESP32是构建基于IoT的项目的最受欢迎的开发板之一的AI-思想者ESP32-CAM模块带有一个ESP32-S芯片,非常小的尺寸OV2640照相机和microSD卡插槽。MicroSD卡插槽可用于存储从相机拍摄的图像。在此,HTTP通信协议将用于通过Web浏览器从OV2640摄像机接收视频流。网页上还将包含按钮,用于在上,左,右,前进和后退方向上移动汽车,如上图所示。 电路原理图 ESP32-监控摄像头的所有连接信息如下: ESP32-CAM没有USB连接器,因此您需要一个FTDI板将代码上传到ESP32-CAM。ESP32的VCC和GND引脚与FTDI板的VCC和GND引脚连接。ESP32的Tx和Rx与FTDI板的Rx和Tx连接。两颗直流电机通过L293D模块连接到ESP32。模块引脚连接到ESP32的IO4,IO2,IO14和IO15引脚。 注意:在上传代码之前,将IO0接地。IO0确定ESP32是否处于闪烁模式。当GPIO 0连接到GND时,ESP32处于闪烁模式。 我们通过使用现成的机器人底盘,车轮和直流电动机来构建机器人。我们使用电池为电机驱动模块和ESP32-CAM供电。这是我的监视机器人的外观:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值