30浏览
查看: 30|回复: 2

[项目] 【Arduino 动手做】由操纵杆控制的 SCARA 机械臂

[复制链接]
这是一个关于 SCARA 臂的项目,它由操纵杆控制并通过蓝牙模块发送位置。

这个项目诞生于我们决定使用 Arduino Uno 制作一个小型机械臂,该机械臂由一个按钮控制(用于控制伺服器下降)

一个控制器由一个钢球和一个操纵杆组成(里面有两个电位器,每个电位器“驱动”一个伺服器)。

我们在网上看到后,决定制作一种“不寻常”的机械臂:SCARA。

零件组装
组装技巧:3D打印部件上的孔可能太小,无法安装热嵌件(这取决于热嵌件的外径,因此建议使用直径为3毫米或5毫米的嵌件),所以您必须在打印部件上钻孔,使孔达到嵌件的深度和直径。在我们的案例中,法兰上的孔也太小,所以我们不得不使用3毫米钻头进行钻孔。


组装 Scara 机器人的所有部件并不难。主要步骤如下:

1. 3D打印Scara的塑料部件(我们使用了笛卡尔3D打印机);

2.安装插件(最简单的方法是用烙铁加热);

3. 将第一个 DS3218MG 伺服器放入“底座”中,并将“顶部”部件放在其上,然后用 M4x10 螺钉(用于伺服器)和 M4x20 螺钉(用于“顶部”)挡住这些部件;

4. 用四颗M3x15螺钉和螺母将“机械臂”下侧的法兰挡住(螺母将固定在舵机和法兰之间)。然后将一个垫圈和一个M3x15螺钉放入中间的孔中;

5. 将钢球放入其座中,然后将“臂”放在其上(对于“分配器”部分重复这两个步骤(4-5));

6.用四颗M4螺丝将另一个DS3218MG伺服器固定在“分配器”上;

7.将SG90(倒置)放在分配器的支架上,用热胶将其封住;

工作原理

Scara 的操作过程非常简单。操纵杆中有两个电位器(也有一个按钮,但我们决定在本项目中使用单独的按钮),机器人的整个机构中有三个伺服器(两个“大”且强大的伺服器和一个小的伺服器),因此我们决定用一个电位器驱动每个 DS3218MG,用按钮驱动另一个伺服器:更具体地说,每当电位器到达其一端时,伺服器就会向右或向左旋转 5°(取决于电位器到达的一侧),并且每次按下按钮时,较小的伺服器就会掉落一个钢珠。

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图7

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图2

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图8

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图5

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图4

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图3

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图1

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂图6

驴友花雕  中级技神
 楼主|

发表于 昨天 15:37

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂

项目代码

  1. #include <Servo.h>  //include the library about servo
  2. Servo servo_base;   //give a name to the servo
  3. Servo servo_arm;
  4. Servo servo_dispenser;
  5. int val = 0;
  6. int val1 = 0;
  7. int n = 0;
  8. int t = 0;
  9. int pos = 0;
  10. int pos1 = 0;
  11. int pos2 = 0;
  12. void setup() {
  13.   servo_base.attach(9);    //set the pin 9 for servo
  14.   servo_arm.attach(10);
  15.   servo_dispenser.attach(11);
  16.   pinMode(A0, INPUT);   //set the pin A0 and A1 to receive data from the joystick
  17.   pinMode(A1, INPUT);
  18.   pinMode(8, INPUT);   //set the pin 8 to receive data from the buttom
  19.   Serial.begin(9600);  //start the serial monitor
  20. }
  21. void loop() {
  22.   val = int (map(analogRead(A0), 0, 1023, -550, 550) / 512);   //map the value read from A0 ad take the integer
  23.   val1 = int (map(analogRead(A1), 0, 1023, -550, 550) / 512);
  24.   pos2 = map(digitalRead(8), 0, 1, 130, 100);
  25.   pos = n + 1 * val;         //add up the value with the previous
  26.   pos1 = t + 1 * val1;
  27.   pos = constrain(pos, 0, 180);      //limit the value of the variable between 0 and 180
  28.   pos1 = constrain(pos1, 0, 180);
  29.   servo_base.write(pos);         //turn the servo of the angle we want
  30.   servo_arm.write(pos1);
  31.   servo_dispenser.write(pos2);
  32.   n = pos;                      //store the position
  33.   t = pos1;
  34.   delay(10);
  35.   Serial.print("servo-base     ");      // send the value to the bluetooth
  36.   Serial.print(pos);
  37.     Serial.print("servo-arm     ");
  38.   Serial.print(pos1);
  39.     Serial.print("servo-dispenser     ");
  40.   Serial.println(pos2);
  41. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 15:40

【Arduino 动手做】由操纵杆控制的 SCARA 机械臂

回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail