MDC Luna EXP 7722FV handbook

by vincentp on Sat Sep 01, 2012 5:33 am

greetings,

I contacted adafruit about this, they suggested to post on the forums.

I own that machine since the end of june and I got started with it pretty quickly. Learning curve was really quick, with some little help of the previous owner.

I got nice & immediate results with 0603 and QFN / TQFP however I felt like there were some hidden issues in the calibration and I'm kind of obsessed about knowing "why", not just doing some dirty hacks to "get it to work" cause it will never be done correctly.

So I started to "bug" MDC almost daily with questions, a few bug submissions that were correct very fast (big *thumbs up* to MDC) and they were not banned on sharing knowledge with me, as well as endless patience. Those were high end questions, and fine details in the software or about certain vision techniques (good idea I took those image processing class at the EE school).

In exchange of all this positive energy and knowledge, I proposed to rewrite the user's manual and add all the things I learned, even obvious things, to help future newcomers.

first of all I wanted to present this project, get some feedback and as the permission to "redo" the wiki tutorials (some of them) as well as using pics, while adding of course due credits to freakslab and adafruit. I'll probably redo the feeder setup tutorial pictures but I'd like to reuse pictures of compressors purchased by adafruit or others, this sort of things.

The goal is really to make a handbook, with the right starting point (like learning ins and outs of teaching mode before getting into feeder programming for instance :wink: ) and adding contents (way more) than just naming what a button does.

I also have some questions 7722 user's might be able to answer (?) and again, I'd like to add this to the manual.
The manual might be integrated to the wiki too, I can provide the source files for this. However, I want to make a real "document" that can be printed, cause that really what I needed in hands while getting started with the machine, so I'll make a PDF.

thoughts ???

(I'll post my other questions in another topic)

oh, how many 77xx users do we have here ? please chime in and share your experience here, the troubles you have, what works well, your impressions !!!!
____________________________________________________________________________________________________________
[18-10-2012] update :
THE HANDBOOK IS THERE !

Enjoy !

Disclaimer : this manual was written with a limited experience (now 1.5 month). There are still some typo I'm sure as I haven't totally rephrased some of the parts of the former MDC manual and I kept writing the manual during the proof reading by my friend.
I call it "a good start".

http://tinyurl.com/9twn5vk
Last edited by vincentp on Thu Oct 18, 2012 9:35 am, edited 3 times in total.
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by wmdevices on Wed Sep 05, 2012 11:05 pm

I like this idea very much, I got my 7722 in June as well and I'm finding the manual close to useless.

I'm having quite a few problems getting TSOP and SOT-363 size components to place reliably. The bottom vision seems to let the parts go to the board before they're really finished being centered, even with closed loop mode on.

I've found this forum quite handy (as a lurker mostly) and the wiki to be very good as well. Just wish there was more in there.
wmdevices
 
Posts: 12
Joined: Thu Apr 12, 2012 3:22 pm

Re: MDC Luna EXP 7722FV handbook

by vincentp on Wed Sep 05, 2012 11:49 pm

handbook is currently 91 pages and I'm just starting the PCB programming, I yet have to include machine calibration, placement & vision test.
I don't own a dispenser so that part will be just copy / paste from the MDC manual (and honestly, I'm sure it "just works" as the difficulty isn't about programming this). I expect to have the document to be roughly finished in 10 days / 2 weeks, I work on it in the public transports when I go to work, a little bit everyday.
I've included a section for DIY improvised trays, various tricks about reels, most of them are simple things (and you'll probably yell d'oh at me...) but I wanted to include ALL level of expertise in the document. I also included most of the adafruit & freaklab tutorials from the wiki with proper credit.

glad to count one more user !

let's see if I can help about your part placement, please post exact refs so that I can see the package please.
as for getting out of vision, well, when the machine quits vision it's because it "thinks" the part is centered. If it's not the case, it's possibly because it "saw" the part centered.

things to consider :
- leads contrast and brightness : For bottom vision, most of the time it's the problem. For symetric chips checked as SOP in Lv=26 (small chips), the machine will do the centering by finding the 4 extreme pins. If there's an offset on them, you have the part off centered or not properly oriented.
- machine calibration. Mine was supposed to be but in practice, I'm pretty sure you have to run a calibration to be sure of what you're doing, otherwise, you'll spend the rest of your life adding nonsense offsets everywhere in part def.

bottom vision should not be corrected with offsets overall.
About the leads vision : especially with ROHS now, the finish of the leads can be problematic. You also have those shinny reflective plastics on certain part, despite they're black, they shine some light back and contrast with the leads is poor.
As I got explained by MDC, the threshold system for bottom vision uses min and max of the picture, so that you don't have an absolute gray scale level as a threshold. With poor contrasted parts, you might need to increase or lower the threshold with the Level parameter.
1 leaves it untouched, < 1 turns it lower etc. I had to create so far two 8 pin SSOP variants for my design (I have a total of 3 different SSOP on the one board) because one had a weird contrast. Pins are still incomplete because the leads finish is "wavy" but I was able to have the edges nicely.

You might need to experiment first with bottom vision lighting variants : add a 1 in front of the vision algo (126), you have a darker lighting, add a 2, you have it brighter (226). Lighting change is about 20-30%. Once you find the one with the best result, start playing with the level.

Real time level is possible when testing vision. Pick up a part (improvise a tray, create it in the machine, if the part is reeled) then manually pick the part, go to tray, edit (2-2), select tray, teaching mode (F8), nozzle mode (9), pick (R), vacuum on (V), nozzle up (R).
Test part with bottom vision with Shift-P, enter part #,0 (angle doesn't seem to work) and part will be taken to the bottom vision camera. Adjust the level with the + and - buttons in the live video window. Unfortunately, the level is overwritten by other centering info, but by clicking several times, you can see it before it's erased. Most of the time, I got the level adjusted between 1.2 to 0.6
I had an extreme case with my square inductor (that I was finally able to place with bottom vision as a CAP) because it's so shiny and reflective that I had to lower the threshold with level=0.4 so that anything that wasn't super bright (the lead) will turn black. As a result, my bottom pads/leads aren't completely seen "filled" but I don't care as only the edges are required for the CAP placement (yay)

If you get kicked out from the vision loop because the threshold ends being wrong, press escape, part returns to the tray. You can check it again immediately with another Shift+P process.
you can also return it to the tray with R+V+R (down, vacuum off, up).
then press F3 for a quick jump to part def, edit your part, validate with ENTER, then escape will return to the tray where you were, go in edit again, pick the part, test it. Wash, rinse, repeat :wink:

Overall, with a bit of obsession, it won't take you more than 2 days of work to create and test your main parts. New parts will be created much quicker once you know what to adjust.
The placement problem I got AFTER were something else and I went nuts. But you'll have to wait until the calibration section of the document is made to check it cause I'm not going to type it all twice :mrgreen:

your SOT-363 could also be check with side vision, but you'll need an offset correction. Once defined properly, it will work like a charm and quicker than bottom vision.

get us a bunch of screen caps here and let's use this thread to debug part placement or part definition. Include a screen cap of your current part def for the 2 problematic parts you mentioned in your post, I'll be happy to help. Screen caps are obviously easier to take when performing a vision check manually from the tray.
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by wmdevices on Sat Sep 08, 2012 10:28 am

I'm really looking forward to seeing this handbook and potentially helping out!

Thanks for the help above, I need to work on the contrast I think. Also knowing how the Pt and W values really work would be really helpful.

The problem with the TSSOP-14s seems to be that the LV27 is occasionally capturing part of the nozzle reflecting light, and it can't center. I wish I could use an offset, as I think this would go away. The offset works so great for other parts and fiducials.

For the placement issues, that were off quite a bit. I actually let the machine self correct with fiducials by intentionally offset the bias. That seems to have fixed the issue with the SOT-363s placement! Very strange....

I'm really excited to see what new info MDC has told you since it seems my version of the manual may be outdated. I do wonder how difficult software upgrades are going to be for the 7722.

I would post some pics, but I have 60 more boards to assemble (520 parts each) in the next two days, then a run of 100 of a simpler board. It's crunch time for a trade show!

Thanks!
wmdevices
 
Posts: 12
Joined: Thu Apr 12, 2012 3:22 pm

Re: MDC Luna EXP 7722FV handbook

by vincentp on Sat Sep 08, 2012 11:16 am

software : I keep upgrading, as my boards are simple designs.
However, DO NOT USE THE CURRENT 2.1.22, placement orientation seems to be offset of 90° if the required angle isn't 0°. Being fixed by MDC.

I'll be glad to get more input and knowledge to insert in the handbook. I keep writing it everyday.

TSSOP 14 : questions !

- don't those fit in the camera FoV ? (problably not as you use LV=27 but confirming)
- if the part is dispensed on a reel, you can offset the nozzle plate prior picking the part up. That's one of the trick explained at the end of the manual. Usually, as your nozzle holder plate is about 45-50°, add or remove (as it's mirrored with bottom cam I don't know the sign of the angle) 45° and the plate will be aligned with the chip and will disappear behind the body / case.
I don't think this works for tray as the angle defines the orientation of the chip on the tray itself from what I understand.

Pt and W : the welcome to the jungle (I somedays had appetite for destruction because of them :twisted: ). It's complicated, I have listed all the use case for those 2 params for the various parts and vision combo.

offset of the bias + fiducial : it's a voodoo hack in a sense that it works but you indeed don't see how / why. I think it's because the problem is elsewhere. You'll see with my calibration proposal. I finalized it on the machine for flying vision and bottom vision and now I know I only need to fix special cases with offsets, not any single new part.

if the board is LARGE, the offset you could get are because fiducial aren't at the right place. Fiducials are great when they are well referenced to the rest of the parts. If you setup a program on a board, with the fiducials at the right place, then move to another board for which the fiducials aren't at the right place with skew, it will compensate but add distortion everywhere.

You can use the align fiducial function in the PCB data list but with CAUTION. I yet have to 100% understand how it works. What I understand is that you make your ref program on a PCB.
Then when you get another PCB to place, you first align fiducials, and then it will apply corrections on your current program.

I believe this SHOULD be done also in real time when checking fiducials (for each PCB copy on the panel if fid angle is non zero), so I don't know why pre changing the data in the program. Same goal, different approach ?

have you used this fid alignment in the PCB data ?

are your boards large ?

I check the bias offset for each panel but most of the time the change is minimal and the fid search window is enough to find the fid.
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Wed Sep 12, 2012 9:36 am

good news, the manual writing is going well. It's now about 150 pages long now. I merge some of the tutorials here, added screen copies and section from the original manual that I didn't have inserted yet.

There are section of the MDC manual I hadn't read so far, like the dispenser, so reading about it lead to more questions than actual answers, so I bugged MDC a little bit more so that I have actual scenarios and use case to share in the handbook.

Same for the CAD data import. I know that most people use teaching mode cause it's easy. Still, I'd like to investigate further to see if there's a possible and efficient workflow possible between eagle centroid export and the MDC software.
That being said, the main issue is that I design solo boards in eagle then I have them panelized by the PCB company, so I'll need to offset manually the centroid data list to match the PCB data and the first PCB on the panel (that's what my buddy had to do on the mydata). With the global offsetting data input of the MDC software this actually easy and some time could be saved for creating the data list even if it further needs some positioning adjustments.
The goal remains to NOT dry the wishing well. If using the CAD import is more time than a visual programming especially for small board, then it's not worth it. Still, I want to learn about the process.

My friend D. accepted to proof-read the manual in exchange of a soldering + arduino training session for her son :wink:

The document is really big (pics intensive), I used WORD cause that's what I can afford to use on a daily based use. I like indesign but this work has already taken me too far and I could end with 200 pages if I don't slow down.

Due to the amount of info to check, this document will probably remain beta for a while but I'll probably place a quote at lulu.Com to see how much it would cost to have it professionally printed with a spiral back. It would probably require to have a lot of the screen copies redone to have worthy DPI. In the meanwhile, I think I'll give a try with the laser color printer at the lab :D
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Wed Sep 19, 2012 1:41 am

I printed a copy yesterday to give to the proof reader. I was supposed to add a bottle of wine to compensate for reading all that boring stuff but she wasn't alone in the office :mrgreen: Instead I proposed a soldering training session for her son and an arduino learning kit.

The manual will only partially solve the "where is that info" problem. I did my best to re organize things in sections, but you can't really have it totally linear with a progressive learning curve. I found the pick and place knowledge to be really "read it all and digest for a week". It might change from handbook to novel :shock:
Still, you'll find dedicated section for fiducials use, feeders setup. Probably because I'm french and my educations contains a lot of "boring theory first, hands on is the reward", I started by the proper setup of the machine and the understanding of the whole part sourcing system (feeders, trays etc) before finally reaching the PCB program and the assembly. Still, you can start with the machine by placing a couple of parts to understand the system and move to expert features by reading the whole document.

I have NOT rewritten all the english of the source manual from MDC, some of it only, that will be for a second stage. I rephrased certain things when I needed to add more contents.
Also, I don't own a dispenser and this very part is still a work in progress, there are new dispensing patterns MDC will send me info on, so that I can finalize the section but it's not that important for a beta version of the document.

I'm still working on CAD import section for which I want an actual tutorial. I used the screaming factory ULP script in eagle to export centroids in CSV, import works very well, I just need to tweak the script to make 2 separate versions for top and bottom part, as well as adding values in a field so that automatic feeder association works. For an accel breakout board I wouldn't worry much, but for an upcoming placement job for a friend of mine, with 56 leds + 56 resistors per panel, an automatic import makes it nice and painless.

Side note : I applied the recently gathered knowledge about the machine speed control (and the various speed schemes and rules) to turn the machine back to full speed and I'm having a blast ! I have to go into a test run of board to see if placement remains consistent and that I don't have any electrical problem. I should gain at least 50% on the assembly speed WOOT !

Calibration : I understood more things as I was writing the section in the manual, so I redid part of it, it took only 15 minutes, now offsets are all calibrated and chi (flying vision) and QFN (bottom vision are dead on). The centering was slightly off in the flying vision due to the camera settings, and correcting this lead to reduce placement offsets.
Bottom line : correct things at the source, and drink pure water in the valley.
I now see that my offsets remain in the range of +/- 5 motor steps which is 0.05 mm. I analyzed those as the lack of concentricity between the Z/Theta shaft and the removable nozzle. My chinese lathe is 0.01 mm concentric and its spindle is fixed ! So I really see this as VERY good in term of mechanics.
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Wed Sep 19, 2012 8:04 am

I finished the CAD import and I tinkered a bit with EAGLE ulp. Good for me, as I'm Java impaired, PHP allergic and C# disabled, it's (almost) standard C.
I modified the Screaming factory ULP that exports the centroids in a CSV file (very handy). It's WAY easier to tweak what you export within the ULP rather than trying to setup complex filtering in the MDC software. I added a simple filter with the NOPLACE keyword to be used in the part VALUE. Very useful to skip placement of optional parts.

I changed a few things to get only TOP parts added to the exported data, and also some filters using keywords for what you don't want to see placed, like test points, SMD pads etc. My fiducials were name JPxx, I renamed them as FIDxx and now I have a clean export of ONLY what I want, which leaves very little work during the import (a few feeders won't be found but that's it).
The value field is used as "part information" to find the matching feeder (should be 2 in the picture below).
For the "designator", use the RefDes+Value field (3) to have a string featuring both things to be added in the PCB data line remark/comment, it's useful to have both the part name and its value like C15+100nF.

Once I'll get better trained with ULP, I'll probably make a version that display usage and prompts for export units (mm, inches, mil), top or bottom etc. For now, just make a variant of this one to get the export of the bottom parts, and adapt filter keywords.


Code: Select all
/*
 *  This EAGLE User Language Program creates the proper format
 *  Centroid file for assembly at Screaming Circuits including
 *  the reference designator, position, layer and orientation
 *  of each part
 *
 *  Version 1.1,  September 2012 - Erv' Plecter - erv@plecterlabs.com
 *  Simple modifications and fields added for an easier CSV import in the
 *  MDC 7722FV pick and place software.
 *  This version selects only TOP parts - Export unit is mm
 *  Format includes "RefDes", "Value, "RefDes+Value","Layer", "LocationX", "LocationY", "Rotation"
 *  The Value is the field use by the CAD import to match automatically the right feeder
 *  The RefDes+Value is the designation meant to fill the PCB program lines comment / remark field
 *  Ex: C15-100nF
 *
 *
 *  Version 1.0,  May 16, 2006
 *
 *  www.screamingcircuits.com
 *
 */

string rotation(real Angle)
{
  string s;

  sprintf(s, "%.1f", Angle);
  for (int i = 0; s[i]; i++)
      if (s[i] == '.') {
         if (s[i + 1] == '0')
            s[i] = 0;
         break;
         }
   return s;
}

string side(int Mirror)
{
  string s;

  if (Mirror){
     s = "Bottom";
     }
     else {
     s = "Top";
     }
  return s;
}

if (board) board(B) {
   output(filesetext(B.name, " centroid.csv")) {
     printf("Screaming Circuits SMD component position file.\n\n");
    printf("Modded by Erv' Plecter - Plecter Labs - 2012.\n\n");
     printf("Centroid Data for pc board: \"%s\" as of: %s\n", filename(B.name), t2string(time()));
     printf("Measurements are in mm. Comma delimited\n");
     printf("Only surface mount components included\n\n");
     printf("%s,%s,%s,%s,%s,%s,%s\n", "RefDes", "Value", "RefDes+Value","Layer", "LocationX", "LocationY", "Rotation");
   
     B.elements(E) {
       int isSmd;
      int isTop;
      int isWhatYouWant;
       isSmd = 0;
      isTop = 0;
      isWhatYouWant = 1;
      /* Check the part is SMD and placed on TOP layer */
           E.package.contacts(C) { if (C.smd) isSmd = 1; }
      if(E.mirror == 0) { isTop = 1; }
      
      /* Parts you don't want to include, like SMD wire pads, test points... */
      /* I included a NOPLACE keyword. Put this in the part VALUE and it will be skipped */
      /* Adapt to your own preference - Enjoy - Erv' Plecter */
      if(!strstr(E.name,"TP")) { isWhatYouWant = 0;}
      if(!strstr(E.name,"PAD")) { isWhatYouWant = 0;}
      if(!strstr(E.value,"NOPLACE")) { isWhatYouWant = 0;}
      /* Add more here if necessary */
      
      if (isSmd && isTop && isWhatYouWant) printf("%s,%s,%s-%s,%s,%5.3f,%5.3f,%s\n",E.name,E.value,E.name,E.value,side(E.mirror), u2mm(E.x), u2mm(E.y), rotation(E.angle));
       }
     }
   }


CentroidExportTop.zip
(1.38 KiB) Downloaded 190 times


Here's a possible CAD import profile for EAGLE in the 7722 software. All you need is to select the right columns
Eagle_CAD_Import_7722FV.png
Eagle_CAD_Import_7722FV.png (32.91 KiB) Viewed 3293 times


RESULT
Code: Select all
Screaming Circuits SMD component position file.

Modded by Erv' Plecter - Plecter Labs - 2012.

Centroid Data for pc board: "luxeon_controller16bitsV611.brd" as of: 19/09/2012 13:39:18
Measurements are in mm. Comma delimited
Only surface mount components included

RefDes,Value,RefDes+Value,Layer,LocationX,LocationY,Rotation
C1,100uF,C1-100uF,Top,5.715,18.733,270
C2,10uF,C2-10uF,Top,16.828,18.415,270
C3,4.7uF,C3-4.7uF,Top,24.130,19.050,270
C5,100nF,C5-100nF,Top,14.288,5.715,90
C6,100nF,C6-100nF,Top,14.288,2.540,270
C7,100nF,C7-100nF,Top,11.748,0.953,180
C8,10uF,C8-10uF,Top,16.510,6.668,0
C12,1uF,C12-1uF,Top,11.113,6.985,0
C13,1uF,C13-1uF,Top,34.608,20.003,270
C14,100nF,C14-100nF,Top,14.288,14.605,0
C15,1uF,C15-1uF,Top,13.335,10.160,180
C16,330nF,C16-330nF,Top,9.843,14.288,0
FID1,FIDUCIAL1.5X3,FID1-FIDUCIAL1.5X3,Top,1.588,1.588,0
FID3,FIDUCIAL1X2,FID3-FIDUCIAL1X2,Top,50.165,22.225,0
IC1,PIC24HJ128GT204,IC1-PIC24HJ128GT204,Top,25.082,8.255,0
Q1,Si2302,Q1-Si2302,Top,30.480,19.367,270
R1,39k,R1-39k,Top,40.323,15.875,90
R2,10k,R2-10k,Top,38.735,15.875,270
R3,10k,R3-10k,Top,32.385,1.905,0
R4,10k,R4-10k,Top,6.033,5.080,90
R5,100k,R5-100k,Top,21.590,16.510,180
R13,10k,R13-10k,Top,28.258,19.367,90
R14,390,R14-390,Top,33.020,20.003,90
R15,0.15,R15-0.15,Top,42.545,2.223,0
R16,20k,R16-20k,Top,10.478,10.160,0
U1,TLV1117,U1-TLV1117,Top,11.748,19.050,90
U2,REG113A_3.3V,U2-REG113A_3.3V,Top,20.320,19.367,270
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by bmw330i on Sun Sep 23, 2012 10:17 pm

This is great news. I feel excited again about my MDC7712. I'm going to have to re-read all these new posts slowly to understand them completely but I already see most of my questions are answered.

Vincent, please think of the trees. Maybe provide the manual as PDF so if someone must use up some trees to view it they can but really I would prefer a PDF version. Word is ok. I can probably convert it. This way I can load the document on my tablet and can read it anywhere. I have a feeling I will be spending a lot of time with it.

I would gladly help proof read it. Also thank you for offering to update the Wiki. I really think simply adding more details to fill in the blanks or gaps is really going to help. A huge thank you to Adafruit for having this forum for us. If I had not found this forum I would not have purchased the MDC and am certain I will become competent with time and help from this forum.
bmw330i
 
Posts: 51
Joined: Mon May 07, 2012 8:59 pm

Re: MDC Luna EXP 7722FV handbook

by bmw330i on Sun Sep 23, 2012 10:59 pm

vincentp wrote:I finished the CAD import and I tinkered a bit with EAGLE ulp. Good for me, as I'm Java impaired, PHP allergic and C# disabled, it's (almost) standard C....

Vincent this is a huge time saver. I'm following with great interest. All of my designs are in EagleCAD 6. Will this info be in the handbook? Maybe you can add a Wiki page? I think if we start a page for each of these types of things we can all contribute.
-D
bmw330i
 
Posts: 51
Joined: Mon May 07, 2012 8:59 pm

Re: MDC Luna EXP 7722FV handbook

by vincentp on Mon Sep 24, 2012 3:19 am

the CAD data import is already detailed in the handbook. Like I said, there's no point in publishing the WORD version as it's 160 MB+. I tried both 300 and 1200 dpi export for the PDF it makes almost no size difference, ends up being around 8MB. One size fits all :mrgreen:
The only thing I'd like to do is a proper PDF export with the table of contents AND the reference links so that browsing the document can be done like any proper PDF. For now the PDF export is just a conversion. I'll see if someone at work as a version of adobe acrobat to do that.

There's (afaik) no difference in the use of the ULP in eagle 5 or 6. I'm still using eagle 5, slowly migrating to version 6. The ULP uses only classic vars from the program, so I don't think it will be a problem. Still, I haven't tested it (yet) with eagle 6.x.

I'm not a member of the wiki but I'll be happy to provide the word file to an admin in order to make it grow. I kept most of the pictures (in both low & hi resolutions) I've used in the manual.

Still, the handbook is a whole thing (like a novel... a boring novel but...). A few sections could be extracted but I really prefer it as a complete document. The wiki could just point to the PDF and save hours (days ?) of reposting this online, not talking about update / upgrades I'll probably keep adding to the document.
Reading the PDF on a tablet is indeed a must. Kindle edition anyone ? :lol:

The proof reading is half done I was told. Proof reader said that there is some hope about my written english. I don't know yet what it means :lol:
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Tue Sep 25, 2012 7:53 am

I added a few things in the eagle script with 2 dialog boxes to select the exported unit and side. Exported file name also reflects those 2 prefs so that the user doesn't get confused with multiple files with the same name or the overwriting the bottom file with the top one etc.

it's a very generic script the user can customize, especially for the filters. Eagle ULP has native support for string operator so it's very easy to add some complex filter so that your eagle part nomenclature is either filtered or translated to match your machine feeders naming.

if someone has the use of this, please test and let us know (thanks)

CentroidExport-v1.11-FULL.zip
Eagle CAD centroid export with unit and side selection
(2.14 KiB) Downloaded 201 times


Code: Select all
/*
 *  This EAGLE User Language Program creates the proper format
 *  Centroid file for assembly at Screaming Circuits including
 *  the reference designator, position, layer and orientation
 *  of each part
 *
 *  Version 1.11 25/09/2012 - Erv' Plecter - Added dialog boxes to select the exported unit and side
 *
 *  Version 1.1,  September 2012 - Erv' Plecter - erv@plecterlabs.com
 *  Simple modifications and fields added for an easier CSV import in the
 *  MDC 7722FV pick and place software.
 *  This version selects only TOP parts - Export unit is mm
 *  Format includes "RefDes", "Value, "RefDes+Value","Layer", "LocationX", "LocationY", "Rotation"
 *  The Value is the field use by the CAD import to match automatically the right feeder
 *  The RefDes+Value is the designation meant to fill the PCB program lines comment / remark field
 *  Ex: C15-100nF
 *
 *
 *  Version 1.0,  May 16, 2006
 *
 *  www.screamingcircuits.com
 *
 */

 enum { unitMM, unitINCH, unitMIL};
 enum {TOP, BOTTOM};
 int Result;
 

  int ConfigExportUnit (void) {
  string s;
 
  // Preset
  int Unit = unitMM;
 
  Result = dlgDialog("CAD export configuration 1/2") {
    dlgHBoxLayout {
   
       dlgStretch(0);
       dlgGroup("Select unit for output file") {
          dlgStretch(0);
          dlgGridLayout {
             dlgCell(1, 0)  dlgRadioButton("&mm", Unit);
             dlgCell(2, 0)  dlgRadioButton("&inch", Unit);
          dlgCell(3, 0)  dlgRadioButton("&mil", Unit);
             }
          }
       
       dlgStretch(0);
       dlgVBoxLayout {
          dlgHBoxLayout {
             dlgSpacing(20);
             dlgStretch(0);
             dlgPushButton("+OK") dlgAccept();
             dlgStretch(1);
             }
          dlgHBoxLayout {
             dlgSpacing(20);
             dlgStretch(0);
             dlgPushButton("-Quit") dlgReject();
             dlgStretch(1);
             }
          }
       dlgStretch(1);
       }
     dlgStretch(1);
    };
   return(Unit);
}
 
 
 int ConfigExportSide (void) {
  string s;
 
  // Preset
  int Side = TOP;
 
  Result = dlgDialog("CAD export configuration 2/2") {
    dlgHBoxLayout {
   
       dlgStretch(0);
       dlgGroup("Select exported SIDE") {
          dlgStretch(0);
          dlgGridLayout {
             dlgCell(1, 0)  dlgRadioButton("&Top", Side);
             dlgCell(2, 0)  dlgRadioButton("&Bottom", Side);
             }
          }
       
       dlgStretch(0);
       dlgVBoxLayout {
          dlgHBoxLayout {
             dlgSpacing(20);
             dlgStretch(0);
             dlgPushButton("+OK") dlgAccept();
             dlgStretch(1);
             }
          dlgHBoxLayout {
             dlgSpacing(20);
             dlgStretch(0);
             dlgPushButton("-Quit") dlgReject();
             dlgStretch(1);
             }
          }
       dlgStretch(1);
       }
     dlgStretch(1);
    };
   return(Side);
}
 
 
string rotation(real Angle)
{
  string s;

  sprintf(s, "%.1f", Angle);
  for (int i = 0; s[i]; i++)
      if (s[i] == '.') {
         if (s[i + 1] == '0')
            s[i] = 0;
         break;
         }
   return s;
}

string side(int Mirror)
{
  string s;

  if (Mirror){
     s = "Bottom";
     }
     else {
     s = "Top";
     }
  return s;
}

if (board) board(B) {

   int SelectedUnit;
   int SelectedSide;
   string sSide;
   string sUnit;
   string FileNameAddOn;
   
   SelectedUnit = ConfigExportUnit();
   SelectedSide = ConfigExportSide();

   switch(SelectedUnit)
   {
      case unitMM:
      sUnit = "_mm";
      break;
      
      case unitINCH:
      sUnit = "_inch";
      break;
      
      case unitMIL:
      sUnit = "_mil";
      break;
   
      default:
      sUnit = "_?unit";
      break;
   }
   
   switch(SelectedSide)
   {
      case TOP:
      sSide = "_top";
      break;
      
      case BOTTOM:
      sSide = "_bottom";
      break;
      
      default:
      sSide = "_?side";
      break;
   }
   
   FileNameAddOn = sSide;
   FileNameAddOn = FileNameAddOn + sUnit;
   FileNameAddOn = FileNameAddOn + "_centroid.csv";
   
   output(filesetext(B.name, FileNameAddOn))
   {
      printf("Screaming Circuits SMD component position file.\n\n");
      printf("Modded by Erv' Plecter - Plecter Labs - 2012.\n\n");
      printf("Centroid Data for pc board: \"%s\" as of: %s\n", filename(B.name), t2string(time()));
      printf("Measurements are in mm. Comma delimited\n");
      printf("Only surface mount components included\n\n");
      printf("%s,%s,%s,%s,%s,%s,%s\n", "RefDes", "Value", "RefDes+Value","Layer", "LocationX", "LocationY", "Rotation");
   
      B.elements(E)
      {
         int isSmd;
         int PartSide;
         int isCorrectSide;
         int isWhatYouWant;
         real ConvertedX;
         real ConvertedY;      
      
         // Inits
         isSmd = 0;
         PartSide = TOP;
         isWhatYouWant = 1;
         /* Check the part is SMD and placed on TOP layer */
         E.package.contacts(C)
         {   
            if (C.smd) isSmd = 1;
         }
         if(E.mirror == 0)
         {
            PartSide = TOP;
         }
         else
         {
            PartSide = BOTTOM;
         }
      
         /* Parts you don't want to include, like SMD wire pads, test points... */
         /* I included a NOPLACE keyword. Put this in the part VALUE and it will be skipped */
         /* Adapt to your own preference - Enjoy - Erv' Plecter */
         if(!strstr(E.name,"TP")) { isWhatYouWant = 0;}
         if(!strstr(E.name,"PAD")) { isWhatYouWant = 0;}
         if(!strstr(E.value,"NOPLACE")) { isWhatYouWant = 0;}
         /* Add more here if necessary */
      
         // Parses script preferences
         isCorrectSide = !(PartSide ^ SelectedSide);
         
         if (isSmd && isCorrectSide && isWhatYouWant)
         {
            switch(SelectedUnit)
            {
               case unitMM:
               ConvertedX = u2mm(E.x);
               ConvertedY = u2mm(E.y);
               break;
            
               case unitINCH:
               ConvertedX = u2inch(E.x);
               ConvertedY = u2inch(E.y);
               break;
            
               case unitMIL:
               ConvertedX = u2mil(E.x);
               ConvertedY = u2mil(E.y);
               break;
               
               default:
               break;
            }
         printf("%s,%s,%s-%s,%s,%5.3f,%5.3f,%s\n",E.name,E.value,E.name,E.value,side(E.mirror), ConvertedX, ConvertedY, rotation(E.angle));
         }
      }
   }
}
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Thu Sep 27, 2012 6:14 am

The dispensing section is finished and as complete as it can be with me not owning a dispenser. MDC also provided some info about their stamping system, an alternative method to apply / dispense solder paste using the placement head. I added a few things for the maintenance (overall those machine don't need much maintenance once calibrated, aside of oiling).

I exported the PDF with the proper 1200 dpi settings and interactive bookmarks and links so that it's possible to browse the document using the table of contents and redirection.

The cover still need some work. I also need to add a link for the eagle centroid export script once I have decided where I'll host it. After that, we'll be good, I'll probably get my proof reading corrections on monday or sometime next week.

oh, the manual is about 195 page long now :shock: (ok, a few incomplete pages, lots of pictures but still...)
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am

Re: MDC Luna EXP 7722FV handbook

by Backerly on Thu Sep 27, 2012 8:14 am

Vincent, I am really intersted in taking a look at this manual. Been a bit busy with a few other things lately but as of next week I will be using the machine pretty solidly.

Im still having a lot of problems with the bottom vision. I will post a few of my pictures off the bottom camera soon. I notice 'm not the only one getting blurry images and "301" errors. Your images are really sharp. I have never seen that on my machine... at ANY light level (126/26/226).
Backerly
 
Posts: 8
Joined: Sun Feb 19, 2012 4:18 am

Re: MDC Luna EXP 7722FV handbook

by vincentp on Thu Sep 27, 2012 9:10 am

camera focus could be off. Again, to test, you need to calibrate your POS2 position (bottom cam position, nozzle exchanger menu). Use any nozzle that is big enough to be seen outside of the cross hair / target
OR move the head so see the nozzle tip (and don't save the changes). This will tell you if the zero of the nozzle to the cam (= cam focus ?) settings is correct. This is factory calibrated as I got the settings on my machine check list. You have 2 params called scrub and focus in the quick settings. Compare with mines (I believe I posted them) and check in the machine checklist you must have got with the manual and the hardware blueprints etc.

A little more patience for the manual, it should be there next week. I really want to shoot as many typos as possible to have a nice document. That won't save you from headaches when reading it though :wink:
vincentp
 
Posts: 98
Joined: Tue May 15, 2012 2:29 am