Problem: with my previous work I can take a PCB x-ray at fairly high resolution (see bond wires like above) but the field of view is pretty small. The above x-ray doesn't even cover an entire PDIP-40. How can I see the entire PCB?
Linear stageLinear stages are great for this sort of project. As I'm moving on the order of inches they don't necessarily need to be high precision. I looked around eBay and a few other places and settled on some stages as HSC. I can't find a picture of the original setup, but something like this:
These had several desirable properties:
- Around the right scan area I'm looking for
- Reasonably sturdy to support PCB weight
- Motors with integrated drivers (MDrive 17Plus). As a plus they are 3.3V compatible
Next I made the PCB holder. The Z axis motor mount makes a convenient anchor point to attach accessories. To actually hold the PCBs I decided to use a PanaVice PCB holder left over from a previous project. This is a great fit as it nearly wedges into the motor mount and is made out of aluminum which is mostly transparent to x-rays (minimal image impact). With a little sanding I was able to sandwich it into the motor mount:
And drill some holes to make it secure:
Which then integrates onto the stages:
Mounting the headNext I need to mount the x-ray head. Its heavy so this could be a bit challenging. I was originally thinking of making a t-slot gantry so that it would clear the stages nicely. It would be a plus if I could adjust the height up and down but not strictly necessary.
Thinking about the z axis, I recalled I had a spare heavy duty z stage. And guess what? The x-ray head fits onto it perfectly!
Integrating into the system:
In this configuration the stages can't travel their full range but given the low effort this is a great starting point. You can also see the sensor in position.
SoftwareThe software development is mostly covered in my previous post. Here is an early integration test with the pr0nscope GUI I use to control my microscopes:
AXIS would have worked fine but because I was focusing on rsh it was a bit of a pain to switch back and forth. It may be possible to launch AXIS along side linuxcncrsh but I haven't looked into it.
Notice the slopping wiring going everywhere. Lets see what we can do about that...
Control systemOnto the control system. In the above picture you can see an aluminum plate to the left of the stage. This held the original indexer board that I decided not to use in favor of standardizing on LinuxCNC. I drilled some holes for standoffs (not super great but sufficient):
And started mounting electronics:
A few boards are on standoffs but I'm DIN rail mounting what I can.
I started routing cables and found that the Y power cable doesn't reach. After splicing it to extend it:
And then heat shrinking it to prevent it from snagging and hiding the splice:
Going back to the electronics panel, you'll notice the e-stop button to the right. In production:
Unfortunately I don't have any drills large enough for the button. My step drill got pretty close but not there. I thought about putting it on my milling machine / rotary table but decided that since I only needed to shave off a little that probably wasn't the most expedient (notice I didn't say best) option.
Instead we come to "Mr. Safety" on the left. Although I didn't use a milling machine, I did put an endmill into my rotary tool and mill out the center a bit by hand. This is a terrible idea and you really shouldn't do this for numerous reasons but it did get the job done.
Following that I finished the button with a coat of Dykem Blue. It already had some on there from marking holes and I decided it was going to be less work to coat it blue than to remove the layout fluid.
Filling out the control system:
I DIN rail mounted the BBB onto a Phoenix Contact PCB mount by screwing the case into the PCB mount
There are two power rails:
- 24V for stepper drivers. It was supposed to be supplied by the DIN rail supply but I am missing a Combicon adapter. For now an external power supply runs it
- 5V from the BBB sets a control line in the stepper motors
Like previous systems, a laptop orchestrates the whole thing. At the core is my pr0ncnc which underwent a major, long overdue code cleanup for this project.
Also like previous setups, the x-ray is powered by two Variacs switched through a DLI WPS-7.
Putting it all togetherViola:
For my first scan I grabbed a scrap HDD PCB in arms length:
And you can find the output files here (TODO: stitch, mapify). A few sample images:
SafetyThis system was a bit harder to shield due to the larger volume. However, running the system at 60 kV seems to produce negligible radiation leakage even without shielding and gives pretty good copper resolution. Still, I have lead shielding around the system as an added safety and in case I want to operate at higher voltages.
Industrial unitsFor comparison, here's an XD7500NT industrial x-ray scanner:
Unlike my system, these allow real time imaging, HDR, and some other cool features. Still, I'm sure my garage system costs a fraction of what these beasts go for and is considerably more compact.
SummaryThe hardware came together pretty quickly and was mostly built over last weekend. Figuring out how to configure and control the BBB took longer but is a good investment. The integrated MDrive 17Plus stepper drivers make the system quite compact over my previous control systems.
There are a number of things I can do to improve scan quality but should be good enough for most projects. The system will get used in the near future for PCB reverse engineering projects.
Got something cool you want scanned? Drop me a line!
EDIT: looks like you can get small x-ray units at industrial auction for 1k. Still, this was well under that and was a fun project