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)

相关推荐

  • 看相算命视频(看相算命入门书籍)

    看相算命视频(看相算命入门书籍)看相算命视频(看相算命入门书籍)看相算命视频(看相算命入门书籍)看相算命视频(看相算命入门书籍)

    1.孩子学习什么都会收到环境的影响,作为家长,我们要言传身教。所以我决定在孩子暑假的这两个月,我们每人各带一个月,分别将自己拿手的东西交给儿子。两个月过去了。儿子跟着妈妈学会了打麻将,跟着爸爸学会了吐烟圈。虎父无犬子啊! 2.老夫妻正在为儿子的未来焦虑。老公叹了一口气道:“这孩子不是读书的料,我看还是送他去技术学校,学习开车比较好,将来当不了公交司机,还可以…

    2023-05-24 • 知识百科
  • 骑蛇难下双海棠书院百度云下载

    进入初夏 重庆进入观赏夜景的最佳时节 夜幕降临 整个城市沉浸在璀璨灯光 营造的流光溢彩中 大都市的灯火辉煌 与立体的自然山水相互交融 美不胜收 这里 如今有了一个统一的名字 叫做“两江四岸”核心区 重庆主城都市区扩容后 “两江四岸”核心区被明确为 重庆城市发展的主轴 展示城市形象的“客厅”和“窗口” 根据最新发布的 《两江四岸核心区整体提升实施方案》 重庆将…

    2023-06-06
  • 奥巴马踹门事件背后的真相,奥巴马踹门是真实存在的吗

    奥巴马踹门事件怎么回事?奥巴马踹门事件的真相到底是什么?事情究竟是真是假?奥巴马真的踹门了吗? 2010年12月7日,国外知名视频网站youtube流传出一段**总统奥巴马在记者招待会后“愤怒踹门”的视频,奥巴马踹门视频流出后,立即被众网友“围观”,大呼奥巴马变身“失控哥”,相当不“淡定”。这个来自the tonight show名为奥巴马演讲后愤怒踹门的视…

    2023-06-03
  • qq三国火麒麟 你知道qq三国火麒麟的背景故事吗

    我收回刚才那句话!现在你可以和渣渣辉、成龙一起攻占沙城! 2003年《梦幻西游》:最保值的回合制网游 2003年网易推出回合制网游梦幻西游,通过Q版人物营造出浪漫风格,吸引了不少玩家,到了2012年甚至成为了当时中国大陆同时在线人数最高的网络游戏。不论是网吧,还是学校的机房,总是能看到玩家,开好几个号在玩梦幻。10台电脑里,有8台都是在打大海龟。 但不管是何…

    2023-06-04
  • 神农架旅游攻略(神农架旅游攻略及费用)

    神农架旅游攻略(神农架旅游攻略及费用)神农架旅游攻略(神农架旅游攻略及费用)神农架旅游攻略(神农架旅游攻略及费用)神农架旅游攻略(神农架旅游攻略及费用)

    相信很多宝子都听过神农架“野人”的传说 神农架不只有传说,还有倾心的风景与空气 喜欢的,记得关注收藏哟? 一、第1次去神农架,6条不建议 1-旅游时节:冬季 2-旅游交通:飞机 3-旅游住宿:坪阡古镇 4-游玩时间:2-3天 5-景区交通:自驾 6-携带物品:到了在买 二、第1次去神农架,6条放心做 1-游玩时节:春夏季 2-旅游交通:飞机+汽车 3-游玩住…

    2023-05-30 • 知识百科
  • 东莞职业技术学院介绍,怎么连接东莞职业技术学院校园网

    东莞职业技术学院介绍,怎么连接东莞职业技术学院校园网东莞职业技术学院介绍,怎么连接东莞职业技术学院校园网东莞职业技术学院介绍,怎么连接东莞职业技术学院校园网东莞职业技术学院介绍,怎么连接东莞职业技术学院校园网

    择校菌推出【走进大学序列专题推文】—【东莞职业技术学院】,文章内容包含:学校的性质、学费、宿舍费、招办电话、春季高考(学考)录取分数、学校环境、宿舍环境、学校饭堂、学校特色一切是你最想要的信息。 学校名称:东莞职业技术学院 学校代码:14263 学校属性:专科【公办】 学校地区:东莞市松山湖(校本部)、东莞市道滘镇(卫生健康学院/西校区)、东莞市大岭山镇(建…

    2023-06-06 • 知识百科
  • win8开始菜单设置,如何设置Win8开始菜单

    “开始”按钮设置 开始按钮位于任务栏上左下端(在Windows 11中默认处于任务栏中间),此按钮可以快速打开开始菜单,按windows徽标键或ctrl esc组合键会打开开始菜单。 开始按钮:可以打开所有安装的程序和系统设置。 注销:如果电脑多人使用,可以通过注销,来切换不同的用户界面。有时电脑出问题,也可以通过注销重新加载界面以达到重启的作用。 锁定:如…

    2023-05-23
  • 西西弗书店靠什么盈利?西西弗书店书是按定价卖吗

    做书店,是一件情怀远大于商业的事情。粘上情怀这两个字,也就意味着这件事多半是不赚钱的。 所以我们能够看到如今的线下书店大量倒闭,像风入松、北京第三极、上海季风书园这样优秀的民营书店都无法避免这个命运。即使像诚品书店这种名声在外的品牌,也是在亏损15年后才实现盈利。 但是,有一个成绩耀眼的异类,它就是西西弗书店。 在民营书店中,西西弗是收入规模最大、直营门店数…

    2023-02-13
  • 不含月桂醇聚醚硫酸酯钠的洗发水,去屑洗发水进行评测

    不含月桂醇聚醚硫酸酯钠的洗发水,去屑洗发水进行评测不含月桂醇聚醚硫酸酯钠的洗发水,去屑洗发水进行评测不含月桂醇聚醚硫酸酯钠的洗发水,去屑洗发水进行评测不含月桂醇聚醚硫酸酯钠的洗发水,去屑洗发水进行评测

    一天不洗头,头皮就很油,两天不洗头,头屑雪花飘[流泪]。 用了不少洗发水,就是不见效果,到底是洗发水不行还是头皮有问题[捂脸]? 我们购买了 19 款大家比较关注的去屑洗发水进行评测,此外还征集了全网 100 多位志愿者试用,汇总了大家反馈的使用体验。 ★★★风险物质 —— 关注度高的风险物质二噁烷[白眼] 二噁烷属于洗发水中的禁用物质,曾经有某些品牌洗发水…

    2023-02-13 • 知识百科
  • 奥迪a4保养归零(奥迪a4保养归零怎么清除)

    和奥迪相关的保养匹配方法,其实在网上,各类教程中都已经烂大街了,可是还是有很多同行在不断的找新款奥迪保养灯归零方法,以及空气悬挂的匹配方法。 网上教程很多,大部分都是东拼西凑复制粘贴,方法因为最初原创作者的表达方式等各类原因,导致很多步骤和流程顺序让很多朋友即便对着教程也是一头雾水,仍旧不知道怎么操作。 有鉴于此,今天小编和论坛同行们把网站上已经经过很多朋友…

    2023-05-25
  • 济南订票电话,济南订票电话服务中心

    齐鲁晚报·齐鲁壹点记者 王瑞超 1月28日,山东省政府召开新闻发布会,有记者提问:今年春运期间铁路部门采取了哪些运输服务保障措施? 中国铁路济南局集团总调度长肖福顺介绍,今年国铁济南局集团公司将按照国铁集团和山东省春运工作部署,坚持新冠肺炎疫情常态化精准防控和局部应急处置有机结合,充分安排运力,周密部署防控,推出更多便民利民措施,努力实现“平安春运、有序春运…

    2023-04-26
  • 哈利波特2攻略(哈利波特攻略新手)

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

    2023-05-24