您的位置:首页 > 房产 > 家装 > 2-2 伺服电机(舵机)(meArm机械臂)

2-2 伺服电机(舵机)(meArm机械臂)

2025/1/8 11:23:18 来源:https://blog.csdn.net/qq_44870829/article/details/141096339  浏览:    关键词:2-2 伺服电机(舵机)(meArm机械臂)

2-2 伺服电机(舵机)(meArm机械臂)

  • 2-2 伺服电机(舵机)
    • 介绍
    • 直流伺服电机
    • 工作原理
      • (1)首先发出指令给伺服电机,让其旋转90度
      • (2)伺服电机接收指令,旋转一些如45度(假设,每次调整的读数看型号)
      • (3)伺服电机判断自己旋转角度是否达到要求,通过当前状态如45度,与指令90度比对,没有达到就再次调整自己
      • (4)与指令90度比对,没有达到就再次调整自己,达到90度的指令目标角度要求
      • (5)完成指令要求后,会再次等待新的指令
    • 闭环控制系统
    • 伺服电机结构
    • 舵机主要参数
    • 如何用arduino控制伺服电机
    • 控制伺服电机程序
    • 加载库

2-2 伺服电机(舵机)

在这里插入图片描述

介绍

在这里插入图片描述

Mearm机械臂通过四个电机控制机械臂的

四个电机名为直流伺服电机(又称舵机)

此节课讲直流伺服电机的原理及如何使用arduino控制舵机

直流伺服电机

在这里插入图片描述

使用直流电驱动电机
在这里插入图片描述
在这里插入图片描述

伺服:可以接受我们的指令,按照我们的指令进行工作的

工作原理

在这里插入图片描述

伺服电机的转子可以旋转,使用角度衡量转子旋转的单位

(1)首先发出指令给伺服电机,让其旋转90度

在这里插入图片描述

(2)伺服电机接收指令,旋转一些如45度(假设,每次调整的读数看型号)

在这里插入图片描述

(3)伺服电机判断自己旋转角度是否达到要求,通过当前状态如45度,与指令90度比对,没有达到就再次调整自己

在这里插入图片描述

(4)与指令90度比对,没有达到就再次调整自己,达到90度的指令目标角度要求

在这里插入图片描述

(5)完成指令要求后,会再次等待新的指令

在这里插入图片描述

闭环控制系统

上述讲到的自我调整的流程就是闭环控制

根据输出条件进行判断
在这里插入图片描述

伺服电机结构

伺服电机接收指令会调整自己,不断逼近正确指令,如何比对调整自己看其结构

在这里插入图片描述
在这里插入图片描述

直流电机通电转动,驱动齿轮,齿轮驱动输出轴

输出轴一般装摇臂,摇臂驱动响应的外接装置

输出轴连接电位器,电位器旋转输出的电压信号改变,电压信号传给控制电路

控制电路接收电压信号判断输出轴旋转角度状态,控制电路根据输出轴所处的状态以及PWM的控制信号进行比对,作为依据

在这里插入图片描述

直流电机运行速度极快,大于输出轴速度,目的高速旋转与齿轮传动使其扭矩增大
在这里插入图片描述

电位器如上
在这里插入图片描述

控制电路如上

舵机主要参数

在这里插入图片描述

如何用arduino控制伺服电机

在这里插入图片描述

一般使用伺服电机有三根引线

红色:VCC,给伺服电机供电(链接到arduino+5v)
棕色:GND,接地(arduinoGND)
橙色:专门接收PWM控制信号,这里接到arduino 9~号引脚
在这里插入图片描述

控制伺服电机程序

在这里插入图片描述

打开示例程序,示例, servo ,sweep

/* Sweepby BARRAGAN <http://barraganstudio.com>This example code is in the public domain.modified 8 Nov 2013by Scott Fitzgeraldhttp://www.arduino.cc/en/Tutorial/Sweep
*/#include <Servo.h>			//引入servo库的头文件(之前的串口监视器serial库无需引入)(库都是开发人员开发好了,贡献巨大)Servo myservo;  	// 创建servo对象控制伺服电机
// 很多开发板允许同时创建12个servo对象int pos = 0;    // 存储伺服电机角度信息的变量void setup() {myservo.attach(9);  //servo对象连接在9~号引脚Serial.begin(9600);  //初始化串口监视器
}void loop() {for (pos = 0; pos <= 180; pos += 1) { 		//0度转到180度//每一步增加1度 in steps of 1 degree
myservo.write(pos);              //告诉伺服电机达到“pos”变量的角度
Serial.println(pos);				//将pos状态发送至串口监视器,查看其变化delay(15);                       //等待15毫秒以确保伺服电机可以达到目标角度(伺服电机转动中需要时间才能达到目标角度,要在发出指令后等一等,防止上一次指令没有执行完,新的指令又过来了,电机繁忙)}for (pos = 180; pos >= 0; pos -= 1) { 		//180度转到0度 
myservo.write(pos);              //告诉伺服电机达到“pos”变量的角度 
Serial.println(pos);delay(15);                       // 等待15毫秒以确保伺服电机可以达到目标角度 }
}

程序编译上传到arduino后,结果如下:
电机从0度转到180度,又从180度转到0度
在这里插入图片描述

加深印象,增加修改,如下,思考效果
在这里插入图片描述

效果如下:
以45度旋转,每转到45度停1秒
在这里插入图片描述

这款电机只能转180度,其他的类型电机可以转360度,也可以更改此电机旋转360度,可在网上找资料看看

加载库

在这里插入图片描述

可以在项目加载库中进行各种库的加载,要使用某个库

鼠标移动到最上方,加载servo库,在加载库,点击servo,库就加载进来了

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com