Arduino Uno 实验7——SG90舵机
SG90舵机简介
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。主要是由外壳、电路板、驱动马达(直流电机)、减速齿轮组、位置检测元件(控制电路)所构成,是一套自动(闭环)控制装置。
所谓自动(闭环)控制就是用一个闭环反馈控制回路不断校正输出的偏差,使系统的输出保持恒定。
注意:①舵机的连线接口和舵机转动范围
②舵机内有位置控制电路,一旦通电后,不要用手转动舵盘,容易导致逻辑内减速齿轮的损坏。里面有传感器,读取对应的数值,形成闭环控制。
SG90舵机工作原理
由接收机发出讯号给舵机,经由电路板上的 IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。
如果轴的位置与控制信号相符,那么电机就会关闭。如果控制电路发现这个角度不正确,它就会控制马达转动,直到它达到指定的角度。舵机角度根据制造商的不同而有所不同。比如,一个180度的舵机,它可以在0度至180度之间运动。由于限位装置被安装在主输出装置上,超出这个范围机械结构就不能再转动了
舵机的输出功率与它所需要转动的距离成正比。如果输出轴需要转动很长的距离,马达就会全速运转,如果它只需要短距离转动,马达就会以较慢的速度运行,这叫做速度比例控制。
如何让舵机转到指定角度?
控制线用于传输角度控制信号。这个角度是由控制信号脉冲的持续时间决定的,这叫做脉冲编码调制(PCM)。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。例如:1.5毫秒的脉冲,电机将转向90度的位置(通常称为中立位置,对于180°舵机来说,就是90°位置)。如果脉冲宽度小于1.5毫秒,那么电机轴向朝向0度方向。如果脉冲宽度大于1.5毫秒,轴向就朝向180度方向。以180度舵机为例,对应的控制关系是这样的
0.5ms————-0度;1.0ms————45度;1.0ms————45度;2.0ms———–135度;2.5ms———–180度;
SG90舵机的使用
类库的使用规则
两个示例程序
实验一:舵机来回扫(示例:Sweep)
项目要求:
实现舵机在0~180度来回转动
电路搭建
参考程序
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {myservo.attach(9);
}
void loop() {for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); }for (pos = 180; pos >= 0; pos -= 1) {myservo.write(pos); delay(15); }
}
实验二:电位器控制舵机(示例:Knob)
项目要求:
实现电位器转动,带动舵机转动。
电路搭建
参考程序
#include<Servo.h> //数控制舵机运行
Servo myServo; //新建一个舵机对象myServo
const int servoPin=12; //设置舵机的连接引脚为12
const int potPin=A0; //设置电位器的连接引脚为A0void setup() {myServo.attach(servoPin); //使用舵机库功能函数attach(),该函数的功能是告诉Arduino舵机连接到9数字引脚
}
void loop() {int val = analogRead(potPin);val = map(val, 0, 1023, 0, 180); //将val从0~1023映射到0~180myServo.write(val); //功能函数write(angle)功能是用于设定舵机旋转角度(angle),角度范围为0°~180°delay(100); //延迟时间,让舵机转动到位
}
实验三:串口控制舵机
项目要求:
在串口监视器上输入角度后,舵机转动到指定的角度。
电路搭建
参考程序
#include <Servo.h>const int servoPin = 9; //设置舵机引脚为9
Servo myServo; //创建Servo对象myServoint dataIndex = 0; //创建整数型变量,存储输入数据序列号
void setup() {myServo.attach(servoPin);Serial.begin(9600); //启动串口通讯,传输波特率9600Serial.println("Please input serial data.");
}void loop() {if ( Serial.available() > 0 ) { // 检查串口缓存是否有数据等待传输int pos = Serial.parseInt(); // 解析串口数据中的整数信息并赋值给变量posif (pos < 0 || pos > 180) {Serial.println("Wrong number,please input again");} else {dataIndex++; // 处理数据序列号并通过串口监视器显示Serial.print("dataIndex = ");Serial.print(dataIndex);Serial.print(" , ");Serial.print("Set servo position: ");Serial.println(pos); // 通过串口监视器显示变量pos数值myServo.write(pos); // 使用pos变量数值设置伺服电机delay(15);}}
}
Arduino Uno 实验7——SG90舵机相关推荐
- Arduino UNO基于Timer2的舵机驱动库(精度比官方的高)
Arduino UNO基于Timer2的舵机驱动库(精度比官方的高) 原博客格式更友好:More accurate Arduino UNO timer2 servo driver library th ...
- Arduino Uno 实验15——MQ-135 气体传感器模块
MQ-135 气体传感器模块简介(空气质量检测 有害气体检测) MQ135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2).当传感器所处环境中存在污染气体时,传感器的电导率 ...
- Arduino Uno 实验11——MQ-3酒精乙醇传感器模块
MQ-3酒精乙醇传感器模块简介 MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn02).当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大. ...
- Arduino Uno 实验14——声音传感器
声音传感器简介 声音传感器的作用相当于一个话筒(麦克风).它用来接收声波,显示声音的振动图像,但不能对噪声的强度进行测量. 该传感器内置一个对声音敏感的电容式驻极体话筒.声波使话筒内的驻极体薄 ...
- Arduino Uno 实验6——LM35温度传感器
LM35温度传感器简介 LM35 是由National Semiconductor 所生产的温度传感器,其输出电压为摄氏温标.LM35是一种得到广泛使用的温度传感器. 由于它采用内部补偿,所以 ...
- Arduino Uno 实验4——电位器
电位器简介: 电位器属于无极性器件,可变电阻的一种,三个触点,通过旋转旋钮改变2号脚的位置,从而改变阻值的大小,1脚和3脚分别接开发板的5V和GND,2脚接模拟输入引脚. 电位器的使用 实验一:电 ...
- Arduino Uno 实验8——HC-SR04 超声波测距模块
HC-SR04 超声波测距模块简介 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现. HC-SR04超声波 ...
- Arduino Uno 实验2——按键开关
按键开关简介 按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关.按键的外观多种多样,本次实验使用的是这种微型按键,6mm的,如下图: 由图可知:按键没按下 ...
- Arduino Uno 实验1——LED(发光二极管)
器件简介 LED是英文light emitting diode(发光二极管)的缩写,属于半导体二极管的一种,可以把电能转化成光能:它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然 ...
- arduino舵机达180不到_【拓展教程】教你玩转Stduino之SG90舵机
大家好 今天小诺给大家介绍的是拓展教程第二篇--SG90舵机 SG90舵机相信大家都很熟悉 毕竟在很多大牛展示的项目里面SG90舵机是必备的一部分 SG90舵机 关键词: 51:stm32:Ardui ...
最新文章
- Nginx源码分析:master/worker工作流程概述
- PHP 7.0新增特性详解
- 这些基础协议,你懂吗?
- 轻松为Windows系统快速配置多个网关
- vue3.0js 非prop属性的值和setup函数的使用
- java常用代码,Java常用代码
- 首张数字人民币机票订单诞生 上海-深圳
- Firewalld防火墙转换成Iptables
- 解决开始时cmd进入dos中ping会提示未出现在内部文件中
- 删除none 的images报错 image has dependent child images 解决办法
- 浅谈大数据广告下个人隐私保护,开发者视角的广告原理
- Java Web实现使用浏览器下载文件代码
- 可行性分析与需求分析
- 基本了解云计算是什么东东了
- torch.sort
- 4种解决json日期格式问题的办法
- Html5 文件上传
- 选择企业最合适的人才 —— 谈谈因人设岗与因事设岗
- 如何使用eclipse开发单片机程序
- Win98 源代码(特别版)