Modified wood-carving CNC for PCB testing.

More
11 Jun 2013 10:39 #35516 by Alti-tech
Greetings! First post here...

I recently finished modifying a General CNC wood carving CNC to perform circuit board testing. This was my first project with LinuxCNC...

I created a video showing the basics and the motion of the machine:


I was going somewhat squirrely testing thousands of circuit boards in a very repetitive way... so I figured it must be possible to automate the task. Our circuit boards are in a 10x10 array and a test takes several seconds, so we can save some serious time and effort!

The base CNC was relatively inexpensive, although if I was to start again I would try out Probotix cheapest router table.

I ripped all electronics out of the CNC and got it down to limit switches, Steppers, and a power supply. I then added Probotix isolated parallel port interface and drivers. Happily by changing to 1/8 step per pulse I increased the Y axis resolution of the CNC (which runs on rack-and-pinion, not leadscrew). About 0.001" resolution and 0.003" repeatability since we have minimal loading on the axis. Good enough for this job.

From there I connected up a PC, an old Panasonic Toughbook laptop, which is a bit of a no-no for latency, but this thing just won't die. Likely to be replaced with a desktop.

The trick was getting the G-code to understand when the testing hardware reports pass/fail and logging that data to file. After digging through the LinuxCNC documentation, HAL, Python etc. I decided to keep it relatively simple and use M100,M101 etc. commands to call shell scripts. These scrips use Linux shell programming to edit a text file. We use halcmd via M100 to turn on a parallel port pin, and M101 to turn it off. M102 erases the text file and M103 adds a line to the text file with the X/Y position in our board array (passed from G-code variables to M103).

The G-code receives input from a digital input connected to the Green LED of the board tester. The board tester is a dedicated piece of hardware created to perform the testing. This way the complexities of the testing (applying various voltages and timings) are not part of the G-code.

We use M66 to get input from the green LED and then a simple if to either call M103 or continue testing. I added retry logic, so we try the test twice (back the Z up and down and try again) in case we had a bad connection. Took me a bit to figure out to use digital input 1 instead of 0.

Once testing is complete the text file is examined and failed boards (usually zero or 1 per 100) are marked with a sharpie. This could be automated with a 2nd digital output to activate an air cylinder to mark the boards, but since number of fails is low this is pretty easy.

That's about it! I found LinuxCNC to be pretty easy to use... there were some gotchas, but everything was in the documentation. Many thanks to those who have put in the effort to make LinuxCNC amazing!
The following user(s) said Thank You: BigJohnT, jtc

Please Log in or Create an account to join the conversation.

More
11 Jun 2013 12:40 #35518 by cmorley
Welcome to linuxcnc.
Thanks for the video and success story.

That is waaay better then hand testing - very cool.

Chris M

Please Log in or Create an account to join the conversation.

Moderators: cncbasher
Time to create page: 0.086 seconds
Powered by Kunena Forum