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)

相关推荐

  • 极兔快递怎么样好不好(极兔速递属于什么快递公司)

    “顺丰还能涨回来吗”“不能再跌了啊,本金都快赔光了”“要不要都抛出去及时止损啊”…… 4月9日,顺丰开盘后一字跌停,股价收跌72.72元。顺丰的股吧里也“炸了窝”,股民们议论纷纷,对持仓的股票忧心忡忡。 而这次跌停的直接原因或许是4月8日晚间顺丰发布的业绩预告:预计2021年第一季度,净利润亏损9亿元至11亿元,而去年同期盈利9.1亿元。 而就在前一天,4月…

    知识百科 2021-12-02
  • 潮汕人到底有多厉害

    我是潮汕人,但我不会说潮汕话…… 这首歌在旅途是听 有种被温暖包围的感觉我老家在潮汕的一个小村落,可我从出生起就居住厦门。 对于老家,没有太多的回忆。 我的童年不属于这里,也没有什么好朋友和令我难玩的事。 在这里的只有爷爷、奶奶、姑姑、兄妹和其他一些亲戚比较熟悉。 因为从小就在厦门居住,这个城市外来人口比本地人口多得多。 大家都用普通话交流,在家…

    2023-05-30 知识百科
  • 广西移动积分兑换 如何使用广西移动积分兑换

    中国移动积分商城所使用的积分是中国移动积分计划中的积分,是中国移动为答谢广大客户,全面提升中国移动品牌服务,而推出的一项客户回馈服务。 大家应该都知道移动积分可以兑换话费流量,各种商品应有尽有。但是不知道大家是不是都遇到过这类烦恼:每个月总会有几百积分会过期,而就几百积分又不能兑换话费,这样就感觉很浪费,不过中国移动积分商城帮您解决烦恼,可以兑换菜鸟裹裹寄件…

    2023-06-06
  • 悟空理财回款还有希望吗(悟空理财最新消息)

    称在玖富平台旗下的悟空理财投资的资金未经客户同意进行了本息续投,若客户要收回投资,只能通过债权转让方式,且需支付手续费   《投资时报》记者 冯锦浩 对于购买了互联网理财产品尤其是P2P产品的投资者来说,最近一段时间的心情,或可用如坐针毡来形容。看着大量P2P负面新闻扑面而来,他们中的多数,都在担忧自己购买的平台忽然传出“惊悚”之音。混乱的互联网理…

    2021-12-06
  • 游戏守望者免费版,发掘游戏世界的最新秘密

    近日动作冒险游戏《蛇之守望者》新预告发布,官方宣布该作将于4月26日发售,登陆NS/PS/Xbox/PC(Steam)平台,支持中文。玩家将能探索中世纪的幻想世界,掌握炼金术,并驯服野生生物。 全新预告:优酷视频云 《蛇之守望者》已经上架Steam平台,玩家将扮演一名守望者,一个神秘的炼金术士,需要用自己的技能来保护这个王国免受腐败瘟疫的侵扰。制作、酿造、熬…

    2023-06-06
  • 淘宝上的金牌卖家是怎么来的(金牌卖家申请入口)

    开过淘宝的卖家都知道淘宝金牌卖家,按照字面意思理解就是标有金牌卖家的店铺。据了解,淘宝金牌不仅意味着该店铺服务好、口碑好、成交好、数据好、产品好、评分好、发货好,同时它也是一种荣誉和认可,能够有助于降低购物决策成本,让消费者安心购物。     如果淘宝商家想成为金牌卖家的话以上所说的服务、口碑、销量、产品、口碑等多方面都是要达标的,那么商…

    2021-12-06
  • 两千美金折合人民币是多少钱

    【CNMO新闻】早些时候,就曾有消息表示,2023年开始将是新能源汽车发展的重要时刻。这接下来的一段时间,各大新能源汽车厂商都将牟足劲,力争站稳脚跟。随着时间进入2023年,新能源汽车激烈竞争的局势也是初现。此前不久,特斯拉下调了中国市场部分车型的售价,创下了Model 3和Model Y中国最低售价。国内汽车厂商这边,问界也是宣布下调车辆售价,加入价格战的…

    2023-04-08
  • 十万元投资项目,十万元投资项目投资策略

    成功者,就是比你早走一步的人 犹太人有这样一个习俗:在孩子小的时候,母亲就会把“圣经”翻开,在上面滴上蜂蜜,让孩子去舔。 犹太人的孩子几乎都要回答母亲同一个问题:“假如有一天,你的房子突然起火,你会带什么东西逃跑?”如果孩子回答是钱或钻石,那么母亲会进一步问:“有一种无形,无色也无气味的宝贝,你知道是什么吗“要是孩子答不出来,母亲就会说:“孩子,你应带走的不…

    知识百科 2023-05-15
  • 莱万特 塞维利亚 什么时候开始关注莱万特塞维利亚

    这场比赛无疑是菜鸡打王者,胜负很明显,分析一下两队具体情况, 主队莱万特 本赛季发挥非常糟糕,目前排名榜尾,如果再不发力,降级是板上钉钉的事。 近期发挥胜负各一半,状态起伏不定。 客队塞维利亚 排名第四,但是最近表现差强人意,属于主强客弱类型, 争冠无望,只能争个欧冠名额了, 两队历史交锋,塞维利亚占尽上风, 这不管实力上,心理上都有优势的, 但是,分析两者…

    知识百科 2023-06-05
  • 红色通缉令名单 ,红色通缉人员金额排名

    导语:“猎狐2014”专项行动本月月底就将结束,截至目前,已从60个国家和地区抓获外逃经济犯428名。在追逃时,公安部经常借助国际刑警组织来发布“红色通缉令”。“红色通缉令”——这种炫酷的即视感是怎么回事? 在红色通缉令上,有哪些中国逃犯引人注意?红色通缉令真的是国际认证版的“临时拘留证书”吗?它究竟起到什么作用? 红色通缉令 命中率70% 抓回外逃犯的红色…

    2023-06-05
  • 抗美援朝十大英雄,朝鲜战场上的这5大英雄

    1950年10月25日,中国人民志愿军应朝鲜请求赴朝,先后共有约240万志愿军奔赴朝鲜战场,与朝鲜人民军并肩作战,他们跨过鸭绿江抗美援朝。 在整个战争期间,出现了一大批的英雄人物。今天我们就一起来看一看朝鲜战场上的这5大英雄吧。 1951年加入志愿军。上甘岭战役中,在537高地上,张桃芳曾在32天内以436发子弹击毙214名敌人,创造了中国人民志愿军在朝鲜战…

    2023-02-13 知识百科
  • 江苏联通送流量(江苏联通电话号码)

    湖南联通IPTV提供的作业帮免费直播课 红网时刻3月6日讯(记者 杨淑华 通讯员 陈念 易叶舟)助力在线教育,湖南联通配置制作50G“助教流量包”和20G“助学流量包”两大助学产品。来自湖南联通数据显示,截至目前,湖南联通已经为全省13万名一线教师及贫困学生免费提供暖心流量包。 受疫情防控影响,湖南省各中小学校再次面临延期开学,而网络线上教育网络资费的使用,…

    2023-05-27