DIY Pick and Place

The idea have been stuck in my head for some time now, to make my own pick and place machine that should be able to assemble PCB boards.
I want to do this project for its complexity which means a great challenge, and I like that. A pick and place has many interesting systems that has to work together with high precision and timing, if the machine should be able to place components at high speed.

Some of the systems I have to develop:

  • Mechanical structure that can withstand heavy forces from the gantry while it’s traveling in X and Y at high speeds without vibrating or or being close to resonance frequencies.
  • Vision system that can read components, PCB markings, and much more.
  • Motor control, the system has around 6 axes and 4 more axis for feeder gentries, all of whom should be synced and running at high speeds.
  • Large C# program that can handle all the functionality I have planed for the machine.
  • Laser alignment of components. The laser unit is placed on the pick-and-place head so I can read each of the three components the head has picked up while it is moving the components to the PCB.
  • Component feeder Solving one of the problem almost every PCB pick and place machine has (except high-end machines)
  • Vacuum and pressure systems. I have never worked with ether one of them so this will be interesting.

And a lot more of goodies …

I know this project will take some time, but that’s fine by me 🙂














A bit more done in CAD  2014





Working on the motor controller algorithms and path simulator 2013-12-10



I still have some problem with the motor jerk. I want active jerk tracking, and it is not easy. If I did go with position points A and B to travel between, it would be easy. But I like to be able to change point B on the fly.

A new improved version off the main board and motor module 2013-12-01

Main board

mb1 (Medium)

Motor Controller Module

p1 (Medium)

The Motor Controller Module is based on 3 boards, each utilizing a 4 layer PCB

Interface Board
l1 (Medium) l2 (Medium)

Controller Board
l3 (Medium) l4 (Medium)

Motor Driver
l5 (Medium) l6 (Medium)

The modules will be placed like this on the back of the head on the pick and place machine.
I have hidden a few PCB’s so it is easier to see board placement.

Started code development for the Motor Controller Module 2013-11-30

Enjoying myself with some CAD, wine and cheese 🙂  2013-11-25


Main Board result.


A new structure for version 2 electronics   2013-11-20



Improved Motor controller   2013-11-01


I needed much higher step speed to the hybrid stepper motors, With this solution I can manage MHz if the driver and motor can handle it. It also supports closed loop control with encoders. I can fit two of this in one STM32F4

Few parts done 2013-10-01

base1 frasBig frontbig

Metal for structure parts has been bought 2013-01-25

The first Mainboard has been soldered  2013-01-3

There will be two of those in the PnP machine.

The first batch of PCB boards is on the way back from seeedstudio with DHL  2012-11-30

I made a batch of totally nine boards that I have sent to seeedstudio for production.
Mostly the boards are for my PnP project. I was planning on waiting a few more weeks before sending the batch to production,
but I have to create the camera vision SW/HW function in quite a hurry because i took on the vision implementation as a curse project in school. So I desperately needed the light ring for the camera, aka lighthouse.

This is the main board controller. There will be two of those in the PnP machine.

  • handles 7 stepper motor drivers, “3 digital and 4 normal step/dir”
  • 7x end sensor inputs “hall sensors”
  • 4x quadrature encoder inputs, enables up to 4 closed controlled motor loops.
  • 5x analog sensor inputs , mostly for vacuum sensors
  • 6x digital outputs to control relays and stuff like that
  • 2x RS422 connections to PC trough the RS422_to_USB board
  • 1x camera control, lens focus driver
  • 2x UART connections
  • and some other stuff

The other boards for the PnP project, in order

Main Controller
Laser Alignment
Lighthouse Controller
Lighthouse Brick
Stepper Drivers
Mix of Boards
USB<–>RS424 Switch Board


New Cad ideas. This is probably the solution I will use 2012-12-27



All the linear guides have been bought,    2012-12-20                

The 7mm linear guide is sooo tiny 🙂


Machine Vision update,    2012-12-15                

The images in the bottom list shows each picture/vision function.
The system finds the component pads and marks them with a green box, seen in the big picture in the middle.


Camera vision test light unit, AKA Lighthouse ,    2012-12-12                

Small demo video


Machine Cad update,    2012-10-20                

So far this is just a crude cad idea, it is easier to make the drawing simple until you find the structure you feel will work.


Machine Vision update,    2012-10-13                

I finally found a good webcam capture driver.
Now it’s time to sketch the vision system sw structure and make a vision driver for my controller sw package.

Z axis ideas,    2012-08-30                

This was just a test cad. That’s how I work.
I make a lot of different versions of a solution to find out strengths and weaknesses. Finally I select the best ideas and create the final solution.

New Parts,    2012-06-25                










First approach,    2012-05-23                

The first approach is to try to create a laser alignment function for the head.

I did a simple setup to see if the filter I have will work to minimize the diffraction effect

This is to see if  could remove the diffraction pattern a light generates when it hits a corner.

This is because the laser light is unpolarized and by using a polarize filter I can make it polarized in the vertical direction.

This minimizes the diffraction pattern.

Diffraction pattern “from wikipedia”




When I confirmed that this could work I made a jig to hold the laser and the CCD sensor

After a few hours in the workshop

The stepper motors come from some DVD writers I had lying around.

The assembly equipped with CCD sensor and laser


The CCD sensor I used for this test is iC-LF1401 that holds 128 active photo pixels with 63.5 μm pitch (400 DPI).

I would prefer to find a sensor that has more pixels and also is much wider than this one, but it will work fine for initial testing.

I connected the motors and sensors to my test board that holds a STM32 MCU and 3 allegro stepper drives.

This wont work without some controlling software.

From the software I can control the motors and the sensor. “Image showing the laser almost centered on sensor”

In the horizontal direction holds pixels on the sensor, and in the vertical direction holds each pixels intensity.


This shows the sensor readout with the laser turned off, to my disappointment there was to much noise in the the readout.

This means that I have to use a more powerful laser than i used in this test (5mW) so i can shorten the sensor integration time (shorter shutter time)


I changed the way I display data, and it became clearer how to read the displayed data.
The highest points dv/dt = 0 is the corners, and the low points between is the center on the sides of the component.
To speed up the reading I can sample fewer points and interpolate data points between to estimated points that marks the component rotation and placement.

few videos on the laser alignment test module

Parallel light source


Get every new post delivered to your Inbox

Join other followers: