<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="sodnpoo.xsl" type="text/xsl"?>
<xml page="/?x=&amp;n=&amp;t=wanhao%20duplicator%20i3"><a href="http://sodnpoo.com/?x=html">HTML version</a><post>
  <tag value="wanhao duplicator i3"/>
  <tag value="scad"/>
  <title>wanhao small spoolholder</title>
  <date>27 Nov 2016</date>
  <p>
  </p>
  <image src="/posts.assets/wanhao_small_spoolholder3.jpg"/>
  <p>
I needed a smaller spool holder for a 500 gram spool of filament, so I've hacked together this. The hard work generating the screw thread is done by <a href="http://www.thingiverse.com/thing:8796">aubenc's polyScrewThread.scad</a>.
  </p>
  <image src="/posts.assets/wanhao_small_spoolholder2.jpg"/>
  <p>
It uses the same M30 nuts the stock Wanhao spool holder uses.
  </p>
  <image src="/posts.assets/wanhao_small_spoolholder1.jpg"/>
  <p>
Printed vertically, 40% in-fill seems to be strong enough.
  </p>
  <image src="/posts.assets/wanhao_small_spoolholder4.png"/>
  <p>
  </p>
  <pre>
$fn = 0;
$fs = 0.1; // HQ cylinders
$fa = 4; // HQ spheres/hulls

include &lt;polyScrewThread.scad&gt;

PI=3.141592;

fat_diam = 30;
fat_r = fat_diam/2;
stop_length = 5;
screw_length = 20;

poke_length = 80;
poke_diam = 10;
poke_r = poke_diam/2;
poke_end = 2;
poke_overhang = 2;

screw_thread(fat_diam, 1.7, 30, screw_length, PI/2, 0);

translate([0, 0, screw_length])
    cylinder(stop_length, fat_r, fat_r);

translate([0, 0, screw_length+stop_length]){
    cylinder(poke_length, poke_r, poke_r);
    
    cylinder(stop_length, fat_r, poke_r);
}

translate([0, 0, screw_length+stop_length+poke_length]){
    cylinder(poke_end, poke_r, poke_r+poke_overhang);

    translate([0, 0, poke_end])
        cylinder(poke_end, poke_r+poke_overhang, poke_r);
}
  </pre>
  <p>
  </p>
</post><post>
  <tag value="wanhao duplicator i3"/>
  <tag value="scad"/>
  <title>wanhao aluminum extruder adaptor</title>
  <date>30 Oct 2016</date>
  <p>
  </p>
  <image src="/posts.assets/wanhao_aluminum_extruder_1.jpg"/>
  <p>
After a fair amount of printing, the extruder in our cheap Wanhao Duplicator i3 started to fail. The plastic arm and spring were no longer applying enough pressure on the filament and was unable to grip it properly. I tried printing <a href="http://www.thingiverse.com/thing:1516255">an adjustable arm</a> but I had some issues with the grooved bearing not turning freely, which was causing the motor to slip.
  </p>

  <p>
While browsing through extruder parts on Amazon, I noticed <a href="https://www.amazon.co.uk/gp/product/B019XXYHOO">this cheap aluminum extruder</a>. I wasn't properly paying attention when I ordered it and I didn't notice that the cooling block on the printer would be conflicting with the new extruder. Unfortunately the block on the new extruder has a threaded hole, rather than the grub screw used on the Wanhao and so I couldn't easily change the block over either.
  </p>
  <p>
After a bit of messing in openscad, I've created a simple adaptor - it's real job is just to stop the spring from sliding out. 
  </p>
  <image src="/posts.assets/wanhao_aluminum_extruder_2.png"/>
  <p>
The new arm - along with the higher quality grooved bearing that came with it - works well and print quality has improved noticeably.
  </p>
  <image src="/posts.assets/wanhao_aluminum_extruder_3.jpg"/>
  <pre>
$fn = 0;
$fs = 0.1; // HQ cylinders
$fa = 4; // HQ spheres/hulls


block_width = 15 - 0.5;
block_height = 10;

arm_width = 12;

plate_depth = 42;
plate_height = 42;
plate_width = block_width - arm_width;

rotor_hole = 23;

motor_screw_hole = 3.5 + 0.5;
motor_screw_head_depth = 2 - 0.5;
motor_screw_head = 6;
motor_screw_hole_spacing = 31.5;

spring_holder_offset = 9;
spring_holder_offset2 = 1.5;
spring_holder_height = 10;
spring_holder_depth = spring_holder_offset * 2;
spring_holder_bottom = 2;

spring = 7.5 + 0.5;
spring_length = 19;

difference(){
    union(){
        cube([plate_depth, plate_width, plate_height], center=true);

        translate([0+(plate_depth/2)-(spring_holder_offset), 0-(block_width/2)+(plate_width/2), 0-(plate_height/2)+(block_height)+(spring_holder_height/2)]){

            difference(){
                cube([spring_holder_depth, block_width, spring_holder_height], center=true);
                translate([0, 0-spring_holder_offset2, 0-(spring_holder_height/2)+spring_holder_bottom])
                    rotate([0, -5, 0])
                        cylinder(spring_length, spring/2, spring/2);
            }
        }
    }
    rotate([90, 0, 0]){
        cylinder(100, rotor_hole/2, rotor_hole/2, center=true);

        translate([motor_screw_hole_spacing/2, motor_screw_hole_spacing/2, 0]){
            cylinder(100, motor_screw_hole/2, motor_screw_hole/2, center=true);
            
            translate([ 0, 0, 0+ (plate_width/2) + (10/2) - motor_screw_head_depth ])
                cylinder(10, motor_screw_head/2, motor_screw_head/2, center=true);
        }
        
        translate([0-(motor_screw_hole_spacing/2), motor_screw_hole_spacing/2, 0])
            cylinder(100, motor_screw_hole/2, motor_screw_hole/2, center=true);

    }
    
    translate([0, 0, 0-(plate_height/2)])
        cube([plate_depth*2, 50, block_height*2], center=true);
}
  </pre>
  <p>
  </p>
</post></xml>
