Arduino扩展板 舵机 调试程序

2026/1/15 4:17:39

Arduino扩展板 舵机 调试程序

Arduino扩展板使用之舵机篇扩展板使用之舵机篇扩展板使用之舵机篇 扩展板使用之舵机篇 [ 2008/10/7 22:03:00 | By: wxxmickey ]

4 推荐

舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。

舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。

舵机的转动位置是靠控制PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms,占空比0.5~2.5ms 的正脉冲宽度和舵机的转角-90°~90°相对应。注意,由于舵机牌子不同,其控制器解析出的脉冲宽度也不同,所以对于同一信号,不同牌子的舵机旋转的角度也有所差别。

A::::B数字口电源切换跳线,当A跳线短路帽插上时,这时B数字口电源使用的是Arduino上的5V供电,仅提供800mA电流;当B数字口用于驱动大电流器件时(如舵机),由于舵机电流较大,这时就需要外部电源供电,由K电源接线柱接入,A跳线短路帽需要拔掉;当Arduino需要5V电池供电时,可以由K电源接线柱接入,A跳线短路帽插上。

B::::数字扩展口,插针定义从上至下为:数字IO口,5V,地(符合舵机线序)。 C::::串口选择跳线,当需要使用RS485功能时,3个短路帽插到上面;当需要使用APC220无线数传时,3个短路帽插到下面;当需要下载程序时,请拔掉短路帽。

D::::RS485串口接口,C串口选择跳3个短路帽插到上面时有效。 E::::模拟扩展口,插针定义从上至下为:5V,地,数字IO口(符合GP2D12线序)。 F::::复位按钮。

G::::5个VIN电源口,与Arduino的VIN相通。 H::::电源指示灯。 I:APC220无线数传接口,C串口选择跳3个短路帽插到下面时有效。

J::::6个PWM接口,将数字口上的6个PWM单独引出来,插针定义从上至下为:PWM,地,5V。

K::::大电流器件独立电源接口,当接入电源时,请拔掉A跳线短路帽。 本实验需要扩展板一个,舵机3只。由于只是做演示用,舵机5v电源就暂时使用Arduino上的,但不可长时间使用,因为多个舵机转动时电流比较大,Arduino上的电源芯片可能会因过热而保护甚至损坏,Arduino电源选择跳线需要接到外部供电,不可使用USB供电。这时就需要从K数字端口外部电源输入端供电,电源电压为5V,拔掉A跳线短路帽。可以使用5V开关电源供电或4-5节充电电池供电。

Arduino 0012-0016版本的IDE内会自带一个舵机库文件,不过该库文件只能使Pin9和Pin10控制舵机,如舵机连接到Pin9上:

演示代码:

#include

Servo myservo; // 定义舵机对象, intpos = 0; void setup() {

myservo.attach(9); //舵机接到Pin9上 } void loop() {

for(pos = 0; pos< 180; pos += 1) //从0度转到180度,步进1度 {

myservo.write(pos); //改变舵机度数 delay(15); // 延时 }

for(pos = 180; pos>=1; pos-=1) //从180度转到1度,步进1度 {

myservo.write(pos); //改变舵机度数 delay(15); // 延时 } }

使用Arduino 0017-0018可以让Arduino控制器的Pin2-13端口控制12个舵机。如上图连接。

演示代码:

#include Servo servo1; Servo servo2; Servo servo3; void setup() {

servo1.attach(8); //定义舵机1控制口为Pin8 servo2.attach(9); //定义舵机2控制口为Pin9 servo3.attach(10); //定义舵机3控制口为Pin10 Serial.begin(19200);//设置波特率 Serial.print(\ }

void loop() {

staticint v = 0; if ( Serial.available()) {

char ch = Serial.read(); //读取串口数据 switch(ch) { case '0'...'9':

v = v * 10 + ch - '0'; //字符换算成10进制 break;

case 'a': //如果数据后带a,则表示是servo1的数据,比如串口发送85a servo1.write(v);

v = 0; break; case 'b': //如果数据后带b,则表示是servo2的数据,比如串口发送90b servo2.write(v);

v = 0; break; case 'c': //如果数据后带c ,则表示是servo3的数据,比如串口发送180c servo3.write(v);

v = 0; break; } } }

程序功能:通过IDE中的串口助手,发送舵机度数控制舵机转动的角度,比如发送字符85a表示舵机1转动85度,发送字符180c表示舵机3转动180度。


Arduino扩展板 舵机 调试程序.doc 将本文的Word文档下载到电脑
搜索更多关于: Arduino扩展板 舵机 调试程序 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219