X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=728ba69d23318f8b9ccb0cb48db5601c87b928bc;hp=fcad8314064dcc276b48291e0ea455a43d5b399e;hb=388bd0288542fa384387dd1829aaa69fa7580172;hpb=79acd1db649b3d59737633e5893493ef4b78b1e2 diff --git a/filamentspool.scad b/filamentspool.scad index fcad831..728ba69 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -30,8 +30,10 @@ // // This file (and its includes) can generate: // -// - Heavy duty 4-armed spool suitable for holding a 100m -// Faberdashery coil on the spool arm of a Lulzbot TAZ-5. +// ===== Heavy duty 4-armed spool for 3mm x 100m coil ===== +// +// A heavy duty 4-armed spool suitable for holding a 100m +// Faberdashery coil on the spool arm of a Lulzbot TAZ-5. // // Set // fdia=2.85 @@ -40,12 +42,14 @@ // Hub // ArmEnd x 4 // FilamentCup x 4 (or FilamentCupPair x 2) -// CupSecuringClup x 4 +// CupSecuringClip x 4 // // You will also need 4 x M4 machine screws and nuts. // -// - Light duty 3-armed spool suitable for up to around 30m -// of Faberdashery 2.85mm PLA. +// ===== Light duty 3-armed spool for 3mm x <=30m coil ===== +// +// A light duty 3-armed spool suitable for up to around 30m +// of Faberdashery 2.85mm PLA. // // Set // fdia=2.85 @@ -54,7 +58,7 @@ // Hub // ArmEnd x 3 // FilamentCup x 3 (or FilamentCup + FilamentCupPair) -// CupSecuringClup x 3 +// CupSecuringClip x 3 // TowerDoveClipPin x 6 // // When assembling, insert one TowerDoveClipPin from each side, @@ -64,6 +68,8 @@ // (note that the light duty and heavy duty CupSecuringClips // are slightly different) // +// ===== Notes regarding both the above spools ===== +// // When mounting either spool on the TAZ-5 spool arm, put the `pointy' // end of the hub towards the printer - ie, put put the spool on // `backwards'. This ensures that the spool's arms will clear the @@ -71,9 +77,44 @@ // // For the above, I generally used the Cura `Standard' PLA profile. // -// - Storage arm suitable for screwing to walls, bookshelves, -// etc. (requires non-countersunk M4 screws); will hold two -// heavy duty spools each with a 100m coil. +// ===== TAZ-5 feed tube adjustment kit ===== +// +// With a TAZ-5 I recommend using this kit to improve the feed +// reliability: +// +// Set +// fdia=2.85 +// And print following parts +// FilamentGuideSpacer (ideally, at `high detail') +// FilamentGuideArmPrint (optional; `high detail' or `standard') +// +// And possibly also +// t-nut_jig_0.2.stl +// from Aleph Objects - look here: +// http://download.lulzbot.com/TAZ/accessories/tool_heads/version_2/Dual_Extruder_v2/production_parts/stl/ +// +// The spacer clips onto the filament guide tube holder arm, on the +// inside, with the pointy flanged end towards the filament guide +// tube. It stops the filament guide tube angle (and so the +// filament's natural pickup location) changing as the print head moves. +// +// The FilamentGuideArm[Print] is a replacement for the arm supplied +// with your TAZ-5. It's longer, so that the filament pickup point is +// closer to the middle of the coil. Use the t-nut_jig to stop the +// T-nuts in the aluminium channel from annoyingly sliding down to the +// bottom while you swap out the arm. +// +// (Faberdashery coils, and therefore both the above spools, have a +// larger diameter than the flat-walled spools often supplied by other +// vendors. And the spools above have individual arms rather than a +// continuous disc. If the filament `unhooks' from the arm, it can +// pull taught around the hub and stop feeding properly.) +// +// ===== Spool storage arm, for mounting on walls ===== +// +// A storage arm suitable for screwing to walls, bookshelves, +// etc. (requires non-countersunk M4 screws); will hold two heavy duty +// spools each with a 100m coil. // // Set // fdia=2.85 @@ -88,8 +129,10 @@ // For the above, I used the Cura `High detail' PLA profile because // I wanted it pretty, but the `Standard' profile should do fine. // -// - Spool (in many parts) for handing 1.75mm filament, printable -// on, and with parts for mounting on, a Reprappro Huxley. +// ===== Spools for 1.75mm filament ===== +// +// Spool (in many parts) for handing 1.75mm filament, printable +// on, and with parts for mounting on, a Reprappro Huxley. fdia=2.85; // or 1.75 @@ -676,6 +719,184 @@ module StorArmHoleTest(){ ////toplevel } +//----- filament guide spacer ----- + +guide_armdia = 15.0; +guide_armwidth = 10.2; +guide_armcorelen = 25.0; +guide_clipcirclethick = 10.0; + +guidefilclip_outerdia = 22.8; + +guidespacer_armslop = 0.75; +guidespacer_armlenslop = 1.05; + +guidespacer_prongprotrude = 4; +guidespacer_thick = 1.6; + +// calculated + +guidespacer_armdia = guide_armdia + guidespacer_armslop; +guidespacer_armwidth = guide_armwidth + guidespacer_armslop; +guidespacer_len = guide_armcorelen - guide_clipcirclethick + + guidespacer_armlenslop; + +guidespacer_wingheight = (guidefilclip_outerdia - guidespacer_armdia)/2; + +module FilamentGuideArmTemplate(extra=0){ + intersection(){ + circle(r= (guidespacer_armdia/2) + extra); + square(center=true, [guidespacer_armwidth+extra*2, + guidespacer_armdia + extra*2 + 10]); + } +} + +module FilamentGuideSpacerInnerTemplate(){ + FilamentGuideArmTemplate(); + translate([0, -guidespacer_armdia/2]) + square(center=true, [guidespacer_armwidth - guidespacer_prongprotrude, + guidespacer_armdia]); +} + +module FilamentGuideSpacer(){ ////toplevel + difference(){ + union(){ + linear_extrude(height= guidespacer_len) + FilamentGuideArmTemplate(extra= guidespacer_thick); + for (angle=[26, 60]) { + for (m=[0,1]) { + mirror([m,0,0]) { + rotate([0,0,angle]) { + hull(){ + for (t=[[0, guidespacer_wingheight], + [guidespacer_len-1, -guidespacer_wingheight]]) + translate([0,0, t[0] + 0.5]) + cube([guidespacer_thick, guidespacer_armdia + t[1]*2, + 1], + center=true); + } + } + } + } + } + } + translate([0,0,-1]) + linear_extrude(height= guidespacer_len+5) + FilamentGuideSpacerInnerTemplate(); + } +} + + +//----- replacement filament guide arm for TAZ-5 ----- + +guidearm_armslop = 0.25; +guidearm_armlenslop = 0.25; + +guidearm_hookprotr = 3; +guidearm_hookprotrflat = 1; +guidearm_hookslope = 0.3; + +guidearm_totallen = 60; + +guidearm_screwplatesz = 12; +guidearm_screwplateth = 4; +guidearm_screwplatewd = 15; +guidearm_screwhole = 5 + 0.5; + +guidearm_bendlen = 40; +guidearm_bendslot = 4.5; + +guidearm_stopthick = 4; +guidearm_protrslop = 1.0; + +// calculated + +guidearm_armdia = guide_armdia - guidearm_armslop; +guidearm_armwidth = guide_armwidth - guidearm_armslop; +guidearm_armcorelen = guide_armcorelen + guidearm_armlenslop; + +guidearm_base_z0 = -(guidearm_totallen - guidearm_armcorelen); + +guidearm_realbendlen = min(guidearm_bendlen, + guidearm_totallen - guidearm_screwplateth - 0.1); +guidearm_slopelen = guidearm_hookprotr/guidearm_hookslope; + +module FilamentGuideArmStop(h){ + for (ts=[-1,+1]) { + translate([ts * guidearm_hookprotr, 0,0]) + cylinder(r=guidearm_armdia/2, h, $fn=80); + } +} + +module FilamentGuideArmShaftPositive(){ + r = guidearm_armdia/2; + + translate([0,0, guidearm_base_z0+1]) + cylinder(r=r, h= guidearm_totallen, $fn=80); + translate([0,0, guidearm_armcorelen]){ + hull(){ + FilamentGuideArmStop(guidearm_hookprotrflat); + translate([0,0, guidearm_slopelen]) + cylinder(r=r, h=guidearm_hookprotrflat, $fn=80); + } + } + mirror([0,0,1]) + FilamentGuideArmStop(guidearm_stopthick); +} + +module FilamentGuideArmBase(){ + translate([0, + (guidearm_screwplatewd - guidearm_armwidth)/2, + guidearm_base_z0]){ + difference(){ + translate([0,0, guidearm_screwplateth/2]) + cube(center=true, + [guidearm_armdia + guidearm_screwplatesz*2, + guidearm_screwplatewd, + guidearm_screwplateth]); + for (ts=[-1,+1]) { + translate([ts * (guidearm_armdia/2 + guidearm_screwplatesz/2), + 0, + -20]) + cylinder(r= guidearm_screwhole/2, h=40, $fn=20); + } + } + } +} + +module FilamentGuideArm(){ ///toplevel + intersection(){ + difference(){ + FilamentGuideArmShaftPositive(); + translate([-guidearm_bendslot/2, + -50, + -guidearm_realbendlen + guidearm_armcorelen]) + cube([guidearm_bendslot, + 100, + guidearm_realbendlen + 100]); + hull(){ + for (zx=[ [ 0, guidearm_bendslot ], + [ guidearm_armcorelen + guidearm_slopelen, + guidearm_hookprotr*2 + guidearm_protrslop ] + ]) { + translate([-zx[1]/2, -50, zx[0]]) + cube([zx[1], 100, 1]); + } + } + } + cube(center=true, + [guidearm_armdia*2, + guidearm_armwidth, + guidearm_totallen*3]); + } + FilamentGuideArmBase(); +} + +module FilamentGuideArmPrint(){ ////toplevel + rotate([90,0,0]) + FilamentGuideArm(); +} + module Demo(){ translate([-hubeffrad-30,50,0]) Hub(); ArmEnd(); @@ -694,4 +915,7 @@ module Demo(){ //AxleFrictionWasher(); //StorageArmLeft(); //StorArmHoleTest(); +//FilamentGuideSpacer(); +//FilamentGuideArm(); +//FilamentGuideArmPrint(); //Demo();