DIY SMT Pick and Place Machine With OpenPnP
This clever self-made project features a pick and place machine for rapid, largely automated microcontroller assembly with some help from the OpenPnP framework.
Join the DZone community and get the full member experience.
Join For FreeI’m working on a DIY SMT/SMD Pick&Place machine. I admit that this project is not finished yet, but now I can give a sneak preview: an SMD/SMT pick and place machine:
I will present that project at the Embedded Computing Conference 2018 (June 5th), both in a conference talk and in the exhibition area.
The machine is based on the OpenPnP framework and is not finished yet, though I have published status updates on Twitter. It uses mostly standard components, and special parts have been 3D printed or produced with a laser cutter.
Below is a picture with the controller and LCD board, stepper motor drivers, power supply, and diaphragm pump. The machine runs G-code with an NXP LPC ARM Cortex-M3 microcontroller.
The machine is not intended to be very fast, or be the least expensive option out there. The goal is to have a reliable, flexible, and user-friendly pick and place machine that can be used to produce smaller batches of boards (1-50 boards).
Main features:
- 24V high torque stepper motors
- Microstepper drivers (100 μm) X/Y resolution
- Dual head with rotating nozzles
- Automatic nozzle change based on SMD package/size (5 different nozzles per head)
- Reliably place passive components down to 0805/0603 (target is 0402, not yet there)
- Graphical LCD for status and manual control
- Runs G-Code with OpenPnP
- Imports CAD/Board position information (e.g. from KiCAD, Eagle or Altium)
- Magnetic tape and PCB holders
- Cut tape strip feeders (3D Printed SMT Cut Tape Holder)
- Dual camera vision system with LED rings
- Head camera to locate SMD cut tapes and loose (bin) parts
- Head camera to detect PCB location and orientation using fiducial markers
- Optical min/max endstop
- Visual homing with fiducial marker
- Emergency stop button
- Bottom camera to correct part alignment (angle, offset)
- Diaphragm pressure pump with high-speed solenoids
- Motorized SMD tape feeders (work in progress)
- Solder Dispensing (future feature)
- Pressure monitoring (work in progress)
The speed of the machine has not been optimized yet, as the first priority is to get accurate SMD component placement. Currently, the machine is able to place around 400 components/h.
The motorized tape feeder is a work in progress by a student contributing to that project. The feeders use the NXP Kinetis K20 and K22 microcontrollers (ARM Cortex-M4 running FreeRTOS with Processor Expert). Another subproject (not started yet) is to add a solder dispensing option.
The video below shows how the board (PCB) fiducial markers are used to find the board origin position alignment. All that I have to do is to place the board ‘near’ the origin, and the machine will adjust the SMD component based on the fiducial markers. I have configured the system to average three measurements. The LED rings for the cameras are used for only a short time (flash 3 times for each fiducial marker). Because the original board did not have fiducial markers on it, they were been added to the board later.
The video below shows how the head and head camera is iterating through the component placement list:
Below is a video of the machine running a test run:
Would this something you could consider to have on your desk or in your lab? Clearly, for more than 40-50 boards, I send them to an external assembly place. But for less than that, for all the prototype stages with a handful of boards, or for a classroom setup with 30-40 boards? I can get 10×10 cm dual layer boards from China for a total of $5 (plus shipping) in less than a week. The hard work is to get them assembled — or it is expensive to have them assembled by a contracting house. This machine fills that gap. So what do you think?
Happy picking!
PS: I plan to write up more articles about the machine (how-to, BOM, …) with more videos and pictures.
Links
- OpenPnp: http://openpnp.org/
- Embedded Computing Conference 2018: http://www.swisst.net/ecc18.html
Published at DZone with permission of Erich Styger, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments