【SG90】舵机的使用原理

目录

一、实物图

二、原理图

引脚定义

三、简介

舵机的组成

舵机与普通直流电机的区别

舵机的自动控制系统介绍

舵机的控制原理


源文件下载

可访问底部联系方式也可前往电子校园网官网搜索关键词

关键词:  SG90                                                               

一、实物图

二、原理图

引脚定义

舵机的输入线共有三条,如实物图所示,

红色中间,是电源正线;

棕色(有些是黑色)是电源地线,

桔黄色是控制信号线(有些舵机为白色,主要是不同厂家可能采用不同颜色)。

三、简介

舵机最早用于船舶上实现其转向功能,这就是舵机最早的由来。

舵机的组成

直流电机减速齿轮组传感器(可变电阻)控制电路组成的一套自动控制系统。

舵机与普通直流电机的区别

直流电机是一圈圈转动的,舵机只能在一定角度内转动(有最大旋转角度比如:180度),不能一圈圈转。普通直流电机无法反馈转动的角度信息(如果带编码器就可以反馈角度),而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。

舵机的自动控制系统介绍

自控制电路板接收来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到目标停止。 其工作流程为: 控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈→电机转动 … … 。 类似PID闭环控制。

舵机的控制原理

舵机的信号线是做为输入线就是接收PWM信号(定时器产生)。一般PWM的周期是20ms,那么对应的频率是50hz。那么改变不同的占空比就可以控制转动的角度。其中占空比从0.5-2.5ms,相对应的舵盘位置为0-180度,呈线性变化。如图所示:

给它提供一定的脉宽,它的输出轴就会保持一定对应角度上,无论外界转矩怎么改变(只要目标不变就维持在这个角度类似PID自动控制算法),直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应位置上如所求。

舵机内部有一个基准电路,产生周期为20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而生产电机的转动信号。由此可见,舵机是一种位置伺服驱动器,转动范围不能超过180度,适用于那些需要不断变化并可以保持的驱动器中,比如说机器人的关节、飞机的舵面等。

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

### SG90舵机原理图 SG90舵机是一种常见的小型舵机,广泛应用于各种机器人项目和DIY电子制作中。该舵机内部主要由直流电机、减速齿轮组、电位器以及控制电路组成。 #### 舵机构造概述 舵机外壳内含有一个微型直流电动机作为动力源,通过一组精密设计的齿轮来放大扭矩并降低速度。为了能够精确反馈当前位置给控制系统,在输出轴上安装有一个可旋转的电位计(Variable Resistor),它随着输出轴一起转动并将位置信息转换成电压信号返回给内部控制芯片[^1]。 #### 控制机制解析 对于像SG90这样的模拟舵机而言,其接收来自外部控制器发出的标准PWM (Pulse Width Modulation) 信号来进行操作。具体来说就是利用不同宽度的正脉冲去指示目标角度: - 当接收到持续时间为`0.5 ms` 的高电平时,表示要转向最左边的位置 (`0°`); - `1 ms` 对应中间偏左一点(`45°`); - 中间位置则对应于大约`1.5 ms` 高电平; - 同样地, `2 ms` 和 `2.5 ms` 分别代表接近右侧极限处(`135°`, `180°`) [^4]. 这种基于时间间隔变化而非频率改变的方式使得即使供电电压有所波动也不会影响到最终定位精度. #### 接线说明 通常情况下,SG90舵机会有三条引脚用于连接电源与信号输入: |颜色 | 功能 | |-----|------------| |棕色/黑色| GND 地线 | |红色 | VCC 正极 (+5V) | |橙色/黄色| PWM 输入端 | 这些引脚可以直接接入Arduino或其他微控制器板子上的相应管脚以便编程控制舵机动作[^3]. ```c++ // 示例代码展示如何使用Arduino库函数servo.h 来操控SG90舵机 #include <Servo.h> Servo myservo; void setup() { myservo.attach(9); // 将伺服对象绑定至数字引脚9 } void loop() { for (int pos = 0; pos <= 180; pos += 1) { // 执行一次完整的扫动周期 myservo.write(pos); delay(15); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特纳斯电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值