这个机械手很久之前就在做了,但是没有做完,直到看到张禄的同步机械臂。我又开始了制作并完成了机械臂。最近收到LEE大大的赞助,准备把这次制作过程,写成详细教程,让小白无障碍制作 !机械部分(可以说完成了机械部分,基本上完成了制作的大部分工作) 
先从手指开始,手指5根,分别打印出来,经过打磨、钻孔,安装螺丝。器材: 
         螺丝 20、25、30 
         PLA     白色 
         风筝线或鱼线  
         舵机      
         ……(持续更新) 
3D打印模型文件分别为: 
Auriculaire(小指)、ringfinger(无名指)、Index(食指)、Majeure(中指)、thumb(大拇指) 
  
打印出手指部件 
  
用锉刀修饰模型  
钻孔后用AB胶粘接 
  
穿线 
  
注意线头打结! 
  
再将指头盖用胶与指粘接 
  
其余手指安装与之类似,注意每根手指两根线,分别用于弯曲和伸直手指。穿线时不要让两根线缠绕在一起。 
  
五根手指打齐并正确穿线。 
  
打印文件:WristsmallV3.stl 
  
打印文件:WristlargeV4.stl 
  
将大拇指两根线穿过手掌,注意我们使用了,上下两孔洞。 
  
  
(持续更新中)6月4日外出一天陪朋友去常州看创客空间 。 
  
rotawrist3V2 
  
rotawrist2.stl 
  
rotawrist1V3.stl 
  
组合后形态,构成手腕部分 
  
robpart5V3.stl,将模型文件打印出来后,去除支撑如下图所示。 
  
去除支撑后的模型 
  
robpart4V3.stl如上述模型一样打印后去除支撑 
  
  
  
组合后形态 
  
  
RobServoBedV5,打印上图所示舵机床,将5个舵机按上图所示方式安装上。 
  
servo-pulleyX5.stl,打印好以后,将舵机圆形多盘安装到此模型中,如上图所示 
今天是高考,不过今年我不用监考,所以在家休息,烧锅接送孩子之余,继续我们的机械手安装。 
  
小指无名指中轴安装,适当打磨后将中轴从孔中插入,注意控制手指弯曲和伸展的控制线不要缠绕,且分布与中轴两侧。 
  
拇指中轴安装,适当打磨后,将其正确安装,方法如上。 
  
安装注意确保中轴尾部进入孔内,如上图所示,否则会影响腕部中轴的安装。 
  
用螺丝将手表面固定LOGO ——INMOOV 
  
打印腕部齿轮 
  
将齿轮与腕部固定 
  
再将rotawrist3V2与其连接如上图。 
  
 
内部齿轮组安装如图所示 
  
腕部中轴安装,还是要注意线分布在中轴两侧。 
  
 
中轴另一端用扣子扣住。 
  
手掌与腕部安装完毕 
  
手臂前后片用AB胶水,粘接,为了使其粘接更为牢固可用夹子加以固定。 
  
6月8号 
  
  
  
  
  
  
物理电路连接图如下所示(使用5根弯曲传感器) 
  
代码编写:原理很简单通过5根弯曲传感器的弯曲度,将其映射为舵机的旋转角度。 
			
			
			- // Controlling a servo position using a potentiometer (variable resistor) 
 - // by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 
 - 
 - #include <Servo.h> 
 -   
 - Servo thumbservo,indexservo,middleservo,ringservo,littleservo;  // create servo object to control a servo 
 -   
 - int thumbpin = 0;  // analog pin for thumb connect the flex sensor
 - int indexpin = 1; // analog pin for index connect the flex sensor
 - int middlepin = 2; // analog pin for middle connect the flex sensor
 - int ringpin=3; // analog pin for ring connect the flex sensor
 - int littlepin=4; // analog pin for little connect the flex sensor
 - int val1,val2,val3,val4,val5;    // variable to read the value from the analog pin 
 -   
 - void setup() 
 - { 
 -    thumbservo.attach(5);  // attaches the servo on pin 5 for the thumb 
 -    indexservo.attach(6); // attaches the servo on pin 6 for index finger
 -    middleservo.attach(9); // attaches the servo on pin 9 for the middle finger
 -    ringservo.attach(10); // attaches the servo on pin 10 for the ring finger
 -    littleservo.attach(11); // attaches the servo on pin 11 for the little finger   
 -    
 - } 
 -   
 - void loop() 
 - { 
 -    val1 = analogRead(thumbpin);            // reads the value of the potentiometer (value between 0 and 1023) 
 -    val1= map(val1, 768, 853, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
 -    thumbservo.write(val1);   // sets the servo position according to the scaled value 
 -    
 -    val2 = analogRead(indexpin);            // reads the value of the potentiometer (value between 0 and 1023) 
 -    val2= map(val2, 768, 853, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
 -    indexservo.write(val2);   // sets the servo position according to the scaled value 
 -    
 -    val3 = analogRead(middlepin);            // reads the value of the potentiometer (value between 0 and 1023) 
 -    val3= map(val3, 768, 853, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
 -    middleservo.write(val3);   // sets the servo position according to the scaled value 
 -       
 -    val4 = analogRead(ringpin);            // reads the value of the potentiometer (value between 0 and 1023) 
 -    val4= map(val4, 768, 853, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
 -    ringservo.write(val4);   // sets the servo position according to the scaled value 
 -       
 -    val5 = analogRead(littlepin);            // reads the value of the potentiometer (value between 0 and 1023) 
 -    val5= map(val5, 768, 853, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
 -    littleservo.write(val5);   // sets the servo position according to the scaled value 
 -    delay(10);                           // waits for the servo to get there 
 - }
 
  复制代码 以上代码是联机版本。拓展应用: 
       无线连接版本 
 
 |