创作立场声明:跟着「太极创客」一起学习 Arduino 这是 Arduino 学习笔记的第二篇,在上一篇中已经介绍了 Arduino 的基础知识,了解了控制数字 IO 与模拟 IO,本文将进一步学习伺服电机/舵机的工作原理与控制方法,最后通过一款开源机械臂硬件-MeArm 来实战一下。依旧参考的是「太极创客」团队编写的教程,如果有看不懂的地方,推荐去 B 站观看他们完整且详细的视频教程(视频链接在文末)。 一、伺服电机/舵机1. 舵机的概念伺服(Servo)系统是使物体的位置、方位、状态等输出,能够跟随输入量的任意变化而变化的自动控制系统。舵机就是一种位置(角度)伺服的驱动器,当我们向伺服器发送一个控制信号时,舵机的输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。日常生活中,舵机常被用于遥控飞机、遥控汽车、机器人等领域。 根据输出轴旋转角度的不同,有 90°、180°(常用)和 360°舵机;根据控制电路的不同有数字舵机(Digital Servo)和模拟舵机(Analog Servo);根据材料的不同有金属尺寸和塑料齿轮之分。航模最常用的型号有 SG90 模拟舵机(蓝色塑料齿轮)<10 元,MG90S(灰色金属齿轮)<20 元。塑料齿轮电机容易抖动,不耐用,个人强烈建议选购金属齿轮的。 2. 舵机工作原理舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。舵机内部有一个基准电路,产生周期为 20ms、宽度为 1.5ms 的基准信号。位置检测器是一个电位器,当舵机转动时电阻值也会随之改变,检测电阻值便可知道当前输出轴转动的角度。 舵机一般都外接三根线,棕色为接地线,红色为电源正极线,橙色为信号线。 舵机具体的工作原理是: 1. 由控制器发送 PWM 脉冲/指令给舵机,进入信号调制芯片,获得直流偏置电压。 2. 舵机将获得的直流偏置电压与电位器的电压比较,获得电压差输出。电压差的正负输出到电机驱动芯片决定电机的正反转。 3. 通过级联减速齿轮带动电位器旋转,使得电压差为 0,电机停止转动,到达定位。 总结一下,舵机的控制信号是周期为 20ms 的 PWM 信号,利用占空比的变化(高电平部分为 0.5ms-2.5ms 范围)改变舵机的位置(脉宽与转角 0°—180°相对应)。 例如:1.5 毫秒的脉冲,电机将转向 90 度的位置(通常称为中立位置,对于 180°舵机来说,就是 90°位置)。如果脉冲宽度小于 1.5 毫秒,那么电机轴向朝向 0 度方向。如果脉冲宽度大于 1.5 毫秒,轴向就朝向 180 度方向。 二、用 Arduino 控制舵机1. 根据原理图搭建电路舵机与 Arduino 开发板线路连接非常简单,舵机红色线接开发板 5V,棕色线接开发板 GND,橙色信号线接开发板数字引脚上。可使用 ULN2003 增强驱动能力。 2. 控制方法一:模拟PWM 信号Arduino 控制舵机的方法有两种:第一种是根据舵机的工作原理,通过 Arduino 的普通引脚产生占空比不同的方波,模拟产生 PWM 信号进行舵机定位。比如让舵机旋转到角度为 90°的位置,只需要生成一个周期为 20ms,占空比 1.5ms/20ms 的 PWM 信号。
3. 控制方法二:Servo库函数手动生成 PWM 信号太麻烦了,可以直接利用 Arduino 自带的 Servo 函数进行舵机的控制,Servo 库允许大多数 Arduino 开发板(如 Arduino Uno)同时控制 12 个舵机。
三、用可变电位器模拟航模遥控器下面演示一个案例,把上一篇文章中提到的引脚 IO 控制和本文中舵机的控制结合起来:通过旋转调节电位器来驱动舵机转动,也就是航模遥控器的基本工作原理。 电路连接:电位器中间引脚连接到模拟输入 A0 引脚,电位器两端引脚分别连接在 Arduino +5V 和 GND,舵机连接在 Arduino 的 9 号引脚上。 原理解释:通过调节电位器,A0 引脚上的电压从 0 变化到 5V,使用 analogRead() 读取为 0-1023,使用 map (x, in_min, in_max, out_min, out_max) 函数将模拟输入数值(0 - 1023)等比映射到模拟输出数值区间(0-180)内,然后用 servo.write() 函数控制 9 号引脚上舵机的转动角度。 程序实现:
实验效果: 四、玩转 MeArm 机械臂熟练了掌握了舵机的操作方法,就可以玩一玩 MeArm 了,它是一款开源机械臂硬件,由 4 个舵机和一些塑料板组成,软硬件资料可以通过互联网免费获得,甚至可以自己使用木板或者硬纸板搭建。淘宝上购买套件也只要 60 多元。 MeArm 机械臂组装: 购买回来的 MeArm 套件是一堆亚克力塑料板和两袋子螺丝,撕掉一块块亚克力上的还挺费时间。 所有零件拼起来只有 A4 大小,所有零件都可以用切割亚克力、木板或者 3D 打印获得。 组装过程并不复杂,照着教程一个小时就能拼好,有点像玩乐高。注意不同卖家的 MeArm 可能会略有不同,记得问卖家要合适的组装图,我在淘宝买的散件照着太极创客的视频组装就不匹配。 控制原理: MeArm 机械臂所有的动作由 4 个舵机完成,底部舵机控制整体左右旋转,左右两个电机分别控制上下和前后运动,顶部舵机控制爪子。基本控制程序就是上面提到的舵机控制,进一步的使用串口输入控制数据,控制电机速度,判断舵机限值等在这就不详细展开了,感兴趣的去太极创客官网查看。 除了使用串口和键盘控制外,还可以使用 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 Bluetooth Controller APP,设置好各个按键的映射关系,就能像玩游戏那样操作 MeArm 机械臂了。 以上就是太极创客「零基础入门学用 Arduino」第二部分 MeArm 机械臂将近 6 个小时的视频教程的浓缩笔记了,感谢每一位开源作者的付出,降低了普通人学习知识的门槛,下一周继续学习 Arduino 智能应用篇,了解各种传感器的使用方法,欢迎继续关注。 |
香港服务器多少钱一个月?哪家的香港服务器
4核4g6M50G盘20G防御云服务器价格多少钱?T
特发集团与华为签署全面合作协议
【身边的AI】高空抛物智能追溯解决方案,站
中海&华为签署战略深化合作协议
华为赵博:数字化转型成为地产企业最确定的
这款TCL K6V指纹锁不到千元即可买到?大品
凯迪仕指纹锁哪款好用?买凯迪仕指纹锁选哪