Loading

Parametric pulley - lots of tooth profiles

by droftarts, published

Parametric pulley - lots of tooth profiles by droftarts Jan 28, 2012

Description

This thing will create a range of metric and imperial tooth profile pulleys, with any number of teeth, specified in the Openscad file.
Tooth profiles currently supported are MXL, 40DP, XL, L, T2.5, T5, T10, AT5, HTD (3mm, 5mm, 8mm) and GT2 (2mm, 3mm 5mm).
NOTE: error in script regarding L and H pulleys spotted by OSTycoon (see comments) - the script says H, but actually it is L profile.
There are a range of editable parameters for editing the fit of the tooth (to account for printer variation), the pulley base, captive nut(s) slot for the set screw, motor shaft diameter, pulley height and belt retainers.
The attached stls are reference pulleys, mostly around the size used on repraps.

Details
After creating the parametric pulley thingiverse.com/thing:11256 I realised this way of modelling them was only going to work for square-toothed pulleys, and a way of producing pulleys for belts with better characteristics for linear motion was required. I found dxf drawings of the relevant tooth profiles here oem.cadregister.com/asp/PPOW_Entry.asp?company=915217&elementID=07807803/METRIC/URETH/WV0025/F and modelled pulley diameter from data here sdp-si.com/D265/HTML/D265T016.html
There were a couple of possible approaches to importing the data, I chose to simplify the bezier curve dxf data in Inkscape, producing vertices with a resolution of around 0.05-0.1mm for each tooth. Another advantage is the the pulleys have the tooth ramp for smooth entry and exit of the belt tooth into the pulley. I'm not really sure 3D printers can take full advantage of this yet, but quality is improving all the time!
If other tooth profiles are required, or you model any, please pass them on to me and I will include them.

22 March 2012 - Updated for issue spotted by mfinn - see comments

Recent Comments

view all

Thanks, I was trying to print a giant 150-tooth gear, that geared down a 16-tooth metal GT2 pulley (obviously next to impossible to find an off-the shelf gear that big, for cheap). I ended up getting it printed out with an 0.3mm nozzle, but just barely. Thanks again for this wonderful set of openscad tools.

And over 1100 now...

RepRapPro (I work for them now) used to use a 0.3mm nozzle, set with a 0.3mm extrusion width, to print MXL pulleys. These have a pitch very close to GT2 (2.032mm), and the printed pulleys gripped the belt and worked fine. I think the rounded tooth shape of GT2 would actually help - the pulleys we produced didn't have particularly sharp tooth profiles. I think you'll struggle with anything larger than a 0.3mm nozzle. Make sure you've got good vertical straight walls, or the wobble will ruin fit, and your retraction settings are well-dialled in. Printing the outer perimeter before the inner can often help with accuracy. We've moved to supplying aluminium pulleys now, as we couldn't keep up with the quantity we needed with printing!

More from 3D Printer Parts

view more

Instructions

1. Download openscad file
2. Tweak to make your perfect pulley
3. Print
3.1 If you get blobs and/or stringing, you may need to reduce the perimeter speed, perhaps as low as 10mm/s depending on your electronics/baud rate etc. The model is high resolution, and slicing software will produce lots of very short moves, that the comms may not be able to keep up with. Alternatively, print from SD card. Printing slow should improve the tooth shape, and fit of the belt.
4. Rejoice!

Comments

You must be logged in to post a comment.

FlyingLotus1983 on Mar 11, 2014 said:

I'm having trouble printing the GT2 2mm pulley with an 0.5mm tip (obviously going to be difficult/impossible since the tooth width is ~0.4mm). I'm likely going to buy another smaller nozzle to print with, but I'm not sure how small/large to go. I can get a 0.4mm, 0.35mm or a 0.3mm (the latter of which is apparently prone to jamming a lot).

I'm wondering what nozzle sizes people here have used to successfully print GT2 2mm?

droftarts on Mar 12, 2014 said:

RepRapPro (I work for them now) used to use a 0.3mm nozzle, set with a 0.3mm extrusion width, to print MXL pulleys. These have a pitch very close to GT2 (2.032mm), and the printed pulleys gripped the belt and worked fine. I think the rounded tooth shape of GT2 would actually help - the pulleys we produced didn't have particularly sharp tooth profiles. I think you'll struggle with anything larger than a 0.3mm nozzle. Make sure you've got good vertical straight walls, or the wobble will ruin fit, and your retraction settings are well-dialled in. Printing the outer perimeter before the inner can often help with accuracy. We've moved to supplying aluminium pulleys now, as we couldn't keep up with the quantity we needed with printing!

droftarts on Feb 8, 2014 said:

Yay! Just hit 1000 'likes'!

droftarts on Mar 15, 2014 said:

And over 1100 now...

Eventorizon on Jan 15, 2014 said:

How do you know what 'Profile' in the customiser is which tooth profile? I am after HDT T5 but I don't know what is what and I can't work it out from the images.

droftarts on Feb 8, 2014 said:

Sorry, I have no idea about the customiser, I didn't do that version. In OpenSCAD file, the profiles are:
1=MXL 2=40DP 3=XL 4=L 5=T2.5 6=T5 7=T10 8=AT5 9=HTD_3mm 10=HTD_5mm 11=HTD_8mm 12=GT2_2mm 13=GT2_3mm 14=GT2_5mm
So you will probably want profile = 10

ThePelton on Jul 6, 2013 said:

There is a site where you can get the design for a wooden gear by just putting in the number of teeth you want it to have. You could adapt some of those for the makerbot.

evamvid on Jun 10, 2013 said:

You should make this customizable :)

droftarts on Jun 11, 2013 said:

Somebody already did! http://www.thingiverse.com/thi...

jcarruthers on Feb 12, 2013 said:

Thanks!
Is there any way to speed up the script conisdering all I want is the tooth profile?
I'm usually quite good with these things but its alluding me.

jcarruthers on Jan 22, 2013 said:

Does anyone know if there's a way to create a flat DXF using the script? I really just want to generate flat teeth so I can extrude and mess with them in AutoCAD.

OSTycoon on Jan 20, 2013 said:

Not sure if i'm right or not, but it seems like the H profile (.5 inch pitch, 12.7 mm) is actually an L profile (.375 inch pitch, 9.525 mm). Please correct me if i'm wrong, but I'm planning on using an L pitch timing belt in my current project.

droftarts on Jan 20, 2013 said:

Hi, thanks for spotting this, yes you are right! Seems like I misnamed the L profile I originally downloaded from oem.cadregister.com and copied the mistake into the openscad script. If you look at the Excel file, I only modeled the L, not the H. Everything else in the openscad file seems correct for L. I won't change the file, unless someone needs an H profile pulley!

knighster35 on Dec 19, 2012 said:

Many thanks sir. Unvaluable for myself.

droftarts on Dec 19, 2012 said:

Feel free to post an "I made one" picture!

jjhcs1 on Dec 19, 2012 said:

Sigh Checked my Steps per mm Calibration for my X and Y they where set to 80 steps per mm when they should have been 62 Steps per mm that was throwing All the Calculations off so the Print was Bigger and the Spaces where too large See I only set the Extruder.... the Z axes was right as far as I could tell but Ill check it anyway... but you can fudge that setting so many ways even if it is right out in calculations you can set it right by Physically Fiddling with the Endstops and the Max settings

droftarts on Dec 14, 2012 said:

Yes, looks like you're right, the comment in the file is wrong; changing the additional_tooth_width doesn't automatically change the height. I can't remember why not now! To maintain the correct shape, set additional_tooth_height to additional_tooth_width/2. Though if you are getting this printed by shapeways, you should be able to set both of these to 0, as shapeways prints are generally accurate.

jjhcs1 on Dec 14, 2012 said:

There is a .34mm Space between your inside shaft and your outside Cogs  in your T-2.5 Cog  Ether I am not Extruding enough Plastic in my Builds or you missed a Layer.....

droftarts on Dec 14, 2012 said:

I guess you mean that, when you slice this, you end up with a gap between the teeth (outside) and shaft (inside). It's probably because your extrusion width is wider that the gap, so Slicer doesn't infill. Either reduce the number of perimeters, or reduce the extrusion width. Post a picture to help diagnose what is wrong.

jjhcs1 on Nov 30, 2012 said:

thanks for the Pullys Ill try to get them printed out

yzorg on Oct 23, 2012 said:

 your openscad script is insanely complicated.
(i usually work on "what you see is what you get" software)

i would just change some of the radius here and there..
but how to make your script do the MXL style?
its always compiling a T5 or similar

i cant get it to do what i want.
i need a MXL pulley. with about 5cm outer diameter.

piit79 on Oct 24, 2012 said:

@yzog, did you read the comments properly? The second variable after the comment // tunable constants is called "profile" and the comment for it gives you the values available. The default of 6 is for T5, you want 1 for MXL.
Since the pulleys have discrete number of teeth you can't really just say what diameter you want. You need to have a look in the Excel file to find out the number of teeth needed for your required diameter. Or just estimate the number of teeth from as n = diameter / pi / pitch.

piit79 on Sep 11, 2012 said:

This is absolutely brilliant! Hats off, excellent work.

Now, I just wish I could print HTD 3mm pulleys on my Printrbot... Anybody tried printing HTD 3M with a 0.5mm nozzle? Possible/usable? Anyway, I might just give it a go :) I would love to upgrade from T5 to HTD 3M (or maybe 5M).

droftarts on Sep 12, 2012 said:

Thanks! I don't think anyone has tried the HTD pulleys, so it would be great if you did, and could give some feeback. Though the 3mm tooth size is small, the HTD tooth shape is rounded. A 0.5mm nozzle shouldn't be too much of a drawback, as it won't be trying to make the sharper corners that a normal toothed belt has. Make sure your machine is well-calibrated (here's what I use: https://github.com/alexrj/Slic... ), and give it a go!

jonaskuehling on Jun 27, 2012 said:

Finally I could make great use of your script, thanks a bunch for the good work! Actually helps me to develop a promising new type of RepRap - all pulley-concerning credits will go back to you once it gets published 8-)

droftarts on Jun 27, 2012 said:

Great! Look forward to seeing your work, love your reloaded Greg's, btw. Post a picture of your pulleys if you get the chance.

Alessio on Apr 20, 2012 said:

Hello!

I tried to get it working in an other OpenScad script, but couldn't get it working.
I tried something like:

use
&
lt;Pulley_T-MXL-XL-HTD-GT2_N-tooth.scad
&
gt;

pulley ( "MXL" , MXL_pulley_dia , 0.508 , 1.321 );

but that didn't produce any output...

what am I doing wrong?

droftarts on Apr 20, 2012 said:

You need a ; at the end of the 'use' line. But there are lots of things outside of the 'Pulley' function, so I'm really not sure of the results. I didn't write the scad with this in mind, sorry!

sicarius on Apr 16, 2012 said:

This thing is PERFECT, thank you so much!

Griffin_Nicoll on Mar 28, 2012 said:

I changed the nut_elevation to:

nut_elevation = (pulley_b_ht+idler_ht*idler)/2;

This centers it on the collar assuming idler is 1 when true, which is what I wanted.

droftarts on Mar 29, 2012 said:

I think that should be

nut_elevation = (pulley_b_ht - idler_ht*idler)/2; // with a minus!

as the idler isn't added to the height of the base. This will centralise the nut hole on the base, if the pulley teeth, and hence idler, is wider than the base.

Griffin_Nicoll on Mar 28, 2012 said:

Wow this is great! It may be out of the scope of what you are doing, but it would be really nice to also be able to choose an involute profile gear as the teeth.

droftarts on Mar 28, 2012 said:

That should be relatively easy to do, with the built in involute gear library. But I won't add it to this version, it's has lots of configuration variables already!

mfinn on Mar 21, 2012 said:

Not sure why this is working for everyone else...

scale ([ tooth_width_scale , tooth_depth_scale , 0 ])

should be:

scale ([ tooth_width_scale , tooth_depth_scale , 1 ])

droftarts on Mar 22, 2012 said:

You are right, it *should* be 1 (or just left out entirely, it shouldn't be scaling in the Z axis anyway), but I don't see any difference putting 0 or 1 in my version of OpenSCAD (2011.6 and 2011.12, Mac version). It could be a bug. Are you using a more up-to-date version, like from the github repository?

For example, if I create a 1-line scad file of:

scale ([1,1,0]) cube ([10,10,10]);

I get a 10x10x10 cube. Same if I put in scale ([1,1,1]), but scale ([1,1,0.1]) works as expected.

I have uploaded a new version with that corrected, as perhaps the Z scaling issue will be fixed in newer OpenSCAD versions. Thanks for spotting it!

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Derekmellott on Feb 11, 2012 said:

Is there a way to make an idler with no teeth? this is for the back side of the belt.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

Anonymous on Feb 12, 2012 said:

I hadn't thought of that... easily done. Comment out the line in the scad file that calls the tooth profile you have specified, eg if the tooth profile is T5 (set in "tuneable constants"), in the section "//teeth - cut out of shaft", comment out this line:

if ( profile == 6 ) { T5();}

When the file is rendered, you'll have a pulley blank of the correct size for the tooth size - probably not that important. Set the other constants for an idler: retainer = 1, idler = 1, and pulley_b_ht equal to idler_ht.

watsdesign on Feb 7, 2012 said:

I made a tray of four GT2 which seems good !

But the pitch of the belt I got from a scanner (or a printer) is even smaller... argh, probably too fine to be printed ^^'

droftarts on Feb 7, 2012 said:

Hi Emmanuel, yes that belt looks tiny! Nice print though, thanks for sharing.

Ahasuerus on Feb 2, 2012 said:

tried to make a pulley w/ an idler, retainer and pulley base
&
amp; the base and idler overlapped rather than stacked on top of each other -- dunno if I'm doing something wrong or if there is a bug in the posted scad. ended up hacking together two stls in sketchup to get what I wanted so I'm good, but wanted check w/ you. thanks again for this great library of work!

droftarts on Feb 2, 2012 said:

Not so much of a mistake as a 'feature'. Yes, the idler and pulley base overlap. The top edge of the pulley base has a curve on it, and acts as an idler/belt guide if the teeth diameter is smaller than the base diameter. You only need the idler if the tooth diameter is bigger than the base (or you don't want a base at all), which gets rid of the curve, as it assumes you want to print it the other way up, where the curved edge could be an overhang problem. There is a commented out line further down the scad to flip the pulley over if you need a big pulley with a small base, to aid printing. I could finesse this area a bit, I suppose!

lory90sw on Jan 30, 2012 said:

i just print a MXL 18 t pulley AMAZING...your job is fantastic!!

droftarts on Jan 30, 2012 said:

Picture, or it didn't happen!

Derekmellott on Jan 29, 2012 said:

I just found a website that had a ton of timing belt pulley CAD models, I just staeted downloading them. Now I don't have too! This is great! Thank you for sharing!

droftarts on Jan 29, 2012 said:

Thanks for the thanks, everyone. If there are other profiles that you would like added, send me a message. I also have a version, if anyone is interested, that uses bezier functions from WilliamAAdams to draw the tooth curves, but it's possible to go a bit mad with the number of vertices!

bmsweb on Jan 29, 2012 said:

Wow . . looks like I have some printing and experimenting to do with these! Nice work man

faberdasher on Jan 29, 2012 said:

Wow - a work of art!

droftarts on Jan 30, 2012 said:

Thanks guys, hope everything is well with you, the family and the business!

pwc-phil on Jan 28, 2012 said:

Yikes... Very well done!

lory90sw on Jan 28, 2012 said:

thanks very much!!

triffid_hunter on Jan 28, 2012 said:

wow, epic!

now to see if anyone has a printer that can actually print a 2mm pitch pulley!

whosawhatsis on Jan 28, 2012 said:

My parametric printrbot variant includes a pulley that works with GT2 (2mm pitch) and MXL (2.032mm pitch) belts. They print and work great with a .4mm nozzle. http://www.thingiverse.com/thi...

jamesglanville on Jan 28, 2012 said:

http://i.imgur.com/8UDUG.jpg 2mm pitch, 14mm dia, 22 teeth, meshes perfectly with mxl belt :)

Top