快捷导航
 
物联网实战 篇二:用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂_其他智能设备
VIEW CONTENTS

物联网实战 篇二:用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂_其他智能设备

2021-7-27 16:11| 发布者: xtyly| 查看: 560| 评论: 0
摘要: 创作立场声明:跟着「太极创客」一起学习 Arduino这是 Arduino 学习笔记的第二篇,在上一篇中已经介绍了 Arduino 的基础知识,了解

创作立场声明:跟着「太极创客」一起学习 Arduino

这是 Arduino 学习笔记的第二篇,在上一篇中已经介绍了 Arduino 的基础知识,了解了控制数字 IO 与模拟 IO,本文将进一步学习伺服电机/舵机的工作原理与控制方法,最后通过一款开源机械臂硬件-MeArm 来实战一下。依旧参考的是「太极创客」团队编写的教程,如果有看不懂的地方,推荐去 B 站观看他们完整且详细的视频教程(视频链接在文末)。

物联网实战 篇一:用 Arduino 点亮一颗 LED我曾经购买和DIY过很多的智能硬件,它们都是基于米家或者易微联平台的,这些原厂的产品应用场景有限,并不能满足所有的控制需求,使用上也有诸多限制,于是利用暑假打算学习下物联网相关的知识,从Arduino到ESP8266-NodeMCU再到树莓派,最终将所有的设备和传感器互联互通。我之前只是学过简单的5BigBubbleGum| 5 评论1 收藏16查看详情

一、伺服电机/舵机

1. 舵机的概念

伺服(Servo)系统是使物体的位置、方位、状态等输出,能够跟随输入量的任意变化而变化的自动控制系统。舵机就是一种位置(角度)伺服的驱动器,当我们向伺服器发送一个控制信号时,舵机的输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。日常生活中,舵机常被用于遥控飞机、遥控汽车、机器人等领域。

根据输出轴旋转角度的不同,有 90°、180°(常用)和 360°舵机;根据控制电路的不同有数字舵机(Digital Servo)和模拟舵机(Analog Servo);根据材料的不同有金属尺寸和塑料齿轮之分。航模最常用的型号有 SG90 模拟舵机(蓝色塑料齿轮)<10 元,MG90S(灰色金属齿轮)<20 元。塑料齿轮电机容易抖动,不耐用,个人强烈建议选购金属齿轮的。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

SG90SG90s9g舵机MG996R直升机QC模块遥控飞机马达航模铜齿倾斜18.11元天猫精选去购买

2. 舵机工作原理

舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。舵机内部有一个基准电路,产生周期为 20ms、宽度为 1.5ms 的基准信号。位置检测器是一个电位器,当舵机转动时电阻值也会随之改变,检测电阻值便可知道当前输出轴转动的角度。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

舵机一般都外接三根线,棕色为接地线,红色为电源正极线,橙色为信号线。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

舵机具体的工作原理是:

1. 由控制器发送 PWM 脉冲/指令给舵机,进入信号调制芯片,获得直流偏置电压。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

2. 舵机将获得的直流偏置电压与电位器的电压比较,获得电压差输出。电压差的正负输出到电机驱动芯片决定电机的正反转。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

3. 通过级联减速齿轮带动电位器旋转,使得电压差为 0,电机停止转动,到达定位。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

总结一下,舵机的控制信号是周期为 20ms 的 PWM 信号,利用占空比的变化(高电平部分为 0.5ms-2.5ms 范围)改变舵机的位置(脉宽与转角 0°—180°相对应)。

例如:1.5 毫秒的脉冲,电机将转向 90 度的位置(通常称为中立位置,对于 180°舵机来说,就是 90°位置)。如果脉冲宽度小于 1.5 毫秒,那么电机轴向朝向 0 度方向。如果脉冲宽度大于 1.5 毫秒,轴向就朝向 180 度方向。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

二、用 Arduino 控制舵机

1. 根据原理图搭建电路

舵机与 Arduino 开发板线路连接非常简单,舵机红色线接开发板 5V,棕色线接开发板 GND,橙色信号线接开发板数字引脚上。可使用 ULN2003 增强驱动能力。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

2. 控制方法一:模拟PWM 信号

Arduino 控制舵机的方法有两种:第一种是根据舵机的工作原理,通过 Arduino 的普通引脚产生占空比不同的方波,模拟产生 PWM 信号进行舵机定位。比如让舵机旋转到角度为 90°的位置,只需要生成一个周期为 20ms,占空比 1.5ms/20ms 的 PWM 信号。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

int pulsewidth = 1500;
void setup() {
pinMode(3,OUTPUT); //舵机接在9号引脚上
}
void loop() {
digitalWrite(3,HIGH);
delayMicroseconds(pulsewidth);
digitalWrite(3,LOW);
delayMicroseconds(20000-pulsewidth);
}

3. 控制方法二:Servo库函数

手动生成 PWM 信号太麻烦了,可以直接利用 Arduino 自带的 Servo 函数进行舵机的控制,Servo 库允许大多数 Arduino 开发板(如 Arduino Uno)同时控制 12 个舵机。

注意?:通常舵机需要的供电功率比较高,如果需要控制 1 个以上的舵机,必须使用单独的电源为舵机供电。如果使用独立电源为舵机供电,那么独立电源与 Arduino 必须共地(电源 GND 与 Arduino 的 GND 相互连接在一起)。

注意?:对于除 Mega 开发板以外的 Arduino 开发板,当您使用 Servo 库时,开发板的 9 号和 10 号引脚的 PWM 功能是无法使用的。也就是说,Arduino 程序如果使用了 Servo 库,无论 9 号和 10 号引脚上是否连接了舵机,那么这两个引脚是不能使用 analogWrite()语句进行控制的。

#include
Servo myservo; // 建立舵机对象myservo
void setup() {
myservo.attach(9); // 舵机对象myservo连接Arduino9号引脚
}
void loop() {
myservo.write(90); // 将舵机轴旋转到中间位置
myservo.read(); // 获取当前舵机轴角度信息
}

三、用可变电位器模拟航模遥控器

下面演示一个案例,把上一篇文章中提到的引脚 IO 控制和本文中舵机的控制结合起来:通过旋转调节电位器来驱动舵机转动,也就是航模遥控器的基本工作原理。

电路连接:电位器中间引脚连接到模拟输入 A0 引脚,电位器两端引脚分别连接在 Arduino +5V 和 GND,舵机连接在 Arduino 的 9 号引脚上。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

原理解释:通过调节电位器,A0 引脚上的电压从 0 变化到 5V,使用 analogRead() 读取为 0-1023,使用 map (x, in_min, in_max, out_min, out_max) 函数将模拟输入数值(0 - 1023)等比映射到模拟输出数值区间(0-180)内,然后用 servo.write() 函数控制 9 号引脚上舵机的转动角度。

程序实现:

#include
Servo myservo;
void setup() {
myservo.attach(3);
}
void loop() {
int val = analogRead(A0);
int pos = map(val,0,1023,0,180);
myservo.write(pos);
}

实验效果:

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

四、玩转 MeArm 机械臂

熟练了掌握了舵机的操作方法,就可以玩一玩 MeArm 了,它是一款开源机械臂硬件,由 4 个舵机和一些塑料板组成,软硬件资料可以通过互联网免费获得,甚至可以自己使用木板或者硬纸板搭建。淘宝上购买套件也只要 60 多元。

亚克力机械臂meArm拼装机械手UNO开源套件DIY创客树莓派67.5元天猫精选去购买

MeArm 机械臂组装:

购买回来的 MeArm 套件是一堆亚克力塑料板和两袋子螺丝,撕掉一块块亚克力上的还挺费时间。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

所有零件拼起来只有 A4 大小,所有零件都可以用切割亚克力、木板或者 3D 打印获得。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

组装过程并不复杂,照着教程一个小时就能拼好,有点像玩乐高。注意不同卖家的 MeArm 可能会略有不同,记得问卖家要合适的组装图,我在淘宝买的散件照着太极创客的视频组装就不匹配。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

控制原理:

MeArm 机械臂所有的动作由 4 个舵机完成,底部舵机控制整体左右旋转,左右两个电机分别控制上下和前后运动,顶部舵机控制爪子。基本控制程序就是上面提到的舵机控制,进一步的使用串口输入控制数据,控制电机速度,判断舵机限值等在这就不详细展开了,感兴趣的去太极创客官网查看。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

除了使用串口和键盘控制外,还可以使用 HC-06 蓝牙模块用手机 APP 控制,HC-06 有 4 个引脚,分别是 RX、TX、GND 和 VCC,蓝牙模块的 TX 接 Arduino 的 0 脚(RX),蓝牙模块的 RX 接 Arduino 的 1 脚(TX),注意蓝牙模块的 RX 通讯高电平是 3.3V,而 Arduino 的通讯高电平是 5V,所以需要使用两个电阻分压,确保 HC-06 RX 信号电压为 3.3 伏特。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

手机上下载 Arduino Bluetooth Controller APP,设置好各个按键的映射关系,就能像玩游戏那样操作 MeArm 机械臂了。

用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

以上就是太极创客「零基础入门学用 Arduino」第二部分 MeArm 机械臂将近 6 个小时的视频教程的浓缩笔记了,感谢每一位开源作者的付出,降低了普通人学习知识的门槛,下一周继续学习 Arduino 智能应用篇,了解各种传感器的使用方法,欢迎继续关注。






Tab标签:

鲜花

握手

雷人

路过

鸡蛋

最新评论

推荐快讯更多

乐居居-让生活更智能!

  • 反馈建议:153890879@qq.com
  • 客服电话:
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright乐居居  Powered by©  备案号:湘ICP备15009499号-1