Sunday, October 5, 2014

Updated AmScope MU800 driver

Can be found here:

Hopefully will get merged into the kernel soon.  Over previous candidate this fixes some minor formatting issues and removes a serial number comparison check (read: only would have worked with my camera).

I also have traces from an MU300 and might merge those in soon.  Shout out if you'd really love to see MU300 supported on Linux. gets a facelift!

Thanks to Enrique Murias Fernández!, the original "2 minutes in vi" homepage has finally been replaced with something more proper:

Getting a real SSL cert is on my radar.  I tried to get one from StartSSL but they never responded to me  Unfortunately, it may cost more than the web hosting...

Wednesday, October 1, 2014

Confocal microscope bringup

One of the biggest issue with the process of digitizing ICs is that, at least with the tools/people available to me, polygon capture is mostly done by hand.  If you look at most of the automated polygon capture systems they either rely on SEMs (sharp images) or confocal imaging (planar view reduces background noise).  SEM imaging has its place and eventually I'll having a working SEM (sniff...that's for another post)

Most confocal microscopes out there are intended for biological imaging.  You can, for example, tag cells with fluorescent dies and build up a 3D image.  In some cases you can even image live cells and get some pretty sweet 3D videos.

Of metallurgical / epi illuminated by far the most popular model out there is the Technical Instruments K2 IND.  I tried to get some from local industrial auctions but kept getting outbid.  After some online searching/negotiating I was able to get one at a reasonable price off of eBay:

The system didn't come with any objectives and is not computer controlled but is otherwise complete (also includes power supply, not pictured).  I saw other scopes using Nikon BD Plan objections but I'm unclear if this is wasteful over the Nikon M objectives: I don't see a way to use darkfiled functionality.  Anyway, I picked up a Nikon BD Plan 20x objective and the system did in fact work.

As an impulse buy, I had previously purchased a heavy duty Technical Instruments XY stage at industrial auction:

 The linear stage is actuated by Compumotor M-57 stepper motors and is equipped with quadrature equivalent output RSF Elektronik glass linear encoders (10 um resolution):

The encoders are nice but I can generally get away with running stepper motors in open loop so not sure if I will use them.  That said, linear encoders can be used to eliminate backlash which would be nice.

It also came with matched Compumotor M-57 motor controllers:

They run open loop and therefore do not take into account either encoder. A complete system with heavy duty stages, cables, drivers, etc and I think I only paid something like $120 net for it.  Also came with random nosepiece which got thrown in my junk drawer.

Finally, not shown is the Z column.  Its not motorized but its pretty heavy duty.  Its unclear to me if this setup was intended to be used with the K2 IND, but it looks heavy duty enough to support one.  It seemed a good match for this microscope and I began the conversion process by (gasp) cutting the Nikon microscope body in half so I could re-mount it to my Technical Instruments stand.  Target:

 But how to clamp this?  I have a smallish table top mill (Sherline 2000) with vices nowhere near the size of the stand.  But it just needs to be stable without super precision which opens things up a bit.  What if I could just hold it down with some plumbers tape?

So I took a small unused optical table and wrote a CNC drill program to drill some countersunk holes so that I could mount it to the table:

I can't remember how I drilled the first few holes to bootstrap it...

Anyway, this allowed me to securely fasten the remaining microscope body and clean up the sawzall cuts:

Got busy at work, broke my CNC mill with some unrelated work (its fixed now) and time passed.  I was looking into getting objectives and saw another K2 IND at industrial auction.  It turned out that it was likely going to cost me less to get another K2 IND with objectives at industrial auction than to buy objectives off of eBay.  And I ended up winning this system:

They're multiplying!

But this new system, a Zygo KMS 310 RT, is actually quite nice.  Intended for mask inspection, seems to have been some partnership between Zygo and Technical Instruments.  Anyway, it came with a lot of stuff:
  • Infinity corrected K2 IND (KMS310)
  • 4 Nikon CF Plan objectives (very nice)
  • XY DC servo motors with glass linear encoders
  • Linear and quadrature encoded DC servo Z motor (cause the thing weights so much its not manually actuated)
  • Piezo Z stage for fine focusing
  • Vibration isolated table w/ CRT.  This may be why it went for a bit low price: people maybe didn't want to deal with getting rid of this
  • No control system (probably drove down price)
  • Came with cables, some of which were cut
While I couldn't find much information on the KMS 310 RT, I did find some pictures of Zygo KMS450i which looks to have identical linear stages.  Its a monstrosity of a control box and probably just as well that I replace it with just what I need

But what do I need?  A bit of a problem: all of the XY stages I've ever worked on have been open loop stepper systems.  I'm now confronted with DC servos, a whole different paradigm.

My old boss liked to say that cheating is a valid engineering strategy.  Can we cheat?  yes we can!  Here are the two Technical Instruments bases I have:

They are made by the same company and the footprints look awfully similar.  Wonder if I can take the stepper stage and transplant it onto the KMS 310 RT?  Yep!

Now just the Z axis to deal with.  For starters I just attached a benchtop power supply and was able to get it to move around (its a DC motor after all).  But not very convenient.  If I was really determined I may have been able to remount a stepper in its place.  But its a good excuse to learn more about servo systems.

After doing some research and talking to people, Geckodrive Motor Controls seems to be pretty good quality and reasonable cost.  While most of their business is in stepper drivers, it turns out that they make a DC servo drive, the G320X Digital Servo Drive:

I ordered two of them, intending one to be used for X and one for Y.  But with the XY problem solved for the time being it seemed fitting to use it on the Z axis.

Next challenge: figure out motor pinout.  After some multimeter action I was able to trace the wires on the motor to the umbilical cord coming off of the KMS 310 RT (which I cut in half since I didn't want to buy $ circular connectors).  The encoder pinout was printed on the encoder but I had some problems getting it to work.  After some looking around, I found the website for the motor and learned the encoder was open collector.  After adding some 1k pullup resistors the encoder signals looked good on my scope and the Gecko accepted them.  Final test setup:

Last piece of the control system: need to generate step/direction pulses to the compumotor XY drivers as well as the gecko Z driver.  I already have a low cost indexer (pr0ndexer) I use on my Olympus BH2, so I simply made another one of those:

Fired up my cnc microscope program...and it worked!  All the gains are set for my BH2 system but those should be reasonably easy to adjust.

Proof of concept system overview:

But I'm not in clear water yet.  The original Nikon K2 IND seems to work fine in all accounts.  The KMS 310 RT works in normal epi mode, but doesn't let enough light through to be usable in confocal mode.  I could swear it worked before, not sure.  The problem should be solvable one way or the other with the worst case being that I replace it with the Nikon K2 IND.

Other future plans: I'd still like to get the original DC servo linear stages working.  They use sine-cosine encoders which are a bit more complex to use.   I also need to incorporate a levelling element (probably a mirror mount) so that chip remains in focus across the scan.  Once that's in place I can do my first scan.

Until next time!