A dual head PNP machine that uses Openbuilds hardware, a Smoothieboard controller, dual camera vision, automatic/drag feeders, and OpenPnp
This PNP build pulls ideas from many different machines that came before this one. I used the OpenPnp Openbuilds as a starting point. I wanted to have a usable machine without spending thousands, while being able to add things (like auto feeders, and a nozzle changer) as needed.
Purchased a 4x due to availability & extra components to make it a 5x
For some reason I didn't realize that running the Smoothieboard via ethernet was significantly slower in transmitting commands vs USB serial. I'm not sure exactly where the bottleneck was, but it probably had something to do with my router. Switching to USB made a significant improvement in speed, especially with anything related to vision.
Recently I also printed some new tape peelers for the existing auto feeders while making some new ones. These peelers were published here. I used sg90 servos, but gutted them so they are just motors. I'm sure I could've figured out how to use them or mg90 servos, but it was easier to just modify off brand sg90's, and cheaper than buying new faster n20 motors.
With these two modifications, the machine is now up to 1200 parts per hour with bottom vision off for 0603 parts. Accuracy is pretty good, but still needs some fine tuning. The recently added runout calibration to OpenPnp helps too!
Here are some test runs of the machine doing its thing. This is after a lot of calibration and cussing.
In the first video, you'll see moves between picking a component and going to the board are slow. This is because the head is rotating on the move, and the component is oriented to correct way by the time it arrives at the board. It doesn't really need to rotate the part in most cases. If you have a resistor or non-polarized cap set to 270 or 180 - changing the rotation values to 90 and 0 will make things go much faster.
For the second video, I had bottom vision turned on for testing. This was for LEDs (which really don't need to be precisely oriented), so things are significantly slower than they would normally be. I do need to adjust the feeders a little more though. They're somewhat inconsistent, especially with LEDs.
I would have loved to have all auto-feeders, but that would increase the cost significantly. Especially since I don't have a 3d printer (I realize the Ender 3 is under $200 and could do the job, but one thing at a time).
So, I found this metal drag feeder on Robotdigg. After getting it, I realized that it sat too high on the table for the nozzles to clear it. That meant, I would have to mount it to the frame directly and cut out space in the table.
I had already cut a space in the table for the auto feeders. They also needed to be raised a bit, but that was solved by mounting them to a 20x20 extrusion, that was then mounted to the legs.
Here is the drag feeder being positioned to mount to the frame. You can see how I ended up mounting the drag feeders as well. Note that the front and rear frame rails were moved to the legs from the initial spot under the pulley and motor mounts. This is because they were too high to mount the feeders to. This way I count mount the table to them as well.
Here is the table cut (and the up camera mounted in the 3d printed case):
There was another issue though. With the top camera mounted to the back of the head, it wouldn't be able to "see" the auto-feeders. Since the auto-feeders do not need vision, this would have been okay, but it is nice to be able to see where things are on all parts of the usable space. That and it couldn't see anything for the second nozzle when it was over the drag feeder either.
The solution? A different camera mounted between the nema 8 motors. It's slightly lower quality than the ELP camera, but it works. The only downside is it loses focus - I have no idea why, but it can be adjusted easily on the top.
The mount originally had a ball on the end of it. That was cut off and run through an M5 die. It screwed perfectly into the head where a nylon stop was located. Two nuts on it and it was pretty sturdy. The thumb screw was later replaced with a set screw.
I found some auto feeders I liked here. There's a lot of parts to assemble, but there's a lot of well thought out features to make sure the tape is fed and peeled consistently. Check out the site linked above for details.
This is the part that actually peels the tape with the N20 motor:
Here are the assembled feeders mounted to the frame in the first thought of where they could be placed:
Starting out the build with the Openbuilds frame and mounting the head. Note that the gantry plate threads have to be drilled out to mount the x axis like this. It's a bit tricky to get assembled.
The 3d printed camera mount is from the OpenPnp design. It didn't work too well in this location on the head and was rubbing on the nozzle plate.
The solenoids and vac pump mounted. Flyback diodes were used at the connections for each.
I had to disassemble the head to drill out the mounting holes a bit more to mount to the OpenBuilds mini gantry. They were m3 sized and needed to be m5 and countersunk a bit to clear the nema 8 mount.
Running everything through the chain. I later realized that the tubing I used here was too rigid, so I switched it out for something softer just in the chain. The rest is still this tubing.
After figuring out that the camera wouldn't work next to the head, I mounted the (ELP) camera under the X axis. I later switched this out with another camera that fits between the Nema 8 motors on the head. I found that having the camera far away from the nozzles made the usable space less when the top camera needed to be used to align with the feeders.
When originally purchased this was a 4x Smoothieboard. I purchased the parts to make it a 5x and soldered them on. The BOM for that is located here. In the top left you can see where I let out some magic smoke from a MOSFET due to some reversed polarity on the power input for the small MOSFETS. When I turned on the LED light, POOF! Whoops!