物联网实战 篇二:用 Arduino 控制伺服电机/舵机,玩转 MeArm 机械臂

2021-07-26 18:50:24 9点赞 53收藏 1评论

创作立场声明:跟着「太极创客」一起学习 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 智能应用篇,了解各种传感器的使用方法,欢迎继续关注。



展开 收起

MIJIA 米家 智能追光氛围灯带 2m

MIJIA 米家 智能追光氛围灯带 2m

99元起

Apple 苹果 AirTag 智能跟踪器

Apple 苹果 AirTag 智能跟踪器

175元起

iFLYTEK 科大讯飞 翻译机4.0 黑色

iFLYTEK 科大讯飞 翻译机4.0 黑色

1999元起

华为智选 荣泰G36筋膜枪智能按摩运动肌肉放松压力男女专业电动按摩健身高端多功能迷你减震便携

华为智选 荣泰G36筋膜枪智能按摩运动肌肉放松压力男女专业电动按摩健身高端多功能迷你减震便携

415元起

watchbond 适用华为GT4表带GT3米兰尼斯watch4手表3pro磁吸watchgt4新pronew智能B6环7荣耀magic钛金属夏天钢2e男款陶瓷

watchbond 适用华为GT4表带GT3米兰尼斯watch4手表3pro磁吸watchgt4新pronew智能B6环7荣耀magic钛金属夏天钢2e男款陶瓷

17.48元起

星菲扬 适用iwatch表带磁吸applewatchultra2表带se米兰尼斯s9苹果手表表带8代7/6/5金属不锈钢s8男女款45mm运动透气

星菲扬 适用iwatch表带磁吸applewatchultra2表带se米兰尼斯s9苹果手表表带8代7/6/5金属不锈钢s8男女款45mm运动透气

4.51元起

Ninebot 九号 车载电动充气泵打气筒轮胎压数显 自行车打气筒篮足气球泳圈充气筒 充气宝

Ninebot 九号 车载电动充气泵打气筒轮胎压数显 自行车打气筒篮足气球泳圈充气筒 充气宝

暂无报价

官款适用小米手环8/7/6/5/4腕带手表3表带nfc三四五六七八代智能替换带2运动硅胶软个性潮男高级女生薰衣草 经典黑

官款适用小米手环8/7/6/5/4腕带手表3表带nfc三四五六七八代智能替换带2运动硅胶软个性潮男高级女生薰衣草 经典黑

4.15元起

HUAWEI 华为 适用华为手环6表带荣耀6腕带金属NFC版智能运动手表配件定制米兰磁吸真皮编织硅胶潮流替换带透明钢带非原装

HUAWEI 华为 适用华为手环6表带荣耀6腕带金属NFC版智能运动手表配件定制米兰磁吸真皮编织硅胶潮流替换带透明钢带非原装

6.87元起

PITAKA 新款纯碳纤维手表带适用于苹果手表全系列Apple Watch Ultra 2/ Ultra/S9/8/7/6/5代iWatch磁吸高级感

PITAKA 新款纯碳纤维手表带适用于苹果手表全系列Apple Watch Ultra 2/ Ultra/S9/8/7/6/5代iWatch磁吸高级感

479元起

适用小米手环8/7/6/5/4腕带3NFC金属米兰磁吸卡扣不锈钢智能手表带四五六代通用真皮男女款运动替换带配件潮

适用小米手环8/7/6/5/4腕带3NFC金属米兰磁吸卡扣不锈钢智能手表带四五六代通用真皮男女款运动替换带配件潮

暂无报价

PICO 4 便携包 便携收纳包 毛毡外壳 防震防摔 黑色

PICO 4 便携包 便携收纳包 毛毡外壳 防震防摔 黑色

299元起

iFLYTEK 科大讯飞 P20 电子词典笔 32GB 蓝色

iFLYTEK 科大讯飞 P20 电子词典笔 32GB 蓝色

暂无报价

PITAKA适用华为GT4手表GT3pro表带磁吸watchgt4碳纤维高级感智能运动gt2男款商务时尚运动

PITAKA适用华为GT4手表GT3pro表带磁吸watchgt4碳纤维高级感智能运动gt2男款商务时尚运动

479元起

PITAKA适用华为GT4手表GT3pro彩碳表带磁吸watchgt4浮织芳纶碳纤维高级感智能运动gt2男款商务时尚运动

PITAKA适用华为GT4手表GT3pro彩碳表带磁吸watchgt4浮织芳纶碳纤维高级感智能运动gt2男款商务时尚运动

479元起

PICO NEO3 企业版 第二代 便携收纳包 黑色毛毡外壳 防震防摔 轻巧便捷 收纳方便 黑色

PICO NEO3 企业版 第二代 便携收纳包 黑色毛毡外壳 防震防摔 轻巧便捷 收纳方便 黑色

58.02元起
1评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
53
扫一下,分享更方便,购买更轻松