大家好,欢迎来到IT知识分享网。
是什么样的硬核DIY项目,能在硬件设计大赛——「星火计划」活动中斩获2W元的奖金(一等奖)?还被中科院保研了?
——它就是,隧道扫描显微镜(OpenSTM)。

什么是隧道扫描显微镜(OpenSTM)?
如果说列文虎克的光学显微镜让科学的边界来到了细胞级别。

那么隧道扫描显微镜的诞生就让科学的视野在原子层面更近了一步。因为它能以0.2纳米的分辨率看见原子。

生命在于“挑战”!这么硬核的工程,咱能不DIY一个试试?

项目描述
本项目是希望通过DIY来搭建一个原子级扫描隧道显微镜,并希望能够完成对热解石墨(HOPG)的结构成像。
目前,这个DIY项目已经成功测量了:隧穿距离-电流曲线、热解石墨(HOPG)的偏压-电流曲线、样品无尺寸定性成像。
成果
隧穿距离-电流曲线



热解石墨(HOPG)的偏压-电流曲线

热解石墨(HOPG)样品的无尺寸定性成像

STM原理概述
扫描隧道显微镜(STM)是基于量子隧穿效应,利用隧穿电流特性工作的一种能够实现原子级分辨率成像的显微镜。
通过将导电探针悬停在“通电样品”表面几纳米处进行栅格扫描,监测隧穿电流变化情况,扫描隧道显微镜能够实现样品表面形貌成像[1]。
由于隧穿电流随距离指数性变化的特征,扫描隧道显微镜能够达到0.1nm的横向分辨率与0.01nm的垂直分辨率[2]。
量子隧穿效应
在经典力学中,在一维情况下,总能量为E的电子在位置为x处的运动情况可以用以下公式表示:

其中,m为电子质量,v为电子速度,V(x)为与电子位置x处有关的势能。
由式子(2.1)可知,只有当E>Ep时,电子才具有正值的速度。因此,若某一位置势能Ep1>E时,电子将不可能到达该位置。
德布罗意在1924年提出电子如光的波粒二象性一样,具有波的性质,并且电子的波长λ可以通过公式(2.2)描述:

其中,h为普朗克常量,p为电子动量。
可以将扫描隧道显微镜的势能模型简化为下图所示的一维形式,探针与样品间的间隙被描述为方势垒,其中红色横线为电子能量:

即势能可以通过公式描述为:V(x)=0(x<a, x>a), V(x)=V_1(a<x<b)
在量子力学中,电子将被满足薛定谔方程的波函数ψ(x)描述。此处讨论电子在一维定态下量子隧穿的情况,设电子的势能方程为:

此时波函数也只和空间坐标有关:

在定态情况下,不含时薛定谔方程取这样的形式:

其中:

在扫描隧道显微镜工作时,电子可视为从探针区域射向势垒,但由于电子能量小于势垒,在经典力学角度上电子不可能跨过势垒到达样品处,即在样品与探针间不可能存在电流。
从经典力学角度对电子存在性上进行分析,可将空间区域分为经典允许区与经典禁区。
- 当电子位于探针区域时,此时的电子总能量大于所处位置势能E>V,从经典力学的角度上看,电子能够位于该区域,即经典允许区。
- 当电子处于真空区域时,电子的总能量小于所处位置势能E<V,从经典力学的角度上看电子不可能运动到该区域,即经典禁区。

可见,在经典力学中不可能出现电子的真空势垒中,在量子力学中仍然存在概率分布,并且其以指数形式衰减。
即对于如势垒模型图描述的模型中,电子将有概率穿过真空势垒,并在样品区域产生透射波。这种电子能够穿透比其能量更高的势垒的效应即量子隧穿效应。
通过对该模型的边界条件以及连续条件可求解[3][4][5]得到隧穿电流与真空势垒的关系为:

其中:

d为探针样品间距。
从公式可以看出,当进入隧穿距离后,探针与样品间距与隧穿电流呈指数关系。
当探针样品间距离变化0.1nm左右时,隧穿电流大小将改变一个量级[6],这也为扫描隧道显微镜的超高分辨率提供了理论基础。
STM方案
目前已公布两个不同机械结构的STM方案。且发布的资料在一定程度上是能够运行的。
Release OpenSTM v1.0.0
这是初代STM方案,机械结构采用两块铝板搭建。方案较为简单,没有取得能够用于分析的实验结果。但后续方案的搭建基于本初代方案进行搭建。初代方案开源了这些资料:
- 3D模型文件(SolidWorks)
- Arduino程序:用于控制STM的ESP32单片机控制程序(采用LVGL进行交互)、基于MPU9250的震动探测程序,均采用Arduino+Platform IO进行开发
- PCB及原理图
- 用于测量干涉条纹的Python脚本
- LTSpice对电源芯片的仿真文件
Release OpenSTM v2.0.0
该版本方案为第二代显微镜结构。
该方案的结构能够测量:
- 隧穿距离-电流曲线
- 扫描隧道谱(STS)
v2.0.0开源的资料包括:
- 3DModel:SolidWorks绘制的3D模型文件、CNC加工所需的STEP文件
- PCB:立创EDA专业版绘制的原理图、PCB文件
- Software:在Arduino文件夹下,包含ESP32单片机的控制程序、ATMEGA 328P单片机的控制程序。在Python文件夹下,包含了上位机控制软件、图像转换程序
单片机程序(Arduino、Python)
10 lines (10 sloc) 274 Bytes RawBlame { // See http://go.microsoft.com/fwlink/?LinkId= // for the documentation about the extensions.json format "recommendations": [ "platformio.platformio-ide" ], "unwantedRecommendations": [ "ms-vscode.cpptools-extension-pack" ] }
用于控制单片机的Python程序
84 lines (75 sloc) 3.96 KB # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'gui.ui' # # Created by: PyQt5 UI code generator 5.15.6 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(735, 175) font = QtGui.QFont() font.setFamily("Adobe Devanagari") font.setPointSize(12) MainWindow.setFont(font) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.lineEdit_address = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_address.setGeometry(QtCore.QRect(20, 10, 601, 20)) self.lineEdit_address.setReadOnly(True) self.lineEdit_address.setObjectName("lineEdit_address") self.pushButton_open = QtWidgets.QPushButton(self.centralwidget) self.pushButton_open.setGeometry(QtCore.QRect(650, 10, 75, 23)) self.pushButton_open.setObjectName("pushButton_open") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 50, 101, 16)) self.label.setObjectName("label") self.label_originallength = QtWidgets.QLabel(self.centralwidget) self.label_originallength.setGeometry(QtCore.QRect(130, 50, 101, 16)) self.label_originallength.setObjectName("label_originallength") self.label_1 = QtWidgets.QLabel(self.centralwidget) self.label_1.setGeometry(QtCore.QRect(30, 80, 101, 16)) self.label_1.setObjectName("label_1") self.label_droplength = QtWidgets.QLabel(self.centralwidget) self.label_droplength.setGeometry(QtCore.QRect(130, 80, 101, 16)) self.label_droplength.setObjectName("label_droplength") self.lineEdit_times = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_times.setGeometry(QtCore.QRect(250, 50, 113, 20)) self.lineEdit_times.setObjectName("lineEdit_times") self.progressBar = QtWidgets.QProgressBar(self.centralwidget) self.progressBar.setGeometry(QtCore.QRect(20, 130, 701, 23)) self.progressBar.setProperty("value", 0) self.progressBar.setObjectName("progressBar") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(190, 50, 41, 16)) self.label_2.setObjectName("label_2") self.pushButton_draw = QtWidgets.QPushButton(self.centralwidget) self.pushButton_draw.setGeometry(QtCore.QRect(380, 50, 75, 23)) self.pushButton_draw.setObjectName("pushButton_draw") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "STMImageConverter")) self.pushButton_open.setText(_translate("MainWindow", "OPEN")) self.label.setText(_translate("MainWindow", "OriginalLength:")) self.label_originallength.setText(_translate("MainWindow", "NULL")) self.label_1.setText(_translate("MainWindow", "DropLength")) self.label_droplength.setText(_translate("MainWindow", "NULL")) self.lineEdit_times.setText(_translate("MainWindow", "1")) self.label_2.setText(_translate("MainWindow", "Steps:")) self.pushButton_draw.setText(_translate("MainWindow", "DRAW")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
关于第三代
第三代电路、机械结构重构完成,粘滑压电马达设计完成,进入调试阶段(目前未发布,待验证后发布)。
(1)电路电源方面:
重构后的电路采用ADP5070搭配低噪声LDO的方案提供多个电源轨道(双±12V、5V)。
ADP5070采用紫米35W双C口电源适配器进行5V供电,原因在于该电源纹波极低,峰峰值在13mV左右,呈现为锯齿状。
(2)PCB板层设计方面:
新一代电路板分为三块:电源板、MCU板、控制板。
电源线在板之间采用同轴信号线连接,数据线采用IDC排线连接。
(3)电路改进方面:
MCU板继续沿用ESP32作为控制器,但模组型号更新为ESP32-S3,并留有WIFI天线挖槽,为日后升级做准备。
控制板沿用第二代大部分设计保持不变,继续使用AD5761+OPA2227的方案对扫描头进行控制。但由于压电滑台的引入,控制板额外添加了AD8761作为对样品施加偏压的DAC。原本用于施加偏压的DAC现用于控制压电滑台。
(4)机械结构设计方面:
新一代机械结构整体尺寸缩小,并引入了粘-滑压电滑台进行粗进近(参考文章《Open-source XYZ nanopositioner for high-precision analytical applications》),并对前级放大器进行了金属全包裹屏蔽,进一步降低噪声耦合。
设计图
设计图共13张。


ControlBoard

ControlBoard

MCUBoard

MCUBoard

PeizoConnector

PeizoConnector

PreAmp

PreAmp

SampleTable

SampleTable

StepperMotorDriver

StepperMotorDriver
由于格式原因,代码仅能展示部分,原理图仅能展示图片,需要源文件可在评论区滴滴,无偿分享的哈!
文章所有资料参考:立创开源硬件平台《扫描隧道显微镜OpenSTM》作者:Dimsmary。
https://oshwhub.com/Dimsmary/4ieRpV8S00kGn1MTpsc4MyZat8MwQPzn
如果你认为这篇文章还不错,欢迎点赞、关注、转发、收藏~
我会持续更新优质的开源项目~
最后
如果你也想像作者一样,找一个平台展示自己,以获得更好的机会。欢迎参加立创开源硬件平台举办的【星火计划】活动!
只要你有想法,愿意花时间设计项目,报名成功你就能获得1W元以内的耗材资助!
https://oshwhub.com/activities/spark2023/free#P1
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/178326.html