Desktop Pick-&-Place Machine: An EETimes Community Project

Would you be interested in having your own pick-and-place machine that can assemble your boards -- and possibly even reflow them -- while fitting in a space smaller than an 11" x 17"?

With all the excitement associated with of 3D printers, there seems to be a giant gap in the rapid prototyping tool set -- a desktop pick-and-place (P&P) machine that can be had at a reasonable price. If you were to survey the landscape, you would find that most of the smaller pick-and-place machines that are out there are either just not quite ready for primetime, or will cost more than a few thousand dollars. This is where the EETimes community has an opportunity to change the picture.

The idea started at this year's EELive! Conference and Exhibition. A few of us were standing around at one of the Gadget Smackdowns chatting about this and that. Among the various topics we discussed were the popularity of presentations on mechanical design and the need for a way to get reasonable prices on low-volume production/prototype runs. It was then that these two ideas converged and we decided that we wanted to design a very small pick-and-place machine.

The more we talked about this, the more excited we got. The thought of having a machine that can assemble your boards -- and possibly even reflow them -- while fitting in a space smaller than an 11" x 17" footprint just brought great big grins to our faces.

This idea -- with the excitement it brings -- is more than just designing a machine. There is a teaching opportunity as well. We will be using this project to teach concepts about electromechanical integration, motor usage, computer vision, PCB assembly, and a range of related topics through our blog posts and future conference presentations.

So what exactly will this machine consist of, and what tasks will it be capable of performing? Well, this is where we would appreciate your help. We do have some basic goals, but we would welcome your suggestions to fill out the details.

Let's start with out top-level design goals, which are as follows:

$400 to $600 target sales price

11" x 17" or smaller footprint

A modular system allowing for addition of features at a future date

Good mechanical design

With these as the basic design goals, here are some thoughts on other details to get your creative juices flowing. Because of the fact that we are shooting for a low price point, there will need to be some tradeoffs. For example, this is not intended to be the fastest pick-and-place machine out there, so we can look at compromising on speed.

Also, because we are not intending to use this machine to provide high throughput, we can look at eliminating the typical component feeders (though we may have a concept that could mitigate this tradeoff). Lastly, because we are looking to have a small machine, we are not intending to have an extremely large build area. Remember that this is intended to be a machine for very low volume production -- say a few hundred pieces, or prototypes.

There is an advantage to this being a small machine, which is that we can look at employing some concepts that might be too complex to implement on a production-level machine. For example, one concept we would like to consider is making this machine so that it cannot only print solder paste without stencils, but that it can then be able to reflow the entire board after the components have been placed. Another idea is to have a component tester. This concept would allow for testing of polarity of LEDs and other diodes. In turn, this would help insure less iterations of your concept due to mislabeled diodes.

So we have a basic framework and some design concepts to get the gears turning in your head. Now we need your help to gather ideas on what you would like to see in this type of a machine. We encourage you to share your comments below. After everyone has posted their ideas, we might use a poll tool to help narrow down some of these concepts. Once we have a better idea as to what the community would like to see in such a machine, there will be further chances to participate in this project. We look forward to seeing your creativity in action.

This only works on the Y axis: have a two head machine, going in opposite directions on either side of the gantry (could be a paste head one side, placing on the other) or camera on one side?, This probably needs a long "fast" counterbalanced Y axis and a slower X axis, so you would put components on a pickup grid above and below the PCB. Maybe 4"PCB + 4"grid top + 4"grid bottom = 12" Y travel, and 6" X travel = PCB width.

Or you could go all out, and put the X motor underneath the workpiece (PCB+platen+parts+motor), have the heavy workpiece move sideways 1", while the light gantry moves 5" other way for 6" total .

Also for the Z axis , have you considered using bail bars (like the old fashioned pen lift on chart recorders) the "high position" has no accuracy requirement, while the "low position" will have a spring anyway, this would be adequate for placing, but might need better Z control for pasting.

You might consider making "double wishbone" suspensions for the placing nozzles from laser cut shim, this gives parallel motion and a soft spring (wouldn't be that hard to make it 4 nozzles spaced 1/2" apart either) Need some thought how the component aligning fingers work with multi-head.

Ok the counterweights are a clever touch, and should work (marginal with stepper motors maybe), if the trajectories are mostly constant velocity, then lower accelerations have lesser effect on transit time. Also if the motor is selected for dynamic stiffness, it should have excess torque available, and if the acceleration is limited by stability issues, then adding a counterweight with damping (i.e.attached with sorbothane) will allow more acceleration, and less "ringing".

Have you considered using a stainless wire and drum drive? (instead of belts/leadscrews), it's a bit old fashioned, but you can move the Y motor off the gantry, and attach a counterweight on a dead leg.

Wow impressive history of achievements, I was once lucky enough to visit Moog in Aurora, you can't really appreciate the power of the shuttle engine controls until you stand next to an actuator- Awesome. I once built an aircraft simulator (payload) shaker for Lockheed Martin, impressive and scary at the same time!

Have you had a look at radio telescope drive systems?You would appreciate them, Monstrously slow and heavy, but insanely accurate, they use two huge motors and high reduction boxes, with torque control operating in a tug-of-war mode to reduce backlash to zero, some still have selsyn transducers.

Tough working on a laptop in a hotel room, I try to carry a "lab in a suitcase", but I sure do miss the dual 24" monitors when I'm on the road!

re "One thing that I need to look at with brushless servo motors, is how steps are performed, or if it can hold in intermediate placement between teeth. These are some of the details that I would like to look into before writing it off. "

All motors are, from an academic perspective, identical and can be represented in an equivalent d-q model (direct and quadrature). First consider a motor frame with two poles consisting of a north magnet and a south magnet, and the rotor is a steel bar with a coil of wire wrapped around it. Obviously when you put current in the coil , it will point either up or down (i.e. zero or 180degrees = direct) , and the available torque will be zero. When you rotate the coil to left or right (with current applied) the torque is maximum (i.e. 90 or 270degrees=quadrature) at this point the torque is proportional to current, the torque is sinusiodal with rotation.

If you rotate the rotor with power off it will detent twice per revolution. This effect is known as "saliency" or "cogging", it is deliberately enhanced with stepper motors due to the poles being tooth shaped, a good servo motor on the other hand has negligible cogging (using a skewed rotor or stator) , the average BLDC (not designed for servo work) will have some slight cogging.

Each pole may have more than one slot to place wire in, so by rearranging the wire in the slots you can achieve a non-constant magnetic field across the pole face. This affects cogging, and also the back emf. Back-emf is caused by moving the coil through the magnetic field , so the waveform of the back emf (imagine the motor is a generator) could be sinusoidal (synchronous AC, most servomotors) or trapezoidal (most BLDC, some servomotors, most brushed motors) . Like wise the torque vs angle curve can have differing wave shapes. A trapezoidal back-EMF suits simple motor drivers, where you only have to turn transistors on or off. Note that the difference between the back-EMF, and the voltage you apply to the motor creates torque, so if the waveform is wrong it creates torque ripple (A stepper motor has really high torque ripple)

The minimum requirement to cause a motor to turn is two coils at right angles, so as to create a magnetic field alignment between 0 and 360degrees (it's just sine and cosine) you can do the same with 3 phases, 4 phases, 5 phases etc in the end all you have is a magnetic field strength and an angle. So the term "FOC", field orientated control, merely means you are focussed on controlling the field direction (aka "vector") (and amplitude).

Voltage vector control means you apply voltages to the windings, and hope the motor aligns with the rotor, a stepper motor is an obvious application of this, you apply 5v to any of 4 windings and it points there, the vector space for this motor only has 4 points per electrical rotation (but there are 200 electrical rotations per mechanical one) . More sophisticated VFD's change the voltage with frequency. The vector space for BLDC motors is 12 points per revolution. The vector space for sinusoidally wound motors is essentially infinite.

Most servo controllers use current mode control, they force a current in the winding to generate a restoring torque (to drive position error to zero), note that the phase angle of the current is 90deg for maximum torque (unlike zero degrees for voltage control). Note that the power dissipated in the windings varies with load, so you can "borrow" upto 10 times rated torque, and let the motor cool down later at constant speed (can't really do this with voltage control).

All of the above have effects on the positioning accuracy of a motion system, typically the positioning error is the sum of {saliency effects} and {effective stiffness x (friction + static)force}.

Stepper motor (with microstepping) high saliency means that applying 25% + 75% winding currents won't put you at 25% of the pole spacing , and the stiffness is highest on a pole and softer between.

BLDC motor (trapezoidal winding) with microstep, also won't be linear between poles , but better than a stepper

A servomotor with Voltage control , has no angle dependant accuracy, and the stiffness is constant (but softer than an equivalent stepper)

A servomotor (closed loop current control) has the highest stiffness and best accuracy.

So getting back to your original query, the "steps" are actually commands to the drive, and it works out what to do from there, for example the drive might be set up for 1024steps per mechanical revolution, so:

stepper motor this means each of the 200 poles is carved up to ~5 steps , but really only accurate to +/-2 steps. (slow , fairly accurate)

BLDC, 6 pole pairs , each of the 12staes withing each pole are carved up (interpolated) to ~14steps, maybe accurate to +/-5steps. (very fast, but sloppy)

So a BLDC does not have "teeth", but it does have "poles", while "steps" are commands to a drive. All (magnet) motor types will "hold" at intermediate positions, but the accuracy and stiffness while holding varies across types. Closed loop control dramatically improves holding accuracy and stiffness. Closed loop control can double available accelerations, but no effect on limiting speed.

Just for reference, the all knowing wikipedia seems to indicate that older pnp chip shooting machines were doing around 15 components per second on a single head, and that current machines can do around 40, though it is ambiguous as to if that is with a single head, or with multiple heads.

So 60 as a high bound was a good guess to get in the ballpark, and I think that the low end may be around 1 per second with a max reality no higher than 5 per second, and even that may be dicey once we get looking into it in more depth.

Ah, and now you get to the heart of an idea that I am contemplating, but not sure the best way to make it work, and that is using counter weights. It would slow the actuall acceleration of the machine, but also make it so the thing is not jumping like popcorn in a hot frying pan.

I will take a look at the links that you posted.

If you want to get an idea of the sorts of mechanical designs that I am capable of, you can go to my twitter page and look at the background pic. That wind tunnel model had a span of almost 40feet and had two installed jet engines. I designed all the wing structure, which included a blowing slot and flaps, the engine intakes, systems placement/attachment, thrust reverser, and even designed a rotary actuator for this thing as we had a flap that hung out into the exhaust and was on a 12" moment arm. Nothing like designing an actuator that had to work in the heat with 4000lbs of thrust upon it and had to hold position to within .05 degree. The final design used a hypocycloidal gearbox to a low speed ac motor. It was capable of 9000 ft lbs of holding torque, and had an inline set of strain gauges to measure the torque. The part had to be designedso that it could handle the expansion due to heat, which was on the magnitude of .25" from nominal room temperature.

So have confidence that right now, I am doing very, very high level calcs to understand how big the design space is, and I hope that this week I will be able to sit down and really spend some time putting things together in a much more refined and detailed fashion. These will take into account someof the realities that I have currently been ignoring up till now, though you are good to point these facts out ;)

Two things, I think that in many ways you and I are sayign the same things, but going about it in different ways, and second I think that you think that I am much further along than I really am. The calcs that I am doing are just some quick back of the envelope bounding calcs to get me in the order of magnitude that I shoud start my searching, and are in nowise representative of a final work. As was ilustrated with the motor comment, you can have a motor with 9600kV, but runing on essentially 3s is not really practical, this is why I said it is in the relm of possibility but not practical. Though if I had come up with I needed to have something with 100,000kV and 100V, then I know that I am not even in close to being in a realistic bounding box.

With that, I really did mean to say 60 per second, not per minute, though not because I am stating that this is the goal of the project, but I am trying to bound the problem on the high side of things. I also understand that there are other limiting factors. One of those things is as you mention the lead nut, but more than that, it is going to be the critical speed of the shaft. Without having looked at it, I can imagine that this will be the biggest limiting factor of all. I am going to guess (do not take as a statement of fact) that for a 3/8" leadscrew with two rigidly supported ends that the critical speed is going to be between 10k-15k rpm

In reality, I expect that the actual max munber that could be achieved would be on the order of 1-5 components per second once things such as friction, inertia, and actions which must happen in series.

Another thing to take into account is that I am writing most of this from a hotel room on an 8 inch tablet, and doing some quick checking for components here and there, though not really doing anything exhaustive, yet. Once I get home and have access to a monitor that is better suited towards setting up a nice spreadsheet, I will do so. As for the units that I amworking in, I use IPS generally because that is what my work requires. I even use slugs for mass. I know what an awful system, but becaues of my location, I have more access to a larger variety of parts that are inches than metric.

This is not to say that I do not appreciate the effort that you are putting in.

I tried a bit of googling, but couldn't find any actual PnP accelerations.

I did do some experiments using my hand pickup pencil (with an aquarium pump for suction)

Using a 15g luer lock nozzle (approx 1.4mm ID), I could pick and hold SMC,DPAK,tqfn32 packages vertically so 1g is definately ok , and noted

SMC,DPAK would fall off quite easily if gently shaken (maybe 2g)

the tqfn32 took a bit more to dislodge(maybe 5g)

and 0805 and SOD323, SOD123 nearly impossible to dislodge

can't pick up a D2PAK,

can't pick up a 0603 (they get partly swallowed)

(one could repeat with an accelerometer for accurate results),

This implies that 10g should be possible with the correct nozzle. Problem with homebrew machine is that you may not have enough "correct" nozzles, so will need slower acceleration and slower speeds for some bigger parts.

A second aspect of G forces is the reaction force, so if the gantry weighs 1/10 of the rest of the machine , then the rest of the machine will be subject to 1g forces when the gantry moves at 10g, this can shake parts out of the feeders and or move the machine around the table top.

Thirdly if the c.g. of the gantry is a long way above the rails, then there will be a strong pendulum effect trying to bend the rails and de-stabilise the servo loop.

---------some reading---

Here's an interesting read on PnP dynamics (some tables about halfway through) he basically says that acceleration doesn't have much effect on throughput (as most moves are velocity limited)

It's the second time you have posted "60 components per second " instead of 60 per minute. i.e. one part placed per second.

You need to be careful of getting scale factors mixed up in calculations, especially in spreadsheets.

60 Converting from RPM to revs per sec , also needed with fpm and ipm linear measurements.

2 x pi Converting from "natural units" i.e. R L C & angular phase/velocity/acceleration to "human units" specially note that torque to linear calculations almost always have a 2pi somewhere. The constant may appear as 0.159 (e.g. a motor with a 1mH + 1Ω winding will rolloff at 160Hz)

57 degrees per radian , need this for cos(angle)

32 or 9.8 Converting from gravitational to inertial units, need this to get from oz-ins to real torque. Imperial units have g embedded in odd places. Be careful when expressing accelerations in g , when you really meant to express a ratio. e.g. a block slides down a ramp at 30° implies a friction force of 0.5g , that calculation works on earth but not on the moon.

I do layout my boards on an inch pitch, and use materials in inch thicknesses and foot lengths, BUT when it comes to any sort of mechanical calculations, I always use MKS units. So I would strongly advise you to use MKS units as the main column in your worksheet , and have columns to the side of that for other units. I shade human input cells in yellow and computed in blue , so e.g. distance(m) in blue = 25.4/1000* (inches in yellow). If your primary calculation column uses metres, Newtons, Kilograms, and secs and derivatives thereof then you automatically get the right answers for velocity, acceleration, watts and joules and volts and amps and heat flow and temperature rise as well. Note that the correct representation of the inertial mass of 1kg is 9.8N/m/s/s.

You might want to double check your numbers, a 9600Kv motor on 12v spins at 115,200rpm !!! , (the linear speed inside the nut is 7200fpm, about 10 times the max rating of bronze of 750fpm)