Wednesday, June 20, 2018

DIY BGA Rework Station

Yesterday, I was sitting in my shop, thinking about the process variables involved in BGA removal and installation, and it dawned on me how simple a BGA rework machine is.

I got to wondering what it would take to make a functioning machine, and my somewhat abstract answer (as my answers can tend to be) was heat and repeatability. Sure, some of them have fancy split optics and CNC placement arms, with ways ground +/- .0005", multi-zone heating elements, etc, but the basic idea is "hold your board in place and dump thermal energy in until the solder melts". So, I made this... Thing.




So, to preface, the Z axis on this machine was initially built as a coil winder, as a side project a few years ago. The PWM driver board I'd been using to feed the two NEMA 23 stepper motors blew up with only 40 hours on it, so I wasn't sure if it was machine drag doing the killing or insufficient hardware, shelved the project, and went on my merry way.

The Z axis is a pretty standard motion control setup, one tool bridge equipped with 4 SC8UU linear bearings , riding along two more or less parallel 8mm precision ground rods, driven by an 8mm lead screw which also drives a shaft encoder. There's a chunk of flatbar welded in that I'd intended to use for a roller brace, but the structure ended up being stiff enough that I never bothered fabricating it. It's rigged for PWM control, but I'm not sure if the platen is too heavy for the motor (and my driver board's blown), so I've been indexing manually using scribe lines on the baseplate.

What used to be the wire feed arm on the coil winder is a chunk of M6 speedrail with M8 screws holding it to the bridge plate, I use the speedrail here as the attachment bracket for the rework baseplate (just a sheet of 1/16" aluminum). The bearing between the screw and plate is compensating for me being too lazy to shorten a screw. All precision materials were sourced from online vendors, the encoder mount was laser cut at a local shop, and the main upright was filched out of a scrap bin at an old workplace.

The heat source is a Yihua 992DA, sourced from Amazon or Ebay, don't remember. This is my bench hot air supply, and has a few quirks by now, lol. It's kind of perfect for this job, as it's anemic enough to maintain a safe ramp rate through the 150-250C process band (too much heat, too quickly can mean warping and other bad things for what you're trying to put on.. Too slowly, just takes longer)

My new K-type thermocouple and amplifier are on their way, and should go a long way towards closing the loop on a really working rework machine. For now I'm planning on using a power supply and oscilloscope to read the thermocouple, but I feel like trace persistence and automatability would be handy enough to justify repurposing a pi to this project.

Being the curious and somewhat reckless (I'd say confident) guy I am, I decided that I'd give the machine a try in its current, open-loop state, on a client's device - What could go wrong?

As it turns out, nothing went wrong, to my surprise. the removal cycle ended up taking ~35m, and when I sent a picture of the result to an old mentor, his comments were that it's a better job than he's seen some do with the $70k machine in his shop. Gotta say, that was a proud moment.

It's pretty interesting that I can actually see the discoloration on the balls that got 48V applied (which was why this device died) - Top Right, about 8 balls down, 4 from the right.

Writing the profile was an adventure taking me back to my nuke school classes in heat transfer. So what I don't have, is an approximate heat transfer coefficient for this particular board and component, but what I do have are an approximate knowledge of the output wattage of the heating element, a stopwatch, and an approximate knowledge of how hot we're getting so I was able to derive a semi-sorta-inaccurate coefficient using the conduction equation (https://en.wikipedia.org/wiki/Thermal_conduction). Once I had that, I had a guesstimate on ramp rate, assessed that as safe, scrawled out some arithmetic for cycle settings and times, and then twiddled knobs for the next 36 minutes, which culminated in a fairly clean removal :) see?



Here's a short (90 second) youtube rundown: https://youtu.be/eD18e7ShBfU

Do you guys have any suggestions for improvement?