查看SKU:RB-13K111 AS-6DOF多功能铝合金机械臂-银色的源代码
←
SKU:RB-13K111 AS-6DOF多功能铝合金机械臂-银色
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
[[文件:13K11101.png|500px|有框|右]] ==产品概述== 机械手臂目前在机械人技术领域中得到广泛的应用,在工业制造、医学治疗、娱乐服务、教学应用、军事以及太空探索等领域都能见到它的身影。虽然大家经常在电影或者电视中见过,似曾想过拥有一台属于自己的机械臂,因其功能针对性强和高额的售价,使我们望而却步。现在你不必担心这个问题了,AS-6D0F铝合金机械臂套件,可以实现你的机器人梦想。此版说明书主要介绍如何利用4个大按钮模块与Arduino Uno控制器之间的通讯直接控制六自由度机械臂并且在LCD2004液晶屏上实时显示监控到的信息,此说明书还介绍Arduino Uno控制器与LCD2004液晶屏及大按键之间的接线和调试过程,按照此说明书的步骤一步一步的组装完成后,给其上电,通过4个大按钮模块就可以轻松实现对六自由度机械臂的控制。 ==产品参数== # 产品名称:AS-6DOF多功能铝合金机械臂 # 产品类型:机械手臂 # 产品货号:RB - 13K111 # 产品颜色:银色 # 夹持器材质:金属 # 主控制器:Starduino UNO R3 控制器 # 编程软件:Arduino IDE、Ardublock、S4A # 基础模块:机械臂、双路开关电源、Starduino UNO R3 控制器、传感器扩展板 V5.0、大按钮模块、IIC LCD2004 液晶扩展板 # 控制方式:自主编程 # 夹持重量:0.5kg # 套件供电:双路开关电源:12V/1.5A - 5V/8A # 重量:2.0KG ==主控器技术参数== # 主控器:Carduino UNO R3 # 微处理器:ATmega328 # Flash 内存:32 KB (ATmega328 其中0.5 KB 用于引导程序) # 工作电压:5V # 输入电压:接上USB 时无须外部供电或外部7V~12V DC 输入 # 输出电压:5V DC 输出和3.3V DC 输出和外部电源输入 # 时钟频率:16 MHz # 输入电压:7-12V(推荐) # 输入电压:6-20V(限制) # 支持USB 接口协议及供电(不需外接电源) # 支持ISP 下载功能 # 数字I/O 端口:14(6 个PWM 输出口) # 模拟输入端口:6 # 直流电流:40mA(I/O 端口) # 直流电流:50mA(3.3V 端口) # EEPROM:1 KB (ATmega328) # SRAM:2 KB (ATmega328) # 尺寸:75x55x15mm ==产品清单== {|border="1" cellspacing="0" align="center" cellpadding="5" width="700px" |- | colspan="4" style="text-align: center;" |<big><big>'''RB - 13K012 AS - 6DOF 多功能铝合金机械臂 - 银色 - 不含电控'''</big></big> |- |align="center"|序号 |align="center"|产品名称 |align="center"|产品货号 |align="center"|数量 |- |align="center"|1 |align="center"|机械臂底盘 |align="center"|RB - 09M031 |align="center"|1 |- |align="center"|2 |align="center"|[http://www.alsrobot.com.cn/wiki/index.php/(SKU:RB-04M006)RB-150MG%E8%88%B5%E6%9C%BA 金属齿RB-150MG舵机(含附件包)] |align="center"|RB - 04M006 |align="center"|6 |- |align="center"|3 |align="center"|新机械臂金属圆盘(140mm) |align="center"|RB - 09M139 |align="center"|1 |- |align="center"|4 |align="center"|机械臂转盘 |align="center"|RB - 09M093 |align="center"|1 |- |align="center"|5 |align="center"|新机械臂金属圆盘(120mm) |align="center"|RB - 09M138 |align="center"|1 |- |align="center"|6 |align="center"|AS - 6DOF机械手专用夹持器 |align="center"|RB - 09M073 |align="center"|3 |- |align="center"|7 |align="center"|铝合金多功能舵机支架 |align="center"|RB - 09M002 |align="center"|4 |- |align="center"|8 |align="center"|铝合金长 U 型支架 |align="center"|RB - 09M005 |align="center"|3 |- |align="center"|9 |align="center"|铝合金L型支架 |align="center"|RB - 09M017 |align="center"|1 |- |align="center"|10 |align="center"|进口杯士轴承组件 |align="center"|RB - 09M083 |align="center"|3 |- |align="center"|11 |align="center"|金属舵盘 |align="center"|RB - 04M024 |align="center"|1 |- |align="center"|12 |align="center"|优质纯铜固定柱 M3*10+6 |align="center"|RB - 12C072 |align="center"|14 |- |align="center"|13 |align="center"|优质纯铜固定柱M3*30+6 |align="center"|RB - 12C076 |align="center"|3 |- |align="center"|14 |align="center"|M3盖姆 |align="center"|RB - 12C114 |align="center"|14 |- |align="center"|15 |align="center"|六角螺母 M3 |align="center"|RB - 12C089 |align="center"|6 |- |align="center"|16 |align="center"|十字槽固定螺丝 M2.5*6 |align="center"|RB - 12C087 |align="center"|16 |- |align="center"|17 |align="center"|六角螺母 M2.5 |align="center"|RB - 12C090 |align="center"|16 |- |align="center"|18 |align="center"|十字槽固定螺丝 M4*8 |align="center"|RB - 12C086 |align="center"|24 |- |align="center"|19 |align="center"|六角螺母 M4 |align="center"|RB - 12C091 |align="center"|24 |- |align="center"|20 |align="center"|十字槽固定螺丝 M3*6 |align="center"|RB - 12C081 |align="center"|7 |- |align="center"|21 |align="center"|十字槽固定螺丝 M3*10 |align="center"|RB - 12C083 |align="center"|7 |- |align="center"|22 |align="center"|M3弹垫 |align="center"|RB - 12C098 |align="center"|17 |- |align="center"|23 |align="center"|机械手夹持器固定螺丝白色自攻钉 |align="center"|RB - 12C099 |align="center"|2 |- |align="center"|24 |align="center"|机械手夹持器固定螺丝黑色自攻钉 |align="center"|RB - 09M046 |align="center"|2 |- |align="center"|25 |align="center"|黑色扎带 |align="center"|RB - 12C101 |align="center"|5 |- |align="center"|26 |align="center"|优质舵机延长线(30CM) |align="center"|RB - 06L009 |align="center"|3 |- |align="center"|27 |align="center"|优质塑料捆绳(40CM) |align="center"|RB - 12C102 |align="center"|1 |- |align="center"|28 |align="center"|[http://www.alsrobot.cn/wiki/index.php/SKU:RB-01C076_CarDuino_UNO_R3%EF%BC%88%E7%9B%B4%E6%8F%92%E8%8A%AF%E7%89%87%EF%BC%89 Starduino UNO R3 控制器] |align="center"|RB - 01C076A |align="center"|1 |- |align="center"|29 |align="center"|[http://www.alsrobot.cn/wiki/index.php/SKU:RB-01C015B_Arduino_%E4%BC%A0%E6%84%9F%E5%99%A8%E6%89%A9%E5%B1%95%E6%9D%BFv5.0 传感器扩展板 V5.0] |align="center"|RB - 01C015B |align="center"|1 |- |align="center"|30 |align="center"|[http://www.alsrobot.cn/wiki/index.php/SKU:RB-05L012_IIC_LCD2004%E5%AD%97%E7%AC%A6%E6%B6%B2%E6%99%B6%E6%98%BE%E7%A4%BA%E5%99%A8 IIC LCD2004 液晶屏] |align="center"|RB - 05L012 |align="center"|1 |- |align="center"|31 |align="center"|[http://www.alsrobot.cn/wiki/index.php/SKU:RB-02S032A_%E6%8C%89%E5%8E%8B%E5%BC%8F%E5%A4%A7%E6%8C%89%E9%92%AE%E6%A8%A1%E5%9D%97 按压式大按钮模块] |align="center"|RB - 02S049A |align="center"|4 |- |align="center"|32 |align="center"|3P 传感器连接线 |align="center"|RB - 06L003 |align="center"|4 |- |align="center"|33 |align="center"|DC 接头 |align="center"|RB - 10P016 |align="center"|1 |- |align="center"|34 |align="center"|数据下载线 |align="center"|RB - 06L020 |align="center"|1 |- |align="center"|35 |align="center"|机械臂专用开关电源 |align="center"|RB - 10P007 |align="center"|1 |- |align="center"|36 |align="center"|3D 打印操作盒 |align="center"|套件中不包含,可以单独定制 |align="center"|1 |} ==安装连线== 步骤1:如图所示,CarDuino Uno 控制器与传感器扩展板连接,并通过 USB 连接线给 Carduino UNO 上传例子程序。<br/> [[文件:13K11118.png|600px|有框|居中]]<br/> [[文件:13K11112.png|600px|有框|居中]]<br/> 步骤2:如图所示,将按压式大按钮模块与传感器扩展板 V5.0 的模拟接口连接。<br/> 将 4 个大按钮模块分别接到传感器扩展板 v5.0 的 4 个模拟口A0、A1、A2、A3,作为机械臂的控制按键,功能如下:<br/> * A0被按下时,舵机号从上至下选中 * A1被按下时,舵机号从下至上选中 * A2被按下时,舵机顺时针转 * A3被按下时,舵机逆时针转 [[文件:13K11114.png|500px|有框|居中]]<br/> 步骤3:如下图所示,将 RB-150MG 与传感器扩展板 V5.0 连接,依次连接底盘到夹持器舵机。<br/> * 将底盘到夹持器的舵机顺次连接到传感器扩展板的 6 个数字口 D4(底盘舵机)D5、D6、D7、D8、D9(夹持器舵机)。<br/> [[文件:13K11113.png|600px|有框|居中]]<br/> 步骤4 如图所示:将 IIC LCD2004 液晶显示屏与传感器扩展板连接,IIC LCD2004液晶显示屏接到传感器扩展板 v5.0 的 IIC 接口,连接时需要注意红色对应“+”,黑色对应“-”<br/> [[文件:13K11115.png|600px|有框|居中]]<br/> 步骤5 图下图所示:给机械臂电控部分进行供电。<br/> * 取下传感器扩展板 v5.0 的跳线帽,使用开关电源(5V 给传感器扩展板 v5.0 供电,12V 给 CarDuino Uno 控制器供电),红色接 VCC,黑色接 GND(注意区分正负极)。 [[文件:13K11116.png|600px|有框|居中]]<br/> [[文件:13K11117.png|600px|有框|居中]]<br/> 步骤6 完成以上步骤后,机械臂所有电控及供电就全部安装完成,接下来回头检查一下各个部分的接线,尤其是是否有电源和地接反的情况,如果确定接线无误,就可以给机械臂供电了。<br/> ==例子程序== <pre style="color:blue"> #include <Servo.h> //调用一些库文件 #include <TimedAction.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> //定义舵机位置名称,并编号。 const int base = 0; //底座舵机 const int shoulder = 1; const int elbow = 2; const int wristflex = 3; const int wristrot = 4; const int gripper = 5; //夹持器舵机 const int stdDelay = 20; //舵机运动延时(单位ms) const int maxServos = 6; //舵机的数量 const int centerPos = 90; //舵机中位位置 int keyDelay = 100; //每个按键之间的最大延时时间ms int buttonDelay = 50; //每个按键之间的最小延时时间ms int thisServo = base; //定义起始电机 unsigned long key_millis = 0; unsigned long button_millis = 0; typedef struct{ //数组框架结构 byte neutral; //中位角度,起始位置 byte minPos; //最小角度 byte maxPos; //最大角度 byte delaySpeed; //延时时间 byte curPos; //舵机当前角度 } ServoPos; //结构体名称 ServoPos servosPos[] = { //对舵机限位 { 90, 180, 10, stdDelay, 0 }, //中位90,最小角度180,最大角度10,范围0~180度。 { 90, 180, 10, stdDelay, 0 }, { 90, 180, 60, stdDelay, 0 }, { 90, 170, 50, stdDelay, 0 }, { 90, 180, 10, 10, 0 }, { 90, 125, 55, 5, 0 } }; byte serv = 90; int counter = 0; int curServo = 0; int sMove[] = {0, 90, 0}; int sAttach[] = {0, 0}; LiquidCrystal_I2C lcd(0x27,20,4); //0x27 D7~D0端口开关设置0x表示十六进制27转换成16进制数是00100111 1代表开,0代表关, 20列,4行,行号从零算起,第一行行号0,第二行行号1. Servo servos[maxServos]; int destServoPos[maxServos]; int currentServoPos[maxServos]; void doServoFunc() { int x = curServo; TimedAction servoMove[maxServos] = TimedAction(100, doServoFunc); if(destServoPos[x] == currentServoPos[x]) servoMove[x].disable(); if(destServoPos[x] > currentServoPos[x]) currentServoPos[x]++; else currentServoPos[x]--; servosPos[x].curPos = constrain(currentServoPos[x], servosPos[x].maxPos, servosPos[x].minPos); currentServoPos[x] = servosPos[x].curPos; servos[x].write(currentServoPos[x]); jointPos(x, currentServoPos[x]); } TimedAction servoMove[maxServos] = TimedAction(100, doServoFunc); // 延时,延时时间为声明时间。 TimedAction keys = TimedAction(10, keypadFunc); void setup() { //设置 delay(200); Wire.begin(); lcd.init(); //LCD初始化 lcd.backlight(); //LCD背光灯打开 delay(500); lcd.on(); // LCD开机 setupDisplay(); //调用子程序,设置显示内容门,后面有定义。 for(int i=0; i<maxServos; i++) { servos[i].write(servosPos[i].neutral);//舵机归中位 servosPos[i].curPos = servosPos[i].neutral;//设置舵机当前角度为初始角度 servos[i].attach(i+4);//初始化舵机控制引脚,即第一个舵机为D4引脚控制 destServoPos[i] = centerPos;//指定的舵机为90度 currentServoPos[i] = centerPos;//当前的舵机为90度 servoMove[i].disable();//舵机停止移动 } } void loop() { for(int x=0; x<maxServos; x++) { curServo = x; servoMove[x].check(); } //timer.run(); keys.check(); navSwitchFunc(); } void servoTestFunc() { if(counter % 2) { Move(thisServo, servosPos[thisServo].minPos, servosPos[thisServo].delaySpeed); } else Move(thisServo, servosPos[thisServo].maxPos, servosPos[thisServo].delaySpeed); counter++; } void writeServo() { int servoNum = sMove[0]; if(servoNum >=0 && servoNum <= maxServos) { destServoPos[servoNum] = sMove[1]; servoMove[servoNum].enable(); servoMove[servoNum].setInterval(sMove[2]); } } void setServoAttach() { int servo = 1; // sAttach[0] int mode = 2; // sAttach[1] if(servo >= 0 && servo <= maxServos) { if (mode == 1) servos[servo].attach(servo+4); else servos[servo].detach(); } } void Move(int servoNum, int servoPosition, int delayTime) { //舵机驱动指令 sMove[0] = servoNum; //所驱动舵机号 sMove[1] = servoPosition; //舵机的目标位置 sMove[2] = delayTime; //每个舵机运动的延迟时长 writeServo(); } void Attach(int servoNum, int servoMode) { sAttach[0] = servoNum; sAttach[1] = servoMode; } void navSwitchFunc() { //键盘检测子程序 if (millis() > button_millis + buttonDelay) { button_millis = millis(); if(digitalRead(A0) == LOW) { // 当A0引脚低电平 thisServo--; //电机号自加1 thisServo = constrain(thisServo, 0, 5); //电机控制范围 jointPos(thisServo, servosPos[thisServo].curPos); delay(200); //延时200毫秒 } if(digitalRead(A1)== LOW) { //当A1引脚低电平 thisServo++; //电机号自加1 thisServo = constrain(thisServo, 0, 5); //电机控制范围 jointPos(thisServo, servosPos[thisServo].curPos); delay(200); //延时200毫秒 } if(digitalRead(A2) == LOW) { //当A2引脚低电平 byte t = thisServo; servosPos[t].curPos--; //电机角度自减1 servosPos[t].curPos = constrain(servosPos[t].curPos, servosPos[t].maxPos, servosPos[t].minPos); jointPos(t, servosPos[t].curPos); } if(digitalRead(A3) == LOW) { //当A3引脚低电平 byte t = thisServo; servosPos[t].curPos++; //电机角度自减1 servosPos[t].curPos = constrain(servosPos[t].curPos, servosPos[t].maxPos, servosPos[t].minPos); jointPos(t, servosPos[t].curPos); } } } void keypadFunc() { byte keypad = lcd.keypad(); lcd.command(0); if (keypad !=0) { if (millis() > key_millis + keyDelay) { keypress(keypad); key_millis = millis(); } } } void keypress (byte keypad) { //读取按键按下情况。 byte t; lcd.setCursor(15, 1); switch(keypad) { case 1: lcd.print("1"); t = base; servosPos[t].curPos--; break; case 2: lcd.print("2"); t = shoulder; servosPos[t].curPos--; break; case 3: lcd.print("3"); t = elbow; servosPos[t].curPos--; break; case 5: lcd.print("4"); t = base; servosPos[t].curPos++; break; case 6: lcd.print("5"); t = shoulder; servosPos[t].curPos++; break; case 7: lcd.print("6"); t = elbow; servosPos[t].curPos++; break; case 9: lcd.print("7"); t = wristflex; servosPos[t].curPos--; break; case 10: lcd.print("8"); t = wristrot; servosPos[t].curPos--; break; case 11: lcd.print("9"); t = gripper; servosPos[t].curPos--; break; case 13: lcd.print("*"); t = wristflex; servosPos[t].curPos++; break; case 14: lcd.print("0"); t = wristrot; servosPos[t].curPos++; break; case 15: lcd.print("#"); t = gripper; servosPos[t].curPos++; break; } servosPos[t].curPos = constrain(servosPos[t].curPos, servosPos[t].maxPos, servosPos[t].minPos); jointPos(t, servosPos[t].curPos); } void jointPos(byte t, byte pos) { //定义两个byte类型的变量,t,pose. lcd.setCursor(6, 1);//电机所在位置名称 switch(t) { case base: // 1, 4 lcd.print("bse"); //LCD显示bse break; case shoulder: // 2, 5 lcd.print("shl"); //LCD显示shl break; case elbow: // 3, 6 lcd.print("elb"); //LCD显示elb break; case wristflex: // 7, * lcd.print("wfx"); //LCD显示wfx break; case wristrot: // 8, 0 lcd.print("wrt"); //LCD显示wrt break; case gripper: // 9, # lcd.print("grp"); //LCD显示grp break; } lcd.setCursor(2, 3);// 设置显示位置第4行,3列就是说前面空2格。 lcd.print(" you are welcome "); lcd.setCursor(6, 2);//pose后面显示的角度位置。 lcd.print(pos, DEC); //当按键按下后显示角度值。 servos[t].write(pos); } void setupDisplay() { //子程序定义,LCD显示内容,开机立即显示。 lcd.clear(); //LCD清屏 lcd.blink_off(); //LCD光标闪烁关 lcd.home(); // lcd.setCursor(1, 1); //设置显示位置第2行,2列就是说前面空1格。 lcd.print("key: "); //显示内容 “key” lcd.setCursor(4, 0); //设置显示位置第一行,5列就是说前面空4格。 lcd.print("alsrobotbase ");//显示内容”alsrobotbase” lcd.setCursor(1, 2); // 设置显示位置 lcd.print("Pos: "); //显示内容”Pos” } </pre> ==电控部分说明书== [http://www.alsrobot.com.cn/wiki/index.php?title=(RB-13K012)6%E8%87%AA%E7%94%B1%E5%BA%A6%E6%9C%BA%E6%A2%B0%E8%87%82 6自由度机械臂机械部分安装说明]<br/> [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-02S032)_%E6%8C%89%E5%8E%8B%E5%BC%8F%E5%A4%A7%E6%8C%89%E9%92%AE%E6%A8%A1%E5%9D%97 按压式大按钮模块使用说明书]<br/> [http://www.alsrobot.cn/wiki/index.php/SKU:RB-05L012_IIC_LCD2004%E5%AD%97%E7%AC%A6%E6%B6%B2%E6%99%B6%E6%98%BE%E7%A4%BA%E5%99%A8 IIC 2004液晶扩展板使用说明书]<br/> [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C015)Arduino_%E4%BC%A0%E6%84%9F%E5%99%A8%E6%89%A9%E5%B1%95%E6%9D%BFv5.0 V5.0传感器扩展板使用说明]<br/> [http://www.alsrobot.com.cn/wiki/index.php?title=Arduino%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B Arduino UNO入门教程]<br/> [http://www.alsrobot.com.cn/wiki/index.php?title=Arduino%E9%A9%B1%E5%8A%A8%E7%9A%84%E5%AE%89%E8%A3%85 Arduino UNO 驱动安装]<br/> [http://www.alsrobot.com.cn/wiki/index.phptitle=Arduino%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%EF%BC%88%E5%A4%9A%E9%A1%B5%E9%9D%A2%E7%89%88%EF%BC%89 Arduino UNO 编程参考手册]<br/> ==产品相关推荐== [[文件:erweima.png|230px|无框|右]] ===例程下载=== 库文件及例子程序下载链接:http://pan.baidu.com/s/1hsLxLrQ 密码:f4mz ===产品购买地址=== [http://www.alsrobot.cn/goods-551.html AS-6DOF 铝合金机械臂 Arduino版本]<br/> ===周边产品推荐=== [http://www.alsrobot.cn/goods-438.html 防水舵机]<br/> ===相关问题解答=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=5463&fromuid=10780 arduino六自由机械臂编译不成功问题]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=1348&highlight=%E6%9C%BA%E6%A2%B0%E8%87%82 Arduino UNO R3 可以实现机械臂控制吗?]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3900&highlight=%E6%9C%BA%E6%A2%B0%E8%87%82 6自由度机械臂舵机容易被拉下来]<br/> ===相关学习资料=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=4087&fromuid=10780 AS-6DOF铝合金机械臂功能演示之定位抓取]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=295&highlight=%E6%9C%BA%E6%A2%B0%E8%87%82 6自由度机械臂玩儿家测评一]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=296&highlight=%E6%9C%BA%E6%A2%B0%E8%87%82 6自由度机械臂玩儿家测评二]<br/> [http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/>
返回
SKU:RB-13K111 AS-6DOF多功能铝合金机械臂-银色
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面
页面信息