소스 검색

Improve arm design

iss17/08_feature_implementation_02
Wouter Horlings 5 년 전
부모
커밋
5d1942ba86
5개의 변경된 파일246개의 추가작업 그리고 31개의 파일을 삭제
  1. +1
    -0
      implementation/SCARA/hardware/openSCAD/.gitignore
  2. +139
    -27
      implementation/SCARA/hardware/openSCAD/carriage.scad
  3. +48
    -0
      implementation/SCARA/hardware/openSCAD/sg90.scad
  4. +40
    -4
      implementation/SCARA/hardware/openSCAD/stepper.scad
  5. +18
    -0
      implementation/SCARA/hardware/openSCAD/steppertester.scad

+ 1
- 0
implementation/SCARA/hardware/openSCAD/.gitignore 파일 보기

@@ -0,0 +1 @@
*.stl

+ 139
- 27
implementation/SCARA/hardware/openSCAD/carriage.scad 파일 보기

@@ -2,6 +2,7 @@ use <stepper.scad>
use <arm.scad>
use <marker.scad>
use <electronics.scad>
use <sg90.scad>
//module arm(holes, width, thinkness, bore){


@@ -17,39 +18,150 @@ b = acos((arm1_sq + length_sq - arm2_sq)/(2 * arm1 * length));
c = acos((arm1_sq - length_sq + arm2_sq)/(2 * arm1 * arm2));
angle1 = b + atan2(y,x) - 90;
angle2 = angle1 - 90 + c;
stepper_spaceing = 45;
stepper_spaceing = 47;
stepper_offset = 55;
arm_thickness = 3;
arm_width = 10;
arm_offset = 15;

%translate([stepper_offset,0,0]) {
// stepper on joint C
rotate([0,90,0]) stepper_103H5205();
// stepper on joint A
translate([0,stepper_spaceing,0]) rotate([0,90,0]) stepper_103H5205();
bus_diameter = 3 + arm_width;
shaft_bore = 5.15;
joint_bore = 3.2;
joint_spacing = arm_thickness+1;
set_screw_bore = 2.5;

$fn = $preview? 32 : 72;

module arm3 (){
difference(){
union(){
translate([0,0,-arm_thickness/2])cylinder(d=bus_diameter,h=10-arm_thickness/2);
arm([0,25],arm_width,arm_thickness,joint_bore);
}
cylinder(d=shaft_bore,h=16,center=true);
rotate([0,-90,0]){
rotate([45,0,0]) translate([arm_thickness,0,0]) cylinder(d=set_screw_bore,h=20);
rotate([-45,0,0]) translate([arm_thickness,0,0]) cylinder(d=set_screw_bore,h=20);
}
}
}

module arm0 (){
difference(){
union(){
cylinder(d=bus_diameter,h=20,center=true);
arm([0,25],arm_width,arm_thickness,joint_bore);
}
cylinder(d=shaft_bore,h=21,center=true);
rotate([0,-90,0]){
translate([5,0,0]) cylinder(d=set_screw_bore,h=20);
translate([-5,0,0]) cylinder(d=set_screw_bore,h=20);
}
}
}
module arm5a(){
rotate([90, 0, 90]) arm([25,0,50],arm_width,arm_thickness,joint_bore);
}

module arm5b(){
arm5a();
difference(){
translate([-arm_thickness/2-2.5,35,-14]) rotate([0,0,180]) {sg90_bracket();
// sg90(-90);
}
translate([0,25,0]) rotate([0,90,0]) cylinder(d=7,h=10,center=true);
}
}

module arm5(){
translate([joint_spacing,0,0]) arm5a();
translate([-joint_spacing,0,0]) arm5b();
translate([0,50,0]) difference() {cube([arm_thickness+2*joint_spacing,10,arm_width], center=true);
cylinder(d=joint_bore,h=40,center=true);
}
}

module arm6a(){
union(){
rotate([0,0,90]) arm([0,30-arm_width/2],arm_width,arm_thickness,joint_bore);
translate([0,30-arm_width/2,0]) cube([arm_width,arm_width,arm_thickness],center=true); //cylinder(h=arm_thickness,d=arm_width,center=true);
}
}

module arm6b(){
difference() {
length = 29;
hull() {
cylinder(h=arm_thickness, d=arm_width,center=true);
translate([0,length,0]) cylinder(h=arm_thickness, d=5, center=true);
}
cylinder(h=arm_thickness+1, d=joint_bore,center=true);
translate([0,length,0]) cylinder(h=arm_thickness+1, d=2, center=true);
}
}

module arm6(){
arm_offset = 5+arm_thickness/2+1;
difference(){
union(){
translate([0,0,arm_offset]) arm6a();
translate([0,0,arm_offset]) rotate([0,0,90]) arm6b();
translate([0,0,-arm_offset]) arm6a();
translate([0,30,0]) {
translate([-20+arm_width/2,0,0]) rotate([0,90,0]) cylinder(d=18,h=20);
translate([-5,0,0]) {
rotate([-45,0,0]) cylinder(d=7,h=11);
rotate([-135,0,0]) cylinder(d=7,h=11);
}
}
}
translate([0,30,0]){
translate([-20+arm_width/2-1,0,0])rotate([0,90,0]) cylinder(d=14.9,h=22);
translate([-5,0,0]) {
rotate([-45,0,0]) cylinder(d=set_screw_bore,h=40);
rotate([-135,0,0]) cylinder(d=set_screw_bore,h=40);
}
}
}

}

//!arm6();

translate([stepper_offset,0,0]) {
// stepper on joint C
rotate([-90,0,-90]) stepper_103H5205();
// stepper on joint A
translate([0,stepper_spaceing,0]) rotate([90,0,90]) stepper_103H5205();

translate([arm_offset,0,0]){
translate([0,stepper_spaceing,0]) rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25],arm_width,arm_thickness,5);

//arm0
translate([0,stepper_spaceing,0]) rotate([angle1,0,0]) rotate([0,90,0]) arm0();//([0,-25],arm_width,arm_thickness,5);
//arm1
rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25,arm1],arm_width,arm_thickness,5);
rotate([angle1,0,0]) rotate([0,-90,0])
difference(){
arm([0,-25,arm1],arm_width,arm_thickness,joint_bore);
cylinder(d=shaft_bore, h= 10, center=true);
}

//arm2
translate([3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5);
translate([-3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5);
translate([3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,joint_bore);
translate([-3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,joint_bore);

//arm3
rotate([angle2,0,0]){
translate([3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5);
translate([-3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5);
translate([3,0,0]) rotate([-90,0,-90]) arm3(); //([0,25],arm_width,arm_thickness,5);
translate([-3,0,0]) rotate([90,0,-90]) arm3(); //arm([0,25],arm_width,arm_thickness,5);
translate([0,-25,0]) rotate([angle1-angle2,0,0]) {
// arm4
rotate([0,-90,0]) arm([0,arm1],arm_width,arm_thickness,5);
translate([0,0,arm1]) rotate([angle2-angle1,0,0]) {
translate([3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5);
translate([-3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5);
translate([-stepper_offset-arm_offset,arm2+25]) rotate([0,90,0]) marker(0);
rotate([0,-90,0]) arm([0,arm1],arm_width,arm_thickness,joint_bore);
translate([0,0,arm1]) rotate([angle2-angle1,0,0]) rotate([0,0,0]) {
arm5();
translate([-stepper_offset-arm_offset,arm2+25]) rotate([0,90,0]) marker("red");
translate([0,50,0]){
arm6();
}
}
}
}
@@ -57,18 +169,18 @@ arm_offset = 15;
}

// electronics
translate([20,80,-10]) rotate([-0,-90,0]){
color("olive") translate([-12,-2,5]) cube([40,61,1]);
stepper_controller();
translate([0,25.4,0]) stepper_controller();
translate([40,0,-60]) rotate([-0,-90,0]){
color("olive") translate([-12,-2,5]) cube([40,61,1]);
translate([20,5,0])
rotate([0,0,90]) {
stepper_controller();
translate([30.4,0,0]) stepper_controller();
}
}

//carriage
translate([stepper_offset,0,0])
rotate([0,90,0]) {
stepper_103H5205_mount();
translate([0,stepper_spaceing,0]) stepper_103H5205_mount();
stepper_103H5205_bracket();
translate([0,stepper_spaceing,0]) stepper_103H5205_bracket();
}




+ 48
- 0
implementation/SCARA/hardware/openSCAD/sg90.scad 파일 보기

@@ -0,0 +1,48 @@

sg90_length = 22.2;
sg90_width = 11.8;
sg90_flange_pos = 15.9;
sg90_flange_thinkness = 2.5;
sg90_flange_length = 5;
sg90_flange_hole_pos = 2.7;
sg90_flange_hole_bore = 2;

module sg90(rot){
translate([0,0,-sg90_flange_pos+7]) {
color("steelblue") import("SG90_v7.stl");
translate([5.9,16.3,32]) rotate([0,180,rot]) import("SG90_arm_v2.stl");
}
}

module sg90_bracket_halve(){
thinkness = 5;
translate([0,0,-thinkness]) difference(){
cube([sg90_width,sg90_flange_length,thinkness]);
translate([sg90_width/2,sg90_flange_hole_pos,-1]) cylinder(d=sg90_flange_hole_bore,h=thinkness+2);
}
}

module sg90_bracket(){
hull(){
translate([-2,-2,0]) cube([2,27,13]);
translate([-5,-2,8]) cube([5,27,5]);
}
translate([-2,-2,0]) cube([16,2,7]);
translate([-2,23,0]) cube([16,2,7]);
translate([-2,23,9.5]) cube([4,2,3.5]);
translate([-2,-2,9.5]) cube([4,2,3.5]);

difference(){
translate([12.5,-2,0]) cube([1.5,27,7]);
translate([17,11.5,4]) rotate([0,0,45]) cube([20,20,10],center=true);
}
//import("servo-halter-sg90-1.stl");
}
/* translate([0,0,sg90_flange_pos]) {
translate([0,-sg90_flange_length,0]) sg90_bracket_halve();
translate([0,sg90_length,0]) sg90_bracket_halve();
}*/


//sg90(90);
sg90_bracket();

+ 40
- 4
implementation/SCARA/hardware/openSCAD/stepper.scad 파일 보기

@@ -44,24 +44,60 @@ module four_cylinder(distance,height,radius){
}
}

stepper_103H5205();
translate([0,0,0.2]) stepper_103H5205_mount();
rotate([0,0,90]) stepper_103H5205();
translate([0,0,0.2]) stepper_103H5205_bracket();

module stepper_103H5205_mount() {
body_width = 42;
body_width = 43;
flange_diameter = 22;
hole_seperation = 31;
hole_bore = 3;
hole_bore = 4;
hole_depth = 4;
corner_radius = 5;
bracket_thickness = 4;

difference(){
hull(){
body(length=bracket_thickness, width=body_width, corner_radius = corner_radius);
}
translate([0,0,-0.5]) four_cylinder(hole_seperation/2,bracket_thickness+1,hole_bore/2);
translate([0,0,-0.5]) cylinder(h=bracket_thickness+1,d=flange_diameter+1);
}
}

module stepper_103H5205_bracket() {
body_width = 43;
flange_diameter = 22;
hole_seperation = 31;
hole_bore = 4;
hole_depth = 4;
corner_radius = 5;
bracket_thickness = 4;

difference(){
hull(){
body(length=bracket_thickness, width=body_width, corner_radius = corner_radius);
translate([body_width/2-5,0,bracket_thickness/2])
cube([10,body_width,bracket_thickness],center=true);
}
translate([0,0,-0.5]) four_cylinder(hole_seperation/2,bracket_thickness+1,hole_bore/2);
translate([0,0,-0.5]) cylinder(h=bracket_thickness+1,d=flange_diameter+1);
}
mount_side(body_width, bracket_thickness);
mirror([0,1,0])
mount_side(body_width, bracket_thickness);
translate([body_width/2, -(body_width/2+bracket_thickness) ,-body_width*0.7+bracket_thickness])
cube([bracket_thickness,bracket_thickness*2+body_width,body_width*0.7]);
}

module mount_side(body_width, bracket_thickness) {
translate([body_width/2 - body_width *0.7, body_width/2, bracket_thickness- body_width *0.7])
difference(){
cube([body_width*0.7,bracket_thickness,body_width*0.7]);
rotate([90,0,0])
cylinder(h=bracket_thickness*2.5,r=body_width*0.7-bracket_thickness,center=true);
}
}



+ 18
- 0
implementation/SCARA/hardware/openSCAD/steppertester.scad 파일 보기

@@ -0,0 +1,18 @@
use <stepper.scad>
$fn = $preview? 32 : 72;

stepper_103H5205();
translate([0,0,50]) rotate([180,0,0]) stepper_103H5205();
union(){
translate([0,0,4]) rotate([180,0,0]) stepper_103H5205_bracket();
translate([0,0,46]) stepper_103H5205_bracket();
}

translate([0,0,25]) difference(){
cylinder(h=30,d=12,center=true);
cylinder(h=32,d=5,center=true);
rotate([90,0,0]) {
translate([0,8,0]) cylinder(h=32,d=3);
translate([0,-8,0]) cylinder(h=32,d=3);
}
}

불러오는 중...
취소
저장