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)

相关推荐

  • 淘宝首页店招和导航(淘宝店招导航怎么制作)

    一个店铺的店招相当于门面,消费者通过搜索看到你的产品,被你的产品吸引点击进去之后,产品图固然很重要,但店招的位置也是很显眼的,无论在哪个页面,都能看到店铺的店招。所以一个好的店招不仅能促进成交,更能给消费者留下一个好的印象。 如何做出一个好的店招,首先要认清做这个店招的原则和本意:我们为什么要花这个时间研究?因为我们要直观的的告诉消费者,这个店铺是卖什么产品…

    2021-12-09 知识百科
  • 短信搭讪技巧,怎么约女孩出来约会

    大多数男生都会想着应该怎么样把女孩子约出来,尤其在和女孩子聊完搭讪之后,双方对彼此都感到很满意时。慢慢来的话怕女生被别的男孩子撩走,太主动又怕女生害羞。下面是小编帮大家整理的八招教你怎么约女孩子出来,仅供参考,大家一起来看看吧。 (1)约会目的明确。 人怕见面,树怕揭皮。 好多时候女孩在电话里很冷淡,也推三阻四,但你软磨硬泡,把她骗出来,她会玩得很开心。 邀…

    2023-05-29
  • 淘宝评价怎么删除(删除恶意评价的流程步骤)

    删除评价方法,百分百成功,天猫C店通用,没有删不掉的评价,外面收费几百块钱一条的方法 这几天有会员来问,删除中差评200元一条值不值,基于这个原因,我把我们一直在用的技术方法贡献出来,希望大家今后不要上当!   这套方法是目前所谓“资源商”,就是你们平常接触的300元/条删中差评用的套路,不是真的通过和官方的关系小二删除,而是借助淘宝目前的评价规则…

    2022-09-07
  • 长隆水上乐园多少钱,长隆水上乐园门票价格多少钱

    #大湾区寻宝# 如果你正在寻找一个充满乐趣和刺激的夏季旅游打卡点,那么不妨考虑前往大湾区广州的长隆水上乐园。这里汇聚了许多惊险刺激的水上项目,同时也提供了许多亲子活动,是一个适合全家人一起旅游的好去处。 门票价格:长隆水上乐园的门票价格随着季节和节假日的不同而有所变化。一般来说,平日门票价格为220元/人,周末和节假日为320元/人。儿童票价格为180元/人…

    2023-04-23
  • 电信纯流量卡实名认证激活(不实名电信流量卡)

    家人们,又是新的一年,放假回家最怕啥,没流量,追不了剧,刷不了抖音,什么都干不了,这种痛苦应该都不想体验。 最重要的是一旦没流量就不能上网那种感觉非常不安,小编觉得流量越多越好,用不完也比没得用要安心,毕竟每天关注还剩多少流量的感觉一点一不好。 但是那种腾讯王卡又太贵,网上的物联卡又不可靠,想用移动卡,但是流量又太贵,所以小编觉得电信不失为一个很好的选择。 …

    2023-05-25
  • 美容院的成本大概需要多少?开美容院必亏的四种人

    有很多人都觉得美业的生意不好做,并且投资费用高,就有一种想做但又不敢做的心,那美业真的需要很大的投资吗?今天就和大家好好的分析一下,开一家美容院的成本大概需要多少,赚不赚钱? 我们就来根据一个实例来分析以上的两个问题。下面我们以张女士为例,她是一位每个月花费3500元在美容院做护理的高级白领,看看她花费的3500元,美容院需要投资多少,才能够将3500元赚回…

    2023-02-12
  • 微信团购群怎么做(微信团购群真的一月赚几万吗)

    在最近两三年,有很多人通过做社群团购实现了财务自由。你知道什么样的人做社群团购更容易成功吗,也许你自己身上也有这个潜质。 社群团购,可以说人人都可以做,因为做社群团购几乎是没有门槛,也不用任何成本。只要坚持做一个月,或多或少都会产生收入,只是有些人赚得多,有些人赚得少而已。   根据我多年的观察,做社群团购业绩好的团长,有以下5个特点: 第一,相对…

    2021-12-11
  • 阿里巴巴商业资讯(最新的商业新闻)

    阿里巴巴集团董事会主席兼首席执行官张勇今日发布内部信,宣布系列人事调整,重点是“十八罗汉元老”之一戴珊接替蒋凡领导阿里消费互联网业务,进而戴珊事实上成为阿里消费互联网业务与产业互联网业务的直接领导人。蒋凡则分管阿里海外电商业务。 这纸任命结合市场之前有关阿里的诸多传言,引发了一些猜想。 一 猜想 一段时间来,市场充斥着有关张勇会离任阿里集团的传言。传言的可信…

    2021-12-08
  • 泡阴枣的意思(什么叫泡阴枣-怎么泡的-有什么用-)

    【大家好,我是黏黏书怪。用有趣的文字解读文学著作,让文学不再枯燥。】 今天为大家推荐的是陈忠实老先生的著作《白鹿原》,这是一部将近五十万字的长篇史诗级作品,如果单听《白鹿原》三个字可能无法引起读者太大的兴趣,但是我可以很负责任的告诉诸位,这本小说的所描写的故事可谓精彩绝伦,以我粗糙的文笔无法概括白鹿原的辽阔。 今天笔者拿出来的是《白鹿原》中非常特殊的一位人物…

    2023-04-25 知识百科
  • 线上电商平台格局与现状,各大电商平台数据分析

    直播电商作为一种新型商业模式,自2016年开始蓬勃发展,在平台渠道、生态模式、涉及领域等方面更加多元化。随着行业的政策与监管日趋完善,流量红利转向存量驱动,当前的直播电商赛道已进入新的转折阶段,平台玩家也将以新的姿态迎接竞争与机遇。星图数据从线上电商平台格局与现状、直播电商平台趋势分析两部分对本篇报告进行了阐述。以下为报告内容:Part 01 线上电商平台格…

    2023-02-08 知识百科
  • 危险天王 心中祝福的守护者

    在敦煌,时间既慷慨又奢侈 对穿越时光而来的莫高窟而言 千年只是一瞬 而对于守护它的人来说 要做成一件事,可能就是一生 甚至是几代人的传承 近日,在《国家宝藏》的舞台上 一家三代守护敦煌的故事 让不少人为之动容 64年重复相同的动作 他让残损的壁画复活 1956年,李云鹤响应国家号召前往新疆。因探望在甘肃敦煌工作的舅舅,李云鹤便在当地逗留了几日。未承想,这一留…

    2023-06-06
  • 10个特大城市房价皆过万(三线城市房价走势最新消息)

    全文1519字,预计阅读3分钟 原创第541篇 今天说说房价,那么第一梯队,我观察一下,这个是上海,北京和深圳,这是毫无疑问的,这个数据来源是中国房地产协会统计的一个数据,统计的是全国这个城市的二手房价。 为什么不统计新房,大家知道新房,有的时候它有价差,因为限价的原因。所以说,这个二手房相对平稳,就是二手房实际上是真正反映了一个城市的房价水平。 那么上海第…

    2023-05-29