Close



Page 3 of 3 FirstFirst 123
Results 21 to 29 of 29
  1. #21
    Super Moderator curious aardvark's Avatar
    Join Date
    Jul 2014
    Posts
    8,818
    personally I'd probably write my own script. Be quicker :-)

  2. #22
    Senior Engineer
    Join Date
    Jun 2014
    Location
    Burnley, UK
    Posts
    1,662
    Quote Originally Posted by curious aardvark View Post
    personally I'd probably write my own script. Be quicker :-)
    That's how I normally do it but with Freecad. Never done it in Openscad, thought I would try. I can see a return to freecad approaching.

  3. #23
    Student
    Join Date
    Jul 2015
    Location
    Rural PA
    Posts
    16
    There are many beginners (like me!) around who are confused by the parameters. I researched on the net and I also studied the excellent code from Printbus. With these things in mind I prepared some basic documentation. I would love it if someone more knowledgeable than me would look it over and confirm its correctness. I think its correct, but I am not an engineer. Here it is:

    number_of_teeth=15,
    Just what it says. In order to evenly distribute tooth wear in mating gears, it is good to make their tooth counts relatively prime (greatest common divisor is 1).

    circular_pitch=false,
    The usual definition is that this is the distance along the pitch circle from one tooth to the same point on the next tooth.
    (The pitch circle lies roughly halfway between the tips of the teeth and the valleys between them.)
    Standard practice is circular_pitch = pi / diametral_pitch (See the next parameter).
    But for murky historical reasons, the gear() code defines circular_pitch = 180 / diametral_pitch.
    As a result, if one desires an actual circular pitch of X, then one must specify X * 180 / pi as this parameter.
    Either circular_pitch or diametral_pitch must be specified (but not both) and gear() will compute the other.
    In order for a pair of gears to mesh properly, their circular pitches must be equal.

    diametral_pitch=false,
    Ratio of the number of teeth to the pitch diameter in millimeters
    (The pitch diameter is approximately the diameter of the circle halfway between the peaks of the teeth and the valleys between teeth)
    Either circular_pitch or diametral_pitch must be specified (but not both) and gear() will compute the other.
    In order for a pair of gears to mesh properly, their diametral pitches must be equal.

    pressure_angle=28,
    The angle in degrees between the tooth face and the gear wheel tangent, or equivalently the angle at a pitch point between the line of pressure and the plane tangent to the pitch surface. This commonly ranges from 14.5 (an old standard typically for heavy metal industrial gears), to 28 degrees (for small plastic gears in low load applications). Small angles provide more efficient power transmission and less pressure on the bearing, at the cost of weaker teeth (more likely to break). In order for a pair of gears to mesh properly, their pressure angles must be equal.

    clearance = 0.2,
    The gap in millimeters between the tip of a gear tooth and the low point between teeth on the mating gear.
    In standard terminology, this is the distance between the addendum circle (outer perimeter) of one gear and the root circle (troughs of teeth) of its mate.
    Not to be confused with the backlash (see later parameter).
    A common purpose of this parameter is to accommodate inaccuracies in 3D printing.

    gear_thickness=5,
    Thickness in millimeters of the gear plate, the main structure of the gear.

    rim_thickness=8,
    The outer part of the gear, where the teeth are, can be thicker (for strength where the rubber hits the road) than the gear plate.
    This is the thickness (in millimeters) of that part, and it would be greater than or equal to the gear_thickness.

    rim_width=5,
    The rim just described extends from the outer edge (addendum circle) to a distance this many millimeters inside the root circle (bottom of the valley between the teeth).
    Make this zero to have the tooth part of the gear the same thickness as the main part of the gear (no rim)

    hub_thickness=10,
    The gear will usually have a thicker ridge around the center hole, for extra strength and for possibly using a set screw to fasten the gear to a shaft.
    This is the thickness (in millimeters) of that hub, the distance the hub extends out along the shaft.

    hub_diameter=15,
    The diameter of the hub in millimeters

    bore_diameter=5,
    The diameter (in millimeters) of the hole bored in the center of the gear to accept the shaft

    circles=0,
    Number of circles bored in gear to make it lighter, speed printing, and reduce material use

    backlash=0,
    This is the clearance (in millimeters) between mating components, the distance between faces of mated gears when they are correctly spaced.
    It is important if thick lubricant will be used, or thermal expansion is an issue.
    For 3D printed gears these are probably not factors to consider, and the 'clearance' parameter takes care of printing irregularities.

    twist=0,
    Angle in degrees of gear teeth for helical gears

    involute_facets=0,
    Affects the shape of the tooth in a complicated manner. Just leave it at its default of zero. (Does anyone know more about this???)

    flat=false
    This would always be false for 3D printing. If true, the gear is collapsed to 2 dimensions for easier study.
    )


    The following relationships hold:

    circular_pitch = 180 / diametral_pitch (Conventionally, circular_pitch = pi / diametral_pitch, but gear() scales differently)
    diametral_pitch = 180 / circular_pitch (See comment above. User specifies one of these, gear() computes the other)

    // Pitch diameter: Diameter of pitch circle, which lies between the peaks and valleys of the teeth
    // Mating gears must be spaced (center-to-center) at the sum of their pitch radii.
    pitch_diameter = number_of_teeth * circular_pitch / 180
    pitch_radius = pitch_diameter / 2

    // Base Circle (this is slightly inside the pitch circle, but above the root circle (the base of the valleys)
    base_radius = pitch_radius*cos(pressure_angle)

    // Diametrial pitch: Number of teeth per unit length. This equals diametral_pitch. Not sure why different names are used in the code.
    pitch_diametrial = number_of_teeth / pitch_diameter

    // Addendum: Radial distance from pitch circle to outside circle (outer perimeter of the gear, the tips of the teeth)
    addendum = 1/pitch_diametrial

    //Outer Circle
    outer_radius = pitch_radius+addendum

    // Dedendum: Radial distance from pitch circle to root diameter (valleys between teeth)
    dedendum = addendum + clearance

    // Root diameter is diameter of bottom of tooth spaces, and radius is half of this.
    root_radius = pitch_radius-dedendum

    END OF DOC
    Last edited by TimM; 07-10-2015 at 09:35 AM.

  4. #24
    Staff Engineer printbus's Avatar
    Join Date
    May 2014
    Location
    Highlands Ranch, Colorado USA
    Posts
    1,437
    Add printbus on Thingiverse
    Going on record to clarify that I'm not a gear engineer either. Just someone who wanted to understand the Greg's Wade gears enough in order to better size the gear spacing on the Greg's Wade extruder body, and likely did some of the same research and head scratching that Tim is going through now. I was quite frustrated by the lack of commenting in the involute gear script, the herringbone gear script, and the overall Greg's Wade extruder script. I won't mention names, but in one of the legacy Thingiverse items involved, a well known hobbyist 3D printer guru states, after being pestered for lack of comments in his files, that users of opensource files shouldn't expect them to be commented. I found that to be a bit appalling.

  5. #25
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by printbus View Post
    I won't mention names, but in one of the legacy Thingiverse items involved, a well known hobbyist 3D printer guru states, after being pestered for lack of comments in his files, that users of opensource files shouldn't expect them to be commented. I found that to be a bit appalling.
    I find that horrible too. And I would mention names.

  6. #26
    Senior Engineer
    Join Date
    Jun 2014
    Location
    Burnley, UK
    Posts
    1,662
    Why open source things if no one can work them out. Probably works for Micro$hite.

  7. #27
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by Mjolinor View Post
    Why open source things if no one can work them out. Probably works for Micro$hite.
    Well, to be fair.... He obviously invested a huge amount of time to make that library of different gear things. The amount of time it takes somebody to figure it out is not much in comparison. But still... It would be nice to have better documentation of how things work.

  8. #28
    Super Moderator curious aardvark's Avatar
    Join Date
    Jul 2014
    Posts
    8,818
    people write openscad scripts in very different ways.
    Me I try and always remember to add comments - not for anyone elses benefits, but for my own.

    If I don't add comments and come back to an old script - it takes me ages to figure out what the hell I did.

    Now given that these scripts have been given to the world free, gratis and for nothing. Why should they change the way they write them ?
    Were money to change hands - that would be another thing entirely.

    A parametric gear script would be pretty simple to write. And probably easier to write a simple script with minor variations for each type of gear you wanted to make than having a single ultra complex script that does everything.
    And - no, as I don't need gears - I'm not writing such a thing any time soon :-)

  9. #29
    Senior Engineer
    Join Date
    Jun 2014
    Location
    Burnley, UK
    Posts
    1,662
    Having tried a lot of methods I now settled on doing openscad a standard way. I always start with difference followed by two unions. Irrespective of what else I add that is always my starting point now.
    EG:
    $fn=100;

    difference()
    {
    // Add sections
    union()
    {
    translate([-3,-11.5,0])
    color ("red")cube(size = [15,23,2]);
    }

    // Remove sections
    union()
    {
    // Tube

    }
    }

Page 3 of 3 FirstFirst 123

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •