“(SKU:RB-04M003)RB-65PG舵机”的版本间的差异
来自ALSROBOT WiKi
(→规格参数) |
(→应用例程) |
||
第16行: | 第16行: | ||
[[文件:jjjjj.jpg|500px|缩略图|居中]] | [[文件:jjjjj.jpg|500px|缩略图|居中]] | ||
==应用例程== | ==应用例程== | ||
+ | :利用一个简单的程序,从串口监视器发送命令来控制两个舵机。<br/> | ||
+ | 实验代码: | ||
+ | <pre style='color:blue'>#include <Servo.h> | ||
+ | |||
+ | char buffer[10]; | ||
+ | Servo servo1; | ||
+ | Servo servo2; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | servo1.attach(5); | ||
+ | servo2.attach(6); | ||
+ | Serial.begin(9600); | ||
+ | Serial.flush(); | ||
+ | servo1.write(90); | ||
+ | servo2.write(90); | ||
+ | Serial.println("STARTING..."); | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | if(Serial.available() > 0) | ||
+ | { | ||
+ | int index = 0; | ||
+ | delay(100); | ||
+ | int numChar = Serial.available(); | ||
+ | if(numChar>10) | ||
+ | { | ||
+ | numChar = 10; | ||
+ | } | ||
+ | while (numChar--) | ||
+ | { | ||
+ | buffer[index++] = Serial.read(); | ||
+ | } | ||
+ | splitString(buffer); | ||
+ | } | ||
+ | } | ||
+ | void splitString(char* data) | ||
+ | { | ||
+ | Serial.print("Data entered:"); | ||
+ | Serial.println(data); | ||
+ | char* parameter; | ||
+ | parameter = strtok (data,","); | ||
+ | while ( parameter != NULL) | ||
+ | { | ||
+ | setServo(parameter); | ||
+ | parameter = strtok (NULL, ","); | ||
+ | } | ||
+ | for(int x=0;x<9;x++) | ||
+ | { | ||
+ | buffer[x]='\0'; | ||
+ | } | ||
+ | Serial.flush(); | ||
+ | } | ||
+ | |||
+ | void setServo(char* data) | ||
+ | { | ||
+ | if((data[0] == 'L') || (data[0] == 'l')) | ||
+ | { | ||
+ | int firstVal = strtol(data+1,NULL,10); | ||
+ | firstVal = constrain(firstVal,0,180); | ||
+ | servo1.write(firstVal); | ||
+ | Serial.print("Servo1 is set to: "); | ||
+ | Serial.println(firstVal); | ||
+ | } | ||
+ | if((data[0] == 'R') || (data[0] == 'r')) | ||
+ | { | ||
+ | int secondVal = strtol(data+1,NULL,10); | ||
+ | secondVal = constrain(secondVal,0,255); | ||
+ | servo2.write(secondVal); | ||
+ | Serial.print("Servo2 is set to: "); | ||
+ | Serial.println(secondVal); | ||
+ | } | ||
+ | }</pre> | ||
+ | 代码效果:运行代码,打开串口监视器窗口,Arduino将重启程序,舵机将会转到中间位置。现在可以使用串口监视器发送命令给Arduino,通过发送“L”字符控制左边的舵机,接下来输入0到180之间的数字表示转动角度。右侧舵机控制时通过发送一个字符“R”和一个数字实现。我们可以单独给每一个舵机发送命令,也可以同时给两个舵机发送命令,中间需要用空格或逗号隔开。命令形式如下:<br/> | ||
+ | * 单独控制左侧舵机串口发送:L180 | ||
+ | * 单独控制右侧舵机串口发送:R77 | ||
+ | * 同时控制两个舵机串口发送:L45 R135 或 L180,R90<br/> | ||
==产品相关推荐== | ==产品相关推荐== | ||
购买地址:[http://www.alsrobot.cn/goods-175.html RB-65PG舵机]<br/> | 购买地址:[http://www.alsrobot.cn/goods-175.html RB-65PG舵机]<br/> | ||
舵机特性对比展示视频网址:[http://v.youku.com/v_show/id_XMzEyNzQwMTY=.html 360度连续旋转舵机与180度旋转舵机] | 舵机特性对比展示视频网址:[http://v.youku.com/v_show/id_XMzEyNzQwMTY=.html 360度连续旋转舵机与180度旋转舵机] |
2015年7月1日 (三) 21:22的版本
目录 |
产品概述
RB-65PG是奥松机器人推出的最新一代大扭矩大转角范围的机器人专用伺服舵机,其内部采用的电机为直流有刷空心杯电机,内部采用无铁转子,具有能量转换效率高、激活制动响应速度快、运行稳定性可靠、自适应能力强、电磁干扰少等优点,与同等功率的铁芯电机相比体积小、重量轻;舵机反馈电位器采用导电塑料电位器,其精度和耐磨程度大大优于线饶电位器;电机控制集成电路(IC)采用数字芯片与功率开关组成H桥电路,电压控制双极性驱动方式具有反应速度更快、无反应区范围小、定位精度高、抗干扰能力强兼容性好等优势,超越传统舵机更适合机器人与航模领域广泛应用。
规格参数
- 重量大小:40g
- 尺寸大小:40.8mm X 20.1mm X 38mm
- 工作电压:4.8V-7.2V
- 使用温度:0℃-60℃
- 无负载速度:0.14秒/60度(4.8V);0.12秒/60度(6.0V)
- 扭矩大小:5.5Kg·cm(4.8V);6Kg·cm(6V);6.5Kg·cm(7.2V)
- 死区设定:10us
- 舵机控制:PWM信号,脉宽500us到2500us,周期20ms
- 旋转角度:0到180度
使用方法
应用例程
:利用一个简单的程序,从串口监视器发送命令来控制两个舵机。
实验代码:
#include <Servo.h> char buffer[10]; Servo servo1; Servo servo2; void setup() { servo1.attach(5); servo2.attach(6); Serial.begin(9600); Serial.flush(); servo1.write(90); servo2.write(90); Serial.println("STARTING..."); } void loop() { if(Serial.available() > 0) { int index = 0; delay(100); int numChar = Serial.available(); if(numChar>10) { numChar = 10; } while (numChar--) { buffer[index++] = Serial.read(); } splitString(buffer); } } void splitString(char* data) { Serial.print("Data entered:"); Serial.println(data); char* parameter; parameter = strtok (data,","); while ( parameter != NULL) { setServo(parameter); parameter = strtok (NULL, ","); } for(int x=0;x<9;x++) { buffer[x]='\0'; } Serial.flush(); } void setServo(char* data) { if((data[0] == 'L') || (data[0] == 'l')) { int firstVal = strtol(data+1,NULL,10); firstVal = constrain(firstVal,0,180); servo1.write(firstVal); Serial.print("Servo1 is set to: "); Serial.println(firstVal); } if((data[0] == 'R') || (data[0] == 'r')) { int secondVal = strtol(data+1,NULL,10); secondVal = constrain(secondVal,0,255); servo2.write(secondVal); Serial.print("Servo2 is set to: "); Serial.println(secondVal); } }
代码效果:运行代码,打开串口监视器窗口,Arduino将重启程序,舵机将会转到中间位置。现在可以使用串口监视器发送命令给Arduino,通过发送“L”字符控制左边的舵机,接下来输入0到180之间的数字表示转动角度。右侧舵机控制时通过发送一个字符“R”和一个数字实现。我们可以单独给每一个舵机发送命令,也可以同时给两个舵机发送命令,中间需要用空格或逗号隔开。命令形式如下:
- 单独控制左侧舵机串口发送:L180
- 单独控制右侧舵机串口发送:R77
- 同时控制两个舵机串口发送:L45 R135 或 L180,R90
产品相关推荐
购买地址:RB-65PG舵机
舵机特性对比展示视频网址:360度连续旋转舵机与180度旋转舵机