Close

6/29/2014-Present - FirePick Delta Failblog and Wins

A project log for FirePick Delta, the Open Source MicroFactory

An affordable electronics manufacturing system for hobbyists, students, & small businesses. Inspired by RepRap. Powered by OpenPnP/FirePick.

Neil Jansen 07/07/2014 at 05:237 Comments

This entry will serve as an omnibus collection of fails, and wins, at the system level.  I'd rather keep them together, instead of having dozens of tiny updates, each with their own entry. 

As of July 8 2014, we are successfully picking and placing SMT components with the FirePick Delta prototype.  This is a huge accomplishment in itself, but we've really just started.  Although FPD has a 5MP camera mounted to the end effector, and a full suite of custom computer vision functions ready to go, we've still got some integration to do before we can use it at a system-level, for drag-pin feeder advancement, up-looking vision, and fiducial recognition.  It's a minor amount of work, but everything takes time.  For today, we're just trying to make sure that we've got all the various parts of the system online and working together.  You have to crawl before you can walk, as they say.

6/29/2014 - Auto-Z-Leveling Headaches

I've been trying for several days to get the auto-Z leveling code working, in the Marlin motion controller code.  After several days, I find that changing one constant in the config.h got it mostly working.

Here's a post over at the Deltabot Google group of my headaches;

https://groups.google.com/d/msg/deltabot/iPyYfx6X5I8/EeNPLG6t4_cJ

7/4/2014 - Endstop Issues

My "Y" optical endstop limit switch died last night. I don't have extras, so I had to order some. With the July 4th holiday, it's going to be Wednesday or Thursday (the 10th) before I can do any online tests with the machine. After I'm done raging and breaking things, I'm going to take the opportunity to catch up on BOM stuff, wiki documentation, and finalize the PCB designs. That's six or seven straight days that I'll have, doing stuff I didn't previously have time for, so hopefully this will not be a complete setback.

7/5/2014 - Endstop Issues Fixed

Christian Lerche, our schematic and PCB guru, helps me figure out that the endstop switch is not actually broken per se, it's just a crappy design, and the status LED is loading down the phototransistor.  With some quick rework, I removed the LED and had a working endstop.  Panic is over.  Back to work.

7/6/2014 - 1:00 AM Rant

It's 1:00 AM and I've been fighting an onslaught of technical issues for not just the holiday weekend. I've been at this for several weeks. I've experienced broken endstop switches, weird firmware issues with Marlin, getting lots of positional offsets backwards and spending hours or days tracking them down.  I'm not complaining or anything.  This is a BIG project and this kind of stuff is expected.

I've wanted, for the last few weeks, to make a post saying, "Hey guys!  My machine is working!  Cool, huh?!"...

Well, that day is not going to be today.  I'm at the point of exhaustion.  

BUT, it may be tomorrow, or later this week.  We're REALLY close to having a working prototype. Basically we are 99.9999% ready to show off working pick and place functionality.  So uh, stay tuned :)

7/7/2014 - Safe Z Issues

I'm trying to run OpenPnP, and the head keeps crashing into the table.  Eventualy, I find out that the "safe z" position that OpenPnP uses is 0.  My machine, being based on a 3D printer, considers 0 to be the bed surface.  No problem.  It's just math, we can fix this.  

7/7/2014 - SMT Nozzle Rotation Issues

Now I notice that the rotation axis steps per degrees are all screwed up.  Again, easy to fix, guess I overlooked this earlier when I was setting up the other config.h stuff.  OK, now the rotation is fixed and working well.

7/8/2014 - We won the HaD Round 1 Community Voting!

Looks like we won the first round of voting for the Hackaday Contest.  

Personally I always root for the underdog, so it's a really weird feeling for this project to be so popular.  

I've never won first place at anything in my life, mostly because I march to my own drum and rarely conform to whatever rules are in place.  The Hackaday contest is different, however.  I'm doing my own thing and enjoying it, and people are taking notice, and truly believe in what I'm doing.  That's pretty awesome. 

There's a sense of happiness but also an underlying worry and sense of responsibility that comes now that people know who we are and are expecting us to come through and meet our promises.  I'm not sure if I mentioned it elsewhere on the hackaday project page, but I want to make affordable electronics manufacturing my life's goal.  This is what I'm going to do, regardless of what roadblocks stand in my way.  This won't be a half-assed project that never gets finished.  I'm in this for the long haul :)

7/8/2014 - Vacuum Timing Issues

So now I'm attempting to run my first pick and place job (with a single resistor no less), and it runs great, until it goes to set the resistor down.  It places it down quickly, and then returns to the safe Z position about 25mm above the bed, and although the vacuum has stopped, the part is still hanging on tight.  (for those familiar with industrial pick and place machines, we do not have a puff of air to push the part off).  OK, this is fixable with the dwell time setting.  I can actually set the dwell from either the Arduino sketch, or OpenPnP via the XML file. I try both, and eventually settle on setting it via OpenPnP, as I don't have to reload the sketch when I change the dwell time.

7/8/2014 - A Modicum of Progress

So above is the video of the first pick and place operations.  It's a pretty boring video (just like my other videos), with a lot of other mundane-yet-relaxing footage of code compliation and dubstep music, which definitely puts me in the zone where time stops and I can just dig in and solve problems.

I'll be updating this log with a few more related entries as we start tying in the computer vision and getting the feeders working in full-auto.  I also need to buy a bunch of parts so I can start trying to assemble full boards :)

7/12/2014 - Traxxas 5347 Ball End Link Issues

The Traxxas ball end links have an unacceptable amount of backlash. They also bind when moving to the extremities.  I know that there are a lot of Kossel and Rostock guys 3D printing with them, but I'm thinking that PnP work might be a cut above 3D printing work, that is, less fault-tolerant to backlash problems. And of course we're not using the Kossel/Rostock linear tripod system, we're using a delta design.  I'm sure that has something to do with it.

I've tried to mitigate the backlsh issues with tension springs. It helped. It does make my machine sound really weird when I do a G28 home command.

But I've still got binding issues when moving to the corner feed locations.  The strategy in the short-term is to just use the corner feed locations and keep the springs.  In the long-term, however, I will be ditching the Traxxas ball links for some custom ball-bearings that have been welded to socket head cap screws.  These will be attached to the orange arms and end effector, and I'll use rare earth magnets attached to the carbon rods, to make a spherical magnetic ball joint, that will have zero backlash.

7/13/2014 - Camera Mounting Issues

The Raspberry Pi camera seems to sit at a bit of an angle right now. This is my fault, because I designed the mount, and it's not holding it in a parallel fashion with the the tolerances that we will need. (see picture below).  If I add some plastic to fully support the camera, instead of using two M3 nuts like I'm doing now, this should keep the camera nice and level.

There's guaranteed to be more issues to come up, and when they do, I'll post them here.  Stay tuned!

Discussions

peter jansen wrote 07/11/2014 at 00:39 point
As a side project, I've been working on a pick-and-place machine with autochanging tool heads so that you could pick up a paste dispenser, paste the board (it feels like no matter how well I place a stencil, I'm always smearing the paste for the tight-pitch TQFPs and QFNs), pick up a vacuum head to place the parts, fire up the heated aluminum plate it's sitting on to reflow the parts, then (optionally) pick up an FDM extruder to build a case around the board. It's lofty, but maybe some of the ideas will help. One of the issues with picking up entire toolheads is that it it's easier if the heads are self contained. After getting the head change mechanism working, I worked on the pick and place head -- Last I worked on it I'd picked up some tiny vacuum pumps (KPV14A-6V from Clark Solutions, but you'll likely have some better sources in Shenzen) to mount onto some tiny hollow-bore stepper motors (so you can rotate the parts to the correct angle without issue), but these tiny pumps didn't appear to have enough force to really get the job done. Still it's appealing if you don't have to have a giant vacuum pump on the floor that's nearly as big as the machine. Best of luck, hope that might help a tiny bit!

  Are you sure? yes | no

peter jansen wrote 07/11/2014 at 00:41 point
ps - The tiny hollow-bore steppers are from Sayal Electronics in Toronto (Canada), but again you'll likely have much better luck with local sources at Haxlr8r.

  Are you sure? yes | no

D1plo1d wrote 07/10/2014 at 03:23 point
Congrats to Neil and the rest of team FirePick on your first pick and place run from team RetroPopulator!

Open source Pick and Place ftw!

PS. The RetroPopulator need skulls too! Check out our latest pick and place run: http://hackaday.io/project/1605/log/4715

  Are you sure? yes | no

Rogan Dawes wrote 07/09/2014 at 05:54 point
This is possibly a stupid suggestion, but here goes anyway :-)

How do you think having a second valve on the vacuum pipe would work, one that is open to the ambient air?

To pick up a component, close the ambient valve, and open the vacuum valve/turn on the vacuum pump. To release the component, close the vacuum valve/turn off the vacuum pump, and open the ambient valve. The inrush of ambient air towards the vacuum needle will push the component off.

It's probably a more expensive solution, but one that would speed up the operation a bit. Trade offs :-(

  Are you sure? yes | no

Neil Jansen wrote 07/09/2014 at 12:39 point
Karl, our software lead, has actually got a working 3D printed solenoid housing that uses a cheap $2 solenoid found at places like Sparkfun. Since our tools are modular, people can can buy just the vacuum pump based version, or the one with the solenoid, or, our yet-to-be-announced Murata Microblower based solution, which uses a piezo element diapragm pump that's completely silent and has no tubing or motors, and has basically zero lag. We'd also be open to other people coming out with interchangable nozzles and vacuum sources, after we release the source files and interface spec(s).

  Are you sure? yes | no

zakqwy wrote 07/08/2014 at 15:40 point
Neil -- don't be afraid to post challenges and failures. There are lots of folks out there that might have experienced the same problems you have and could help; your project has enough visibility that tons of people will read your updates and respond if they can. IMHO, that's one place open source stuff shines: community engagement during the design process.

  Are you sure? yes | no

dpageau wrote 07/08/2014 at 17:26 point
I agree !

Maybe you should consider releasing file even if is not in a full working state, people would be able to replicate issue and contribute to project.

  Are you sure? yes | no