Arduino的PWM应用:舵机控制

目录

概述

1 认识舵机

1.1 舵机分类

1.2 舵机结构

1.3 舵机工作原理

1.4 舵机控制原理

1.5 舵机工作参数介绍

1.5.1 基本参数

1.5.2 舵机扭矩

2 系统硬件

2.1 硬件模块介绍

2.1.1  SG90 9G 360°舵机

2.1.2  SG90 9G 180°舵机

2.1.3 Arduino UNO 主板 

2.2 整体结构

3 软件设计

3.1 功能介绍

3.1.1 舵机控制分析

3.1.2 实现要求

3.2 代码实现

3.2.1 开发环境编写代码

3.2.2 详细代码

4 测试


概述

       本文主要介绍舵机的实现原理,控制方法,并使用Arduino UNO板卡设计一个案例,控制舵机按照预定的规则工作。

1 认识舵机

      舵机可以在程序的控制下,在一定范围内连续改变输出轴角度并且可以保持住。 其最早被用在航模和船模等遥控模型中,控制各种舵面的转动。现在这种电机大量的运用在各种机器人、机械臂的关节以及智能小车的转向机构中。

   

1.1 舵机分类

1)按照舵机的控制电路可以分为:模拟舵机和数字舵机。模拟舵机和数字舵机的机械结构可以说是完全相同的, 模拟舵机的控制电路为纯模拟电路,需要一直发送目标信号,才能转到指定的位置,响应速度较慢,无反应区较大; 数字舵机内部控制电路则加上了微控制器,只需要发送一次目标信号,即可到达指定位置,速度比模拟舵机更快,无反应区也更小。

2)按照使用对象的不同,可以分为:航模舵机、车模舵机、船模舵机和机器人舵机。航模舵机一般要求速度快、精度高, 而车模和船模用的舵机一般要求具有大扭矩和防水性好。

3)按照内部机械材质,又可分成:塑料齿舵机和金属齿舵机。塑料齿舵机内部的传动齿轮是塑料的,重量轻价格便宜, 但是扭矩一般较小无法做大;金属齿舵机的扭矩更大,舵机更结实耐用,但是相比塑料齿更重也更贵。

4)按照外部接口和舵机的控制方式,又可分为:PWM舵机和串行总线舵机。

1.2 舵机结构

       舵机主要由以下几个部分组成:外壳、舵盘、直流电机、减速齿轮组、角度传感器、控制驱动电路和接口线缆等。常见的舵机内部结构如下图所示。

      角度传感器负责舵机的位置反馈,直接装在舵机的主输出轴上,将轴旋转后产生的角度变化变成电压信号发回控制电路,当前轴角度; 控制驱动电路用来接收外部接口传来的信号和角度传感器反馈的电压值,以及驱动直流电机旋转; 减速齿轮组则是降低直流电机的转速并且放大扭矩。

1.3 舵机工作原理

        以模拟舵机为例介绍舵机工作原理:模拟舵机内部的控制驱动电路板从外界接收控制信号, 经过处理后变为一个直流偏置电压,在控制板内部有一个基准电压,这个基准电压由电位器产生并反馈到控制板。将外部获得的直流偏置电压与电位器的电压进行比较获得电压差, 并输出到电机驱动芯片驱动电机,电压差的正负决定电机的正反转,大小决定旋转的角度,电压差为0时,电机停止转动。大致原理框图如下图所示。

1.4 舵机控制原理

舵机pin引脚介绍:

中间的红色线:电源正极

咖啡色线: 电源负极

橙色线: 控制线号线

        舵机的控制通常采用PWM信号,例如需要一个周期为20ms的脉冲宽度调制(PWM), 脉冲宽度部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。 当脉冲宽度为1.5ms时,舵机旋转至中间角度,大于1.5ms时 舵机旋转角度增大,小于1.5ms时舵机旋转角度减小。舵机分90°、180°、270°和360°舵机。 以180°的舵机为例来看看脉冲宽度与角度的关系:

        舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

1.5 舵机工作参数介绍

1.5.1 基本参数

 1)舵机速度的单位:sec/60°,就是舵机转过60°需要的时间。

 2)和控制脉冲关系:变化宽度大,变化速度快, 舵机就有可能在一次脉冲的变化过程中还没有转到目标  角度时,而脉冲就再次发生了变化, 舵机的转动速度一般有0.16sec/60°、0.12sec/60°等,0.16sec/60°就是舵机转动60°需要0.16秒的时间。

3)和工作电压关系:在允许的电压范围内,电压越大速度越快,反之亦然。

1.5.2 舵机扭矩

       舵机扭矩的单位是KG*CM,这是一个扭矩的单位,可以理解为在舵盘上距离舵机轴中心水平距离1CM处, 舵机能够带动的物体重量,如下图所示。

2 系统硬件

2.1 硬件模块介绍

2.1.1  SG90 9G 360°舵机

本系统使用的舵机型号为SG90,其具体参数如下:

注意:

1) 360°舵机只能控制正转、停止、反转,不能控制其转到具体角度

2)0~90° 顺时针旋转, 90° 停止转动, 90~180 逆时针旋转

2.1.2  SG90 9G 180°舵机

180°舵机,可以自由控制角度,角度范围: 0~180°,具体操作方法如下:

2.1.3 Arduino UNO 主板 

系统使用Arduino UNO作为主控板,舵机信号引脚和有PWM功能的引脚相连。

2.2 整体结构

舵机和Arduino UNO 主板关系图

模块引脚Arduino UNO引脚注释
舵机-信号引脚-IOpin-3控制舵机转角

3 软件设计

3.1 功能介绍

3.1.1 舵机控制分析

     舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms,在该该电平范围角度控制脉冲部分。以180度角度伺服为例,其对应的控制关系如下:

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

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

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

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

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

3.1.2 实现要求

应用舵机,使其旋转的角度分别为: 45°,90°,135°,180°,225°,270°,360°。

3.2 代码实现

3.2.1 开发环境编写代码

3.2.2 详细代码

#include <Servo.h>  //调用舵机库
Servo myservo;      // 定义舵机对象void setup()
{myservo.attach(3);  // 设置舵机控制针脚接数字7引脚
}void loop()
{myservo.write(45);  delay(3000); //占空比为1.0ms的PWM信号旋转约3秒时间myservo.write(90);  delay(1000); //占空比为1.5ms的PWM信号停止1秒myservo.write(0);   delay(3000); //占空比为0.5ms的PWM信号旋转约3秒时间myservo.write(90); delay(1000); //占空比为1.5ms的PWM信号停止1秒myservo.write(135);delay(3000); //占空比为2.0ms的PWM信号旋转约3秒时间myservo.write(90);  delay(1000); //占空比为1.5ms的PWM信号停止1秒myservo.write(180); delay(3000); //占空比为2.5ms的PWM信号旋转约3秒时间myservo.write(90);  delay(1000); //占空比为1.5ms的PWM信号停止1秒}

4 测试

旋转90°

旋转18°

旋转45°

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024免费版EasyRecovery软件有哪些功能限制?

EasyRecovery软件的主要功能包括&#xff1a; 数据恢复&#xff1a;这是EasyRecovery软件的核心功能。它可以恢复因各种原因丢失或删除的数据&#xff0c;无论是由于磁盘格式化、文件删除还是其他因素。EasyRecovery使用高级的数据恢复算法&#xff0c;能够快速扫描整个磁盘&a…

spring boot自动装配及自动装配条件判断

第一步需要在pom.xml文件指定需要导入的坐标 要是没有自动提示需要检查maven有没有 实现代码 /*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * *//*第一种方案包扫描 不推荐因为繁琐…

普中51单片机学习(十)

动态数码管 数码管显示原理 动态显示的特点是将所有数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff0c;利用发光管的余辉和人眼视觉暂留作用&#xf…

Leetcode 115 不同的子序列

题意理解&#xff1a; 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 即此题可以理解为&#xff1a;从s中删除元素去构造t,有多少种方法 或者也可以理解为&#xff1a;s中按顺序取t,有多少个 则一定有s和t…

unity学习(15)——服务器组装(1)

1.新建好的c#项目如下&#xff1a; 文件夹中内容如下&#xff1a; 此时已经可以通过vs2022打开.sln文件&#xff0c;就可以打开项目了。 2.我们把逆向后&#xff08;主程序&#xff09;的内容的代码粘贴过去。有些逆向功底&#xff0c;很快可以定位到&#xff0c;服务器的入口…

【leetcode热题】从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出&#xff1a;[3…

GaiaDB-X 获选北京国家金融科技认证中心「数据领域首批专项示范与先行单位」

2023 年 12 月 21 日至 22 日&#xff0c;「2023北京国际金融安全论坛暨金融科技标准认证生态大会」在北京金融安全产业园举办。百度智能云分布式数据库 GaiaDB-X 产品荣登「数据领域首批专项示范与先行单位」名单&#xff0c;并获得了由北京国家金融科技认证中心颁发的「数据产…

软考29-上午题-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后&#xff0c;次序不变&#xff0c;则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

【C++ QT项目2】——高仿安信可串口调试助手

【C QT项目2】——高仿安信可串口调试助手 1. 项目概述2. 项目UI设计3. 串口通信核心代码开发3.1 QSerialPort介绍及示例3.2 扫描系统串口3.3 数据的收发3.4 定时发送&#xff08;QT定时器&#xff09;3.5 HEX显示与发送 4. 串口调试助手功能的优化4.1 串口的实时扫描4.2 获取系…

PCB的介质损耗角是什么“∠”?

1、什么叫介质 介质是指在某种特定条件下能够传递力、能量或信息的物质或者空间。在物理学和工程学中&#xff0c;介质通常是指固体、液体或气体&#xff0c;它们能够传递机械波、电磁波等。例如&#xff0c;在声学中&#xff0c;空气、水和固体都可以作为声波的传播介质&…

宠物空气净化器哪个品牌高质量?宠物空气净化器适合养猫家庭吗?

在养宠物的家庭中&#xff0c;除了必备的猫粮、猫砂和罐头等日常用品&#xff0c;宠物空气净化器也是不可或缺的。这种设备可以在我们无法开窗通风的情况下&#xff0c;有效净化室内空气&#xff0c;同时降低因动物皮屑引起的过敏反应。然而&#xff0c;在市场上充斥着各种功能…

STM32--EXTI外部中断

一、中断概念 二、EXTI简介 相同的Pin不能同时触发中断&#xff1a;比如PA0和PB0不能同时使用&#xff1b; 三、STM32中断 中断向量表&#xff1a; 程序中中断函数的地址是由编译器来分配的&#xff0c;是不固定的。但中断的跳转&#xff0c;由于硬件的限制&#xff0c;只能跳…

HTML+CSS+JS:焦点轮播

效果演示 实现了一个简单的图片展示和交互效果&#xff0c;用户可以点击不同的图片进行查看&#xff0c;并且会有视觉反馈。 Code <div class"container"><div class"bigbox"></div><div class"list"><ul><li…

C#,二叉搜索树(Binary Search Tree)的迭代方法与源代码

1 二叉搜索树 二叉搜索树&#xff08;BST&#xff0c;Binary Search Tree&#xff09;又称二叉查找树或二叉排序树。 一棵二叉搜索树是以二叉树来组织的&#xff0c;可以使用一个链表数据结构来表示&#xff0c;其中每一个结点就是一个对象。 一般地&#xff0c;除了key和位置…

Matlab论文插图绘制模板第136期—极坐标气泡图

在之前的文章中&#xff0c;分享了Matlab笛卡尔坐标系的气泡图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下极坐标气泡图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋…

微前端(qiankun)vue3+vite

目录 一、什么是微前端 二、主应用接入 qiankun 1.按照qiankun插件 2.注册微应用引用 3.挂载容器 三、微应用接入 qiankun 1.vite.config.ts 2.main.ts ps&#xff1a;手动加载微应用方式 ps&#xff1a;为什么不用 iframe 一、什么是微前端 微前端是一种多个团队通过独…

四、详解Redis集群

一、RDB和AOF持久化 redis的数据一般保存在内存&#xff0c;那么当突然宕机&#xff0c;岂不是数据就丢失了&#xff0c;因此redis实现了将数据持久化的方式&#xff1a;RDB和AOF两种持久化方式。 1.1 RDB持久化&#xff08;bgsave&#xff09; redis支持快照的方式进行数据…

【激光SLAM】激光的前端配准算法

文章目录 ICP匹配方法&#xff08;Point to Point&#xff09;PL-ICP匹配方法&#xff08;Point to Line&#xff09;基于优化的匹配方法&#xff08;Optimization-based Method&#xff09;优化方法的求解地图双线性插值拉格朗日插值法——一维线性插值 相关方法&#xff08;C…

【HarmonyOS】鸿蒙开发之Text组件——第3.2章

text组件属性介绍 textAlign有三种属性start(默认),end,center Column(){//默认文字大小16Text("迪加奥特曼").width(200)Text().margin({top:10,bottom:10})Text("泰罗奥特曼").width(200).fontSize(26).fontColor(Color.Red).textAlign(TextAlign.End)…

H12-821_130

130.如图所示&#xff0c;R1与R2组成一个VRRP备份组1&#xff0c;通过在R1执行vrrp vrid 1 virtual-ip_______命令&#xff0c;可以使其成为IP地址拥有者&#xff0c;让R1为Master, R2为Backup 。 答案&#xff1a;192.168.1.254 注释&#xff1a; IP地址拥有者优先级是255&am…