设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9171|回复: 1

Arduino如何控制辉盛舵机正反转

[复制链接]

该用户从未签到

发表于 2013-5-24 21:13:49 | 显示全部楼层 |阅读模式
本帖最后由 疯狂的呆呆 于 2013-5-24 21:17 编辑

如果利用arduino控制舵机正反转,这里做简单介绍,本实验使用tsrobot的UNO兼容板及扩展板。接好线如下图:(棕线接GND,红线接VCC,橙线接SIG.可以配合GVS扩展板用)
R3扩展板.jpg


舵机原理与控制:(摘自网络)
    在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
    舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。
    控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。
      舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:


    0.5ms-----------0度;


    1.0ms-----------45度;


    1.5ms-----------90度;


    2.0ms-----------135度;


    2.5ms-----------180度;
这只是一种参考数值,具体的参数,请参见舵机的技术参数。SG9参数表如下:
SG90表.jpg
注意在做舵机实验的时候,需要外接电源,不然可能引起UNO主板过载,更有可能有损坏主板Bootloader的危险。
软件如下,利用了官方的舵机库:
  1. #include <Servo.h> //引用官方舵机库
  2. Servo myservo;//创建一个舵机控制对象
  3. void setup(){
  4.   
  5.   Serial.begin(9600);
  6.   myservo.attach(7);//绑定对象至D7
  7.   
  8. }

  9. void loop(){
  10.   
  11.   myservo.write(180);//写入角度
  12.   Serial.println(myservo.read());//打印舵机角度
  13.   delay(1000);
  14.   myservo.write(0);
  15.   Serial.println(myservo.read());
  16.   delay(1000);

  17. }
复制代码
烧入Ardunio,打开串口监听,按下reset,舵机开始以1s为间隔来回0-180度摆动,并打印串口信息如下:
g3.jpg
当调用write方法后,read的返回值就已经被刷新了,所以read只能返回舵机停止角度,无法返回在运行中的角度。当然可以将整个转动过程分割,这样即可用read获取中途角度,更利于微调。

签到天数: 1 天

[LV.1]初来乍到

发表于 2016-7-21 15:35:57 | 显示全部楼层
学习学习,谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-4-27 11:10 , Processed in 0.496801 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表