From 4e75f0e2cc4378bb6e58bfe6a5be23d1eda832ed Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Fri, 19 Nov 2010 08:22:36 -0500 Subject: [PATCH] Finished importing my old stepper main page. --- posts/MultiMode.mdwn | 2 +- posts/MultiMode/stepper.mdwn | 44 ++++++++++++++++++++++++-- posts/MultiMode/stepper/step_size.png | Bin 0 -> 15229 bytes 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 posts/MultiMode/stepper/step_size.png diff --git a/posts/MultiMode.mdwn b/posts/MultiMode.mdwn index 7774bc9..78dc8b4 100644 --- a/posts/MultiMode.mdwn +++ b/posts/MultiMode.mdwn @@ -4,7 +4,7 @@ was aquired by [Veeco][] in February 1998 before being passed off to [Bruker][] in August 2010. I've done a good deal of troubleshooting to keep our ancient MultiMode -II, stumbling along. If you're in a similar situation, check out my +II stumbling along. If you're in a similar situation, check out my notes on: * [[Stepper motor control|stepper]] diff --git a/posts/MultiMode/stepper.mdwn b/posts/MultiMode/stepper.mdwn index 0d27250..65be89d 100644 --- a/posts/MultiMode/stepper.mdwn +++ b/posts/MultiMode/stepper.mdwn @@ -126,14 +126,52 @@ the right hand screw) that it is labeled `5 V DC`, and `5 V` over a `20 Ohm` half-winding gives a current of `I = V/R = 0.25 Amps`. Following the motor leads back up the the main board (using the ohm-meter guess-and-check method :p), we find that they come from the -DS3658N (chip 1). This chip takes care of all the details of sinking +[DS3658N][] (chip 1). This chip takes care of all the details of sinking the large motor currents given a TTL driving pattern. -WARNING! I strongly suggest you don't do this on your own. The high -voltage lines for driving the piezo are potentially dangerous, +WARNING! I strongly suggest you don't do this on your own. The *high +voltage* lines for driving the piezo are potentially *dangerous*. + +The control for the DS3658N was too difficult for me to trace out on +the board, so I put the main board back in the MultiMeter (leaving the +base-plate off), connected the Multimeter to our NanoScope IIIa, and +started clicking on the ‘raise’ and ‘lower’ tip buttons. At the same +time, I watched the various DB-25 lines on the oscilloscope. DB-25 +lines 1, 2, 15, and 16 oscillated, but only when the motor was +turning, so I figured they must be direct TTL controls getting +(somehow) to the DS3658N. I built a DB-25 breakout box to take control +of those lines, and started writing software. + +Line roles +---------- + +Knowing the stepper control lines and how to control a unipolar motor, +it was only a matter of matching the lines to the roles. I arrived at +the matches that I pointed out in the *How* section through trial and +error. It was fairly easy to get the motor moving macroscopically, and +[[backlash]] testing convinced me that the microscopic motion is +reproducible and smooth. + +Stepsize +-------- + +We measured the stepper stepsize by stepping the AFM tip closer to +surface and sweeping the piezo in after each step. This produced the +data shown below. + +[[!img step_size.png + alt="Measuring the stepsize" + titl=e"Measuring the stepsize"]] + +As the motor steps in, we record consecutive traces a, b, c, d, e, and +f. Because we can calibrate the piezo by imaging a calibration sample, +we can convert our piezo voltage into the distance shown on the `x` +axis. Measuring the `x` distance between to traces, we see that the +sample moves ~170 nm closer with each step. [NI]: http://www.ni.com/ [DJ]: http://www.cs.uiowa.edu/~jones/ [tutorial]: http://www.cs.uiowa.edu/~jones/step/ [drive]: http://www.cs.uiowa.edu/~jones/step/types.html#unipolar [unipolar]: http://www.cs.uiowa.edu/~jones/step/types.html#unipolar +[DS3658N]: http://www.physics.drexel.edu/~wking/rsrch/multimode.shtml#chips diff --git a/posts/MultiMode/stepper/step_size.png b/posts/MultiMode/stepper/step_size.png new file mode 100644 index 0000000000000000000000000000000000000000..2b103ab0318ae696d79a91200280287ef1060856 GIT binary patch literal 15229 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