You are currently browsing articles tagged 3D.


This post is the (redacted) email that was sent to team members after the second meeting.

Greetings Fellow Makers!

Our meeting this past Friday was a complete success, and I’m very proud of everyone I saw who was working so hard on the day’s projects. I wanted to review some of what went on so everyone is up to date.

The maker team was hard at work taking apart some old, broken printers in order to find some useful parts. Of particular interest were some motors, springs, and switches that might come in handy for our build. One team member found a plastic part that might be useful in delivering filament to the extruder. The team also discovered that we need some safety glasses, and so we’ll talk to the accounting and BOM teams to get that process moving.

Your team was probably already visited by members from the membership team. I was so pleased to see them going from team to team collecting information about the other teams and their members. I expect they’ll be sending out lists with contact information at some point for all of us to use as a reference.

The blogger (public relations) team has hit the ground running, too. We’ve already gotten an email asking for some of the photos we took so they can be used for documentation, and I understand that they’re already working with the school and Internet experts to set up a public blog site. I can’t wait to see how this turns out! One of the team members also has a really cool mascot idea, that I think you’ll all love when you hear about it!

The accounting team was hard at work setting up the ledgers and lists that we’ll be using to manage the team finances, and they had some great detailed questions about that process. I’ll be getting them some more details very soon about our seed funding, the donations we’ve already received, and some upcoming expenses.

The BOM and build teams worked together at the meeting to start figuring out all the parts that make up the printer we’re going to build. It’s a huge job, and we now have five lists or parts detailing what will be required to build each subassembly (major part) of the printer. We’ll be working a bit more on that and then turning those lists over to the BOM team to create a master list and start finding parts.

Once again, I’m absolutely thrilled to see how hard you are all working to pull this off. Seeing this kind of hard work and dedication makes me feel confident in your success. I hope the work moves forward and the ideas keep coming in over the next couple of weeks, and I can’t wait to see what we accomplish next time! Keep up the great work!


With the 3D printer club now in full swing, we’ve already discovered that we need some supplies. I’ll describe how that process can work, using the very real example of what came up yesterday. This type of process can happen at any time via email–you don’t need to wait until a club meeting to make any part of this happen.

While the maker team was working on finding parts, they realized that they really should have safety glasses to protect their eyes from things like springs that go flying off from parts that are being disassembled. Because safety is a real concern, this makes a lot of sense to me, and I think it’s important that we pick some up for next time.

To get the process rolling, the team member who identified the need should send an email to the BOM team leaders, explaining what parts or supplies are needed, why, and when. The email can look something like this:

We need 4-6 pairs of safety glasses to protect our eyes from flying debris as we disassemble machines in search of parts. We need these before the next meeting, if possible. Thank you!

The BOM team can then contact the build team, if necessary, to make sure the request is valid and reasonable. For example, the Build Team might already have a couple pairs of safety glasses, and as a result might be able to change the request to 2-4 pairs instead.

Once the request is validated, the BOM team can go to work figuring out where to get the parts, how much they cost, and then submit the request to accounting team. That request might look something like this:

We have determined that we need 4 pairs or safety glasses. They are available locally from Harbor Freight tools for $1 each for a total of $4 plus tax. Is this approved?

The accounting team can then add the request to the ledger, and let the BOM team know that the request is approved. The BOM team can then find someone to purchase the part. Ideally, they combine this request with others for the same store. They might accomplish this by sending an email to the makers:

If you are near Harbor Freight and can pick up some supplies, please let me know. We need 4 pairs of safety glasses (item 99762), and electrical tape (item 6047). The approved total is $9 plus tax and will be reimbursed when receipts are submitted.

The BOM team should be careful to be sure that the requested items are only purchased once. Once purchased, the parts or supplies can be delivered to those who requested it, and the receipts can be submitted to the accounting team for reimbursement.

It will be a lot easier to do this once the membership team distributes the team lists with the contact information. if you receive an email like this from a team member, please act on it promptly, because you might be holding up someone else’s work!


3D printers are an exciting new technology just starting to gain a foothold in schools. Once built, a printer facilitates many creative endeavors and links to math, science, art, and more. Building a 3D printer is a great project for a school club or a project-based classroom because students have to integrate STEM skills and work as a team. Students who build a printer from scratch (as opposed to just buying a kit or a completed machine) will have a detailed understand how it works and will be able to properly maintain and operate it.

Here we are developing and making available a 3D printer club curriculum that any school can use. We’re developing these lesson plans as they are tested in an elementary school club, with members in grades 2-5. This page will be updates with the latest lesson plans and resources as they are developed.

Certificate.svg 1.8 MB 4/2/2019 8:23 pm
IBuild3DPrintersShirt.svg 5.4 KB 4/2/2019 8:23 pm
NotebookLabels.svg 44.9 KB 4/2/2019 8:23 pm
RepRaps4EdBusinessCard.svg 336.3 KB 4/2/2019 8:23 pm
Session1.pdf 489.1 KB 4/2/2019 8:23 pm
Session2.pdf 566.0 KB 4/2/2019 8:23 pm

The members of the 3D Printer Club are broken up into several teams, each performing an important role. Each team has two key players: the primary lead, and the secondary lead (or apprentice). The primary lead is always at least one grade level higher than the secondary. Each team also has an adult adviser, whose job is to help the team members succeed on their own.

Here are the key roles:

Build Master (Build Team): The Build Master needs to work very well with other club members. He or she is responsible for keeping the project running smoothly and coordinating communication among team members. This student must have a keen understanding of the build process and work closely with the BOM Manager to identify which parts are needed and when. The Build Master must keep communication going even outside of regular meetings.

  • Develop and manage the build schedule
  • Keep up frequent and meaningful communication with other team members
  • Provide status updates as required by other members

Accountant (Accounting Team): The accountant needs to be very detailed oriented and good at math, including percentages. He or she will be responsible for the overall budget and keeping track of money coming in and going out. All purchases must be approved in advance by the accountant, and the accountant should provide regular updates to the Blogger. The accountant must work closely with the BOM Manager in order to keep the project on budget.

  • Keep a detailed accounting of funds and transactions
  • Manage the overall budget
  • Approve expenses
  • Provide biweekly status reports

BOM Manager (Materials Team): The BOM Manager needs to be very detail oriented and good at managing tabular data. He or she will be responsible for managing the Bill of Materials (BOM), which is a list of the all the parts we need, have on hand, and have received, as well as their expected costs and when they’ll be needed for the project. The BOM Manager will need to work closely with the Accountant and the Build Master to be sure the project is kept in budget and ensure that parts are available when they’re required.

  • Keep and manage a detailed BOM (costs, required dates, etc)
  • Secure parts on time and on budget
  • Provide biweekly status reports

Blogger / P.R. Manager (P.R. Team): This person needs to be an effective verbal and written communicator, and will be responsible for providing detailed updates on build progress and challenges to the rest of the world. He or she will need to work close with the Build Master and have a good general understanding of where the team is on the project at any given time. He or she will be the primary student contact for outsiders who are seeking more information about the project, and also be in charge of capturing the progress on camera (still and video).

  • Write and publish detailed status updates, at least biweekly
  • Develop and provide promotional materials to interested parties
  • Photograph and video project progress

Membership Coordinator (Membership Team): This student must have good “people skills” and have a keen understanding of who is on the team and what their roles are. Should positions open up or should extra help be required in some areas, this person will be responsible for helping to recruit the help that is necessary. He or she will work closely with the Build Master, Faculty Advisors, and SMEs to this end.

  • Keep and manage a list of members and roles
  • Recruit to fill open positions

Maker-Operators: The rest of the team is made up of Makers—these are the researchers, engineers, builders, designers, and helpers who make the whole project possible. They work closely with many other team members, where necessary, to carry out the work that needs to be done. This may include doing research, creating documents, sourcing materials, ordering/making parts, experimenting with build techniques, designing modifications or enhancements, troubleshooting, and learning everything they can about how to operate, troubleshoot, and repair the machines or inventions that the club produces.

Here’s a cute google eyes bookmark we made for the kids. It’s a pretty quick print and would probably made a great 3d printer demo print. It was created entirely using OpenSCAD.

You can find the STL here on thingiverse: http://www.thingiverse.com/thing:29564



Today we tested some basic CAD instruction out on a fifth grader very much like the kind we hope to see in the 3D printer club that we want to start at the local school. We used TinkerCAD. The result was this very nice looking snowman. You can download and print it from thingiverse, or tinker it.

To install the heated print bed for my reprap, I placed the PCB on top of the plywood top print plate (which is slightly larger than the PCB), clamped it in place, and then used the holes in the PCB to drill out mating holes in the top plate. I put a washer on a 16mm M3 screw, and inserted it up through the print plate, added another washer, and a M3 nut to hold it securely in place. (I actually used SAE washers, as you can probably see from the photos, and that’s okay, too.)

Next I took my PCB heatbed to Lowes and had them cut a piece of glass to the exact same size. (While I was at Lowes, I picked up some Frost King 2″ insulated pipe wrap.) The glass is about 2.2mm thick, and it was only a few dollars. I cleaned up the edges of the cut glass with some fine grit sandpaper to make it a bit safer, then I put a small piece of Kapton tape (polyimide) on each corner of the glass to provide a little protection from the screws. Using the same tape, I secured the glass to the top of the PCB.

I covered the bottom of the PCB with the Frost King insulated pipe wrap to help keep the heat going up. I had to cut out notches to make room for the screws that would hold it in place (at the corners) as well as the tops of the screws that fastened the print top plate to the print bottom plate. I added a couple bits of extra pipe wrap to the center to help support the PCB and keep it from sagging.

The PCB/glass assembly rests solidly atop the four screws — there is no “play” at all. Here are a couple of pictures. (Click for larger view.)

I built a framework for robot wheels a while back using OpenSCAD and used it to create a few different wheel styles. I recently decided to combine them all into one massively configurable wheel model, and add a number of new features as well. The result is an OpenSCAD file with 46 parameters that provides a limitless set of combinations and wheel designs. I call it One Wheel To Rule Them All.

It includes twelve tread patterns (all configurable in often surprising ways), eight core spoke patterns (also highly customizable), configurable support for o-rings, bands, and even optical encoder timing slots (directional and non-directional), and a lot more. Plus, I’m still adding features as I think of them.

First, here are a few images of the types of the various basic elements, as well as a few variations that show the flexibility of the designs. For example, as shown in these images, the Spiral style can be used to create a variety of interesting designs that you might not think of when you think “spiral.” After the images you’ll find full details on the parameters.

It’s important to note that you can configure this wheel to such an extend that it may not be printable at home with extruded plastic printers. In these cases, services such as Shapeways could come in handy.

The source file is available at http://www.thingiverse.com/thing:21486, or on github at http://github.com/alexfranke/Highly-Configurable-Wheel.

Tire Parameters

Often wheels are built around the tires. In this section, specify the properties of the tires you’re using, and this will define the diameter of the wheel. If you’re using o-rings, the tireCSDiameter should be the cross-section diameter of the o-ring, or if you’re using some other flat tire material (such as rubber bands), jsut specify the its thickness. If you’re not using any tire at all, set the tireCSDiameter to zero.

  • wheelWidth: The width (or thickness) of the the wheel
  • tireCSDiameter: Cross-sectional diameter (CS) — How thick is the tire rubber?
  • tireID: Internal diameter (ID) — How wide is the inside opening?
  • tireStretch: Circumferential stretch percentage (usually 1 + 0-5%) — How much to you want to stretch it to get it on?

Rim properties

The rim sits at at the outside of the spokes and supports the tires or added treads. Installed tires (such as o-rings, rubber bands, etc) are set into grooves carved out of therim, while trads are added onto it. Keep this in mind when you’re using tires — as an example, the rim height should not be smaller than the radius of o-ring tires.

The rim also supports rotary encoder timing holes for wheel feedback. Use the padding parameters to adjust the location of those holes. See the compiler output for helpful information about the distance indicated by each timing hole. Directional timing holes will produce a second set of holes that are 90 degrees out of phase with the first. This allows you to stack sensors at the same location over the wheel instead of trying to position them along the circumference. Directional timing holes essentially double the resolution. You can also double resolution by looking for both rising and falling edges.

  • rimHeight: The height of the rim portion of the wheel
  • timingHoles: The number of timing holes to carve into the rim
  • timingHoleInPad: The inside padding for the timing holes
  • timingHoleMidPad: The middle padding if direction timing holes is selected
  • timingHoleOutPad: The outside padding for the timing holes
  • directional: A directional encoder renders two sets of slots, 90 deg out of phase

Tread Parameters

In this section, specify the properties of the tire tread you want to render. If you’re using a wheel (e.g. o-ring, rubber bands, etc), then use either the “o-rings” or “slots” settings, which will cut a groove (or grooves) in the wheel rim to fit the tires. The othertreat styles will render a tread pattern protruding out from the tire surface by the amount you specify in third part of “knobSize”.

Imagine the tire is mounted on a robot and facing straight at you. The “knobSize” parameter defines the size and shape of knobs in an [x,y,z] format, where x goes across the rim, y goes up and down along the perimeter of the wheel, and z protrudes out from the wheel toward you.

The “staggerOffset” parameter allows you to stagger knobs across the tire by an amount you specify. Set this to zero if you want all the knobs lined up along the perimeter and aligned with the edges of the rim.

“numberOfKnobs” specifies how many knobs there are across the tire, and “lineThickness” specifies how thick the lines are from “drawn” tire styles, such as “x”, “cross”, and “zigX”. You can use these pameters together in creative ways — for example to extend a single tread profile across the width of the tire, or to create a contiguous zig-zag.

Finally, “radialTreadSets” defines how many sets of treads are rendered around the wheel. Each set contains two rows in order to create the staggered effect.

Tread styles are:

    • none: No tread is rendered
    • cross: Each knob is the shape of a plus sign with the specified lineThickness
    • o-rings: Grooves are cut into the rim to accept o-ring tires
    • squares: Each knob is a rectangle, whose size is specified by knobSize
    • spheres: Each knob is a smooth bump, whose size is specified by knobSize
    • cylindersX: Each knob is a cylindrical shape running across the wheel, whose size is specified by knobSize
    • cylindersY: Each knob is a cylindrical shape running along the perimiter of the wheel, whose size is specified by knobSize
    • cylindersZ: Each knob is a cylindrical shape protruding from the surface of the wheel, whose size is specified by knobSize
    • spikes: Each knob is a cone or spike protruding from the surface of the wheel, whose size is specified by knobSize
    • slots: Grooves are cut into the rim to accept flat tires, defined by numberOfKnobs (number of grooves), the first and third numbers in knobSize to define the width of the slots and the depth, and spaceBetweenTires for the distance between the tires and also from the outside edges to the first slots.
    • x: Each knob is in the shape of an “x” protruding from the surface of the wheel, whose size is specified by knobSize
    • zigX: Each knob is in the shape of a zig-zag protruding from the surface of the wheel, whose size is specified by knobSize
    • v: Each knob is in the shape of a “v” protruding from the surface of the wheel, whose size is specified by knobSize
  • treadStyle: none, cross, o-rings, squares, spheres, cylindersX, cylindersY, cylindersZ, spikes, slots, x, zigX, v
  • knobSize: The size of each knob [across wheel, along the perimeter, prodruding]
  • radialTreadSets: How many sets of treads to render around the wheel (2 rows per set).
  • numberOfKnobs: The number of knobs to render per row.
  • staggerOffset: A distance to offset the staggered rows.
  • lineThickness: The line thickness for “drawn” styles, such as “x” and “zigX”
  • maxTires: For o-rings, the maximum number of tires per wheel
  • spaceBetweenTires: For o-rings, the space between each tire, if there are more than one

Spoke-related Parameters

This section is used to define the spoke style of the wheel. Some of the properties are only applicable to certain wheel types, and these properties can be used together in creative ways to create a wide range of tire designs.

The “proportion” property affects how some spokes are rendered. The first number is the proportion of the design from the center of the wheel to the inside of the rim, and the second number is the proportion of the width inside of the wheel. For example, to create spokes that are roughly in the shape of a “U”, you can use a “circle” style, and set the proportion to [1.5, 1.0], for cirle spokes that are 150% as long as the distance from the center to the inside of the rim, 100% as wide.

Use spokeInset to specify the inner and outer inset of the spoke area from the inner and outer faces of the wheel. You can use a negative number to make the spoke area stick out further than than the rim. The hub position will be based on the inner surface resulting from this inset.

The spoke styles are:

    • biohazard: A biohazard logo-inspired design. Set numberOfSpokes to 3 to mimic the logo.
    • circle: Spokes in a circlar or oval form, defined by spokeWidth and proportion.
    • circlefit: The maximum number of circles that will fit between the center and the rim, with a set of smaller outer circles specified by outerHoleDiameter.
    • diamond: Spokes in the shape of a diamond (rhombus), defined by spokeWidth and proportion.
    • fill: Fills in the spoke area with a solid cylinder.
    • line: Straight line spokes, like you would see on a typical wagon wheel.
    • none: Leaves the spoke area empty and does not make for a very useful wheel.
    • rectangle: Spokes in the shape of a rectangle, defined by spokeWidth and proportion.
    • spiral: Spokes in the shape of a semicircle, defined by curvature, reverse, spokeWidth.
  • spokeStyle: none, biohazard, circle, circlefit, diamond, line, rectangle, spiral, fill
  • spokeInset: The [inner,outer] inset of the spoke area from the surface
  • numberOfSpokes: Number of “spokes.” Set this to three if you’re doing the biohazard design
  • spokeWidth: This is how wide each spoke is.
  • proportion: proportion to rim, proportion of width
  • curvature: For “spiral”, this is how curvey the spokes are. >0, but
  • reverse: For “spiral”, setting this to “true” reverses the direction of the spirals
  • outerHoleDiameter: For “circlefit”, the diameter of the outer holes, or zero for non
  • concavity: Concavity distance of spoke area for [inside, outside] of wheel

Hub Parameters

These properties define the hub — or how the wheel connects to the motor. The default values for the captive nut are precise for a M3 nut and will make the nut a very tight (if not impossible) fit. I prefer this because it allows you to “melt” the nut into place with a soldering iron. However, if you don’t have a solder iron or prefer a looser fit, then just adjust the nut diameter and thickness. (M3 hardware is, by default, set to 3mm screw diameter, 5.4mm nut diameter, and 2.3mm nut thickness.) Similarly, the holes for the motor shaft and grub screw are also precise. This allows the holes to be drilled out for a more precise fit. Again, you can adjust these to suit your needs.

The hubZOffset can be used to “sink” the hub into the wheel, and it defaults to half the wheel thickness. For example, when the hubHeight is 10 and the hubZOffset is -2, then the hub will protrude 8mm from the wheel, but the shaft hole will be 10mm deep. The set screw will still be positioned in the middle of the exposed vertical height, and the fillet/chamfer will also be rendered in the correct position. This property is also useful if you want to poke a hole entirely through the wheel. (e.g. If the wheel is 6mm thick, set the hub height to 16 and the hubZOffset to -6, and you’ll get a hub that protrudes 10mm from the wheel surface with a hole that extends all the way through the wheel.)

To mount a servo motor, set includeHub to false, set shaftDiameter so that the hole will accommodate the servo horn screw and any bit that protrudes from the top of the servo horn. Then set the servoHoleDiameter to the size of your mounting hardware, and set servoHoleDistance1 and servoHoleDistance2 to the total distance between mounting holes on your servo (not the distance from the center). These sets of mounting holes will be rendered at 90 degree angles from one another. If you only want one set of holes, set one of the values to zero. Adjust the angle of all the holes to avoid openings in your wheel design if necessary using servoArmRotation.

Use innerCircleDiameter to specify a solid inner circle to use as a base for the hub. This can be useful if you need a a solid surface for servo mounting hardware or for the base hub fillet/chamfer.

Use outerNutTrap to create a nut or bolt head trap on the outside (bottom) of the hub area. Used in conjunction with shaftDiameter and false for includeHub, this will create a wheel that can drive a bolt much like the large gear on Wade’s Extruder. (This feature is inspired by that design.)

Use servoNutTrap to create nut traps for bolts used to mount the wheel onto servo arms. This feature was suggested by AUGuru.

  • includeHub: Set to false to remove the hub and only include the shaft diameter hole.
  • hubDiameter: The diameter of the hub portion of the wheel
  • hubHeight: The total height of the hub
  • hubZOffset: The Z position of the hub, negative numbers from the surface of the wheel
  • shaftDiameter: The diameter of the motor shaft
  • innerCircleDiameter: The diameter of the solid inner circle under the hub, or zero for none.
  • setScrewCount: The number of set screws/nuts to render, spaced evenly around the shaft
  • setScrewDiameter: The diameter of the set screw. 3 is the default for an M3 screw.
  • setScrewNutDiameter: The “diameter” of the captive nut, from flat to flat (the “in-diameter”)
  • setScrewNutThickness: The thickness of the captive nut
  • baseFilletRadius: The radius of the fillet (rounded part) between the hub and wheel.
  • topFilletRadius: The radius of the fillet (rounded part) at the top of the hub.
  • chamferOnly: Set to true to use chamfers (straight 45-degree angles) instead of fillets.
  • servoHoleDiameter: The diameter of servo arm hounting holes, or zero if no holes
  • servoHoleDistance1: Distance across servo horn from hole to hole (0 to ignore)
  • servoHoleDistance2: Distance across servo horn from hole to hole, rotated 90 degrees (0 to ignore)
  • servoArmRotation: The total rotation of all servo holes
  • servoNutTrap: Size [indiameter, depth] of servo arm captive nut, or 0 (any) for none.
  • outerNutTrap: Size [indiameter, depth] of a captive nut, or 0 (any) for none.

Quality Parameters

  • $fn: Default quality for most circle parts.

Here’s a 3D printed T10 lamp shade that I designed and printed last night. A few weeks ago while searching for LEDs, I noticed an ebay listing for very inexpensive 12V automotive lamps that combine nine bright white LEDs. I believe these are sometimes called “wedge lights,” and are used as turn signals or interior lights.

Because reprap printers typically operate with 12V power supplies, I figured this would be a perfect way to light up the print bed. When the lamps arrived last night, I got out the calipers, worked up a design, and printed it out. I had a little difficulty removing the support material, but I’m pleased with the results.

Here it is on Thingiverse: http://www.thingiverse.com/thing:20809

The ebay listing for the LEDs (which were $1.50 for two) was titled “2 pcs WHITE Xenon SMD 9 LED HID 194 168 T10 Car Light.” It was designed exclusively with OpenSCAD.

Creative Commons License
T10 LED Lamp Shade by Alex Franke (codecreations) is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


UPDATE 6/20/12: Added Netfabb’ed versions.

This is a press-fit lamp shade for inexpensive 12V 9-LED T10 automotive lamps. I believe these are sometimes called “wedge lights,” and are used as turn signals or interior lights. (I got mine on ebay for $1.50 for two, shipping included.)

They’re made for 12V DC operation, which is convenient for reprappers, and they don’t really need to be fastened to the frame if you’re using solid core wire.

These things are quite bright, and the shade does a great job of keeping the light in one place and not in your eyes. They require about 225mm of 3mm filament each (about a nickel).

v1.0 – The original prints shade down, with no built-in support structure
v1.1 – Prints base down with extra support on the shade-to-base transition. (On left in photo printed in white.)
v1.2 – Prints shade down with simple built-in support structure. (On right in photo printed in white.)

[sc:pics folder=”things/T10LampShade” l=”T10Lamp-01.JPG” r=”T10Lamp-02.JPG”]
[sc:pic folder=”things/T10LampShade” l=”T10Lamp-03.JPG”]


  1. Print the part. (Check description above for which version to print.)
  2. Strip about 4mm of the ends of a wire (I use twisted pair from old network cable), and insert the bare wire into the holes on the side.
  3. Noting which side is positive, press the bulb into the slot and be sure the wires are pressed toward the back and are not shorted.
  4. Plug it into to a 12V and aim it somewhere interesting.

I created this with OpenSCAD and printed it with yellow 3mm PLA withh a 5mm nozzle on a self-sourced Prusa Mendel. I had to clean up the inside a bit, but other than that it seems to work just fine. Enjoy!

I need to clean up the OpenSCAD file a bit — it was a bit of a quick hack, because I just received the lamps today — but I’ll post it when I do.


[sc:pics folder=”things/T10LampShade” l=”v1.2_LampShade_display_large.jpg” r=”v1.1_LampShade_display_large.jpg”]
[sc:pic folder=”things/T10LampShade” l=”LampShade_display_large.jpg”]

[sc:license id=”20809″ ]

« Older entries