Arduino 舵机

舵机

 

Arduino 舵机_第1张图片

 .舵机是什么?

    舵机是一种电机,它使用一个反馈系统来控制电机的位置。大多数舵机是可以最大旋转180°的。也有一些能转更大角度,甚至360°。舵机比较多的用于对角度有要求的场合,比如摄像头,智能小车前置探测器,需要在某个范围内进行监测的移动平台。又或者把舵机放到玩具,让玩具动起来。还可以用多个舵机,做个小型机器人,舵机就可以作为机器人的关节部分。它和步进电机有异曲同工之妙,步进电机是可以设定转过多少角度,而舵机是可以设定转到的位置,可以说是指哪打哪,Arduino智能小车的前轮转弯系统便是用的这种原理,在工业上机器人上,舵机的应用更是不胜枚举。

 .引脚接线

    今天我们使用的舵机型号为SG90,有三根线,红色的为电源线(5V),棕色的为GND,橙色的为控制线,我们所写的程序都是通过橙色线来传输数据的。

 .控制舵机的函数方法

#include 引用舵机的库函数 

Servo myservo 创建一个舵机对象 

myservo.attach(9) 绑定舵机的控制引脚,让Arduino的引脚9控制舵机 

myservo.write(0) 让舵机转到0°的位置,而不是转动0°

 .代码如下 (舵机0°~180°往复转动)

#include  
Servo myservo;
int pos;

void setup() {
        myservo.attach(9);
}

void loop() {
        for (pos = 0; pos < 180; pos += 1)
        {
               myservo.write(pos);
               delay(5);
        }

        for (pos = 180; pos >= 1; pos -= 1)
        {
               myservo.write(pos);
               delay(5);
        }
}

 .实验现象

可以看到舵机从0°~180°位置往复转动

 .舵机函数的几个常用语句

     1.attach(接口)——设定舵机的接口,只有9或10接口可利用

     2.write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°

     3.read(读取)——用于读取舵机角度的语句,可理解为读取最后一条write( )命令中的值

     4.attached( )——判断舵机参数是否已发送到舵机所在的接口

     5.detach( )——使舵机与其接口分离,该接口(9或10)可继续被用作PWM接口

 *可能出现的问题

    这几天练习用Arduino通过Servo库控制舵机转动,在中loop中先有几秒让舵机停在0度,然后转到另外一个角度,就在这等待的几秒钟内,舵机不淡定了,不规则地抖动,等到让它转到指定角度时,它也能转过去。我推测这一定是控制程序的问题。在网上查找资料,发现下面的一段话说的靠谱:

    在Arduino中,servo是一个库,可以简单的操作舵机。但从servo库的底层代码上来看,它使用了定时器中断,如果调用了servo库,同时还使用串口通信的功能,那么,对于部分Arduino的板卡来说,一定会抖动。原因很简单,因为串口通信和servo都要使用定时器中断,所以会导致问题出现。

    库是别人写好你来用的,核心的东西你不知道,没准什么时候就有问题就冲突了,要想学好学精,还是要自己通过代码来实现各种功能,不仅性能好,而且还锻炼了你自己的综合能力。

    提示一点关于舵机的知识。驱动舵机,需要产生PWM信号,普通模拟舵机能识别50HZ的PWM信号,其中每个信号周期内,高电平的持续时间代表舵机的驱动角度。500uS为最小舵量,1500为中立舵量,2500为最大舵量,可以使用micros()这个函数来精确控制高电平的持续时间。

 

 

你可能感兴趣的:(Arduino模块)