Home-Built STM

This project is my attempt to build a low-cost scanning tunneling microscope (STM) capable of atomic resolution imaging in air. The piezo scanners typically used in STM typically cost at least hundreds of dollars. Some time ago I came across John Alexander’s simple STM project, in which he used a cheap piezo buzzer element with one of the electrodes cut into quadrants to enable XYZ motion. This type of scanner is less rigid than what is usually used for STM, but I decided to give it a try and see how far I could get with it. Turns out I was able to image highly-oriented pyrolytic graphite (HOPG) with my STM with atomic resolution! The image below shows the hexagonal lattice structure of graphite.

Overview of the technique

STM is a tool capable of imaging surfaces with atomic resolution. In STM, a sharp metallic needle is brought within a few angstroms of the surface of a conductive sample and a small bias voltage is applied across the gap. If the gap is small enough (<1 nm), electrons can cross the gap via quantum tunneling. This “tunneling current” is typically in the pA – nA range, and can be measured with a transimpedance amplifier. The STM tip is mounted on a piezoelectric scanner, which is capable of sub-angstrom motion in all directions. The tunnelling current measured by the transimpedance amplifier is fed into a feedback loop which controls the voltage applied to the Z-axis electrode of the piezo scanner and acts to maintain a constant tunneling current, and therefore a constant tip-sample distance. The X and Y axes of the scanner are used to raster scan the tip across the sample. By measuring the Z-axis voltage as a function of scan position, an image of the sample topography is constructed. If the tip moves closer to the sample surface, the tunneling current increases exponentially. This exponential relationship is what makes STM sensitive enough to resolve individual atoms, even under ambient conditions. If the STM tip is atomically sharp (not as hard to achieve as you might think!) then nearly all of the tunneling current will flow through the single atom on the tip which is closest to the sample surface, resulting in images with atomic resolution.

For more about this project, click one of the links below or in the top menu:


143 thoughts on “Home-Built STM

  1. Amazing build!

    I am trying to get one working as well, though I am still quite far from getting images. Just to get some experience, I am trying to reinvent the wheel and re-design everything myself.
    I am hoping to use the OPA129(UB) as preamp, but might switch to the LTC6268 later if I attempt phase sensitive detection.
    Originally I was planning to do the signal mixing in software and output the Z+X, Z-X, … directly, but now I am wondering if it would make sense to have a separate 18 or even 20bit DAC just for the Z signal. Maybe it would be possible to get away without sigma-delta in that case. I was looking at the AD5781 (or maybe even AD5791), which is just about in budget for one coordinate.
    Does that sound like a decent idea or is there something I have overlooked?



    • Hi Edgar,
      Thanks! I did the mixing in hardware to save the cost of an extra DAC for the bias. I’m not sure how necessary the delta-sigma modulation is for Z. Without it, the resolution is about 10 pm (for 700 nm Z range) which I’d think would work fine at least for HOPG. The AD5781/AD5791 will of course perform better though, and I think having a dedicated Z-DAC like that is a good idea since the performance requirements in Z are more stringent than X and Y.


  2. Hi Dan!

    I’m building a STM project based on yours, and it’s almost finished. The major component changes I made were using LTC2326-18 instead of LTC2326-16 (which wasn’t available), replacing OPAX227 with TL07X and using a Teensy 3.6 (which runs on 3.3V) for MCU.
    The only thing different in the Arduino code are the pins.

    When I turn on the PC software the board is detected and by turning the micrometer screw the tunnel led goes on. I could only get grey noise in the images, though. First, there was a spaghetti-like noise, which disappeared when I used a battery powered laptop. But then there’s still just noise in the image.

    Some pictures and data of the project and PSU used are here:

    I guess maybe the approach is too coarse, but I don’t know for sure. Do you have any ideas on this?


    • Hi Vítor,

      Nice job! I’ve also been using TL07X op-amps without issues. Your “spaghetti-like” noise is 60 Hz mains pickup. It’s best to shield the STM and preamp with a metal cover to eliminate this and any other noise pickup by the preamp.

      Some of your screenshots show thick bright bands in the tunnel current images, meaning the tip is probably crashed there. They also all show a 10 nm scan size, have you tried increasing it to 1000 nm or so? Starting with a large scan will be much easier, and will make it easier to figure out what’s going wrong. Maybe your sample is pretty flat over 10 nm, and the noise your seeing is from vibrations. A larger scan will show some structure in the sample surface.

      Regarding the approach, it looks like you’re able to get it into stable tunneling with the feedback loop running, so I wouldn’t worry too much about that yet. You’re almost certainly crashing the tip during the approach though. Does the sample rotate when you turn that micrometer screw? It looks like a differential, so I’m guessing you’re using the fine adjustment for the final approach?


      • Thanks for the quick reply! I will try increasing the scan size and see if it helps. The sample does rotate. By the way, the sample is put in there by attaching a piece of tape to the graphite sample, dettaching the tape, then attaching and dettaching it to the copper plate. The handle is from a micrometer (the measuring instrument), so there’s just one kind of adjustment available (the smallest division is 0.01mm).


      • Hi Vitor,
        Just a quick note: For low frequency shielding you are better off with a magnetic shield, as the skin depth for non magnetic shield like copper or aluminum at 50 or 60 Hz is ridiculous something around a cm. I used a big steel electronics enclosure for my STM in graduate school setting the whole microscope inside and closing the lid after approaching the sample.
        You might also have some other grounding issue going on, with the big change when running on a battery powered laptop. Over all nice work Vitor,
        John Alexander

        Liked by 1 person

  3. Till around 1987 all STMs had analog feedback loops for Z servo. My old website “Simple STM Project” uses an analog servo for Z just using potentiometers to adjust the servo gain/time constant. I was not seriously trying for atomic lattice resolution; I was trying to demonstrate how a simple, inexpensive and safe (no high voltage) STM could be made. The circuit is similar to what I used back in 1986 on my first STM (a tube scanner with high voltage amplifier) where it had no problem getting nice graphite lattice resolution. Dan Berar’s mechanical design looks much more rigid than my simple STM design. That should help in immunity to mechanical vibration especially at the small scale. Even commercial AFMs and STMs imaging very flat samples without an acoustic enclosure will show noise when people talk in the same room as the microscope.


  4. Hello!

    I am currently working on a similar project myself, but with an analog feedback loop. I saw that your early prototype used an analog feedback loop. Did you get any usable images with that design? Do you know of other DIY SPM projects which also use this aproach?

    best regards


    • Hi Harald,
      Absolutely, changing the feedback loop to digital had no noticeable effect on the image quality I was getting. The first atomic resolution images I took with HOPG were with the analog feedback loop using just an integrator and a potentiometer to adjust the gain. In fact, it can have particularly low noise because it’s so simple and you don’t have to worry about extra noise and glitch impulses from a DAC, though the main limiting factor seems to be vibration/sound as John Alexander mentioned above (or possibly DAC glitches, I’m still not really sure but I can’t seem to get below ~20 pm or so Z-resolution). Take a look at his simple STM page, he also used an analog feedback loop.


      • Hello!

        late reply here 🙂
        Thank you very much for your response, It gave me a boost of confidence in my project!. A few weeks later, I’m now at the point where I can pull images from the STM! So far they have not been able to capture very much detail, but they do seem to show some surface features!
        There is a lot of room for improvement in my mechanics, so I’ll be working on that next. Doing my approach is pretty much impossible without crashing the tip, and I often get it to resonate so that the tip repeatedly hammers against the sample.

        Your blog has been a great resource and is the reason I started this project, Thank you!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s