3DPlacer - A 3D printer to pick and place add on

An simple way to convert your 3D printer to a rich feature pick and place machine

Similar projects worth following
This is an add on to convert your 3D printer to pick and place machine that contains rich features, including part rotation, air pumping, nozzle change, bottom vision, feeder., etc, if you already have a 3D printer, it only took a few steps to convert. Currently it has main feature implemented and can be downloaded on, videos can be found on, the supported 3D printer model includs - Ender CR-10 and Anycubic Mega SE, more printer support will come! The pick and place machine use OpenPnp as controlling software which is a very popular pick and place software.

Last summer when I visited my relatives, I noticed that my uncle started having hearing loss, and to communicate with him seemed like a difficult task. He is a wise, practical man, but with the hearing loss, it gave the impression that his reaction has become slow and wisdom has faded. So I bought him a pair of hearing aids, and it wasn’t good enough, squealing comes quite often, and he also doesn’t like the look of wearing hearing aids. Since I was working on an audio processing project, I thought why not make an earphone but with amplification functionality (at the time of starting project, there was no such product in the market yet), with dynamic range compression, feedback suppression and noise reduction, so I can also warm up my skill and get some fun.

I started to look into the solution, main processor should be small, yet powerful enough to process audio signal in real time. After a lot of research, I ended up using nrf52 series chip. It supports BLE protocol, so it has no classic connection to cell phone, but to process audio, it is good enough. So in short, I made this:

Then the challenge comes, to make it small, I have to use tiny components, e. g. 0201, and every 0402 component I used took up a lot of space. To mount those tiny components, it felt like my eye will explode even with the microscope. I started to look for a way that can help me place the parts. PNP machine is a natural direction, but the ones on the market are very expensive. I happened to have an 3D printer at my hand, so I started to make modification and hack around my 3D printer.

There are multiple aspects for converting 3D printer to PNP machine,

  • Accuracy – when looking at the specification from a 3D printer, position accuracy is 0.0125mm, in reality, I found it not really able to achieve such accuracy, for me it can move to specified location consistently within 0.1mm, and that is good enough for me.
  • Connectivity – With a PNP machine one usually needs to connect to a PC and run G-Code commands. Most of 3D printers have USB interface. Then it also needs to connect an air pump, which means G-Code controllable interface is needed. The same applies for the lighting of the camera. So the more control interface it provides, the better.

Nozzle head

So as the first step, I need to find out what can be used as the nozzle tip and how to hold it. By searching in the internet, it came out that fluid dispensers can be a good fit, it has multiple sizes, from as low as 0.06mm to greater than 1.0mm inner diameter. It is strong and durable enough to support repeat pickup and place operation.

To use the fluid dispenser head, we also need something to hold it, so I designed the 3D printed nozzle head to hold the dispenser. After a bit of trying and error, the design came out as this.

It has a gear on top of the head, then a stepper motor (nema 17, 1.8 degree) can connect to it and drive the rotation. One bearing is used to make rotation easier. Then there is a screw thread inside the end of the nozzle head to make sure it can hold the dispenser needle. I was worried about the air leakage, but after printing couple of the heads and testing out, it can hold the air inside pretty well.

Then in order to mount the head onto the 3D printer, I need to find some place that is strong enough and easy to mount. Luckily there is a fan case, the idea is to make it switchable as easy as possible. So initially I decided to reuse the fan case for hot end, as it is a metal piece, it should be strong enough to hold the nozzle head.

But after couple of jobs, I found that the mounting to the fan case is not strong enough, as the fan case is supported by a piece of metal, and it could change position when some force is applied. So later I switched to mounting directly to the hot end support, but still leave the hot end, as I still want the switch between 3D printer and PNP function to be simple and fast.

After mounting the head, I ran a few tests, it can rotate the head...

Read more »

  • 1 × Nozzle head bundle The nozzle head bundle contains the 3D printed nozzle frame, nozzle, gear, stepper motor and bearings
  • 1 × Lego style build plate The build plate for feeder, cameras, PCB, fiducial, etc
  • 1 × Feeder Feeder for different components
  • 1 × Calibration fiducials The fiducial used for calibrate camera, backlash compensation,. etc
  • 1 × Nozzle tips Different size of nozzle tips for various size components

View all 8 components

  • Designing the position aware feature for pick and place machine

    xpDIY01/23/2024 at 12:54 0 comments

    Sometime ago I introduced the auto cassette feeder, which come with proximity sensor. And since the baseplate doesn’t come with power, I use the battery to power the feeder.

    Then I got suggestion why not provide power with baseplate, then there is no need to use battery and lower down the cost. I think this is a really good idea, so I started designing the system. To provide the power it is quite straight forward, initially I am thinking putting strips between Lego bumps and then implement 2 pogo pins in the feeder for power connection, which is simple! But then the dark side of my engineering brain come in and raise the voice of why not provide the position info as well, I think everybody who play with pick and place machine at some point thought about an automatic positioning system, so that setting up feeder and other component will be easier. So I started designing. The first challenge is how to make contact to the components (feeders, fiducial, camera., etc), I don’t want to change the base plate too much, I hope the component can still use the baseplate without modification. With that in mind, I finally decided to use Lego bump as the fixture, and make baseplate PCB strip a Lego component as well.

    The second challenge is how to make sure the contact is good enough. After checking different components and considering the space limitation (between Lego bumps), I found POGO pins are really good candidate. It is design to use for such case and can hold >10000 times plug in and out. With 10 times plug in and out per day, it can hold around 3 years, if 5 time per day, it can be around 6 years. So with that, I think it will fit most of use cases.

    Then for the third challenge, how to provide position info, how many pins needed. Considering the limited space, the less signal, the better. In order to get position, the first idea is to put the EEPROM chip with one wire protocol, that can be read from the control board. But this requires control to know which EEPROM corresponding to which location, and also the solution is more expensive. After consideration, a resistor dividing solution is selected. To know the position, it is simply an ADC with calculation. And the same solution can be apply for both row and column in order to finally determine the location. Finally I decided to go for 5 pin solution, VCC, GND, 1wire, ROW, COL. The 1 wire pin is required to send the position info to control board after reading the row and column info from ADC.

    Another challenge is to add support for openpnp. I have been using the ReferencePushPull feeder from openpnp. I like the feature of automatically calibrate the pick position and then pick. Because the auto positioning can have certain tolerance, with the auto calibration, it is able to make sure the pick action can be done accurately. So I have inherited the feeder, and provide the position setup feature to it. You can refer to video 

    Finally the control board, it is the bridge between the components and Openpnp. I have implemented several G-Code command in order for Openpnp to interact. In the mean time, within feeder or other component, to make things easier, I also implemented the same gcode, so that for control board, it is easier to just forward the command to achieve different functionality. You can find detail here

    I am pretty happy with the current design. Still some improvement are coming, for ex. I am planning to implement orientation detection feature, also I plan to put the position aware feature to fiducial, so that it is able to calibrate the baseplate offset automatically. Stay tuned!

  • New feeder design - cassette feeder trimmer version

    xpDIY05/26/2023 at 12:30 0 comments

    The new design of feeder with trimmer are uploaded to my website and github , you can download and try it out. I need to reduce the friction for component to slide still, any idea, just leave a comment, thanks and enjoy!

    videos is here

  • BOM has been added

    xpDIY05/23/2023 at 11:59 0 comments

    Hello everyone, as you probably know, the design has been uploaded to github, and in order to assemble the 3DPlacer, there are a few other components which is not 3D printed, so I have uploaded the BOM to github, you can have a look there and try it out. Hope you enjoy it! Any idea for improvement, just leave a comment. Cheers!

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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