gckulo 发表于 2021-3-18 11:25:52

Arduino舵机使用基础篇

今天马克笔设计的程老师继续给大家带来Arduino的相关知识,之前发布了很多相关文章,记得复习啊!

舵机是很多同学喜欢使用的一种传感器。它是一种位置「角度」伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具、航模、机器人中已经得到普遍使用。舵机,其实就是个低端的伺服电机系统,它也是最常见的伺服电机系统,因此英文叫做Servo,就是Servomotor的简称。它将PWM信号与滑动变阻器的电压相比对,通过硬件电路实现固定控制增益的位置控制。也就是说,它包含了电机、传感器和控制器,是一个完整的伺服电机(系统)。低廉、结构紧凑,但精度很低,位置镇定能力较差,能够满足很多低端需求。
棕色为接地线,红色为电源正极线,橙色为信号线。由于Arduino的驱动能力有限,当需要控制多个舵机时,需要外接电源以及使用专用的舵机控制板。



舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。

servo类下有以下成员函数:attach()//连接舵机;write()//角度控制;writeMicroseconds();read()//读上一次舵机转动角度;detach()//断开舵机连接。当然,用于舵机的第三方库要去github上下载。经常有学生喜欢用舵机去控制机械臂,那我们在新手包里使用到的是180度的舵机,舵机也有可以转动90度,270度和360度的。但是要明确一点,360度舵机无法像180度舵机一样控制角度,它只能控制方向和速度。

360度舵机与一般舵机的区别是:给一般舵机一个PWM信号,舵机会转到一个特定角度,而给360度舵机一个PWM信号,舵机会以一个特定的速度转动,类似于电机。但与电机不同的是,360舵机是闭环控制,速度控制稳定。很多学生喜欢用舵机去带动一些东西旋转,从而实现某些效果,在这里我要提醒大家,单个舵机本身的力量有限,它是否能带动你需要经过实验,不要想当然,凭空去假设,测试环节是我们在做Arduino项目时最重要的阶段。

以180度舵机为例:
0.5ms----------------0度;
1ms -----------------45度;
1.5ms----------------90度;
2ms -----------------135度;
2.5ms ---------------180度;

PWM 信号与360舵机转速的关系:
0.5ms----------------正向最大转速;
1.5ms----------------速度为0;
2.5ms----------------反向最大转速;

还有个步进电机,也是大家经常提到的。那我来简单说一下步进电机和舵机的区别,步进电机英文是stepper/step/stepping motor。主要是依靠定子线圈序列通电,顺次在不同的角度形成磁场,推拉定子旋转。步进电机的好处是,你可以省掉用于测量电机转角的传感器。因此在结构上和价格上有一定的优势。而且它的位置和速度控制相对简单。

其缺点是,第一,与同等功率的电机相比载荷比较小,没有角度传感器的情况下不能输出大力矩。第二,功耗相对较大,要么全开,要么全关。所以要么接近满功耗,要么就不能出力。ULN2003驱动板上IN1、IN2、IN3、IN4分别连接UNO开发板的数字引脚2,3,4,5;驱动板电源输入+、-引脚分别连接UNO开发板的5V、GND。

今天的内容到这里就结束了,希望大家通过今天分享能够掌握舵机的基本使用方法。


> 文章作者:程雅秋
> 英国皇家艺术学院产品设计硕士
> 擅长产品服务系统设计、用户体验设计和硬件Arduino交互
>

页: [1]
查看完整版本: Arduino舵机使用基础篇