OpenPnP Project Setup Simplified

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024
  • Get a pick and place machine PCB assembly project setup fast and easy, leveraging the power of OpenPnP and its wonderful scripting engine to use extensions that shrink configuration time down a whole lot.
    All the scripts used in this walk-through are part of the psypnp system, available through github at:
    github.com/psy...
    Soundtrack, where used, is Vans in Japan | Tuff Data
    • Video

Комментарии • 53

  • @TangentAudioVideo
    @TangentAudioVideo 3 года назад +1

    As our scratch-built PnP starts to come together, your work on optimizing the workflow is really awesome and valuable. We're attempting the daunting task of trying to make a PnP machine usable by a small group of people at our makerspace, so we have all sorts of logistical hurdles to consider. We've invested in a bunch of surplus Siemens industrial feeders so we can have dozens of reels of standard value passive parts that will be shared. We need to figure out a modular, repeatable way for the users to be able to set up their own static feeders with short cut tapes for their custom parts per project, and quickly swap those in and out of the machine as well as all the tedious work of configuring them. Not to mention the headaches with everyone using their own preferred EDA tools (KiCad, Eagle, etc.), and having their own part library naming conventions.... Your work has given me some ideas and I'm hoping we can build on it!

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад

      Oh, wow, that sounds like an awesome project with its own particular hurdles, would be curious to see the custom PnP in action. If you want to collaborate on anything, e.g. getting the auto-feed configuration plugin working with eagle, let me know--always looking to make my stuff more broadly useful.

  • @mrokus7116
    @mrokus7116 2 года назад +1

    I'm getting to the point that I wanted to try and move up to a PnP machine. Got a Lumen on order, and "drinking out of the firehose" to get up to speed before it arrives. Your vid is greatly helpful on seeing the process. I'm sure I'll be going through it again a couple of dozen times as I try and get it going.

  • @vtrandal
    @vtrandal 2 года назад +1

    Geez, there’s a very real need for an overall script that does ALL of this automatically. I’m beginning to think I will never do this. Life is too short for this.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  2 года назад +2

      Really, there are two hard parts left: calibrating the height of the feeders and putting the damn things on the table. Both would be helped greatly by using some real industrial feeds, but it will always be something of a pain... main thing is that I find it's still less painful that placing 50 100n caps in the right spots, then moving to the next one--if there's a lot of parts or you're doing many boards, it's worth it. Otherwise, you're totally right, and I just did 5 small boards, and two bigger ones, by hand last week... 'cause life's too short for all that :)

  • @chrisnurse6430
    @chrisnurse6430 3 года назад

    This is an amazing community contribution - you’re doing LitePlacer an immense service. Thank you.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад

      Hi, thanks! I'm hoping it'll be useful, not only to LP users but to the wider openpnp community.

  • @aceaquigg8141
    @aceaquigg8141 2 года назад

    Well done mate! Your scripts are awesome.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад

      Thanks! Really glad to know they're useful to more than just myself. If you find any holes/useful things that aren't in there, let me know and I might be able to grow the lib.

  • @Sudesh.s-n8u
    @Sudesh.s-n8u 4 месяца назад

    i am using mks base board how to upload program in sd card for openpnp

  • @niclash
    @niclash 3 года назад +3

    I am in the (slow) process of building my own PnP (from scratch, no kit) and these videos are key to figure out where to focus to remove tedium later. Really appreciate them!
    Height; Can't you extract height from KiCad's 3D models and put that into BOM or some other separate file?
    Fiducials; Also sounds like handled automatically when having one's own fabrication outputs.
    Feeder Contents & Positions; For myself, I'm making active feeders for reels, with a microcontroller and eeprom, controlled over RS-485 so that they can know what components are loaded and they will know their respective physical location to slot into with the address on the communication connector that is fixed on the machine. Hence keep each component in the feeder "forever" and just have more feeders than can fit the machine. In principle, the same could be done for Strip feeders, but perhaps the other way around; Put a connector and an eeprom on the feeder that stores what component is on it, nozzle type to use, and then just snap-in each feeder to some suitable location and software configures it all.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад +1

      Wow: I played it safe, going the kit route, for this first in-house PnP. Frankly, I'm not that mechanically adept, so find the prospect of going at it on your own daunting and impressive.
      Fiducials are lifesavers, yes: they're in the position file, and allow you to just drop the PCBs pretty much anywhere--openpnp figures out exact orientation and position and just using standard fids from the EDA has been uber reliable.
      The feeders are the main pain point. Configuring them, positioning, refilling. An automated system is *the* way to go, at a minimum for the stuff you'll be using all the time (0.1u caps, anyone?).
      Hit me up when you've got something built, I'd love to see it!

  • @kurzschlussjunkies
    @kurzschlussjunkies 3 года назад +1

    thanks for making the videos, very interesting!

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад +1

      Thanks for watching and letting me know you find them interesting and/or useful. Making this thing takes as long (or longer) as actually assembling the PCBs, but I've learned tons from others doing the same and I'm hopeful my vids help others avoid re-inventing the wheel and give some ideas and tools so we can all make more cool stuff.

  • @markjones9180
    @markjones9180 3 месяца назад

    Awesome video thanks!

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  2 месяца назад

      Thanks Mark! Video is getting a little long in the tooth, but I still use basically the same flow

  • @diggraph
    @diggraph 3 года назад

    Great video. I was disappointed you skipped peeling off the cover tape to show any tricks to doing it without dislodging parts. How long overall did it take to set up this board?

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад +1

      Oh, yeah I should've included that! The technique is basically:
      * left index holding tape down
      * tweezers in right hand, getting under cover tape around that bit of extra material on the side of the holes
      * grab and peel at 45 degrees until first part is exposed
      * jiggle first part or two out onto work surface (optional, but seems to be the annoying tradition)
      * peel off the number for a few runs, plus some overhead in case
      * don't cut the plastic cover or peel it completely off of a small cut tape, or you will almost inevitably jiggle them all out of their spot
      This is assuming 0402--procedure similar for all, but just touchier for these guys.
      Main point is to be gentle and expose for n runs on all tapes at once, so you don't have to go back in there until it's time to reset them all.
      As for total time actually spent doing this, I don't recall. For simple boards like shown it's under an hour when I'm focused, but not sure.

  • @jamestennant3367
    @jamestennant3367 Год назад

    Random idea..... Why bother with setting heights at all? Use a floating head, such that when the head touched the part it will sense the component or board and stop feeding. This is used all the time in CNC plasmas to check height of steel, checkout linuxcnc plasmac. Would eliminate the time consuming part

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад

      Hi James, in short: completely agree. In fact, the original LitePlacer software did this by leveraging the spring action on z plus the limit switch.
      But in practice, the spring was too tense, or the limit switch too far, but it was too much of a mash-into-components situation to be useful... at least in cases where tape wasn't completely flat and bedded on a rock-solid surface (i.e. even more time waste dealing with parts that flew all over the place).
      I will however take a look at the linuxcnc plasmac, see what that's about. At this point, I've started using dragpin-fed reels, and it's rocking pretty solid. Will be documenting that in the nearterm.

  • @jleu3482
    @jleu3482 2 года назад

    Thanks for this. Those scripts are Linux, any chance for Windows version? Many thanks

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад

      Well, it's Python and I'd hope I did it in a cross-platform way, but it seems I flubbed somewhere. If you're getting specific error messages or know where the problem is, let me know and maybe I can enhance.

  • @DigitalWorldBG
    @DigitalWorldBG 3 года назад

    Hello! Can Allegro PCB Designer items be imported (extension ".txt")?

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад

      Assuming you're referring to the auto feed setup script: currently it only has support for the CSV files produced by kicad, but it should be pretty agnostic in terms of BOM as long as:
      a) all the info is available (i.e. quantities, some way to identify the package/part, etc); and
      b) support is added for this format
      There's this generic class for BOM parsers, and then an instance for kicad (BOMParserKicad) currently in there and it shouldn't be super hard to add another type. I'd have to see the allegro output to be sure.

  • @pocopoco3468
    @pocopoco3468 Год назад

    Is there an app for android?

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад

      For openpnp? Not as far as I know. Haven't looked, I'm far from having a mobile pick and place, heh! Seriously, what's the use case/what would you like to do?

    • @pocopoco3468
      @pocopoco3468 Год назад

      @@PsychogenicTechnologies im planning to build a multipurpose cnc machine(CNC laser Engraving, PCB and wood Milling, 3D printing, plasma metal cutting and in last a pnp machine.
      Now I have made a 3D printer its in working condition using marlin and arduino mega,
      For pnp I need to run it with my android smart phone

  • @VITAHATV
    @VITAHATV Год назад +1

    How to make this project manually without CSV files?

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад +1

      Hi Vitaha, sorry it took me a while, was prepping then taking a trip. So... I'm not certain I understand your starting point. What software are you using, what's the situation and what are you trying to do? You have a project you want to assemble, pcb laid out, boards done, right? With a bit more info, maybe I can assist.

    • @VITAHATV
      @VITAHATV Год назад +1

      @@PsychogenicTechnologies openpnp No csv file.how to manually enter coordinates into the program?

  • @Mark19960
    @Mark19960 3 года назад +1

    Nice scripts Pat.
    What's your thought on the new contact probing nozzle in openpnp?
    I have yet to try to configure it because like you I know the height of the part/tape/feeder in relation to the work surface and just set the height that way.
    github.com/openpnp/openpnp/wiki/Contact-Probing-Nozzle
    Contact probing in the liteplacer software was always fickle for me. It would hit the limits seemingly randomly no matter where the z high/low switches were or how the switch hysteresis was set.
    Cheers.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад

      Hi Mark,
      The LP software contact probing worked fine for me, other than the fact it had a tendency to bang into my parts a bit (a lot) harder than I would've hoped.
      As for getting a dedicated sensor, rather than using the limit switch: I'm a bit curious, but since my space as pretty stable, I do the setup as shown every project but am pretty much set for the whole batch from there.
      What I would *really* like as an add-on is a vacuum sense to catch when a part isn't picked up... I've had multiple occasions to experience the joy of a nozzle tip sucking on solder paste because of that and if my next extension isn't automated feeders, it'll be related to that.

    • @TheRainHarvester
      @TheRainHarvester 3 года назад

      @@PsychogenicTechnologies Oh dear. Could Sucking solder paste cause a blockage in the suction line? That would cause everything after to fail.
      How do those with the vacuum pumps on the head sense the part ? Do they just use bottom vision to detect a missing pick?

  • @pecilijevelicanstveni4973
    @pecilijevelicanstveni4973 2 года назад

    Thank you for your kindness to share your knowledge with us!
    Question: can you implement BL Touch probe (like in 3D printers) to measure the height of parts automatically instead of manually try-and-try-again?

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  Год назад

      Hi, sorry for the tardy response... I considered doing such a thing, but never got around to it. Some obstacles were pretty dumb, basically how to mount the thin and how to get the info back to the system. Now that I've been playing with 3d printing more, mounting is less of an issue. Main issue I can foresee is tolerance--since we can't use conductivity, you're looking at a mechanical switch or something and I'm not sure what kind of precision we can expect.

  • @dharanisharma6819
    @dharanisharma6819 3 года назад

    You are way too underrated

  • @randyrandom5702
    @randyrandom5702 3 года назад

    this is really cool

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад

      Thanks! Glad you liked. If you're using openpnp, try out the scripts and let me know how it goes.

  • @wi_zeus6798
    @wi_zeus6798 3 года назад

    Awesome video

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад +1

      Thanks! Editing these things is a pain but knowing they're useful/appreciated makes it worthwhile :)

  • @zdenkostanec1622
    @zdenkostanec1622 3 года назад

    Awesome, good work!

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  3 года назад +1

      Many thanks--let me know if you use the scripts and especially if you encounter any problems. Cheers!

    • @zdenkostanec1622
      @zdenkostanec1622 2 года назад

      @@PsychogenicTechnologies Hello Pat hope you are good, I have finally built a P&P machine and I want to optimize setup time with your awesome scripts, but I have a hard time getting auto_feed_setup to work as my *.cvs export from KiCad looks completely different than yours. I wanted to try generate_map too but I get an error for "Could not import svgwrite lib, aborting", I have the Lib in the location but maybe it is wrong. p.s. I am not using Linux and the rest of the scripts for an initial setup like Enable, Disable, Part Height, Bottom Camera are working fine. Do you maybe have some time to point me in the right direction, what is important for these scripts to work, how should I set up the strip feeder and what is important, I followed your setup like 8mmLeft 01.... but unfortunately, it is not working for me. I have a feeder plate for 30 strips and 21 Tray locations, all should be like 8mmTop 01 - 30, and Tray 01 - 21.

    • @PsychogenicTechnologies
      @PsychogenicTechnologies  2 года назад +1

      @@zdenkostanec1622 Hello Zdenko! Awesome, welcome to the PnPclub :-D For the BOM, it's likely just a question of using the right exporter (or re-sorting the columns, but ugh). I have a whole bunch of options, assuming it's the same in non-linux world, and I use "bom_csv_grouped_by_value"--have you got that one?
      For the svgwrite, mine is in the same "lib" directory as psypnp itself. However, I had to muck with it a good deal for it to work--are you using the version from inductive-kickback.com/2020/10/psypnp-for-openpnp/ ?
      Also, the auto-setup system relies on 3 files (other than the actual code): the bom, the package description and the feed description files. My package description is slowly but surely growing, though I think I push those changes. The feed description file is unique to your setup, but if you're using "8mmLeft*" that should just work.
      Finally, trays... ah, trays, haven't got around to implementing support for them. However, I did make some important updates recently(ish)... still need to do some cleanup, but had a major project that stretched the system's limits (ok, busted them, but I worked around it and published the code). Make sure you're using a fresh version from github.
      Not certain if any of this helps.

    • @zdenkostanec1622
      @zdenkostanec1622 2 года назад

      @@PsychogenicTechnologies Hey Pat! Thanks for the fast replay and details. 😊 I will check one more time if I have the latest version of "svgwrite" but I should have it. And yes I have "bom_csv_grouped_by_value" but my export puts all the information in one Column (Comma-separated values "CVS") so I need to replace all "Commas" with "Tab" to separate each information to a separate Column in excel. I managed to do it but I get and "weird" information like "0 feeds enabled out of 17" or something, so I do not know where this 17 number is coming from, I have just 4pcs 8mmLeft feeders for the test and like 105 different components in BOM. I understand the logic now behind description files but the key I do not understand what is Important for Feeder setup, is it just a Name that needs to be the same as in Description file or do I need to set up some other parts? For example, do I need to assign some random component to a feeder or just leave it as FIDUCIAL-HOME, does it needs to be enabled/disabled, does coordinates need to be in or just for testing the scripts they can be 0,0,0. From my understanding feeder can have any component in and it just needs to be enabled and the script should automatically "re-shuffle" all the parts through all enabled feeders?

    • @zdenkostanec1622
      @zdenkostanec1622 2 года назад

      @@PsychogenicTechnologies Hey Pat, I managed to sort issues with "Auto_Feeder_Setup" and csv import, I needed some CSV editor to do it properly, excel edit will not work. Only thing what I have now is to sort "generate_map" issue "could not import swgwrite lib, aborting" 😕, still fighting 😁😁