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)

相关推荐

  • 移动纯流量卡是真的么(移动纯流量卡)

    随着当下互联网行业的不断发展和我们手机支付的普及,人们的生活方式发生了翻天覆地的变化,手机支付方式普及之后也基本上替代了传统的现金流动,而智能手机普及和高性价比也替代了功能机!智能手机丰富多样的软件APP当然也离不开手机网络流量的支持,没有了网络;就不能就行手机支付和享受手机软件给我们带来的便捷!说到手机流量套餐就不得不提到三大运营商:中国移动、中国联通和中…

    2023-05-24 知识百科
  • 旅游自媒体怎么赚钱?抖音一万粉丝一个月能赚多少

    接下来,看完这篇文章,你就知道旅游自媒体究竟是怎么挣钱的了。 1. 拍摄旅途见闻,剧情类视频很吃香 旅游自媒体通常有三种内容形式,发布旅游攻略,风景视频和旅游见闻等,无论是图文或是短视频。 在我看来,或许前面两种内容形式,更考验制作水准,需要昂贵的拍摄设备,需要去很多地方,所以拍摄一些旅途剧情,更适合普通人。 @爱旅行的轩子就是这种,他四五年前就开始穷游了,…

    2023-02-11 知识百科
  • 手机短信笑话手机短信

    置 顶 ” 墨 黑 纸 白 ” ,纸 白 君 每 日 陪 你 聊 聊 社 会 《 短信 》 老爸刚才打来电话着急地问:“你没事吧?” 我说:“挺好啊!怎么了?” 他说:“我收到一条短信说你被绑架了,要我3天之内打给他20万,要不然就撕票!” 我忙安慰老爸:“您别着急,我挺好的,那是个骗子!您什么时候收到的短信?” 他迟疑了一下说:“上…

    2023-06-12 知识百科
  • 牙齿排列图和名称(牙齿矫正的最佳年龄)

    牙疼起来真要命,去医院拍了片子,问题还真不少:智齿躺着长、牙齿拥挤、牙合极差…….真想矫正个牙齿,好好治理一番! 来源:患者提供实拍图 可是我都30多岁成年人了还能矫正吗? 能! 不论是成人矫正牙齿还是青少年矫正牙齿,牙齿移动原理基本上都一样:牙齿周围骨头的吸收和再生。 所以矫正牙齿一般没有年龄限制,只要牙周情况允许戴牙套,就可以矫正…

    知识百科 2023-04-06
  • 铃声排行,2020最热门铃声:从流行歌曲到古典曲

    睡眼惺忪总是不好受的,我们如何醒来不仅会影响我们的心情和一天的面貌,还会影响我们的认知和心理表现。在某些情况下,醒来之后的昏昏沉沉有可能在几个小时后变得危险,因为它会降低关键时刻的表现(比如在健康环境、应急响应或驾驶时) 这种警觉性降低的认知状态被称为“睡眠惰性”。这一问题越来越受到关注,因为在进行包括开车在内高风险的工作时,它可能会产生严重的后果。 科学家…

    知识百科 2023-05-14
  • 一个月无限流量怎么买(怎样买一个月的无限流量)

    转眼间,2022年即将到来,在过去几年间我们的科技的水平又得到了进一步增长,特别是受到疫情的影响,催生了许多不同赛道上的产品被大家重视起来,例如说在2020年时任天堂推出的健身环就可以说是一环难求,许多年轻人都热衷于利用健身环进行居家健身。   而在今年,我们的生活可以说是在和疫情反反复复的作斗争,时不时就会恢复到出门要出示健康码的日子,在这种情况…

    2021-12-11 知识百科
  • 农夫山泉欢迎你,农夫山泉欢迎你欢庆体验味道

    为传承中华民族优秀传统文化,挖掘家乡的深厚文化底蕴和文化遗产,记录和传播优秀文化。2021年8月16日上午中国石油大学(华东)农夫山泉实践队第二组成员前往家乡广西南宁开展以“传承‘三月三’,探寻广西民族特色文化”为主题的调研,记录学习壮族传统文化的传承和相关内容。 8月16日上午,队员采访了南宁市民间文艺家协会主席,队员了解到每年“三月三”期间,不论是祭祖活…

    2023-04-24
  • 生活中的痛点(生活中的痛点问题)

    尽管住房租赁行业已发展十余年,但相对来说仍是一个新兴行业,魔方生活服务集团作为头部玩家也仍在积极地探索 《投资时报》记者 卓玛 如何以改革创新为新发展格局赋能,进一步为高质量发展助力?如何理解国内大循环和国际循环的有机联系?如何加快传统产业改造升级,加快新兴产业重点培育,加快未来产业谋篇布局? 2022年12月22日,由标点财经研究院联合《投资时报》主办的“…

    2023-04-04
  • 移动流量套餐(移动流量套餐哪个最划算2023)

    记得以前苹果手机没有双卡双待,被国内很多网友吐槽,很多网友就疑惑了,为什么国内那么迫切希望有双卡双待,而海外却并没有这个需求呢?其实答案很简单,国内很多网友基本都有两张手机卡,而国外他们需要一张就够了。确实,现在国内很多手机套餐,主要是新用户优惠较大,而老用户就没有什么优惠了,这也让很多老用户保留主卡,但是将套餐开到最低,然后再办理一张新卡,用来当流量卡使用…

    2023-05-28 知识百科
  • 监控录像回放没有录像怎么回事(录像机不录像怎么回事)

    监控用了几年,总会有个别摄像头会罢工。查来查去,是坏了。那只能换个新设备替代一下。 爬上趴下是终于装好了,最后一看不出图。显示状态是解码异常 如果是上面的提示,那还容易理解。一般来说,稍加思索,然后调试就好了,可是如果像下面这样呢?我是 已连接,可我就不出图像。 其实不用急,原因呢和上面的是一样的。你不信看看摄像头的标签。是不是有个H265。 嗯嗯,对了。老…

    2023-05-30
  • qq群活跃**怎么刷(qq群活跃**怎么升级)

    IT之家 12 月 9 日消息,据 QQ 官方消息,今天 QQ **全球排行榜上线,这是从 2003 年 QQ **功能上线以来官方首次公布全球 QQ **排名。 可点此链接查看你的 QQ **全球排行,该链接会唤起手机 QQ。 IT之家了解到,从上述官方给出的截止 12 月 5 日的 QQ **全球排行榜截图来看,目前 QQ **排名第一的是一位来自山东的…

    知识百科 2023-04-04
  • qq三国火麒麟 你知道qq三国火麒麟的背景故事吗

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

    知识百科 2023-06-04