伺服舵机是一种非常常见的配件。这里以SG90为例。有多种选择,如可分为:90°、180°、360°。伺服舵机由PWM(脉冲宽度调制)信号控制,需要连接到PWM输出引脚。

连线方式

在这里插入图片描述
此设备有三根引线:
红色(VCC):接正极(支持4.8V-6V,典型值为5V)
棕色(GND):接电源地(GND)
橙色(信号线):接微控制器(如Arduino、STM32、树莓派等)的PWM输出引脚

通过将电源引脚连接到 Arduino 5V 端子,并将地线连接到 Arduino 上的任一 GND 端子,来为设备供电。信号引脚连接到 Arduino 上支持 PWM 的任何输出(标有 ~)。
在这里插入图片描述

PWM信号要求

  • 周期:20ms(频率50Hz)。
  • 高电平脉宽:0.5ms-2.5ms,对应舵机角度0°-180°
    在这里插入图片描述

代码(Arduino)

#include <Servo.h>
Servo myservo;  // 创建舵机对象

void setup() {
  myservo.attach(9);  // 信号线接数字引脚9
}

void loop() {
  myservo.write(0);    // 0°
  delay(1000);
  myservo.write(90);   // 90°
  delay(1000);
  myservo.write(180);  // 180°
  delay(1000);
}

注意:

  • 确保你的Arduino开发环境中已经安装了 Servo 库,大多数标准的Arduino IDE版本默认已经包含了这个库。如果没有,可以在Arduino IDE中通过“工具” -> “库管理”进行安装。
  • Arduino的Servo库默认使用引脚9和10输出PWM

代码二:
这段代码会初始化舵机,并使其在一个循环中从0度转到180度,然后再返回到0度。你可以根据需要修改角度范围或速度。

#include <Servo.h>
Servo myServo;  // 创建一个 Servo 对象

void setup() {
  myServo.attach(9);  // 将舵机信号线连接到数字引脚9
}

void loop() {
  for (int pos = 0; pos <= 180; pos += 1) { // 从0度到180度逐渐增加角度
    myServo.write(pos);
    delay(15);                       // 等待15毫秒
  }
  for (int pos = 180; pos >= 0; pos -= 1) { // 从180度到0度逐渐减小角度
    myServo.write(pos);
    delay(15);                       // 等待15毫秒
  }
}

注意事项

  • 电源电流:SG90工作电流可达200-300mA,建议独立供电,避免因电流不足导致抖动。
  • ​信号稳定性:PWM信号需严格保持20ms周期,脉宽误差需小于±0.1ms。
  • 角度限制:避免机械超限(如强行超过180°),可能损坏齿轮。

扩展应用

  • ​360°舵机:通过调整脉宽控制转向和速度(0.5ms-1.5ms正转,1.5ms-2.5ms反转)。
  • 多舵机控制:使用多路PWM输出或舵机控制器(如PCA9685)。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐