完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
概述
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。 结构原理 它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用。 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。 通俗来说,就是通过引脚时间单位内脉冲的信号,令舵机执行对应角度的移动,每个执行命令的信息获取时间为2ms,2ms内,脉冲的电位为高电平,时间长度决定位置和距离。 接线方式 舵机红线5V接UNO的5V、舵机棕线GND接UNO的GND、舵机橙线PWM接UNO的PIN9 连接线: 红色:正极; 橙色:信号线; 棕色:地线 UNO代码: #include 《Servo.h》Servo myservo; // 创建舵机对象来控制舵机int pos = 30; // 用来存储舵机位置的变量const int MIN_POINT = 30; // 最大角度const int MAX_POINT = 150; // 最小角度const int POSTIIVE_DIRECTION = 1; //顺时针方向const int BACK_DIRECTION = -1; //逆时针方向const int DELAY_TIME = 15; //默认间隔时间int i = 0; // 用来存储舵机位置的变量void setup(){ myservo.attach(9); // 把连接在引脚9上的舵机赋予舵机对象 Serial.begin(9600);}void loop(){ for (i = 0; i 《= 180; i += 1) // 从0度到180度 { setPosition(POSTIIVE_DIRECTION); } for (i = 180; i 》= 0; i -= 1) { setPosition(BACK_DIRECTION); }}void setPosition(int direction) { int posTemp = pos + direction; if(posTemp 》= MIN_POINT && posTemp 《= MAX_POINT){ pos = posTemp; myservo.write(pos); } delay(DELAY_TIME);} 正常来说我们只需要知道如何用,调动库就可以了,不需要深入理解内部物理实现原理。 |
|
|
|
只有小组成员才能发言,加入小组>>
2435 浏览 0 评论
9100 浏览 4 评论
36773 浏览 19 评论
5026 浏览 0 评论
24745 浏览 34 评论
1531浏览 2评论
1747浏览 1评论
2197浏览 1评论
1556浏览 0评论
526浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:04 , Processed in 1.611336 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号