In the summer of 2014 I interned at UltiMachine. I got to learn about circuit board assembly and helped wherever I could. Within a few months we identified QA as a bottleneck in the assembly time, and I was tasked with developing a fixture and software to automate the testing. The mechanical design objectives were reliability and ability to additional automation in the future via robotics or conveyors. On the software component, we wanted accurate tracking of boards in the field and a multi-faceted test of every subsystem. We were also on a tight budget, so I sought to re purpose old inventory as much as possible.
Mechanical Design: OpenSCAD
Software: Arduino and Python, available at https://github.com/ultimachine/RAMBo-Uploader
Initially I constructed a 2-piece tessellated assembly that allowed for a sliding motion. I then used belts to allow each half to converge on the circuit board with the test pins.
I then developed laser cut circuit board dummy for the top and bottom of the device. We selected pogo pins that had matching receptacles, so we could replace any that became worn out.
The client-side software was all developed in Python. It wrangles a bunch of different elements together:
- Upload of bootloaders to USB-UART and Main AVR to board-in-test
- Upload of Test firmware to board-in-test
- Scan of board barcode identifier
- Verification and logging of all test results
- Upload of test results to PostgreSQL database
- Indication of Pass/Fail
- Upload of client firmware to the board