RotoKnitic v19.01: Difference between revisions
Jump to navigation
Jump to search
(→TODO) |
|||
Line 48: | Line 48: | ||
==Variable Profiles== | ==Variable Profiles== | ||
===CKvarsProfile_36in_201906.scad=== | |||
<nowiki> | |||
/////////////////// 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 | |||
/////////////////////////////////////////////// | |||
</nowiki> | |||
==CKvars.scad== | ==CKvars.scad== |
Revision as of 01:11, 12 August 2019
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
- Needles will rotate in the needle holder
- https://github.com/OpenSourceEcology/circular_knitic_pick-a-needle
Concept
Standard
Pick-a-Needle
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
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