RotoKnitic v19.01

From Open Source Ecology
Jump to navigation Jump to search

Using same parts and materials from OSE CircularKnitic v18.03, but switch mounting plates so that the mountain is stationary.

  • requires spinning spool for fabric output
  • allows for more multiple mountains and input threads

Design

Concept

Standard

RotoKnitic - Concept Drawing 20190102.png

google doc

Pick-a-Needle

OSE - RotoKnitic Pick-a-Needle - Concept Drawing 20190427.png

google doc

Goals

  • change direction
  • sock heels

Needle Accomidation

  • pick-a-needle, optionally raise needles to an inactive postion
  • Test laser cut needles, printed latch?
  • Test 3D printed needles

Fabric Spool

  • Apply constant tension on fabric
  • Roll onto spool for easy handling and storage


Provisional BOM

Part SCAD Code

Variable Profiles

CKvarsProfile_36in_201906.scad


///////////////////  USER SETTINGS  ///////////////////

/////////////
//  USING THIS FILE:
//  choose desired settings below
//  rename and save this file into the "SCAD" folder
//  for example CKvarsProfile-Small2019.scad
//  then open the file named CKvars.scad in the "SCAD" folder
//  find the "include" commands at the begining of the file
//  change this information to the new file's name, then save
//  you can now open then render each part file with these settings
/////////////

//File Notes - Large201903
// attempting to get near 45" 1100mm fabric width/circumference
// 

/////////////
// DIMENSIONS

//number of "p2" needle guides around circle                    //Jan2019  //small
UPp2number=30;                //12                //36  ///36   //12       //8

//number of needles mounted on each "p2" part
UPp2needles=5;                //5                 //10  ///5    //5        //7

//number of "p3" parts around circle
UPp3number=10;                 //4                 //18  ///4    //4        //2

//number of "p4" parts around circle
UPp4number=10;                 //4                 //18  ///4    //4        //2

//distance from the inside face of one needle to the next
UPneedle2needle=9.7;     //default=14.35615  //try 8.414    //13.5334  //9.25

//mountain settings
UPpMgrooveturnR=14; //radius of upper curved path in groove //14  //10
UPpMgrooveturnR2=7; //radius of lower curved path in groove //7
UPpMp3X=2.5;        //length of lower plateu of groove  //2.5   //2
UPpMp7X=3;          //half of length of top plateu of groove //3  //2

UPnumberMountain=6;

/////////////
// MATERIALS

//thread diameter
UPthreadD=2.5;

//number of stepper motors driving the geared plate
UPc1steppersnumber=UPnumberMountain;  

//laser cut part thickness
UPupper_surfaceH=5;  //thickness of upper rotating plate  ///5  //6.35= 1/4"inch
UPbottom_surface_motor_gearsH=5;  //thickness of geared rotating plate
UPtable_surface=10;        //thickness of plate of main table

UPtable_support=12.7;       //thickness of support board below table surface

//width of wood used to support table around the edges
UPwoodbeamW=25.4;           //table leg wood beam width  1.0 inch
UPwoodbeamScrewOD=6;     // M6 screw hole into wood beam

//thread feeder option
UPTF=1;    //  0=none  1=angle iron  2=makerbeam10mm

//angle iron option dimensions
UPaaX=12.7;      //width            //12.7    =  1/2in          
UPaaT=1.5875;    //thickness        //1.5875  = 1/16in

///////////////////////////////////////////////
 

CKvars.scad

Needles

2D Laser Cut Parts

3D Printed Parts

p4 "yarn holder"

include <CKvars.scad>;

CKp4();


module CKp4(){
    
    rez=p2number*p2needles*2;
    
    $fn=rez; //defines resolution of circles.
       
    translate([p4baseOD/2,0,0]){
        
    difference(){  
        union(){
    cylinder(h=p4baseH,d=p4baseOD-(p4basegapW*2)-((p4baseW-p4basegapW)/2*2));            
            
            //ramps
           
            
            for(i=[1:p2needles*(p2number/p4number)]){
        rotate([0,0,(360/p2number/p2needles)-(360/p2number/p2needles*i)-(((360/p2number/p2needles))/2)]){        
           

            
            difference(){
            minkowski(){
            union(){
            translate([-p4baseOD/2+p4rampfromOD,p4rampWm/2,p4rampH+p4baseH-(p4rampC1/2)])
            rotate([90,0,0])
            cylinder(h=p4rampWm,d=p4rampC1);
            
            intersection(){
            translate([-10,0,3.82])
            translate([-p4baseOD/2+p4rampfromOD,p4rampWm/2,p4rampH+p4baseH-(p4rampC2/2)])
            rotate([90,0,0])
            cylinder(h=p4rampWm,d=p4rampC2);
                
                            translate([-7,0,-2.86/2])
            translate([-p4baseOD/2+p4rampfromOD,p4rampWm/2,p4rampH+p4baseH-(p4rampC2/2)])
            cube([p4rampC2,p4rampC2,p4rampC2],center=true);
            
            }
        }//end union
        
difference(){
translate([-p4rampMinkD/2,0,0])
cylinder(d=p4rampMinkD,h=0.01, $fn=36);
translate([-p4rampMinkD,0,-0.01])
cube([p4rampMinkD,p4rampMinkD,0.02], center=true);    
} //end diff

} //end mink
        
       translate([-p4rampC2/2,0,0])
       translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC2/2)])
       cube([p4rampC2,p4rampC2,p4rampC2+1],center=true);
        
       translate([0,0,0])
       translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4baseH-(p4rampC2/2)-0.1])
      cube([p4rampC2,p4rampC2,p4rampC2],center=true);  
  
        
               translate([0,-p4clawW/2,0])
       translate([-(p4baseID/2)-p4rampfromID,0,p4baseH])
        cube([(p4baseID/2)+p4rampfromID,p4clawW,p4rampoverhangH]);
        
            translate([-7,0,0])
            translate([-p4baseOD/2+p4rampfromOD,(p4rampW/2)+(p4rampC2/2)-0.01,p4rampH+p4baseH-(p4rampC2/2)])
            cube([p4rampC2,p4rampC2,p4rampC2],center=true);
        
        translate([-7,0,0])
            translate([-p4baseOD/2+p4rampfromOD,-(p4rampW/2)-(p4rampC2/2)+0.01,p4rampH+p4baseH-(p4rampC2/2)])
            cube([p4rampC2,p4rampC2,p4rampC2],center=true);
        
        
    }//end ramps difference
    

    
} //end for rotate
    
} //end for


    
            //claws
            
        for(i=[1:p2needles*(p2number/p4number)]){
        rotate([0,0,(360/p2number/p2needles)-(360/p2number/p2needles*i)-(((360/p2number/p2needles))/2)]){
            hull(){
            translate([-p4baseOD/2,-p4clawW/2,0])
              #cube([(p4baseOD-p4baseID)/2,p4clawW,p4basegapH]);
            translate([-p4baseOD/2,-((p4rampW+p4clawWslanttop)/2),p4baseH-0.1])
              #cube([(p4baseOD-p4baseID)/2,p4rampW+p4clawWslanttop,0.1]);

            } //end hull
        }
    }//end for
            
        } //end main union
    cylinder(h=p4baseH,d=p4baseID);
    
    //simiple chamfer of inside corner    
    translate([0,0,p4baseH-0.5])
    cylinder(h=0.5,d1=p4baseID+0.5,d2=p4baseID+1.9);    
    translate([0,0,p4baseH-0.5-0.5])
    cylinder(h=0.5,d1=p4baseID,d2=p4baseID+0.5);    

        
    translate([-p4baseOD/2,-p4baseOD/2,0]){    
    cube([p4baseOD,p4baseOD/2,p4baseH]);
    }
    rotate([0,0,-360/p4number]){
    translate([-p4baseOD/2,0,0])    
    cube([p4baseOD,p4baseOD/2,p4baseH]);        
    }

difference(){
    cylinder(h=p4basegapH,d=p4basegapOD);  
    cylinder(h=p4basegapH,d=p4basegapID);    
}


//bolt holes        
            for(i=[0:(p2number/p4number)-1]){
         rotate([0,0,(-360/p2number/p2needles*0.5)+(i*-360/p2number)]){
             

if(p2p4type==1){
    translate([-(p4baseOD/2)+((p4baseOD-p4baseID)/2),0,p4holeH])
    rotate([0,270,0])
translate([0,0,0])
union(){
cylinder(d1=p2p4flatHD,d2=0,h=(p2p4flatHD/2)/tan(45),$fn=36);
translate([0,0,-(p2p4flatHD)/tan(45)])
cylinder(d1=p2p4flatHD*3,d2=p2p4flatHD,h=(p2p4flatHD)/tan(45),$fn=36);
cylinder(d=p2p4flatD,h=((p4baseOD-p4baseID)/2)+2,$fn=36);
}//end union
}//end if
if(p2p4type==0){
    translate([-(p4baseOD/2)+((p4baseOD-p4baseID)/2),0,p4holeH])
    rotate([0,270,0])
translate([0,0,0])
union(){
translate([0,0,-p2p4boltHH/2])
cylinder(d=p2p4boltHD,h=p2p4boltHH,$fn=36);
cylinder(d=p2p4boltD,h=((p4baseOD-p4baseID)/2)+2,$fn=36);
}//end union
}//end if


}
}

//second set
       for(i=[0:(p2number/p3number)-1]){
        rotate([0,0,-(360/p2number/p2needles*0.5)+(360/p2number/p2needles)+(i*-360/p2number)+(-360/p2number)]){
 
if(p2p4type==1){  // if flat socket
    translate([-(p4baseOD/2)+((p4baseOD-p4baseID)/2),0,p4holeH])
    rotate([0,270,0])
translate([0,0,0])
union(){
cylinder(d1=p2p4flatHD,d2=0,h=(p2p4flatHD/2)/tan(45),$fn=36);
translate([0,0,-(p2p4flatHD)/tan(45)])
cylinder(d1=p2p4flatHD*3,d2=p2p4flatHD,h=(p2p4flatHD)/tan(45),$fn=36);
cylinder(d=p2p4flatD,h=((p4baseOD-p4baseID)/2)+2,$fn=36);
}//end union
}//end if
if(p2p4type==0){  // if regular socket
    translate([-(p4baseOD/2)+((p4baseOD-p4baseID)/2),0,p4holeH])
    rotate([0,270,0])
translate([0,0,0])
union(){
translate([0,0,-p2p4boltHH/2])
cylinder(d=p2p4boltHD,h=p2p4boltHH,$fn=36);
cylinder(d=p2p4boltD,h=((p4baseOD-p4baseID)/2)+2,$fn=36);
}//end union
}//end if

} //end rotate
} //end for
//end mounting holes
 
    //trim end       
    if(p4number>1){
    rotate([0,0,-(360/(p4baseOD*PI/p4endtrim))])
 mirror([1,1,0])
 cube([p4baseOD/2,p4baseOD/2,p4rampH+p4baseH]);   
    
}
    
    
    } //end main difference
} //end main translate
    
    
} //end module
 

Parts

Pontiac Coil L-09

Pontiaccoil.png


PCL90();

module PCL90(){
    
x=36.576;
y=41.402;
z=51.308;

topz=28.448;  ///distance from base to center of top mount hole
top2stroke0=42.7482;
top2stroke1=68.1482;  
plungerholeD=2.4384;
plungercutZ=9.652;
plungercutY=3.556;    
plungertop2c=3.9624;

holeOD=4.1656;
botz=topz-12.7;

D=12.7;

difference(){
    union(){
cube([x,y,z]);
translate([x/2,y/2,topz])
    difference(){
cylinder(d=D,h=top2stroke0+plungertop2c);
translate([0,D/2,top2stroke0])
rotate([90,0,0])     
#cylinder(d=plungerholeD,h=D);     
translate([-D/2,-plungercutY/2,top2stroke0+plungertop2c-plungercutZ])
#cube([D,plungercutY,plungercutZ]);       
    }
}
translate([23.7998/2,0,0]){
translate([x/2,y,topz])
    rotate([90,0,0])
cylinder(d=holeOD,h=y);

translate([x/2,y,botz])
    rotate([90,0,0])
cylinder(d=holeOD,h=y);
}
translate([-23.7998/2,0,0]){
translate([x/2,y,topz])
    rotate([90,0,0])
cylinder(d=holeOD,h=y);

translate([x/2,y,botz])
    rotate([90,0,0])
cylinder(d=holeOD,h=y);
}


}//end main diff    
    
    
}//end module
 

Full Assembly

BOM

TODO

  • remove p8 plate connector under mountain
    • put hole for makerbeam on plate below
  • breakup tabletop plate into multiple pieces to make max size smaller
  • could make all cut plates hexagons except for geared plate.
    • could make geared a little larger if move support spacer to bridge stepper gear
  • tweak outiside diameter values to remove p9
    • change p9 to a simple p8 variant near steppers
    • could just set p9 thickness to zero for now

Links

https://www.thingiverse.com/thing:2072364/files