PnPAssist is a tool that helps you to assemble PCB boards manually.

Public Chat
Similar projects worth following
The PnPAssist is an open source innovative CNC table that position the next SMT component with a proper orientation for you to make hand assembly a lot more fun and way more efficient.

PnPAssist is a numerical, precise positioning device that makes tedious and repetitive manual PCB assembly easier for you and prevents you from making mistakes.

Why I build this?

I often find myself assembling PCB boards that I designed for my own R&D activities or for a small number of boards I prepared for sales on Tindie. This process is a little bit painful. First I find the location and value of the component from the CAD software. Then I find the right value/package component from my boxes among dozens of components and locate that component by determining its place on the blank PCB. This process continues repeatedly for each component. I designed a tool for myself to improve this time-consuming and error-prone process.

I take a look at the PnP machines for a long time and made researches to make or buy one for myself. But every time I gave up. It frightened me whether it would be accurate enough and the time consuming preparation phase for each new type of board. After all, I was making dozens from one type of board, not hundreds of the same board. There was no enough place in my room for such a large machine. That's why I decided to design a simpler and easier device.

How to Use It?

This machine works with a PnP mount file. Most of the CAD software (may be all of them) for PCB design has option to export this file. For Autodesk Eagle you can export from File > Export > Mount SMD menu

This text file contains the name, X coordinate, Y coordinate, angle, value and the package of the components on the PCB. 

Example Format:

R5 14.31  6.59  90 470ohm M0805
R6 16.41 10.04 180 470ohm M0805

Save this mount file to an SD card and put it on the PnPAssist SD card reader. The machine will home itself on power up.

Place the empty board on the rotary disk. Now you are ready to PnP. For the fist component you need to adjust the machine position under the laser cross. Every time you click the on board switch the machine moves in order to center the next component under the laser cross and the microscope. If you do not have a microscope You can only use the laser cross indicator. When the next component is at the center of the main rotary axis you can rotate the machine to feel your self comfortable to put the component on its place. The machine will show you the name value and the package of the component that you will use on it's oled screen. 


This machine has one linear and one rotary axis. The two lead screws move one center gear. This design have many advantages and simplifies the hardware design. The lead screws with center gear design locks the axis from moving and rotating freely and provide great precision. If you move only one of the motor the table moves and rotates at the same time. In this aspect there is a similarity with the CoreXY platforms. If you move the motors same amount at the opposite directions only the rotary axis moves. If you move the motors same amount at the same direction only Y axis moves. For this reason I decided to use only one step pulse signal from the micro controller to the motor drivers. This ensures that both motors rotate the same amount. 

I use atan2 function to convert the Cartesian coordinates to Polar coordinates for the rotary axis. A polar coordinate system uses an angle and a distance from a center point to define a point in 2D space.

For the given x,y coordinate of a component (we read mount file line by line from SD card and parse the x,y coordinates) we calculate the angle and the radius (distance to the origin) of that point. You can see the calculations in CalcAngleRadius function in the firmware. After this calculations we need to rotate to the angle and move as much as the radius. 


I design an 3D model component box with led indicators. The main board will drive the LEDs in order to indicate the component you need to take from the component box.

Future Improvements

I listed below some improvements that I have planned to realize for the next version. Please feel free to write me your ideas and...

Read more »

Standard Tesselated Geometry - 645.88 kB - 07/22/2021 at 08:40


Standard Tesselated Geometry - 80.36 kB - 07/22/2021 at 08:40


Standard Tesselated Geometry - 119.81 kB - 07/22/2021 at 08:40


Standard Tesselated Geometry - 83.87 kB - 07/22/2021 at 08:40


Standard Tesselated Geometry - 204.87 kB - 07/22/2021 at 08:40


View all 14 files

View all 15 components

  • Better Main Gear Design

    Nuri Erginer2 days ago 0 comments

    I tested so many different designs for the main rotary gear. I am glad where I am at the moment. It took my time to get an accurate design point. I updated the github repo with the final design

  • Video of PnpAssist

    Nuri Erginer6 days ago 0 comments

    here is the video of the machine

  • Controller Board Production

    Nuri Erginer06/21/2021 at 08:41 0 comments

    I have designed and order the Controller Board from PCBWay. All the design files are in the GitHub Repo.

  • Proof of Concept with Cross Table

    Nuri Erginer06/15/2021 at 08:53 0 comments

    I started with a simple motorized cross table under the microscope for the proof of concept. I also use a cross laser beam to highlight the place of the component. It worked well. The down side of this design is I can not rotate the board while placing the component. SMT components has various orientation mostly 90 45 degrees on the board. So freely rotating the board gives me a lot of freedom while putting the component on the PCB.

View all 4 project logs

Enjoy this project?



Reginald Beardsley wrote 2 days ago point

Please put this up on Crowdsupply or Kickstarter made with injection molded parts.  That would be much faster than using a lot of 3D printers to manufacture them   You can easily make molds for a small manual plastic injection molding machine.using the 3D printed parts as the pattern,   Make  plasters pattern for the parts, dry it out and pour the molds using zinc alloy.

However, I think this would sell well enough to justify taking it to a production shop.

But I'd love to buy a 3D printed one if you choose to start that way.

I'd like to suggest a pivoting vacuum  pick 'n place tool that would pick up from a  cut tape holder and then place and hold the part for soldering.  Load the part, press a button and solder.  Load next strip of parts.

That would also work for placement for reflow soldering.  For a small run of boards, place each part of a type on all the boards before switching the tape.

  Are you sure? yes | no

David wrote 2 days ago point

This is so awesome, I am totally going to build one.

  Are you sure? yes | no

Nuri Erginer wrote 2 days ago point

Hear to happy that. I am here if you like to ask anything

  Are you sure? yes | no

Oliveira wrote 06/23/2021 at 21:25 point

love it , such a professional look

  Are you sure? yes | no

Nuri Erginer wrote 06/24/2021 at 06:30 point

Thank you. Not that much but progressing well. :)

  Are you sure? yes | no

heinz wrote 06/16/2021 at 08:46 point

Very cool, thanks for sharing!

Do you have a video of it in action?

  Are you sure? yes | no

Nuri Erginer wrote 06/24/2021 at 06:31 point

Thank you. I will share all the STL files and a video soon.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates