arduino控制伺服电机程序, 什么是机器学习

在本教程中,我们将学习伺服电机的工作原理以及如何使用 Arduino 和 PCA9685 PWM 驱动器控制多个伺服电机。

概述

伺服电机的种类很多,其主要特点是能够精确控制轴的位置。伺服电机是一个闭环系统,它使用位置反馈来控制其运动和最终位置。

arduino控制伺服电机程序, 什么是机器学习

图2

在本教程中,我们将详细介绍业余伺服电机。我们将解释这些伺服系统的工作原理以及如何使用 Arduino 控制它们。

arduino控制伺服电机程序, 什么是机器学习

图8

我们只需要将舵机的控制引脚连接到 Arduino 板的任何数字引脚,将地线和正极线连接到外部 5V 电源,并将 Arduino 地线连接到舵机地。

Arduino伺服电机控制代码

现在让我们来看看控制伺服电机的 Arduino 代码。代码非常简单。我们只需要定义伺服所连接的引脚,将该引脚定义为输出,然后在循环部分生成具有特定持续时间和频率的脉冲,如前所述。

/*伺服电机控制 – 50Hz 脉冲串发生器作者:Dejan,https://howtomechatronics.com*/#define servoPin 9void setup() {pinMode(servoPin, OUTPUT);}void loop() {// A pulse each 20msdigitalWrite(servoPin, HIGH);delayMicroseconds(1450); // Duration of the pusle in microsecondsdigitalWrite(servoPin, LOW);delayMicroseconds(18550); // 20ms – duration of the pusle// Pulses duration: 600 – 0deg; 1450 – 90deg; 2300 – 180deg}

经过一些测试后,总结出这个伺服系统的脉冲持续时间与角度有以下关系:持续时间为 0.6ms 的脉冲对应于 0 度位置,1.45ms 对应于 90 度,2.3ms 对应于 180 度。

我将万用表与伺服串联连接以检查电流消耗。我注意到的最大电流消耗在堵转时高达 0.63A。那是因为这不是原来的 TowerPro MG996R 舵机,而是更便宜的复制品,显然性能更差。

arduino控制伺服电机程序, 什么是机器学习

图9

尽管如此,让我们来看看使用 Arduino 控制伺服系统的更方便的方法。那是使用 Arduino 伺服库。

/*使用 Arduino 伺服库控制伺服电机作者:Dejan,https://howtomechatronics.com*/#include Servo myservo; // 创建伺服对象来控制伺服void setup() {myservo.attach(9,600,2300); // (pin, min, max)}void loop() {myservo.write(0); // 告诉伺服器转到特定角度delay(1000);myservo.write(90);delay(500);myservo.write(135);delay(500);myservo.write(180);delay(1500);}

在这里,我们只需要包含库,定义伺服对象,并使用 attach() 函数定义伺服连接到的引脚以及定义脉冲持续时间的最小值和最大值。然后使用 write() 函数,我们只需将伺服的位置设置为 0 到 180 度。使用这个库,我们可以同时驱动多达 12 个舵机或使用 Arduino Mega 板驱动 48 个舵机。

Arduino 和 PCA9685 PWM/伺服驱动器

还有另一种使用 Arduino 控制伺服系统的方法,那就是使用 PCA9685 伺服驱动器。这是一个 16 通道 12 位 PWM 伺服驱动器,它使用 I2C 总线与 Arduino 通信。它有一个内置时钟,因此它可以驱动 16 个自由运行的伺服系统,独立于 Arduino。

arduino控制伺服电机程序, 什么是机器学习

图10

更酷的是,我们可以在单个 I2C 总线上以链式连接多达 62 个这些驱动器。因此理论上我们可以仅使用 Arduino 板上的两个 I2C 引脚来控制多达 992 个伺服系统。6 个地址选择引脚用于为每个附加驱动器设置不同的 I2C 地址。我们只需要根据这张表连接焊盘。

arduino控制伺服电机程序, 什么是机器学习

图11

这是电路原理图,我们可以再次注意到,我们需要为伺服系统单独供电。

arduino控制伺服电机程序, 什么是机器学习

图12

现在让我们来看看 Arduino 代码。为了控制这个伺服驱动器,我们将使用可以从GitHub下载的 PCA9685 库。

PCA9685 Arduino 代码

/*使用 Arduino 和 PCA9685 驱动程序控制伺服电机作者:Dejan,https://howtomechatronics.com库:https://github.com/NachtRaveVL/PCA9685-Arduino*/#include #include “PCA9685.h”PCA9685 driver;// PCA9685 输出 = 12 位 = 4096 步// 20ms 的 2.5% = 0.5ms ; 20ms 的 12.5% = 2.5ms// 4096 的 2.5% = 102 步;4096 的 12.5% = 512 步PCA9685_ServoEvaluator pwmServo ( 102, 470 ) ; // (-90deg, 90deg)// 第二个伺服// PCA9685_ServoEvaluator pwmServo2(102, 310, 505); // (0deg, 90deg, 180deg)void setup() {Wire.begin(); // Wire must be started firstWire.setClock(400000); // Supported baud rates are 100kHz, 400kHz, and 1000kHzdriver.resetDevices(); // Software resets all PCA9685 devices on Wire linedriver.init(B000000); // Address pins A5-A0 set to B000000driver.setPWMFrequency(50); // Set frequency to 50Hz}void loop() {driver.setChannelPWM(0, pwmServo.pwmForAngle(-90));delay(1000);driver.setChannelPWM(0, pwmServo.pwmForAngle(0));delay(1000);driver.setChannelPWM(0, pwmServo.pwmForAngle(90));delay(1000);}

首先我们需要包含库并定义 PCA9685 对象。然后使用 Servo_Evaluator 实例定义驱动器的脉冲持续时间或 PWM 输出。请注意,输出为 12 位,或者分辨率为 4096 步。因此,0.5ms 或 0 度位置的最小脉冲持续时间将对应 102 步,而 2.5ms 或 180 度位置的最大脉冲持续时间将对应 512 步。但如前所述,这些值应根据您的伺服电机进行调整。在我的例子中,从 102 到 470 的值对应于 0 到 180 度的位置。

在setup部分,我们需要定义 I2C 时钟速率,设置驱动程序地址并将频率设置为 50Hz。

在loop循环部分,使用 setChannelPWM() 和 pwmForAngle() 函数,我们只需将伺服设置为所需的角度。

我将第二个伺服器连接到驱动器,正如我预期的那样,它的定位与第一个不同,这是因为我使用的伺服器是廉价的版本,它们不太可靠。然而,这不是一个大问题,因为使用 Servo_Evaluator 实例我们可以为每个伺服设置不同的输出设置。我们还可以调整 90 度位置,以防它不是正好在中间。这样所有的舵机都将工作相同并以准确的角度定位。

使用 Arduino 和 PCA9685 驱动程序控制许多伺服系统

我们将再看一个示例,该示例使用多个链接的 PCA9685 驱动器控制许多伺服系统。

arduino控制伺服电机程序, 什么是机器学习

图13

为此,我们需要将驱动器相互连接并连接适当的地址选择焊盘。下面是电路原理图:

arduino控制伺服电机程序, 什么是机器学习

图14

现在让我们来看看 Arduino 代码。

/*使用 Arduino 和 PCA9685 驱动程序控制伺服电机作者:Dejan,https://howtomechatronics.com库:https://github.com/NachtRaveVL/PCA9685-Arduino*/#include #include “PCA9685.h”PCA9685 driver;// PCA9685 outputs = 12-bit = 4096 steps// 2.5% of 20ms = 0.5ms ; 12.5% of 20ms = 2.5ms// 2.5% of 4096 = 102 steps; 12.5% of 4096 = 512 stepsPCA9685_ServoEvaluator pwmServo(102, 470); // (-90deg, 90deg)// Second ServoPCA9685_ServoEvaluator pwmServo2(102, 310, 505); // (0deg, 90deg, 180deg)void setup() {Wire.begin(); // Wire must be started firstWire.setClock(400000); // Supported baud rates are 100kHz, 400kHz, and 1000kHzdriver.resetDevices(); // Software resets all PCA9685 devices on Wire linedriver.init(B000000); // Address pins A5-A0 set to B000000driver.setPWMFrequency(50); // Set frequency to 50Hz}void loop() {driver.setChannelPWM(0, pwmServo.pwmForAngle(-90));delay(1000);driver.setChannelPWM(0, pwmServo.pwmForAngle(0));delay(1000);driver.setChannelPWM(0, pwmServo.pwmForAngle(90));delay(1000);}

所以我们应该为每个驱动程序创建单独的 PCA9685 对象,为每个驱动程序定义地址并将频率设置为 50Hz。现在只需使用 setChannelPWM() 和 pwmForAngle() 函数,我们就可以在任何驱动器上设置任何伺服以定位我们想要的任何角度。

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/283760.html

(0)

相关推荐

  • 哈利波特2攻略(哈利波特攻略新手)

    作者:NGA-Darkwing22 先贴分段和卡组吧,我觉得是相当平民的卡组了。不知道是不是生涯巅峰,以后大概不会为了决斗氪金。 首先氪金方面就把**抽了一下,主要为了衣服和魔杖,我这卡组也可以看到和氪金基本没关系(猪突的**其实有点关键,这是我上分的核心之一)。 书**是34,大概就是4000分以上血量基本不落后于对手的水平,偶尔会有贫血一点的和3000+…

    2023-05-24
  • 如何应对北京雾霾危机,如何治理和消除雾霾

    北京是全国演员最大的集散地。据说,居住在北京的演职人员至少不下上百万,占比全国同行业从业人数的90%以上。收入高一点的主要居住在朝阳公园一带,收入中等或偏下的演员购房大部分选在天通苑、沙河、燕郊。 目前影视制作项目数量越来越少。以院线电影为例,2019年,全国拿到上映许可证的影片共有854部,到2020年下降到474部,2021年仅有456部。如果不是受疫情…

    2023-06-02
  • 如何学习唱歌(初学者唱歌技巧和发声方法)

    学习音乐的人分首先要做的就是练习唱歌的技巧。下面这些是小编为大家推荐整理的关于唱歌初学者唱歌技巧与发声方法的相关资料。   唱歌初学者唱歌技巧与发声方法 每位歌唱者一定要充分理解和运用气息发声和气息控制的方法(即横隔膜的呼吸方法), 因为在整个声乐功能系列中,歌唱呼吸是最重要的一环,是整个歌唱建筑的基础,因此必须明确 呼吸的重要性,重视练好歌唱呼吸…

    2023-05-29
  • 脱口秀演员彩铃视频, 怎么使用联通炫铃

    南方 记者从中国联通获悉,中国联通视频彩铃春节期间首次跨界联合邀请第三季脱口秀大会冠军王勉,用喜闻乐见的脱口秀创新彩铃呈现方式,同时,联通视频彩铃脱口秀创新“1#”交互方式——用户在通话过程中,看到王勉脱口秀视频彩铃时按 1#键,即可一键复制设置同款。 联通彩铃脱口秀 作为近年来爆火的喜剧表演形式之一,脱口秀也许是春节“全民联欢”的正确打开方式。此次中国联通…

    2023-06-02
  • 一元流量app下载小米(一元流量APP下载)

    在这个信息化快餐时代,流量意味着一切,商家们为吸引更多的流量,投放广告成为最好的选择,所以在日常生活中我们无时无刻不在接触广告,手机作为我们最常使用的通讯工具,成为了广告最好的传播载体,但过多的广告会对我们日常使用造成不便。 近日,华东政法大学学生范某就遇见了烦心事,他在使用小米手机时,不小心点击了系统内置广告,莫名其妙地就下载并安装了广告软件,这让范某非常…

    2023-05-24 知识百科
  • 2013lol全明星赛 何时举行2013lol全明星赛

    12月9日,英雄联盟赛事发长文表示,LOL全明星将被取消,用季前启航赛取代。 据悉,由于在目前情况下,很难统一全明星选手们的时间安排,因此官方决定用季前启航赛取代全明星赛。 启航赛不仅可以为职业选手们提供充分的休息时间,也为各赛季常规的年终本地赛事和庆祝活动作补充,并为玩家提供值得期待的新平台。 据了解,LOL全明星的全称是League of Legends…

    2023-06-02
  • 拍题搜答案不用实名认证(拍照搜题的原理和算法)

    张淳艺 教育部近日印发通知,对加强教育App管理,推动与“双减”政策衔接提出明确要求。对于提供和传播“拍照搜题”等惰化学生思维能力、影响学生独立思考、违背教育教学规律的不良学习方法的作业App,通知要求暂时下线,整改到位并经省级教育行政部门审核后,方可恢复备案,未通过审核的撤销备案。 “拍照搜题”起源于“AI答疑”,其本质就是用户拍照后,系统利用已有题库给出…

    2023-06-02
  • 看广告赚钱一天50元?日赚钱50元现金套路

    浅谈美团里的每日赚钱50元现金套路:来自手机截图4、最后0.01。一开始翻一个红包有30—40,翻了几个后变成10—20,再继续3—4,以我的截图,还剩583个金币,按后续翻一个红包1—2个金币算,583个金币你要翻292—583个红包,按照上述2情况,一天最多66个红包,你要5—9天才能完成。注意哦,每天正常广告的红包只有12个,另外54个你要下6笔订单才…

    2023-02-08
  • 华为荣耀10x max,华为荣耀10x Max手机性能特点及优势

    虽然当前手机厂商众多,但不少用户都更关注国产手机,尤其是华为手机,几乎家喻户晓,但自从5G芯片不能自有使用之后,华为没落了许多。但毕竟是最优秀的国产手机厂商,依旧备受关注。但因为新机缺少,众多花粉非常苦恼。不过值得庆幸的是,荣耀迅速崛起,唯一能够替代华为的手机厂商,自从独立发展后,市场占有率、用户好评率直线上升。 众所周知,荣耀X系列机型主打大屏旗舰,尤其是…

    2023-05-08
  • 第一届青奥会历史回顾与文化引领,南京青奥会有哪些亮点呢

    新华网北京8月14日体育专电(记者 贺灿铃)8月16日,南京青奥会将正式拉开帷幕。作为2008年北京奥运会之后中国主办的又一项奥运赛事,南京青奥会有哪些亮点呢?让我们通过26个字母管中窥豹吧。 A-Apple 小苹果 火遍大江南北的《小苹果》成了南京青奥村的一道风景,不少外国运动员也在志愿者的引领下体验这神曲。开幕式上会有中国特色的“小苹果”广场舞吗? B-…

    2023-06-03
  • 淘宝指数在哪里查询(淘宝指数批量查询工具)

    写文章草稿已保存邀请预览发布在淘宝上面开店,要想做的成功,必须要学会并且熟练的了解商品数据信息,比如产品的市场行情,竞店情况,产品售价等等,但是怎么才能查询这些信息,想要全面了解的话,不妨看看今天的分享,不然错过的,可就不是一点点了哦。 一、怎么看? 1、输入淘宝关键词。进入页面后,将首先看到市场趋势,其次是市场细分。 2、在市场趋势下,可以看到对应类目的搜…

    2021-12-06 知识百科
  • 银行保险箱收费标准(工商银行保险箱一年多少钱)

    武汉金凰珠宝股份有限公司(金凰珠宝,NASDAQ:KGJI)深陷危机,多家信托公司卷入其中。据澎湃新闻了解,被卷入其中的信托公司包括民生信托、东莞信托、安信信托、四川信托、长安信托等。其中民生信托融资规模最高,达40亿元。 值得注意的是,作为一家武汉本土企业,武汉金凰却没有向当地的信托公司融资。除了信托公司外,多家银行和小额贷款公司也被卷入。 一家地方珠宝类…

    2023-04-03