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() 函数,我们就可以在任何驱动器上设置任何伺服以定位我们想要的任何角度。

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。

(0)

相关推荐

  • 送外卖一个月能赚多少(下班后送外卖一个月能赚多少)

    大概二十天以前无意间看到一个送外卖的视频,勾起我送外卖的欲望,为什么会这么想呢,主要是作为一个社会底层的打工者来说收入是有限的,没有什么其他的技能,送外卖对我来说最合适不过了,不仅可以获得额外的收入补贴家用,还可以锻炼自己,觉得总比每天下班吃完饭躺着刷视频强吧! 于是有了这种想法跟老婆商量了一下买个新的电动摩托车,没想到老婆很爽快的同意了,周末我们以旧换新了…

    2021-12-02 知识百科
  • 新个税法通过,新个税法:最新政策解析及实施指南

    根据国务院印发的《关于设立3岁以下婴幼儿照护个人所得税专项附加扣除的通知》,自今年1月1日起,纳税人照护3岁以下婴幼儿子女的相关支出,在计算缴纳个人所得税前,按照每个婴幼儿每月1000元的标准定额扣除。 全文如下: 国发〔2022〕8号 各省、自治区、直辖市人民政府,国务院各部委、各直属机构: 为贯彻落实《中共中央 国务院关于优化生育政策促进人口长期均衡发展…

    知识百科 2023-05-19
  • 烟头回收项目需要什么

    来源:极目新闻 极目新闻首席记者 刘楒睿 日前,有企业发布消息, 大量回收烟头。 “大量回收烟头, 价格美丽,助力环保。” 在视频中,青岛一企业打出这样的标语。 视频剪辑 殷悦 看到消息,网友纷纷表示, 自己找到了变废为宝的商机。 但也有网友表示不解, 这样的回收不知是作何用途。 极目新闻记者注意到,商家的宣传单显示,烟头的回收利用主要包括过滤嘴内海绵状的醋…

    2023-02-17 知识百科
  • 没钱没背景进演艺圈后果,普通人怎么进入娱乐圈

    很多人都有个明星梦,都想要去娱乐圈这个名利场闯荡一番,那么普通人怎么进入娱乐圈呢?小编给大家整理出了4个比较实用的方法,一起来看看吧!1、跑龙套,做群演跑龙套、做群演是很多人都能够想到的一种进入娱乐圈的方法,比如王宝强、赵丽颖就是从跑龙套开始,然后成名的。所以大多数普通人可以先从跑龙套开始做起,很多影视城在拍一部戏或者电影的时候都需要群众演员,你可以去影视城…

    2023-02-08 知识百科
  • 斗鱼一个火箭多少钱(斗鱼礼物价格表一览)

    最近火爆网络的网红萝莉女主播变“大妈”事件,闹得沸沸扬扬,“斗鱼主播乔碧罗直播翻车,露真实容颜后,刷10万礼物粉丝怒销号” 之类的新闻不断。网友笑称,乔碧罗殿下一夜之间差点“抢”走了一条小团团斗鱼一姐的地位。 今天不提萝莉变大妈,我们来了谈下各大直播平台的礼物价格: 1.斗鱼直播 斗鱼是很多朋友都很关注的直播平台,每次有人在上面打赏主播。我们就忍不住查一下到…

    2021-12-09 知识百科
  • 桃花源记很污的解释(桃花源记很污的解释句子)

    凡是读过初中的莘莘学子都学过这千古名篇,老师要求同学背诵,故都记忆犹新。当破解了桃花源千古未解之谜后,才知教材中的理解和分析都是浮光掠影的,不知潜入文内探究其蕴含的深意,从而不明真相,以致作出了不符文章客观实际的曲解。老师和编教材的都没错,实在是此千古隐文谜文潜伏很深、幽蔽极严、隐藏至密、谜底难破,导致无人能解。 因有文献和遗址双重验证,足以证明桃花源就在衡…

    知识百科 2023-04-02
  • 杭州四季青是什么档次(杭州四季青哪里衣服档次高一些)

      市场名称:杭州新杭派休闲服装城 地址:杭州市江干区清江路96号 市场主要经营业务:时尚休闲女装 休闲男装 市场主要经营款式:外贸休闲服装,套装,风衣,运动套装,运动休闲服装 营业时间:早上8:00—-19:00 市场停车场收费标准:周边的停车位比较紧缺,停车费6元/小时。 市场周边酒店:三华快捷酒店,常青旅馆,格林豪泰酒店,杭州汉珠…

    2021-12-11
  • 新泽西州在**的位置,新泽西州是**人口最稠密的州

    【侨报网报道】根据最新公布的**人口普查数据,新泽西州仍然是**人口最稠密的州,纽瓦克(Newark)则是该州最大的城市。 根据1010wins报道,该州的每平方英里人口在过去十年中增长了5.6%,从1,195.5人增加到1,263人——高于其他所有州,尽管落后于哥伦比亚特区。 纽瓦克的人口也攀升至30万以上,逐渐超越了一些人预计会超过它的不断增长的泽西市(…

    知识百科 2023-02-15
  • 一键连发17173(一键连发输入法下载)

    近日,LOL北美赛区AD选手Doublelift(大师兄),凌晨发推吐槽比赛中的土龙太过OP,不仅获得拳头设计师的回复,该设计师还就土龙问题连发10条推特,引发了众多网友热议。 而这热议中,一部分玩家的关注点在土龙上,另外一部分玩家的关注点在拳头设计师对选手的意见回复速度上。 大师兄认为,土龙的存在太过OP了,破坏了游戏规则。其它三种元素龙,都是加属性BUF…

    2023-06-06 知识百科
  • 语言表达能力差怎么办(提高文字表达能力)

    背诵是锻炼口才的最基本做法,也是打基础的方法之一。 如果你觉得自己说出来的话“淡而无味”、过于普通,或许你心中的墨水不是那么充足。而背诵,就能够改善你这个情况。 我们经常会看到很多人经常出口成章、旁征博引,一些名人名言啊,或者诗词歌赋之类的内容信手拈来、脱口而出,离不开他们在背后的用功积累。 这个用功,就用在背诵上面。 那么怎么正确运用背诵这个方法,来提升自…

    2021-12-09 知识百科
  • 南京车祸孕妇孩子被撞出视频

    这是我见过最惨的一幕,小孩都掉下来了。” 深夜时分的南京街头,初为人母的刘女士和丈夫正在街头踱步,突然一辆飞驰的汽车鸣着喇叭朝两人狂冲过来。 在狂暴的引擎轰鸣声中,刘女士和丈夫被严重超速的车辆狠狠撞飞出去,现场顿时惨不忍睹。而肇事车辆在撞人之后并没有停下,径直冲向了下一个受害者。   一、酒驾背后,是对生命的漠视 城市的街头,本该是安静,繁华,灯光…

    2023-06-05 知识百科
  • 宜市购物攻略 如何在宜市节约开支

    省钱是很多人都会考虑的问题,因为各种开销让人不得不思考如何节约开支,而让生活更美好。下面我来分享我觉得不错方法,教你省钱的同时,让生活变得更加美好。 1. 制定预算计划 首先,你需要了解你每个月的财务情况,然后制定一份详细的预算计划。在预算中列出你的必要开支,如房租、水电煤气等,同时留些空间给娱乐、吃饭等其他方面的支出。在你实际进行开销时,要严格按照预算来执…

    知识百科 2023-05-24