PDA

View Full Version : Interested in help/advice for automated loading routine



rley
03-31-2014, 01:25 PM
Hello,

Please let me know if this question should be placed in a different area of the forum, I wasn't quite sure.

We are working on an unusual project where we have converted our trusty PRS Alpha into a CNC Aluminum bending robot for a large scale sculpture. The goal is to try and created an automated routine for this as there are approximately 1,000 pieces in total that will need to be fabricated.

So far , we have it about 80% complete, though are hung up on the last part which is to figure out a way to have the shopbot compensate for a decrease in Z value height when picking up new stock material, which it then places into a holding jig, prior to bending the metal "fingers". This video shows the loading and unloading operation:

https://vimeo.com/89213148



There is a vacuum cup attached to a bracket on the Z axis that moves to the stack of aluminum stock, lowers to the top surface of the top piece, and then activates a vacuum switched by the relay board in the controller. It then loads the piece into the fixture. The question is, the next time it does this, the stack of stock material will be about 0.098" lower each time as the material is removed. How to compensate for this, besides hard-coding that diminishing thickness into the loading file?

The one thought is to put a small electrical probe (machine screw) that would make contact with the top of the metal stock material and then use a similar routine that the Z-Zero plate uses to use a closed electrical loop as an input, thus the diminishing material height would not be an issue as it would always just lower the Z axis, searching for the top of the next stock material.

I can code a bit, but when I dig into the various referenced routines involved with the Z-Zero file, I'm not entirely sure how to extract and re-purpose the relevant code into what we need. Any suggestions from those of you that like automation challenges?

Thank you.

Rob Ley

srwtlc
03-31-2014, 01:48 PM
That's slicker than snot on a marble! :D

Take a look at the VO command in the command ref .pdf. You could utilize that (a temporary Z offset) with a variable for the plate thickness and for each loop/repeat of the file, do a count that adds that amount on. Once that part is done (picking up the plate), cancel the offset and continue.

Some code at the beginning to ask how many plates there are and doing some math after that to determine the start height of the stack and when finished, ask if you want to reset and start another stack.

Would take some trial and error, but is an interesting challenge!

rley
03-31-2014, 01:54 PM
Hi Scott,

Thanks for the fast reply. Your approach is inline with what we were thinking at first, but the issue comes up that the small tolerances between whatever material thickness value we input versus the actual material thickness is adds up over the 50 pieces. Such that by the time it gets to the bottom, it may end up being as much as 0.1" off, and no longer making contact with the piece.

Would love to figure out a way that the machine just lowers the Z axis down until the point in which it makes contact with the next stock material, regardless of how high the stack is (within a defined range of course).

As our stock is aluminum and conductive, I wonder how we might allow it to lower down and wait for a closed electrical circuit, just like the Z-Zero plate routine works?

Thanks,

Rob

paul_z
03-31-2014, 02:23 PM
Rob,

It's great to see a bot used for something other than cutting. Pick and place is a great job for a bot.

I'd recommend using a momentarily push switch mounted on the pickup to detect the top of the stack. Such switches are very inexpensive and are likely to last thousands to tens of thousands of actuations before wearing out. I'd also mount it on something with some flexibility (in case something goes wrong). Using an electrical contact through the stack of material might be problematic.

You might want to monitor the switch that it is "open" when it should be open. It would be a type of ongoing, built in test. It might help you to trap an error before things get nasty.

You might also look into using some sort of photo detector to detect when the supply stack is empty and perhaps one in the jig to be sure a piece of material was installed. A LED on the pickup could be the light source.

Paul Z

srwtlc
03-31-2014, 02:23 PM
Much in the same way the Z zero routine works (without all the extra stuff in the file), if you had a probe rod that at the moment it touches the next one making contact (ON INP(1,1) GOTO SUCKITUP). At that point the sucker is turned on and you continue from there. For dropping the part in the other stack, you would do the same, but release it. Once it get to the last one, you could have it stop for a reload to probe the top of the stack again.

You'd have to have an input hooked up to an aluminum part holder instead of your plywood one. You wouldn't need to have the stacks on separate inputs.

Maybe a spare prox switch would work on the stack too.

Keep thinkin' ;)

Brady Watson
03-31-2014, 02:55 PM
A simple switch at the end of your vac cup arm & modified Zzero routine could get you there. Just wire it up to any input (except #4) and have your routine reference the same input number. I would avoid relying on material conductivity for the switch part & just use a switch like the one below.

http://www.newark.com/productimages/standard/en_US/4164410.jpg

-B

jerry_stanek
03-31-2014, 02:58 PM
simple box with a spring to push the pieces up like a magazine for a gun.

srwtlc
03-31-2014, 03:20 PM
I like Brady's mechanical switch. My last thought was a prox switch like what's on the machines now, but forgot about this kind.

paul_z
03-31-2014, 04:48 PM
Rob,

If you run out of disctetes, there are interesting ways to expend the number.

Paul Z

rley
04-02-2014, 03:54 PM
Thank you guys for all the good input!

The mechanical switch does seem better than the electrical probe, as it would avoid any reliability issuess related to variables within the stack of material.

I am trying to get my head deeper into shopbot code and the handling of variables, but as per Scott's suggestion, would it be possible to have an input call an output? Meaning, we hard code a load routine that sends the vac cup to a predefined X and Y, and then have the Z drop down until the switch makes contact and closes, immediately stopping the Z movement and turning on an accessary swtich for the vac solenoid?

So it would build on Scott's mention of (ON INP(1,1) GOTO SUCKITUP)...

Now I just have to figure out what of the Z-Zero plate routine is useful for this new load routine, and what chunks are unnecessary...

Rob

srwtlc
04-02-2014, 04:50 PM
You could do ON INP(1,1) SO,2,1 ...or ON INP(1,1) GOTO SUCKITUP where SUCKITUP: would do the SO,2,1 and end ...or ON INP(1,1) GOSUB SUCKITUP where SUCKITUP: would do it's thing and then return to the next line after the GOSUB. SO,2,1 or another output # would be the turning on of the vac and SO,2,0 would turn it off. Do you have a relay board or proper relay to turn the vac on now.

You could use a master file that does the above part and then calls up your bending file and when done would go back to the master file to loop the pickup/drop routines. This same master file would also do the positioning for the pickup/drop off locations.

bobmoore
04-03-2014, 09:20 PM
Rob;
Interesting project for sure. A simpler way to do this might be to run your vacuum on a normally closed vacuum switch with the vacuum running between picks. When you get contact with the part and the vacuum rises,you have just picked up the part with no failures and the vac switch signals your Z move. Another contact switch to release the vacuum and even a time delay to minimize vac run time between pickscould save some energy.
Bob