The Semi
Pick-and-place (PnP) machines are very useful for manufacturers or individuals that need to populate many identical PCBs. That's particularly true when working with tiny SMD (surface-mount device) components that are difficult to place on the board by hand. A properly configured PnP machine can populate boards with dozens of components per minute, which can be a major boon to efficiency. The problem is that configuring a PnP machine is often a very difficult task. The semi-automatic CDPnP makes setup very easy to perform, so anyone can take advantage of automated PCB population.
PnP control can vary dramatically. Some machines require that the user configure every movement manually, showing the machine exactly where to pick up a component and exactly where to move to drop that component. The user has to define those movements for every component on the board. Other more advanced PnP machines are fully automatic, meaning they can find components and drop them onto a PCB according to the design files without any manual setup. Such machines are very expensive and are typically used by high-volume PCB fabricators. They also require a lot of initial configuration to work as intended. CDPnP is a semi-automatic machine that represents a middle ground between those two extremes, making it perfect for small scale production.
To use CDPnP, the user only needs to import a KiCAD position file, put their unpopulated PCBs onto the bed, drop a bunch of the components onto the bed, mark a couple of reference points on each PCB, and press "go." This works because CDPnP makes heavy use of computer vision to detect components and their position. Because it has the KiCAD position file and marked PCBs, it knows exactly where to put those components and how to orient them. Like a conventional PnP machine, it uses a vacuum end effector to grab components. That end effector, which includes the camera, can move in the X, Y, Z, and R (rotate) axes.
CDPnP was designed to be controlled directly by a PC through RS-485 CDBUS motor drivers. That eliminates the need for a dedicated microcontroller acting as an intermediary. The Z-axis includes a strain gauge, so the machine can detect when the end effector pushes against a component and when that component is resting on a PCB. The camera also connects through CDBUS.
This is an open source project and the files necessary to build a CDPnP are on GitHub.