Welcome! Log In Create A New Profile

Advanced

Frustrating lack of a fan duct: "Sturdy" + E3D-V6

Posted by Rich K. 
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 12, 2015 03:29PM
Quote
nophead
Just pushed an E3D branch to Github. Select that branch and then either download the zip or navigate to the STLs and download them individually.

The wades block, fan duct and fan bracket are all different. As the machine is built around the extruder the knock on effect is to make it slightly taller, which affects the sheets and the spool holder slightly. Those changes are only relevant if you are building a new machine from scratch with an E3D hot end. Otherwise you lose a few mm from Z. Only 3mm I think with V6 and the new wades block that loses the extension piece that is there for J-Head MK5.

Took a bit longer for me to get to it than I had expected. Only problem seems to be, the opening for the hotend needs to be larger in diameter so that it will clear the wires for the heater cartridge. Right now, those wires touch the sides of the opening, which (a) could cause a melting problem with the duct, due to heat transfer, and (b) forces the duct to angle down instead of sitting level (and I am sure since the pressure would also push on the hotend, it would likely cause problems with printing as well). What lines in OpenSCAD need to be changed to adjust this?

Edited 1 time(s). Last edit at 04/12/2015 03:29PM by Rich K..
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 13, 2015 11:28AM
The first 15 on this line: [github.com]

I.e. the 11th parameter which is hot_end_duct_radius.


[www.hydraraptor.blogspot.com]
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 13, 2015 06:04PM
Okay, when I try to get it to compile the "hot ends" file so I can see what I am looking at, I get this:

"ERROR: CSG generation failed! (no top level object found)"

Not even really sure what exactly I am supposed to change, and to what, and how to get it to render for a "sturdy" model. It's all gobbledygook to me, I'm afraid - nothing makes sense... confused smiley
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 13, 2015 07:21PM
After making the change open scad/x-carriage.scad in OpenScad and press F5 to see if it looks OK.

To make the STL type
python stls.py sturdy x_carriage.stl
The file will end up in the sturdy/stls directory.

This is assuming you have Python and OpenScad installed and you have the OpenScad program directory in your search path.


[www.hydraraptor.blogspot.com]
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 13, 2015 08:02PM
Looking at a cutaway of the model there seems to be plenty of clearance already and presumably there was for philfifi, who designed it. Is your hot end different?




[www.hydraraptor.blogspot.com]
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 13, 2015 08:27PM
It looks like his wires are oriented 90 degrees from the way mine are oriented. I have mine the way they are - coming out at the front of the machine - because it seemed a better way to route them (around the front side of the extruder block, then under the D-connector and from there up and over to the screw terminals).

And again, I'm not even really sure what EXACTLY I am supposed to change, and TO what. Am I supposed to change this:

"function hot_end_duct_radius(type) = type[10];" ?

And if so, what IN that line am I supposed to change the value on?

Where do I enter the Python command? Is there a command line in OpenSCAD?

Edited 1 time(s). Last edit at 04/13/2015 08:32PM by Rich K..
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 14, 2015 05:36AM
The line I pointed you to is the one that needs changing. It is a list of properties of the e3dv6 hot end. The first "15" on that line, which I have coloured red below, is the radius of the fan duct to use for that hot end.

e3dv6 = [e3d,  "E3D V6 3mm direct",   62, 3.7,  16,  42.7, "lightgrey",  12,  true,  6,   15, [1, 5, -4], 15, 25];

The problem with making it ever bigger is it becomes a lot less effective. It will only blow on objects bigger than the radius and the amount of air flow per unit area reduces as well.

OpenScad does not have a command line. I was referring to the command line of your operating system.

Another way is to change these two lines to be if(1) so that it draws just the fan duct. Then you can compile it with F6 and export the STL from the file menu, avoiding python and the command line.

Edited 2 time(s). Last edit at 04/14/2015 06:45AM by nophead.


[www.hydraraptor.blogspot.com]
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 14, 2015 07:27PM
Quote
nophead
OpenScad does not have a command line. I was referring to the command line of your operating system.

Another way is to change these two lines to be if(1) so that it draws just the fan duct. Then you can compile it with F6 and export the STL from the file menu, avoiding python and the command line.
Tried the Python route. Not sure what I am doing wrong, but no altered drawing showed up in my directory of "Sturdy" stl files.

My OpenSCAD file section for the fan duct, under "X carriage", looks like this:

module x_carriage_fan_duct_stl() {
    stl("x_carriage_fan_duct");

    difference() {
        union() {
            difference() {
                union() {
                    // fan input
                    hull() {
                        for(side = [-1, 1])
                            translate([fan_x_duct + side * fan_hole_pitch(part_fan), fan_y_duct + fan_hole_pitch(part_fan), 0])
                                cylinder(r = fan_screw_boss_r, h = duct_height_fan);
                        neck(false);
                    }
                    // neck
                    hull() {
                        neck(false);
                        throat(false);
                    }

                    // nozzle
                    hull() {
                        union() {
                            cylinder(r1 = or, r2 = or + skew, h = nozzle_height);
                            translate([0, 0, nozzle_height - eta])
                                cylinder(r = or + skew, h = duct_height_nozzle - nozzle_height);
                        }
                        throat(false);
                    }
                }
                // hole in the middle
                translate([0, 0,  -2 * eta])
                    cylinder(r1 = ir, r2 = ir + skew, h = nozzle_height + 4 * eta);
                translate([0, 0, nozzle_height - 2 * eta])
                    cylinder(r = ir + skew, h = duct_height_fan - nozzle_height + 4 * eta);

                // fan entrance
                hull() {
                    translate([fan_x_duct, fan_y_duct, duct_wall + duct_height_fan - duct_wall - duct_top_thickness])
                        rotate([180, 0, 0])
                            rounded_cylinder(r = fan_bore(part_fan) / 2, h = duct_height_fan - duct_bottom_thickness - duct_top_thickness, r2 = duct_height_fan / 2);

                    neck(true);
                }
                translate([0, 0, duct_height_fan - duct_wall - duct_top_thickness - 1])
                    hull() {
                        translate([fan_x_duct, fan_y_duct, duct_wall])
                            cylinder(r = fan_bore(part_fan) / 2, h = duct_height_fan - duct_wall - duct_top_thickness);

                        neck(true);
                    }

                // neck
                hull() {
                    neck(true);
                    throat(true);
                }

                // nozzle exit slot
                translate([0, 0, -2 * eta])
                    difference() {
                        union() {
                            cylinder(r1 = or - duct_wall, r2 = or + skew - duct_wall, h = nozzle_height);
                            hull() {
                                translate([0, 0, nozzle_height - 2 * eta])
                                    cylinder(r = or + skew - duct_wall, h = duct_height_nozzle - nozzle_height - duct_top_thickness);
                                throat(true);
                            }
                        }

                        translate([0, 0, -2 * eta])
                            cylinder(r1 = ir + duct_wall, r2 = ir + skew + duct_wall, h = nozzle_height + 4 * eta);

                        translate([0, 0, nozzle_height - 2 * eta])
                            cylinder(r = ir + skew + duct_wall, h = duct_height_nozzle - nozzle_height + 4 * eta);

                    }
            }
            for(side = [-1, 1])
                translate([fan_x_duct + side * fan_hole_pitch(part_fan), fan_y_duct - fan_hole_pitch(part_fan), 0])
                    cylinder(r = fan_screw_boss_r, h = duct_height_fan);
        }
        //
        // Fan screw nut traps
        //
        translate([fan_x_duct, fan_y_duct, -fan_depth(part_fan) / 2])
            fan_hole_positions(part_fan) group() {
                nut_trap(screw_clearance_radius(fan_screw), nut_radius(screw_nut(fan_screw)), duct_height_fan - fan_nut_trap_thickness, supported = true);
                nut_trap(0, nut_radius(screw_nut(fan_screw)) + 0.15, duct_height_fan - fan_nut_trap_thickness - nut_trap_depth(fan_nut));
            }
        //
        // Cold end cooling vent
        //
        if (hot_end_style(hot_end) != e3d)
        rotate([0, 0, atan2(-fan_x, -fan_y)])
            translate([0, ir + skew, duct_height_nozzle - duct_top_thickness - 3])
                rotate([90, 0, 0])
                    teardrop(r = 4.5 / 2, h = 10, center = true);
    }
}

module x_carriage_fan_bracket_stl() {
    stl("x_carriage_fan_bracket");

    t = fan_bracket_thickness;
    h = fan_z - fan_depth(part_fan) / 2;
    pitch = fan_hole_pitch(part_fan);
    boss_r = washer_diameter(fan_washer) / 2 + 1;
    w = front_nut_pitch * 2 + washer_diameter(M3_washer) + 2 * t;
    rad = sqrt(2) * pitch - boss_r;
    bodge = 54 - 51.2;                                              // error in length of MK5 J-head
    dx = pitch - w / 2;
    dy = -(fan_y + width / 2) - pitch;
    hyp = sqrt(dx * dx + dy * dy);
    angle = atan2(dy, dx) - asin(boss_r / hyp);
    tangent = sqrt(hyp * hyp - boss_r * boss_r);
    gusset = tangent - sqrt(boss_r * boss_r - (boss_r - t) * (boss_r - t));
    gusset_pitch = front_nut_pitch - t / 2 - washer_diameter(M3_washer) / 2 - 1;
    gusset_spacing = gusset_pitch - t / 2;
    difference() {
        union() {
            hull() {
                translate([- w / 2, fan_y + width / 2, 0])
                    cube([w, 1, t]);

                for(side = [-1, 1])
                    translate([side * pitch, -pitch, 0])
                        cylinder(r = boss_r, h = t);
            }
            translate([- w / 2, fan_y + width / 2, eta])
                cube([w, t, h]);

            // gussets
            for(side = [-1, 1]) {
                translate([side * gusset_pitch, fan_y + width / 2 + t - eta, t - eta])
                    rotate([90, 0, 90])
                        right_triangle(width = -(fan_y + width / 2 + t) - sqrt(rad * rad - gusset_spacing * gusset_spacing) - eta, height = h - t, h = t);

                translate([side * (w / 2), fan_y + width / 2 + eta, t - eta])
                    rotate([90, 0, (90 + angle) * side - 90])
                        translate([0, 0, -side * t / 2])
                            linear_extrude(height = t, center = true)
                                polygon([[0, 0], [0, h - t], [t * sin(angle), h - t], [gusset, 0]]);
            }
        }
        //
        // clear the fan
        //
        cylinder(r = rad, h = 100, center = true);

        for(side = [-1, 1]) {
            //
            // mounting screw holes
            //
            translate([side * front_nut_pitch, 0, max(h - duct_top_thickness - front_nut_z - bodge, fan_bracket_thickness + washer_diameter(M3_washer) / 2) + h / 2])
                rotate([90, 0, 0])
                    vertical_tearslot(h = 100, l = h, r = M3_clearance_radius, center = true);
            //
            // fan screw holes
            //
            translate([side * pitch, -pitch, 0])
                poly_cylinder(r = screw_clearance_radius(fan_screw), h = 100, center = true);

It is the one I got from the "E3D" fork on Github (from earlier in this thread).
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 14, 2015 07:53PM
Quote
Rich K.
Tried the Python route. Not sure what I am doing wrong, but no altered drawing showed up in my directory of "Sturdy" stl files.

Since you don't need to print the whole machine, there's no need to go the python way and recompile everything. Just open the x-carriage.scad file (the one you quoted) and change the last lines so that it renders the fan duct:

if(1)
    if(0)  {
        intersection() {
            x_carriage_fan_duct_stl();
            *translate([0, 0, -10])
                cube(200);
        }
    }
    else
        if(1) {
            x_carriage_fan_ducts_stl();
        }
        else
            x_carriage_parts_stl();
else
    x_carriage_assembly(true);

Press F5 and make sure the required element is rendered. If so, press F6 to compile the file so that a STL can be saved. After this, either press the STL button on the toolbar or use the menu File -> Export -> export as STL. Save the STL somewhere appropriate and move on to the slicer.

This, by the way, has been how I spent my evening. The new fan duct is printing as I write this lines.


EDIT: As for the failure with the python script, did you change conf/machine.scad to the sturdy variant?

Edited 1 time(s). Last edit at 04/14/2015 07:56PM by Chavaquiah.
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 14, 2015 08:43PM
Did that. Will that automatically render it correctly for the "sturdy"?

No, I didn't change the conf/machine.scad to the sturdy variant, nor do I know exactly how to do that. I am not familiar with Python or how it works, not to mention OpenSCAD, so I am a fish out of water here - hence, all the questions and misunderstandings. My programming knowledge only extends to G-code, and mainly for mills, at that...
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 15, 2015 03:14AM
Sorry, I may have mislead you. When using the python script, it takes care automatically of the conf/machine.scad. To make sure, open the file scad/conf/machine.scad and see if it contains:
include < sturdy_config.scad>
(except with no space after < )

For manual rendering in openscad I *think* you must have first changed machine.scad to the right include. When you press either F5 or F6, in the console window, the machine variant used should be shown. Something like:
Module cache size: 8 modules
Compiling design (CSG Tree generation)...
ECHO: "Sturdy:"
ECHO: "base screw length", 16
ECHO: "frame screw length", 16
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 15, 2015 05:01AM
Okay, the answer is "no"m then - it said "dibond" when I hit F6.

So, EXACTLY what do I need to put in the command line, start to finish, to get it to come up properly?
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 15, 2015 10:41AM
I already gave you the exact command line in an earlier post. Perhaps you should just rotate your hot end to match the model and use the existing STL.

The centre of the duct is offset from the nozzle by the numbers in the square brackets to allow for the fact the heater block is not centred. If you orientate it differently you would need to rotate that offset.


[www.hydraraptor.blogspot.com]
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
April 15, 2015 01:25PM
-removed-

Edited 1 time(s). Last edit at 04/15/2015 01:28PM by kreidler.
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
July 23, 2015 01:03PM
What's the real advantage of an E3D hotend? Will it reach much hotter temps than the standard J head? How high will it go compared to the J head? Does it give better results? how hard is it to convert the mendel90 to an E3D hotend? What filaments can and can't it print?

I've been thinking of changing over for a while now but I'm not sure, any advice would be much appreciated.
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
July 24, 2015 05:50AM
@danlad1631 The E3D-V6 is rated for temperatures as high as 300C.

An all-metal hotend is the preferred solution for materials printed above 250C which a conventional J-Head cannot do. At 250C, and below, the J-Head is good for a variety of materials including flexible ones.

A significant number of people have seen jams with the E3D hotends when using PLA which don't appear to happen as much with the J-Head. nophead has an opinion on why this happens but noone has addressed his thoughts in their designs.

My personal opinion is that the J-Head is an excellent all-round hotend. I do not print above 250C (actually the highest I've routinely printed at is 220C for ABS) and the mechanical construction of the J-Head suits a variety of materials. You could say "if it ain't broke - don't fix it!". My Mendel90 is pretty-much a standard kit build and I tend to use it as it was originally designed without things like Raspberry Pi, webcam etc.

Regards,
Neil Darlow


I try to write with consideration for all nationalities. Please let me know if something is unclear.
Printing with Mendel90 from fedora 25 using Cura, FreeCAD, MeshLab, OpenSCAD, Skeinforge and Slic3r tools.
Re: Frustrating lack of a fan duct: "Sturdy" + E3D-V6
January 23, 2016 05:18PM
Quote
nophead
Again it is all not parametric though, so only works for whichever version Ivor built.

OpenScad is the DNA of RepRap. I think anything that doesn't use it is doomed as an evolutionary dead end, however good it might be.

For now, I agree. Certainly, I'm not an advocate of commercial CAD programs or of a certain magazine devoted to makers featuring commercial CAD solutions so prominently.

However, my guess is that OpenSCAD is used today because it was the only game in town, as far as capable open source CAD systems go, back in the day. Given how much FreeCAD has progressed in the last two years, I expect it to become much more popular in open hardware projects.

Sketch-based modelling is much more intuitive and sketch-based models are parametric. Even though I'm a perfectly capable programmer and even when I know OpenSCAD is my final target, I tend to use a sketch-based modeller (FreeCAD for personal stuff) for prototyping and only move to OpenSCAD when the design is nearly complete.

On the other hand, whenever I have to dig into the Mendel90 project's source I am amazed by what nophead, and the Mendel90 project's other contributors, have been able to do. It is really inspiring to type 'make dibond' and have everything one needs to start a Mendel90 build appear.
Sorry, only registered users may post in this forum.

Click here to login