Close
0%
0%

SimplePnP

Very low cost Pick and Place machine

Public Chat
Similar projects worth following
This project has one goal: deliver a reliable and expandable Pick and Place machine at a hobby 3D printer price point.

Printed circuit board assembly is a critical part of building electronic devices. Prototypes are often built by hand, and high volume PCB batches are normally handled by specialized machines in a factory assembly line. But there are several cases where hand assembly is slow, difficult and very tedious, and off sourcing the work to a factory is not cost effective or has some constrains that make this route undesirable.

Having a personal Pick and Place machine is a way to solve this issues. While not as fast as an industrial machine, it easily beats hand assembly. The goal of this project is to provide an affordable Pick and Place machine.

This Pick and Place machine can be divided in two parts: the head and the table.

The head is the part used to grip every component meant to be installed on a PCB. It uses a hollow shaft stepper motor to rotate the parts and allow a DC vacuum pump to grab them through a nozzle and a camera to help locating features and components.

The table is meant to position the head in the correct spot to hold and release each component. It is a gantry style Cartesian system built from aluminum extrusion and uses linear rails, stepper motors and timing belts to perform motion.

A computer running OpenPnP is used as the brains of the machine, which sends the control commands to a pair of GRBL boards that control the motion and the rest of the operations needed to perform the PCB assembly job.

Its specs are as follows:

X travel

300 mm

Y travel

300 mm

Z travel

23 mm

Footprint

650×500×200 mm

CPH

750

With vision assist

Component size

Up to 0402 (1005 metric)

Nozzle type

Samsung CP45

Vision

Top vision

Optional bottom vision

Number of Heads

1 (base model)

Optional dual head

Power consumption

60 W

With a 12 V power supply

Weight

4 kg

Bench mountable

  • Using OpenPnP

    ottoragam09/04/2019 at 03:03 2 comments

    OpenPnP is a Java based open source software program that can be used with this machine in order to program and run PCB assembly jobs. This log will cover the configuration of machine drivers, head and feeders. In depth information about configuring OpenPnP can be found at https://github.com/openpnp/openpnp/wiki

    Machine Drivers

    A machine driver contains all the info pertaining the communication between a motion controller (GRBL in this case) and a computer running OpenPnP. SimplePnP uses two separate motion controllers, one for the table and another one for the head, so we need to set up the table driver and the head sub driver.

    Table Driver Setup

    Setting

    Message

    COMMAND_CONFIRM_REGEX

    OK

    CONNECT_COMMAND

    $X

    G90

    HOME_COMMAND

    $H

    G92 X0 Y0 Z0

    MOVE_TO_COMMAND

    G1 {Y:X%.4f} {Y:Y%.4f} {X:Z%.4f} F{FeedRate:%.0f}

    G4 P0

    PICK_COMMAND

    M8

    PLACE_COMMAND

    M9

    Head Sub Driver

    Setting

    Message

    COMMAND_CONFIRM_REGEX

    OK

    CONNECT_COMMAND

    $X

    G90

    HOME_COMMAND

    G92 X0 Y0 Z0

    MOVE_TO_COMMAND

    G1 {Z:X%.4f} {Rotation:Z%.4f} F{FeedRate:%.0f}

    G4 P0

    The machine.xml sub driver section should look like this:

    Head

    The head machine component has the information regarding the nozzle carriage and bottom looking camera parameters and capabilities. OpenPnP allows the user to set the preferred head parking location and the soft travel limits.

    Nozzle

    To set up a nozzle for the SimplePnP machine, the user needs to do the following:

    • Set nozzle X offset

    • Activate “Limit Rotation to 180º”

    • Set pick and place dwell times to 350 ms

    • Create default nozzle tip and mark it as compatible with the nozzle

    Camera

    To set up a nozzle for the SimplePnP machine, the user needs to do the following:

    • Set top camera as down looking

    • Configure units per pixel depending on Z distance from surface

    • Calibrate test using built in routine

  • GRBL Motion Controllers

    ottoragam09/04/2019 at 01:45 1 comment

    This machine uses a pair of Arduino based GRBL controllers with V1.1 firmware for both the Cartesian table and vacuum head. Only the controller parameters will be presented in this log. Instructions on how to program GRBL parameters are available on the web.

    Parameters

    Table

    Head

    Table

    Head

    $0=10

    $0=10

    $26=250

    $26=250

    $1=50

    $1=255

    $27=1.000

    $27=1.000

    $2=0

    $2=0

    $30=1000

    $30=1000

    $3=0

    $3=1

    $31=0

    $31=0

    $4=0

    $4=0

    $32=0

    $32=0

    $5=1

    $5=1

    $100=50.000

    $100=50.000

    $6=0

    $6=0

    $101=50.000

    $101=50.000

    $10=1

    $10=1

    $102=50.000

    $102=4.444

    $11=0.010

    $11=0.010

    $110=20000.000

    $110=18000.000

    $12=0.002

    $12=0.002

    $111=20000.000

    $111=18000.000

    $13=0

    $13=0

    $112=20000.000

    $112=18000.000

    $20=1

    $20=0

    $120=1000.000

    $120=1000.000

    $21=0

    $21=0

    $121=1000.000

    $121=1000.000

    $22=1

    $22=1

    $122=1000.000

    $122=1000.000

    $23=7

    $23=0

    $130=310.000

    $130=23.000

    $24=25.000

    $24=25.000

    $131=310.000

    $131=23.000

    $25=1000.000

    $25=1000.000

    $132=310.000

    $132=360.000

  • Presenting the machine

    ottoragam08/24/2019 at 19:24 0 comments

    I wanted to make a video to showcase the general operation of the SimplePnP. The machine is sorting a few scrabble letters using my new Samsung CP45 nozzle holder, without computer vision assistance. Here I'm using a dial vacuum gauge to make sure suction is achieved. Normally, a pressure transducer is used instead, to provide feedback on whether the component was picked correctly or not.


    Let me also show you another video of the machine actually picking some 0603 resistors. If you wonder why it looks a bit sloppy, it's because, at the time of recording that video, I was turning the vacuum pump on and off by hand, and my placement Z height wasn't set up correctly.


    I'm currently working on a more complete demo board, so keep tuned for a full video of the machine in action.

View all 3 project logs

Enjoy this project?

Share

Discussions

James Newton wrote 08/30/2019 at 17:55 point

Nice! This is really cool!

  Are you sure? yes | no

ottoragam wrote 08/30/2019 at 18:46 point

Thanks James, Never again another PCB batch by hand!

  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