Archive for February, 2011

Motorized SMT tape-and-reel feeder for DIY pick & place

Despite the impact of work, wedding planning and Super Metroid fan-hacks (not necessarily in that order ;-) on my freetime, my scheme to design a DIY-able open pick & place system is starting to come along. So far, there is a proper vacuum placement head, a rough idea of what the software architecture might look like, and this. For those who saw the last post, you probably guessed what it was leading up to.

This is a simple proof-of-concept of a SMT tape-and-reel part feeder design. The main parts are a stepper motor and feed sprocket to advance the tape, two walls with guide slots, and a simple slider mechanism to allow the feeder to accept tapes of varying width. Please note that it does not (yet) include any mechanism for peeling and disposing of the tape covering. Suggestions and innovations in this area (as well as all others) are welcome!

All the parts were cut on a CNC mill – design files and G-code are available here. The .cb files included can be opened with the free version of CamBam. More photos / video and design details are available below.

The Tape Standard
The geometry of the standardized tape that holds SMT parts is documented in EIA-481-2-A, which until very recently was only available at a price too high for mortals (or from your favorite ‘alternative’ source, wink nudge). It appears that EIA disbanded at the end of 2010 and the documents are now public. Regardless, here are the parts of interest to us building a DIY tape-and-reel feeder:

Pitch (distance between sprocket holes): 4mm
Sprocket hole diameter: 1.5mm
Center of sprocket hole to edge of tape: 1.75mm
Center of sprocket hole to edge of component wells: min. 0.75mm??? (seemingly not specified; varies between manufacturers)
On opposite side of tape – ending edge of component wells to edge of tape: 0.6mm min.
Tape thickness: 0.2 ~ 0.4mm, not including covering.

The standard tape widths are 8/12/16/24/32/44/56 mm. For tapes 32mm and wider, a row of slightly elongated (same pitch) sprocket holes is added to the other side. According to various sources, the standard also says the pitch between part wells should be a multiple of 4mm and “Pin 1” (if any) should generally be on the sprocket side and facing forward. A longer explanation of the part orientation rules is that the part should be a) widthwise (its longer dimension, if any, across the tape); b) Pin 1 toward the round sprocket holes (unless this conflicts with the first rule); c) Pin 1 facing in the direction of travel (unless this conflicts with the first 2 rules). How religiously any given vendor adheres to these rules is anybody’s guess. There is also no rule saying the ‘well’ or pocket holding each part has to remotely match the size of the part (except to prevent it being able to flip over or rotate 90 degrees during shipping), so visual positioning correction is occasionally needed for parts from particularly lazy vendors.

Feeder Design Points
With these things in mind, the shown test-design uses the following dimensions, which seem to work well with varying size tape samples I fed through it:

Sprocket thickness of 0.7874mm (.031″) – this is a ‘standard’ stock thickness in the US, so it was an easy first test. I sunk the sprocket so that it lies flush with the inside wall. With these values, the depth of the tape track is cut to 2.14376mm (0.0844 inches) to put the edge of the tape flush with the track when on the sprocket, forcing it to stay straight despite all the feed force being delivered on one side. For the ‘outside’ (non-driven side) wall, the track is cut to a depth of 1mm (0.039 inches). The width of the slot is 0.79375mm (0.03125″), as this is the closest (commonly available in the US) milling bit width that will accommodate both plastic and the slightly thicker paper tapes. To assist loading tape, a wider ‘mouth’ is cut on the input side of both sides’ slot, tapering to the slot width to guide the tape in. In reality, the mouth you see in the photos is not really large enough to be useful (it looked a lot bigger on my monitor!…). Also, the mouth on the non-drive side in the photos is on the wrong side since I completely forgot to account for this half being flipped over :p These are corrected in the downloadable files.

With the sprocket as designed, the tape track radius is 13.6mm (0.536″), and the track makes a 180 degree pass around the sprocket to eject the spent tape at the bottom of the same end it comes in on. In hand-testing some tape around the sprocket, I found it does not always sit flush against the sprocket throughout the entire 180 degrees, so the tape track is widened a bit around the sprocket to accommodate. The ~31mm sprocket diameter / number of teeth (22) was chosen purely for convenience on my part, as this is the tallest that would comfortably fit on the homebrew CNC mill I’m using for testing. In practice, a larger diameter is advisable so as not to limit the size of parts (deepness or length of the ‘wells’ vs. sprocket diameter and bend radius) that can be fed. Also, the reels themselves will be much taller than this anyway. Just keep in mind that as sprocket diameter goes up, so will the required motor torque to advance the sprocket one step, and the linear distance per step. At some point some form of gear reduction will be necessary vs. simply tacking the sprocket directly to the motor shaft.

To handle a wide (pun intended) variety of tape widths, a trio of smooth nylon PCB standoffs (0.250″ dia) are sunk and bolted into the drive side to act as sliding rails for the halves to be pulled apart to the desired width. A rubber band around both halves keeps them tensioned and in contact with the tape edges when loaded. This could definitely stand improvement, but it works for now.

Despite being a quick ‘n dirty test piece, the action of this feeder (by hand) is surprisingly smooth. The nylon spacers are pretty slippery, and the Delrin also provides a smooth, low-friction surface when machined. With the motor is a different story; these tin-can motors are 7.5deg/step and the driver board I’m using right now doesn’t really support microstepping low-current motors.

Tape Sprocket Creator

This is a free (open source) Python script for creating feeder sprockets for e.g. perforated tape or film advance. I wrote it for myself to generate SMD tape-and-reel feed sprockets, but it might also be useful for making replacement sprockets for 8/16/35mm film, microfilm and paper-tape systems whose original reader hardware no longer exists or is difficult to find replacement parts for. The output is a .DXF template suitable for laser cutting, 3D printing or CNC machining. “Documentation” below, but it should be pretty self-explanatory. It should work with any modern version of Python (tested on 2.6).


Sprocket design goals / differences from other sprocket types

The drive sprocket’s dimensions are specified mainly by the number of teeth, width (or diameter) of the sprocket holes, and the pitch (distance between sprocket hole centers). The tape is usually advanced either tangentally to the sprocket, or partially wrapped around the sprocket. Thus the distance between the outside edges of any two teeth at any point, either tangent to the sprocket or along the circumference of the sprocket, should never exceed the distance between the outer edges of any two sprocket holes (the taper of the teeth is computed to counteract the radial splay of the teeth). Additionally, a landing area (flank) is cut at the base of the teeth matching the thickness of the tape, giving it a place to ‘catch’ when pressed against the sprocket’s inner diameter. Unlike e.g. roller chain sprockets or spur gears, no undercut (cuts below the inner diameter) is provided for rollers or a mating gear’s teeth, and no special geometry is needed along the sides of the teeth.

Some Terminology:

Pitch: The center-to-center distance between sprocket holes, and thus the sprocket teeth.

Tooth Face: The tapered portion of the tooth. In this application, the tooth taper is calculated to smoothly slide into the sprocket holes as the sprocket rotates.

Tooth Flank: The ‘upright’ (or slightly concave) base of the tooth. In this application, it should be the same height as (or slightly taller than) the tape thickness so that the tape sprockets rest fully within the flank.

Tooth Land: This is the surface left if the tip of the tooth has been blunted or “cut off”. This might be done to fit the sprocket into a particular diameter. I’m an EE; I don’t know what other dis/advantages pointy vs. blunted teeth would have in this application.

Basic usage:

Fill in all the values called for in ‘Basic Parameters’. Aside from angles, which are in degrees, use any unit of measurement you prefer (inch/mm/etc.), as long as it is consistent; output will be in the same units. If you desire a specific tooth taper angle, enter it, otherwise just press “Compute / auto angle” to suggest an angle and generate the sprocket.

Mostly, the pitch and sprocket hole width are dictated by the tape to be fed, and also drive the important diameters. You can get closer to a desired sprocket diameter by adjusting the number of teeth. The important diameters are:

Inner diameter: This is the diameter at the base of the teeth, where the bottom of the tape rests.

“Design diameter”: This is the most important diameter as far as the program is concerned, and is fully dictated by the pitch and number of teeth. The design diameter is the diameter at the top of the tooth flanks, which is the top of the tape. You could also think of this as the outside diameter of the tape if wrapped around the sprocket.

Outer diameter: This is the diameter at the tips of the teeth. By playing with the tooth angle and cutting off the tips (tooth length %), there is some leeway to constrain the outer diameter to fit the available space.

Note that the angle auto-suggest feature is currently broken (will return incorrect results). It will (usually) calculate an angle that will allow the tape to *wrap around* the sprocket at any radius from the base of the teeth, but what you really want is the tape to fit at an arbitrary angle across the teeth (specifically, the outer edges of whatever teeth it intersects while tangent to the sprocket should not exceed the outsides of the sprocket holes). For now you might have to cut a few gears and experiment, or just set the angle arbitrarily high.

Extra Options:
If you will be cutting out the sprocket on a CNC mill, outside pocketing will leave some material at the base of each tooth flank due to the diameter of the round cutter. Enabling ‘Remove cutter leftovers’ and entering the cutter diameter will add DXF points (drill hits) near the tooth edges to remove this material. Users of other fabrication methods can probably ignore this option.

If designing a sprocket in one measurement system for use in another, you can optionally select a unit conversion to be applied when writing out the DXF file. E.g. if your tape is specced in mm but your CAD/CAM software expects inches, select ‘mm to inches’ before saving the DXF.

I wrote this to solve a very specific need for one of my own projects; so very little time and debugging went into it. There is no idiot-checking. Expect errors or bizarre output if you leave necessary fields blank, mix & match units (inch/mm) arbitrarily, enter a negative number of teeth or any other physically impossible geometry. Even if you do everything correctly, there is no guarantee the output will be correct or meet your needs. Please check the results very carefully before you lay out any $$$ to have anything professionally made by a fabrication service!

Right now the arc between teeth is output as a straight line, not an arc or series of tiny lines approximating one. This should not be a huge problem for a reasonable number of teeth, but something to be aware of.

Other notes:

“Auto angle” calculation is only done if the angle field is blank: if there is a number there (including a previous auto-calculation), it will be left alone. If you have changed any parameters and want to redo “auto angle”, please delete the contents of this box.

The sprocket image shown in the program window is not to scale – it is automatically scaled to fit inside the window. It is not unusual for the sprocket to appear to change size dramatically when parameters are modified.

Square Pegs and Round Holes:
Unless you have some fancy software sweeping the sprocket teeth into 3D, you are probably making a flat gear out of flat stock, and it will have flat edges. If the sprocket holes are round, the tooth edges will contact somewhere earlier than the outside diameter of the hole, and so may need to be tweaked – especially if the material is thick relative to the holes. (See the diagram below for an exaggerated example.) Use this formula to calculate the effective tooth width that will exactly fit the hole:

w = sqrt(d^2 – t^2)

where d is the sprocket hole diameter and t is the stock thickness.

I P, U P, everybody (DHC)Ps…

My page that tells you your IP address is up and running again, after a PHP configuration change by my web host knocked it out. Anyway, enjoy the glory of finding out your external IP address without getting socked by porn popups!

Reversing an aquarium pump

An aquarium air pump can be used as an inexpensive source of low vacuum with a small amount of tweaking. Supplies needed are:

The air pump
Screwdriver (usually) to open the air pump
Hose barb (your favorite size) for vacuum inlet
Glue (e.g. RTV/caulk, epoxy, etc.)

Of course, you could convert one by sealing up the whole thing in a big Tupperware container and punching a port through, but this method is more robust and compact.

Have a gander at the pictures below. The internals shown are pretty typical, and diabolically simple: AC wall power flows through a U-shaped electromagnet, which wiggles a small permanent magnet between the poles rapidly back and forth to pump a rubber bellows. The bellows draws air directly from the inside of the case and forces it through the output port, drawing new air into the case through some small holes or dust filter on the case somewhere. Thus, “reversing” the pump requires simply drilling your own hose barb into the case and sealing up the original vent (plus any other air leakage paths). The converted pump can be used as a vacuum pump by plugging the new port into your vacuum-needing device and letting the original port vent to atmosphere, and can still function normally as a positive-pressure pump as needed.

Common air leakage paths are around the AC cord entry, around the output port and where the screws / rubber feet go (the screws may be hiding under the rubber feet anyway). Probably the easiest thing to do is just run a nice fat bead of RTV around the entire seam between the halves of the case before putting it back together.

The pump shown pulls about 5 inches mercury (~127mmHg); most are probably in that ballpark. If your needs fall somewhere above this but well below a “real” vacuum pump (or even a disembodied fridge compressor), it might be possible to beef up the vacuum or flowrate a bit by putting 2 in series or parallel.

Some “standards”:
In the US at least (don’t know about elsewhere), the common size pumps (for 10 ~ other double digits gallon fish tanks) generally take 3/16″ flex tubing, and unmarked tubing in the fish supplies section of your local pet store is probably this size. Larger pumps with e.g. 1/4″ ports are available for large tanks, but if it doesn’t say what size tubing to use, you can probably assume 3/16. This refers to the tubing inner diameter (or the pump port’s outer diameter); the tubing outer diameter can vary significantly and is often not specced. Since you will be adding your own port, you can really make it any size you want, but sticking with 3/16 means you will have plentiful local sources of matching hose barbs, tee fittings and other parts at most any pet store.

Pick n place head update

This is a quick follow up to the pick & place head article, in which I actually build the darn thing :-) As in, not just fit-test the parts together and take a picture, but actually pick and place some stuff with it. I’ve been busy/lazy, so not too much to show in terms of software yet (the video you see below is running a ‘dumb’ g-code placement script). The parts list has been updated will be updated in the next couple days, along with new CamBam/DXF files.

Live test of the head as currently designed. This is bolted to my ghetto homebrew CNC mill, which is kinda slow. On a more built-for-purpose (or less ghetto) machine, performance should be much better.

The webcam’s weird eyeball-shaped case has been removed, revealing a rectangular board with sanely-spaced mounting holes in its corners. Also, a proper solenoid valve has been bolted to the head and hooked up to a reversed aquarium pump for suction. The rubber nozzles are from a sacrificial el-cheapo SMD vacuum pen ($3USD ,eBay), which comes with three sizes that fit on a standard 16-gauge needle.

Otherwise, it’s pretty much as described in the previous post.

A little bit of guts. This board holds a transistor to drive the 12VDC solenoid valve from a parallel port pin, Pololu microstepping motor driver (Allegro A4983) and 5V regulator. At the top you can make out a simple pressure sensor conditioning circuit that isn’t hooked up yet.