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,库就加载进来了