舵机原理图解析

一、舵机的基本原理

舵机是一种能够通过控制电子信号来控制机器人或其他机械的角度和角速度的电机。舵机电路核心由一个电机、一组位置传感器和一个控制电路组成。这个组合使得舵机变得非常精确。舵机的控制信号是通过PWM(脉宽调制)来控制的, 即通过改变脉冲宽度的长度。而PWM的周期则由控制电路中的晶振来控制。

当接收到指令后,控制电路会将信号传送给电机。电机会进行转动,并且反馈给不断变化的电压值。位置传感器感受到这个变化并且传递给控制电路。控制电路会将传感器的反馈和目标脉冲信号进行比较处理,确保电机转动到目标角度并且停止。

下面是一个典型的舵机的原理图:

        -----------------------------
        |     |      MOTOR         |
        |     |         |          |
        |     |         V          |
        |     |       [M1]         |
        |     |         A          |
        |     |         |          |
        |     |         V          |
        |     |    |-[POT1]-|      |
        |     |----|Signal  |      |
        |     |    |-[POT2]-|      |
        |     |         |     +----+-- OUT    <------ Control Signal
        |     |         |         |
        -----------------------------

舵机的电路图非常简单。首先,舵机需要一个电源来控制电机和控制电路。电机由M1代表,它以正向电流来转动或者以反向电流来回转。我们并不需要知道电机是如何驱动的,但是我们需要知道电机转动的时候,我们需要使用位置反馈(POT1和POT2)来检测位置变化。信号输出的地方由OUT标识

二、如何控制舵机

控制舵机需要几个关键因素。第一个是PWM频率。第二个是占空比,也就是脉冲的宽度。最后,还需考虑单个特定舵机的最小响应时间。

对于各种舵机,都有一个标准的PWM频率。虽然有关5Hz至400Hz的频率都可以被接受,但是实际上,500Hz被视为最适宜的PWM频率。实际上,使用PWM频率太低会降低舵机的响应速度,而使用PWM太高也有些浪费。所以使用500Hz非常合适。

控制舵机的第二个关键因素是脉冲的宽度。这通常在0.5ms至2.5ms之间变化,但是这取决于特定的舵机。故而,控制端(PIN)需要发送一个PWM脉冲,其宽度表示一段特定的角度。例如:1.5ms的脉冲宽度对应着舵机的中心位置。如果你要让舵机转动至最大宽度,它需要被带到其最大值。在达到最大值时,要停止发送脉冲来防止毁坏电机。

名义上,这个脉冲可以变化或者缩短至任何值。但是,为了简单起见,我们通常将舵机控制脉冲的宽度设置在900-2100微秒(μs)之间。

三、如何控制SG90舵机

现在我们已经了解了舵机的原理和如何控制它。让我们来看看如何控制一种具体的舵机。

SG90是一种非常受欢迎的舵机,因为它具有良好的响应速度和较低的功耗,同时价格便宜。在此处,我们将通过Arduino Uno控制此舵机。

在此之前,你需要无损地连接你的设备,如下图所示:

             _____________________
            | GND        VCC   |
            |---.        .----| PWM    <---- Arduino Uno board
            |   |        |    |
            |   '-[ Servo ]-'   |
            |                   |
            '-------------------'

接下来,让我们来看看如何驱动这个舵机。我们需要简单的代码进行控制。我们可以使用内置的 Servo 库来初始化和控制舵机。

#include 

Servo myServo;

void setup() {
  // 初始化舵机对象
  myServo.attach(9);
}

void loop() {
  // 转动舵机至角度0
  myServo.write(0);
  delay(1000);
  
  // 转动舵机至角度90
  myServo.write(90);
  delay(1000);

  // 转动舵机至角度180
  myServo.write(180);
  delay(1000);
}

在这个示例程序中,我们在频道9上初始化了 myServo 对象。然后,我们在自定义函数中使用 write() 函数来转动舵机。在每个转动过程中,我们会停留1秒钟,然后再继续。

四、如何控制MG996R舵机

与SG90类似,MG996R也是一种广泛使用的舵机。在此之前,你还需连接你的设备,如下图所示:

             _____________________
            | GND        VCC   |
            |---.        .----| PWM    <---- Arduino Uno board
            |   |        |    |
            |   '-[ Servo ]-'   |
            |                   |
            '-------------------'

我们还是要使用 Servo 库来初始化和控制舵机。不同之处在于其频率是50 Hz,输入电压为6V-7.2V,并且它需要更长的占空比,通常在1000us至2000us之间变化。下面是该舵机的 Arduino 代码:

#include 

Servo myServo;

void setup() {
  // 初始化舵机对象
  myServo.attach(9);
}

void loop() {
  // 转动舵机至角度0
  myServo.writeMicroseconds(1000);
  delay(1000);
  
  // 转动舵机至角度90
  myServo.writeMicroseconds(1500);
  delay(1000);

  // 转动舵机至角度180
  myServo.writeMicroseconds(2000);
  delay(1000);
}

在这个示例程序中,我们使用了 writeMicroseconds() 函数,因为 MG996R 舵机的占空比在1000us至2000us之间变化。使用此函数,我们可以精确地控制占空比和舵机转动的位置。

五、小结

通过以上分析,我们可以了解舵机的原理和如何控制它,包括SG90和 MG996R。使用 Servo 库,我们可以方便地初始化和控制舵机。如有更复杂的任务和应用,请根据需要进行进一步定制和优化。

原创文章,作者:JLKU,如若转载,请注明出处:https://www.506064.com/n/136038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JLKUJLKU
上一篇 2024-10-04 00:15
下一篇 2024-10-04 00:15

相关推荐

  • l9110风扇传感器模块原理图解析

    本文将从原理图概述、硬件特性、软件实现等多个方面对l9110风扇传感器模块进行详细解析,并给出对应代码实例。 一、原理图概述 l9110风扇传感器模块主要由驱动芯片l9110、电位…

    编程 2025-04-28
  • Qubes OS原理图解析

    Qubes OS是一种安全的操作系统,旨在提供强大的安全、隔离和轻松管理多个虚拟机的能力。这篇文章将讨论Qubes OS的原理图,并从多个方面进行详细阐述。 一、架构综述 Qube…

    编程 2025-04-27
  • OpenMV原理图详解

    一、引言 OpenMV是一个基于ARM Cortex-M7的低成本、高性能、易用的开源机器视觉平台,该平台旨在使得物联网及机器人等硬件设备“看得更远、更清楚、更深远”。本文将从硬件…

    编程 2025-04-25
  • 使用STM32控制舵机

    一、了解舵机 舵机是一种可以精确控制角度的电机,常用于机器人、模型、自动门和遥控车等领域。舵机通常有三个线缆:电源、地线和信号线。通过改变信号线上的脉冲宽度,可以改变舵机转动的角度…

    编程 2025-04-13
  • MG90S舵机参数详解

    一、物理参数 MG90S舵机是一款微型舵机,其体积小,重量轻,方便安装,适合各种小型机器人、模型等领域的应用。 下面是MG90S舵机的一些物理参数: – 重量:9g – 尺寸:22…

    编程 2025-01-16
  • AD原理图怎么生成PDF

    一、AD原理图怎么生成图片 AD是一款广泛应用于电路设计的软件,使用AD可以方便快捷地生成原理图并进行仿真,同时也能够很方便地将原理图导出为图片,具体步骤如下: 1、首先打开需要导…

    编程 2024-12-27
  • c语言单片机数据传送,单片机数据传送原理图

    本文目录一览: 1、单片机串口发送数据用c语言编写,放在主函数里就没问题,单提出来写成子函数,发送数据就不完整? 2、单片机程序:外部RAM与内部RAM数据传送程序(汇编、和C语言…

    编程 2024-12-24
  • 详解STM32最小开发板原理图

    一、STM32最小开发板原理图介绍 STM32最小开发板是一款小巧、便捷的开发板,它使用STM32系列单片机作为主控制器,并提供了一些通用的外设器件,如晶振、LED灯、按键等,用于…

    编程 2024-12-24
  • PADS原理图:从入门到精通

    一、Pads原理图是什么 Pads原理图软件是一种电子绘图软件,用于设计PCB(Printed Circuit Board)印刷电路板,由美国PADS Software Inc.公…

    编程 2024-12-12
  • 安宁无阀滤池原理,无阀滤池原理图

    本文目录一览: 1、无阀滤池的工作原理? 2、重力无阀过滤器的工作原理是什么啊? 3、火力发电厂中无筏滤池、灰水池、除灰水泵房的功能是什么?安装什么设备??工作原理是怎样的?? 4…

    编程 2024-12-02

发表回复

登录后才能评论