Author Topic: #197 - pick & Place  (Read 22064 times)

0 Members and 1 Guest are viewing this topic.

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 13694
  • Country: gb
    • Mike's Electric Stuff
#197 - pick & Place
« on: August 19, 2011, 11:45:43 pm »
DIY/OSHW Pick/place seems like a good idea on the surface, but the more you think about it the less sense it makes.
I have done a LOT of thinking about it - originally looking at starting with an X/Y plotter, and ending up buying an old commercial P&P machine when I realised that DIYing was a lost cause. 

The problem is that it is only worth doing if you end up with something that is actually useful. This is where the idea starts to fall apart before you even start looking at the technical issues.

Let's start by looking at production volumes:
If you're only placing a few tens to hundreds of parts, it is always going to be quicker to do it by hand than set up even the best, most user-friendly P&P machine in the world. You also have to consider that pretty much any feeder design will waste a few parts on leading and/or trailing end of the tape, that you need to have parts on tape/tray etc. in the first place. for small builds the wastage could be more then the parts used.

If you're doing tens of thousands of parts upwards, professional subcontractors will always do a better job because it's  what they do all day, every day and they are better at it than you will ever be.

So that limits your potential usefulness to a low-to-mid range of volume between hand assembly and subcontract. Or if you need fast turnaround or extreme flexibility.

Next, machine capability.
You don't want to have to constrain your design too much in terms of part types, so any useful machine needs to at an absolute bare minimum place 0603s and SO parts with a high yield. And if you're spending money building a machine, you will be limiting usefulness if you can't also deal with 0.5mm QFPs and maybe 0402's as well.
You also need to be able to work on big enough panels to not have to keep reloading, and not limit the type of boards too much. Something like 200x300mm  is probably a reasonable minimum, which also corresponds roughly to the typical max size of cheap toaster ovens and low-end stencil printers.
On the basis of needing a placement accuracy an order of magnitude better than the smallest feature size, this means moving a placement head to an accuracy of 0.05mm over the whole 200x300mm placement area, including repeatability, temperature dependence, wear, backlash etc.
This inevitably means expensive mechanics and very solid construction.
I don't think there is much scope to be clever with on-the-fly vision to correct mechanical errors, as the pads are covered in solder paste.

Speed isn't necessarily a major issue, as long as it is at least a similar order to  hand placing, and needs minimal hand-holding so you can leave it to get on with it. The upper bound is how long the solder paste takes to dry out.

However if you're already spending enough to get the mechanical precision, it's going to be worth spending a little more to get reasonable speed. 

Then there is the feeder problem. This is the killer.
You will have parts on tape (8,12 and 16mm, plastic and paper), tubes and trays.
Yes you can passively feed  tapes (static strips) but this is a pain for parts that are used in any quantity. It also uses up placement area.
Mechanical tape feeders are hard to do well - what initially seems like a simple problem is deceptively complicated - pulling off the cover tape, not losing too much in leaders/trailers, and making the mechanism narrow enough to get a sensible number of lanes.
And you need quite a few of them, in different sizes. You could make an adjustable one for different tape widths but then you can't stack as many side-to-side. 
 
So in summary, yes you can build a cheap, simple P&P but it will be a useless toy and therefore a waste of time.
A useable one would take a lot of work, not be cheap due to th emechanical precision and quantity of mechanics for feeders, and then still only address a subset of the possible assembly jobs in terms of volume, size etc.

There are many, many more useful OSHW projects to be designed before it is worth doing a P&P.





 
« Last Edit: August 19, 2011, 11:48:41 pm by mikeselectricstuff »
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline EEVblog

  • Administrator
  • *****
  • Posts: 37661
  • Country: au
    • EEVblog
Re: #197 - pick & Place
« Reply #1 on: August 19, 2011, 11:56:58 pm »
Yep, I can't disagree with a single thing you've said Mike.
At least a DIY P'n'P machine would be several orders of magnitude more useful and fun than Chris's ChipMaker machine!
I think I'll stick to my CanyonCopter and uWatch projects.

Dave.
 

Uncle Vernon

  • Guest
Re: #197 - pick & Place
« Reply #2 on: August 20, 2011, 12:13:57 am »
There are many, many more useful OSHW projects to be designed before it is worth doing a P&P.
A great read Mike, sometimes the open source ideal has people forgetting that engineering is about solving problems economically.
If open source can temper it's enthusiasm with wisdom like you have offered, it will be in a much better position to maximise the returns for it's effort.
 

Offline amspire

  • Super Contributor
  • ***
  • Posts: 3802
  • Country: au
Re: #197 - pick & Place
« Reply #3 on: August 20, 2011, 12:30:58 am »
At first I thought this idea was nuts.

Unfortunately I started thinking about it, and it could be done very cheaply.

My idea would use the mechanism from an A4/Letter injet printer and it could load boards at least A4 size. The pick and place head will only move across the board, and a moving platted will move the board lengthways as the parts are laid.  Hopefully the drive for the platten can be based on the printer paper feed parts as well.

Here are the goals of my idea:

  • Size: Under 500mm wide with an extra 100mm of space need for convenient operation on the right hand size.
  • Lightweight - easily liftable. Should be able to do it well under 20Kgs.
  • Board size 200mm wide and the length is set by the size of the movable platten
  • Can handle at least 20 reels/tubes at one time
  • Easy to manually add parts that are not in reels and tubes
  • Easy to make boards with different builds in a single production run - say you have a board that can be optioned with different ADCs for different performance specs. You can easily  have different spec'ed boards in the one production run.
  • lightweight pick and place head with one motor - the laser positioner motor from a CD drive - for up down motion. Rotation of the head will not require any motor.
  • Boards will not be fed automatically - each board will require a person to load and start the place.
  • Only one board pass is needed, no matter how many different components
  • Minimum of metal parts. Pick and Place head largely made of Polycaprolactone (polymorph) - hand moldable plastic that is similar to nylon
  • Noise will be similar to an inkjet printer.

Basically my idea revolves around having an intermediary to store the parts for a board, so the loading of the intermediary is done in one pass (or several passes per batch if you need more then 20 component types on the board).

So the whole reel feeder mechanism and the board platten mechanism are removable and use the same space. You can even have several Reel feeder mechanisms all loaded. When the intermediaries for the boards are loaded, the reel feeder is removed and the board platten is inserted. The intermediaries can be stored, so it is not essential to load straight away.

Now the whole hub of my idea is the nature of the intermediary. I have an idea and I will need a few days to see if it is really practicable, but I think it is. What I can say is that my intermediary is very, very cheap - it makes the used printer parts sound expensive.

Based on a wealth of zero experience, I cannot believe that you need a heavy mechanism that has to be bolted to a concrete floor just to accurately place a part that weighs about 0 grams.


Richard.
« Last Edit: August 20, 2011, 12:53:48 am by amspire »
 

Offline Bored@Work

  • Super Contributor
  • ***
  • Posts: 3932
  • Country: 00
Re: #197 - pick & Place
« Reply #4 on: August 20, 2011, 06:37:23 am »
The reason to build a DIY P&P is certainly not because you need a P&P machine. It is for bragging rights, amusing oneself, wasting money and time (in essence, the definition of "hobby").

I googled a little bit around and found a few bits and pieces of people working on DIY P&P machines. Most were really just bits and pieces, like a prototype of a one-lane feeder.

But this one

http://www.hobbycnc.hu/CNC/Mech29/Mechanika29.htm

seems to be complete. And notice the clever way to drive the feeders? They are just holders, and a second head moves the tape forward before the main head picks the part. It certainly doesn't beat a professional P&P, but the builder can nevertheless be proud of it.
I delete PMs unread. If you have something to say, say it in public.
For all else: Profile->[Modify Profile]Buddies/Ignore List->Edit Ignore List
 

Offline mikeselectricstuffTopic starter

  • Super Contributor
  • ***
  • Posts: 13694
  • Country: gb
    • Mike's Electric Stuff
Re: #197 - pick & Place
« Reply #5 on: August 20, 2011, 09:36:21 am »
    At first I thought this idea was nuts.

    Unfortunately I started thinking about it, and it could be done very cheaply.
    Like I said, you can do it cheap but you won't end up with anything very useful
    Quote

    My idea would use the mechanism from an A4/Letter injet printer and it could load boards at least A4 size. The pick and place head will only move across the board, and a moving platted will move the board lengthways as the parts are laid.  Hopefully the drive for the platten can be based on the printer paper feed parts as well.
    The chances of being able to move the PCB with a printer mechanism in 2 directions while maintaining accuracy and not disturbing already-placed parts seem remote.  Also it will impose a minimum PCB size, and may limit the use of different thickness PCBs.
    A 1-axis head system may be practical if the PCB is on a moving carrier tray  - high-end chipshooters use a stationary head and move the PCB, but this happens before bigger parts like QFPs are placed, as these wouldn't stay in place on a moving board. video :
    Quote
    Here are the goals of my idea:

    • Size: Under 500mm wide with an extra 100mm of space need for convenient operation on the right hand size.
    • Lightweight - easily liftable. Should be able to do it well under 20Kgs.
    • Board size 200mm wide and the length is set by the size of the movable platten
    • Can handle at least 20 reels/tubes at one time
    Any hard limit on feeder numbers immediately limits usefulness. for a machine with only a single axis of motion this will quickly become a problem. Also, you won't be able to handle trays.
    Quote
    • Easy to manually add parts that are not in reels and tubes
    That in itself is a major undertaking. One thing that you probably could do on a 2-axis machine is use vision to identify parts placed in a tray, maybe with a vibrator motor to shuffle around til you see one the right way up.
    A simpler approach of manually placing parts in tray compartments would be little quicker than hand placing, and if the compartment size is used to constrain the  pick position you'd need lots of different sizes - again the feeder diversity problem...
    Quote
    • Easy to make boards with different builds in a single production run - say you have a board that can be optioned with different ADCs for different performance specs. You can easily  have different spec'ed boards in the one production run.
    Which needs more feeders
    Quote
    • lightweight pick and place head with one motor - the laser positioner motor from a CD drive - for up down motion. Rotation of the head will not require any motor.
    How will you do rotation then?
    Quote
    • Boards will not be fed automatically - each board will require a person to load and start the place.
    entirely reasonable
    Quote
    • Only one board pass is needed, no matter how many different components
    Until you run out of feeders.  You will always need to move the board back and forth to some extent, at least to capture the fiducual positions
    Quote
    • Minimum of metal parts. Pick and Place head largely made of Polycaprolactone (polymorph) - hand moldable plastic that is similar to nylon
    May have some stability issues there..
    Quote
    • Noise will be similar to an inkjet printer.
    Noise is the least of your problems...
    Quote
    [/list]

    Basically my idea revolves around having an intermediary to store the parts for a board, so the loading of the intermediary is done in one pass (or several passes per batch if you need more then 20 component types on the board).

    So the whole reel feeder mechanism and the board platten mechanism are removable and use the same space. You can even have several Reel feeder mechanisms all loaded. When the intermediaries for the boards are loaded, the reel feeder is removed and the board platten is inserted. The intermediaries can be stored, so it is not essential to load straight away.
    Sounds like it will slow things down a lot, and also means you need to know exactly how many parts will be used ahead of time. In practice this will vary due to things like vision failures, dropped parts etc. So you either waste parts or have to reload afterwards for any shortages.
    Quote

    Now the whole hub of my idea is the nature of the intermediary. I have an idea and I will need a few days to see if it is really practicable, but I think it is. What I can say is that my intermediary is very, very cheap - it makes the used printer parts sound expensive.

    Based on a wealth of zero experience, I cannot believe that you need a heavy mechanism that has to be bolted to a concrete floor just to accurately place a part that weighs about 0 grams.
    It's not the weight of the part, but the weight of a head which can precisely lift & rotate the parts. Need to bolt down is a function of speed.

    Richard.
    [/quote]
    I'd be interested to see more, however my fundamental point is that unless you can make a  machine that is useable for a reasonable range of volumes and capabilities, it really isn't worth the effort.

     
    « Last Edit: August 20, 2011, 09:40:34 am by mikeselectricstuff »
    Youtube channel:Taking wierd stuff apart. Very apart.
    Mike's Electric Stuff: High voltage, vintage electronics etc.
    Day Job: Mostly LEDs
     

    Offline firewalker

    • Super Contributor
    • ***
    • Posts: 2450
    • Country: gr
    Re: #197 - pick & Place
    « Reply #6 on: August 20, 2011, 02:30:32 pm »
    Yep, I can't disagree with a single thing you've said Mike.
    At least a DIY P'n'P machine would be several orders of magnitude more useful and fun than Chris's ChipMaker machine!
    I think I'll stick to my CanyonCopter and uWatch projects.

    Dave.

    You could design some modern bench instruments (you have done it before). Something like an arbitrary wave gen, or a DSO. That will keep you occupied for some time.  ;D ;D ;D

    Dave, you had mentioned an Arduino project (Itead pcb), what was it?

    Alexander.
    Become a realist, stay a dreamer.

     

    Offline sub

    • Regular Contributor
    • *
    • Posts: 107
    • Country: au
    Re: #197 - pick & Place
    « Reply #7 on: August 21, 2011, 03:03:28 am »
    If you could get the accuracy down to the point at which you could place BGAs, it would be much more useful IMO.  Most hobbyists don't need to assemble a hundred boards at a time, but a machine that could put down a single BGA to be blasted in place with hot air would be useful for a lot more.  Speed, feeders, etc. would presumably become a non-issue then.

    That said, such accuracy with a DIY setup is perhaps slightly optimistic, where by slightly I mean impossibly so.
     

    Offline KuchateK

    • Regular Contributor
    • *
    • Posts: 78
    • Country: us
    Re: #197 - pick & Place
    « Reply #8 on: August 21, 2011, 06:48:43 am »
    I'm following few threads regarding such machines on CNCzone.

    http://www.cnczone.com/forums/rc_robotics_autonomous_robots/117346-romanlinis_high_speed_light-weight_pnp.html
    http://www.cnczone.com/forums/rc_robotics_autonomous_robots/109767-neils_robotic_workcell_pick-n-place_system.html
    http://www.cnczone.com/forums/rc_robotics_autonomous_robots/97551-eclipzes_smd_picknplace_build.html

    I don't agree with few points mentioned before...

    We can argue about feeders for years. I think the best way is to first make simple basic design with some shortcuts here and there and then improve the design. Check out how shitty was first version of RepRap. Right now they are approaching printing quality of commercial machines.

    Open source would rather go to garage not on a production line. In garage someone would still have to put solder paste using stencil or retool machine for that, install and remove boards, put them into oven, inspect, install through hole components and do countless other operations. We can easily add just one more simple step during assembly. Replace strip with parts next to the boards. Instead of complaining about feeders let's forget about them for the first version.

    There are still countless problems to address. Parts rotation, pick and place head, vacuum generation and control, motors and controllers, FAST linear motion, computer software and maybe vision.

    Yes, to have decent supply of parts on trays machine needs to be bigger. But such machine is not working against material and there is virtually zero force from the workpiece. It still won't be smaller with automatic feeders. This means that extending machine travel is not only simpler but very cheap considering initial investment.

    Just look at this video. No vision, no rotation, no automatic feeders, no specialized software and it still works! With fast machine it would be still great helper for garage factory.



    But I'll join opinion below that Dave's talent should be put into some other areas. He is electronic designer after all ;)

    People already finished nice laser cutters that you can replicate, cnc seems to be dirt cheap and everywhere right now and pick and place is just step from those machines. No need to waste more precious humanity resources on it :D Links I've placed show that people are working on well documented designs.

    http://hackaday.com/2011/02/08/update-open-source-pick-and-place/

    I think we should work here on electronic stuff filling the gaps. Recently mentioned open source modular multimeter seems to be great project to continue. We should design here modern and relatively cheap signal generator, since chips allowing simple designs (xr2206, max038) are long gone. Actually it is ridiculous that there are almost no decent modern (0-5V DAC controllable) power supply designs on the internet. Broken by design tuxgraphics and electronics-labs everywhere. Chinese supplies are almost unsafe to use, anything fancier is really expensive and no good DIY alternatives. I'm actually working to fill the last gap with couple variations ;)
    « Last Edit: August 21, 2011, 06:58:04 am by KuchateK »
     

    Offline mikeselectricstuffTopic starter

    • Super Contributor
    • ***
    • Posts: 13694
    • Country: gb
      • Mike's Electric Stuff
    Re: #197 - pick & Place
    « Reply #9 on: August 21, 2011, 10:06:51 am »
    Quote from: KuchateK link=topic=4533.msg60143#msg60143
    Just look at this video. No vision, no rotation, no automatic feeders, no specialized software and it still works! With fast machine it would be still great helper for garage factory.

    It works, yes, but as I said, a machine like this is just not going to be useful for making real products.
    You have to severely constrain your board design to only use 0805 or larger parts that can be placed without vision, and either restrict rotation or have multiple tapes in different orientations.

    Speed is not an insignificant issue - apart from solder paste drying out, if it takes an hour or two to do a board, your manufacturing throughput drops to close to zero, and the machine cost & power starts to become a significant part of your manufacturing cost.
     
    If you could get the accuracy down to the point at which you could place BGAs, it would be much more useful IMO.  Most hobbyists don't need to assemble a hundred boards at a time, but a machine that could put down a single BGA to be blasted in place with hot air would be useful for a lot more.  Speed, feeders, etc. would presumably become a non-issue then.
    But that would be a completely different machine, and could probably be done with a mostly hand-operated mechanical alignment aid.
    Once you get sufficient accuracy on a P&P to be generally useful, low to medium pitch BGA capability would be there anyway. You may be able to squeeze a little more accuracy by slowing things down and doing multiple imaging for critical parts.
    Youtube channel:Taking wierd stuff apart. Very apart.
    Mike's Electric Stuff: High voltage, vintage electronics etc.
    Day Job: Mostly LEDs
     

    Offline ejeffrey

    • Super Contributor
    • ***
    • Posts: 3683
    • Country: us
    Re: #197 - pick & Place
    « Reply #10 on: August 21, 2011, 12:44:57 pm »
    Quote
    Check out how shitty was first version of RepRap. Right now they are approaching printing quality of commercial machines.

    The reprap, even a relatively inaccurate one, provides a capability that it is almost impossible to get at the hobbyist level any other way.  The argument against the homebrew pick and place is that it occupies a very narrow niche between hand assembly and commercial assembly.

    It is definitely a cool idea, but I don't think it has nearly as much potential as (say) 3D printers.
     

    Offline KuchateK

    • Regular Contributor
    • *
    • Posts: 78
    • Country: us
    Re: #197 - pick & Place
    « Reply #11 on: August 21, 2011, 06:17:58 pm »
    It works, yes, but as I said, a machine like this is just not going to be useful for making real products.
    I agree with you. I've done that mistake myself. If you need decent complicated tool to do something just buy it. I'm almost sure machine will end up being a never ending project itself. I have already couple projects like that.

    Quote from: mikeselectricstuff
    You have to severely constrain your board design to only use 0805 or larger parts that can be placed without vision, and either restrict rotation or have multiple tapes in different orientations.
    Speed is not an insignificant issue - apart from solder paste drying out, if it takes an hour or two to do a board, your manufacturing throughput drops to close to zero, and the machine cost & power starts to become a significant part of your manufacturing cost.
    That is why it is very important to specify design constraints. Wanting too much from your project is recipe for a lot of frustration and failure. With project like this issues must be addressed in certain order in limited quantities ;)

    Basic movement and speed first, then computer control for placing parts. After that everything else. Trying to address everything at once to commercial machine level would be overwhelming and too expensive. It needs to be a project itself, not a tool you'll just assemble and it is going to work.

    The argument against the homebrew pick and place is that it occupies a very narrow niche between hand assembly and commercial assembly.
    It is definitely a cool idea, but I don't think it has nearly as much potential as (say) 3D printers.
    I think that right now big success for home/open source manufacturing would be machine for multiple purposes in one chassis. RepRap tries to accomplish a lot of of that. Most commercial machines are 3 axis cartesian robots and difference is only in tools used. Plug one, get 3d printer, plug another, get milling machine, install laser and have a cutter. Pick and place is just another head.
     

    Offline joris

    • Contributor
    • Posts: 10
    Re: #197 - pick & Place
    « Reply #12 on: August 23, 2011, 09:45:04 am »
    Hi Guys,

    Did anyone have a look at the Ultimaker already as a platform? Someone did some experimenting already:
    http://www.thingiverse.com/thing:7291

    I think it has some advantages over the Makerbot or RepRap if you want to use it for pick and place. The board can stay stationary (or only move in Z direction) since the toolhead can move in X/Y (which allows much faster acceleration than a moving board). Also the working area is relatively big (200x200mm)

    I will have to do some experiments on accuracy, but I think it's definitely possible.

    A rotating needle will be a challenge, so will optical correction be. What about a linear optical array and moving components over them to compensate for position and angle on the needle?
    Maybe using a single column of a camera, or by using something like this: http://melexis.com/Optical-Sensors/Optical-Sensing/Linear-Optical-Array-387.aspx

     

    Offline mikeselectricstuffTopic starter

    • Super Contributor
    • ***
    • Posts: 13694
    • Country: gb
      • Mike's Electric Stuff
    Re: #197 - pick & Place
    « Reply #13 on: August 23, 2011, 10:02:43 am »

    A rotating needle will be a challenge, so will optical correction be. What about a linear optical array and moving components over them to compensate for position and angle on the needle?
    Maybe using a single column of a camera, or by using something like this: http://melexis.com/Optical-Sensors/Optical-Sensing/Linear-Optical-Array-387.aspx

    Optical correction is easy and cheap nowadays - cameras with sufficient resolution are cheap and you just throw computing power at it via OpenCV or similar. As the focus distance is fixed you can probably even avoid the need for a fancy lens by fidding with the lens-sensor distance. 
     
    Youtube channel:Taking wierd stuff apart. Very apart.
    Mike's Electric Stuff: High voltage, vintage electronics etc.
    Day Job: Mostly LEDs
     

    Offline SgtRock

    • Supporter
    • ****
    • Posts: 1200
    • Country: us
    Re: #197 - pick & Place
    « Reply #14 on: August 23, 2011, 10:16:36 am »
    --I am afraid I have to side with mike (excellent authoritative post) and the other naysayers in this case, at least until robotics advances a couple of more generations. This is the kind of problem that gets harder the longer you look at it. I have even decided to forgo my design for a cyborgnetic P&P, using a large capacitor,  bananas and a monkey. Best Regards
    Clear Ether
     

    Offline vonnieda

    • Regular Contributor
    • *
    • Posts: 69
    Re: #197 - pick & Place
    « Reply #15 on: August 25, 2011, 03:15:02 pm »
    With all due respect to the folks saying it can't be done, I just wanted to drop a note and say that this is something I've been working on for a while and I am pressing ahead. I think that it can be done and can be made to be very useful for a lot of people. Feel free to stop by and join in: http://www.openpnp.org

    Jason
     

    HLA-27b

    • Guest
    Re: #197 - pick & Place
    « Reply #16 on: August 25, 2011, 03:38:09 pm »
    Great job Jason, keep rocking.

    You state on your wiki that software is more important. I totally agree. Are you using EMC Linux?

    Oh BTW put your screencast simulation on your front page. it deserves it.
    http://screencast.com/t/lTQrdLhc
     

    Offline vonnieda

    • Regular Contributor
    • *
    • Posts: 69
    Re: #197 - pick & Place
    « Reply #17 on: August 25, 2011, 04:35:33 pm »
    Great job Jason, keep rocking.

    You state on your wiki that software is more important. I totally agree. Are you using EMC Linux?

    Oh BTW put your screencast simulation on your front page. it deserves it.
    http://screencast.com/t/lTQrdLhc

    Thanks! And thanks for the suggestion. I put the videos and a screenshot of the software on the front page :)

    For the Y axis demo I was using Mach 3, but my intention for the real machine is to use a custom motion controller. I am using standard step/dir drivers and am working on a motion controller that will run on the Leaf Labs Maple, which is an STM32 based "Arduino" type board. While I think it would be possible to use an existing motion controller, I think there would be a lot of hacking needed to get around the limitations of a G-Code based system. The primary one being the requirement of lots of feedback from the machine. We need to know if a part failed to pick, need to get camera information, etc.

    That being said, just for fun I wrote a G-Code driver for the existing software for doing blind placement with Mach 3 or EMC. It uses the board and job definitions and outputs a G-Code file. I'll probably use this a bit during testing.

    The custom motion controller doesn't actually need to be very complex. No circular interpolation needed. It's just a pulse train generator that does basic linear interpolation and provides a bunch of digital inputs and outputs. The plan is to have it all run over USB serial with a very simple protocol. In addition, the OpenPnP software is written to be very modular. You can easily add drivers for other machines and still use all the basic functions of the software. My hope is that the software will be useful on it's own; perhaps to replace aging or poorly written software for commercial machines.
     

    Offline SgtRock

    • Supporter
    • ****
    • Posts: 1200
    • Country: us
    Re: #197 - pick & Place
    « Reply #18 on: August 25, 2011, 05:25:34 pm »
    Dear Jason:
    --Do not let us naysayers stop you. The apparent complexity of the problem frightened me. Very possibly I am dead wrong. Indeed if you can build a cheaper mousetrap the world will beat a path to your door. You are welcome to use any part of my capacitor, banana, monkey idea. Best Regards
    Clear Ether
     

    HLA-27b

    • Guest
    Re: #197 - pick & Place
    « Reply #19 on: August 25, 2011, 05:44:53 pm »
    G Code is outdated for some time now, but there is nothing on the scene to replace it with, at lest not open source. If you can come up with something new in this field it would be much more important than the pnp machine itself. Of course you have the burden of documenting it  and rising interest in it. One thing is for sure though, you got my interest.
     

    Offline vonnieda

    • Regular Contributor
    • *
    • Posts: 69
    Re: #197 - pick & Place
    « Reply #20 on: August 25, 2011, 06:06:46 pm »
    G Code is outdated for some time now, but there is nothing on the scene to replace it with, at lest not open source. If you can come up with something new in this field it would be much more important than the pnp machine itself. Of course you have the burden of documenting it  and rising interest in it. One thing is for sure though, you got my interest.

    I'm not really looking to replace G-Code for anything but my machine. When it comes down to it, a PnP machine needs to be commanded to do very little by the controlling software:
    Go to X,Y,Z,A
    Actuate one of several numbered actuators (solenoid for vacuum, pin for feeder advance, automatic feeder advance)
    Capture image

    I envision a very simple text based protocol, not unlike G-Code, but with bidirectional capabilities. Commands will be confirmed by the machine and the machine will have the ability to send events (such as pick failed, feeder jammed, etc.)

    The idea behind making the software very modular and with a pluggable driver model is that if someone doesn't like my simple motion controller they can design/build/code whatever they like.

    Just as a for example, here is the source code for the simple G-Code driver. This was just written as an example:

    Code: [Select]
    package org.openpnp.machine.generic.driver;

    import org.openpnp.Configuration;
    import org.openpnp.Job;
    import org.openpnp.LengthUnit;
    import org.openpnp.Part;
    import org.openpnp.machine.generic.GenericDriver;
    import org.openpnp.machine.generic.GenericHead;
    import org.openpnp.util.LengthUtil;
    import org.w3c.dom.Node;

    public class GcodeDriver implements GenericDriver {
    private double x, y, z, a;

    @Override
    public void configure(Node n) {

    }

    @Override
    public void prepareJob(Configuration configuration, Job job)
    throws Exception {
    }

    @Override
    public void actuate(GenericHead head, int index, boolean on) throws Exception {
    }

    @Override
    public void home(GenericHead head) throws Exception {
    moveTo(head, 0, 0, 0, 0);
    }

    @Override
    public void moveTo(GenericHead head, double x, double y, double z, double a) throws Exception {
    x = LengthUtil.convertLength(x, LengthUnit.Millimeters, LengthUnit.Inches);
    y = LengthUtil.convertLength(y, LengthUnit.Millimeters, LengthUnit.Inches);
    z = LengthUtil.convertLength(z, LengthUnit.Millimeters, LengthUnit.Inches);


    StringBuffer sb = new StringBuffer();
    if (x != this.x) {
    sb.append(String.format(" X%2.4f", x));
    }
    if (y != this.y) {
    sb.append(String.format(" Y%2.4f", y));
    }
    if (z != this.z) {
    sb.append(String.format(" Z%2.4f", z));
    }
    if (a != this.a) {
    sb.append(String.format(" A%2.4f", a));
    }
    if (sb.length() > 0) {
    System.out.println("G0 " + sb.toString());
    }
    this.x = x;
    this.y = y;
    this.z = z;
    this.a = a;
    }

    @Override
    public void pick(GenericHead head, Part part) throws Exception {
    }

    @Override
    public void place(GenericHead head) throws Exception {
    }
    }

    The primary api calls are actuate(), home(), moveTo(), pick() and place(). There are similar modular drivers for different types of feeders. This allows the primary core of the software to stick to what it knows best, which is planning jobs, and lets the drivers take care of things like managing movement and advancing feeders.

    I am preparing a full brain dump of the project and will be posting source code and design files within the next week or so.

    Thanks for your interest!
     

    HLA-27b

    • Guest
    Re: #197 - pick & Place
    « Reply #21 on: August 25, 2011, 07:52:32 pm »
    I envision a very simple text based protocol, not unlike G-Code, but with bidirectional capabilities. Commands will be confirmed by the machine and the machine will have the ability to send events (such as pick failed, feeder jammed, etc.)

    This is something every cnc manufacturer does in closed source proprietary manner as part of their "embrace - extend - exterminate" tactic. Open source approach will definitely be something new.


    I am preparing a full brain dump of the project and will be posting source code and design files within the next week or so.

    Do a diagram with all the hardware and software elements and what data flows where. Lowers the entry threshold.
    I can try to help with mechanical design, presentation material etc. if needed.
     

    Offline m0jo

    • Newbie
    • Posts: 4
    Re: #197 - pick & Place
    « Reply #22 on: August 26, 2011, 05:13:23 am »
    For the Y axis demo I was using Mach 3, but my intention for the real machine is to use a custom motion controller. I am using standard step/dir drivers and am working on a motion controller that will run on the Leaf Labs Maple, which is an STM32 based "Arduino" type board. While I think it would be possible to use an existing motion controller, I think there would be a lot of hacking needed to get around the limitations of a G-Code based system. The primary one being the requirement of lots of feedback from the machine. We need to know if a part failed to pick, need to get camera information, etc.

    That being said, just for fun I wrote a G-Code driver for the existing software for doing blind placement with Mach 3 or EMC. It uses the board and job definitions and outputs a G-Code file. I'll probably use this a bit during testing.
    There is already a build-in telnet server in EMC2: http://linuxcnc.org/docs/html/man/man1/emcrsh.1.html. You could use it to send the different position command to the CNC and let EMC do the interpolation/pulse. This could enable live feedback from a camera with an external program sending the correct position over the telnet connection.
     

    Offline EEVblog

    • Administrator
    • *****
    • Posts: 37661
    • Country: au
      • EEVblog
    Re: #197 - pick & Place
    « Reply #23 on: August 26, 2011, 05:49:33 am »
    With all due respect to the folks saying it can't be done

    I don't think anyone is saying it can't be done, it certainly can.
    It's just that many people (myself included) think it's very unlikely to offer any major practical value given such a small niche window it must operate under in terms of cost/speed/capability/complexity versus an assembly house that has a high end machine and the experience to run it.
    Assembling boards is just very complex business, and that can't really be simplified.
    But don't let that deter you in any way, good luck with the project, looking forward to seeing the results.

    Dave.
     

    Offline EEVblog

    • Administrator
    • *****
    • Posts: 37661
    • Country: au
      • EEVblog
    Re: #197 - pick & Place
    « Reply #24 on: August 26, 2011, 05:52:29 am »
    You state on your wiki that software is more important. I totally agree. Are you using EMC Linux?

    I'd have to agree.
    I see a P'n'P machine as being a huge software job in terms of visual part ID, control, file importing and decoding etc.
    The hardware, while not trivial, is not overly complex. I can see the software taking a LOT longer!

    Dave.
     


    Share me

    Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
    Smf