Introduction #
When I’m tearing down devices, I regularly have to determine a BGA ball pattern and go search for an adapter that works with my Xgecu T56 programmer. Fairly regularly, I find that the adapter simply doesn’t exist. For an example of these types of pinouts you can consider the 202FBGA from Samsung that I’ve seen in slide phones, or the Toshiba TC58NVG1S3HBAI6 NAND Flash in a Google Home mini that used a 67-ball “P-VFBGA67-0608-0.80-001” footprint. Of course there are companies like Advanced Interconnections that can make you a custom BGA socket, but that seems pricey and overkill for a small experiment that is not designed to make money. So what would it take to DIY my own socket with spring probes, PCBs, and a 3D printer? (For now, we will ignore the surrounding questions on SW and integration with a tool like the T56).
Pitch Calculation #
Depending on the filament selection, the 3D Printer nozzle, the heating parameters, the airflow, and numerous other things there is some limit to how accurately a 3D printer can represent an object. On my X1C I printed this tolerance tester and saw that I could get all of the dials to spin, except for the 0.10mm dial, which took a little bit of fiddling to get it loose. As an initial assumption, I will assume that a 0.1mm dimension around a pin is enough for tolerances. Last, I just need to find the smallest probe pin that is available on the open market to get the minimum pitch that a Socket could be printed for. For this, you can head to the Digikey “Contacts, Spring Loaded (Pogo Pins), and Pressure” section.
Unfortunately, it looks like the absolute smallest probes were made by Omron in their XP3A and XP3B series, but the XP3B was discontinued in early 2019 and the XP3A was discontinued in early 2017. Jumping forward to the smallest plunger size actually in production, the Mill-Max 0985 series is available in quantity on Digikey with a 0.016 inch (0.406mm) diameter.
Considering this information, a calculation can be made as to what is the smallest pitch that might feasibly be supported in a 3D Printed BGA socket.
$$ pitch = n * d_{noz} + 2 * d_{tol} + d_{pin} \\ pitch = 2 * 0.2mm + 2 * 0.1mm + 0.406mm = 1.006mm $$
Where
- n = number of printed rows between Pins
- d_noz = diameter of 3D printer nozzle
- d_tol = tolerance desired on each side of holes
- d_pin = diameter of pin to interface with BGA
Conclusion #
Although there are 1.00mm pitch flash memories on the market, I have yet to see one in one of my teardowns that needed a new socket. If the socket design could work with a single filament line between pins, or one of the other parameters can be reduced (printer tolerance, pogo pin diameter) it would be much more beneficial to achieve a 0.8mm pitch.
For now, I will keep my eye out for something that meets the >=1mm pitch criteria.