Visualizacion y Modificacion de
Superficies con un STMTesis presentada por Mario Alberto Trivino Munevar
para obtener el grado de Ingeniero Electronico
Directora:
Alba Graciela Avila Bernal
Departamento de Ingenierıa Electrica y Electronica
Facultad de Ingenierıa
2010
Agradecimientos
Deseo expresar mis mas sinceros agradecimientos...
A todos mis profesores, por sus ensenanzas, estımulos y correciones. Gracias por
mostrarme la manera de aprender y darme una perspectiva distinta del mundo que
me rodea.
A mis amigos, especialmente a Andres, Camilo, Diego y Laura por sus comenta-
rios, revisiones y ayuda, sin los cuales no habrıa sido posible culminar este trabajo.
Al laboratorio de Ingenierıa Electrica y Electronica de la Universidad de Los
Andes por el prestamo de los equipos y por proporcionarme un espacio de trabajo
ideal.
A la senora Dery Corredor del MEB de la Universidad de los Andes por su ayuda
con las fotos y analisis de composicion de puntas y sustratos.
No puedo terminar sin agradecer a mis padres y mi hermana, su apoyo, amor
y estımulo constante han sido fundamentales no solo en este proyecto sino durante
toda mi vida. Es a ellos a quien dedico este trabajo.
ii
Prefacio
Este documento son las memorias de mi trabajo de tesis para el grado de ingeniero
electronico. En estas paginas explico las pruebas llevadas a cabo para cumplir con
el objetivo de realizar modificaciones nanometricas en la superficie de un material
utilizando un microscopio de tunelamiento electronico y los resultados que obtuve.
Sin embargo, mas alla de esto, mi intencion es que este trabajo sirva como un manual
del microscopio de tunelamiento con el que cuenta la Universidad de Los Andes.
He procurado que en sus paginas se encuentre una referencia suficiente que per-
mita al usuario del equipo comenzar a experimentar con el y a hacer uso de todas
sus capacidades una vez termine de leerlo. A pesar de esto, debo advertir por ex-
periencia propia que a medida que se aprende mas sobre el sistema, surgen mas y
mas preguntas y es probable que tales inquietudes sean diferentes a las que tuvieron
quienes hicieron aportes anteriormente, por lo tal no puedo hacer mas que garantizar
un buen punto de partida para su propia investigacion.
iii
Indice general
Agradecimientos II
Prefacio III
Introduccion 3
1. Teorıa de un microscopio de tunelamiento 5
1.1. El Efecto Tunel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Funcionamiento de un STM . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1. Principio de funcionamiento . . . . . . . . . . . . . . . . . . . 8
1.3. Modos de operacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.1. Corriente constante . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2. Altura constante . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Bloques funcionales de
un microscopio de tunelamiento . . . . . . . . . . . . . . . . . . . . . 10
1.4.1. Control y monitoreo de corriente . . . . . . . . . . . . . . . . 10
1.4.2. Sistema antivibraciones . . . . . . . . . . . . . . . . . . . . . . 11
1.4.3. Control de escaneo . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.4. Adquisicion de datos . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.5. Sistema de visualizacion . . . . . . . . . . . . . . . . . . . . . 12
2. El STM de Uniandes 13
2.1. Caja de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2. Preamplificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Sistema de adquisicion de datos . . . . . . . . . . . . . . . . . . . . . 16
iv
Indice general v
2.4. Placas de aproximacion . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5. Trıpode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6. Sistema antivibraciones . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.1. Baja frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.2. Alta frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.3. Recomendaciones para evitar vibraciones . . . . . . . . . . . . 19
2.7. Software para el control del microscopio . . . . . . . . . . . . . . . . 19
2.7.1. Ajustes posibles dentro del programa . . . . . . . . . . . . . . 20
2.7.2. Modo de visualizacion . . . . . . . . . . . . . . . . . . . . . . 21
2.7.3. Modo de fabricacion . . . . . . . . . . . . . . . . . . . . . . . 22
2.8. Cambios realizados al sistema durante este trabajo . . . . . . . . . . 22
3. Visualizacion de muestras con el STM de Uniandes 25
3.1. Preparacion de puntas . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1. Puntas de W . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.2. Puntas de Pt-Ir . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.3. Consejos para la fabricacion y almacenamiento de las puntas . 28
3.2. Equipo requerido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3. Ajustes previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.5. Resultados y Analisis . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6.1. Calibracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6.2. Repeticion de experimentos . . . . . . . . . . . . . . . . . . . 37
3.6.3. Procesamiento de imagenes . . . . . . . . . . . . . . . . . . . 38
4. Litografıa con STM 41
4.1. Tecnica sugerida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3. Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4. Analisis y conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5. Trabajo futuro 49
Indice general vi
A. Codigo fuente programa 51
A.1. Main.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.2. Scan.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
A.3. Settings.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Bibliografıa 89
Indice de figuras
1.1. Ejemplo de un potencial . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Tunelamiento a traves de una barrera de potencial . . . . . . . . . . . 7
1.3. Modo de operacion de corriente constante . . . . . . . . . . . . . . . 9
1.4. Modo de operacion a altura constante . . . . . . . . . . . . . . . . . . 10
2.1. Microscopio de tunelamiento electronico . . . . . . . . . . . . . . . . 13
2.2. Esquematico del preamplificador. . . . . . . . . . . . . . . . . . . . . 15
2.3. Tarjeta de adquisicion compactRio de National Instruments R© . . . . 17
2.4. Diagrama de bloques del sistema electronico . . . . . . . . . . . . . . 18
2.5. Diagrama de las placas de aproximacion. . . . . . . . . . . . . . . . . 18
2.6. Piezoelectricos y trıpode . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7. Sistema antibraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8. Programa de control del microscopio . . . . . . . . . . . . . . . . . . 21
2.9. Patrones de fabricacion . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.10. Sistema de control en modo de fabricacion . . . . . . . . . . . . . . . 24
3.1. Punta hecha por ataque electroquımico . . . . . . . . . . . . . . . . . 27
3.2. Punta de tunsgteno y acercamiento . . . . . . . . . . . . . . . . . . . 28
3.3. Puntas de platino iridio. . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4. Conexion del voltaje de la muestra . . . . . . . . . . . . . . . . . . . 31
3.5. Pines del conector DB9 tarjeta-contro analogo . . . . . . . . . . . . . 32
3.6. Foto HOPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.7. Foto Muestra de calibracion de oro . . . . . . . . . . . . . . . . . . . 36
3.8. Foto 2 HOPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.9. Muestra de oro en 2D y 3d . . . . . . . . . . . . . . . . . . . . . . . . 39
vii
Indice de figuras viii
4.1. HOPG antes de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2. HOPG despues de experimento de fabricacion con Vbias = 4V y v =
120nm/s. Patron T. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3. HOPG despues de experimento de fabricacion con Vbias = 6V y v =
120nm/s. Patron A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4. HOPG despues de experimento de fabricacion con Vbias = 8V y v =
120nm/s. Patron A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5. Patron A girado. Utilizado en pruebas con silicio. . . . . . . . . . . . 45
4.6. Imagenes Si antes del experimento de modificacion. . . . . . . . . . . 46
4.7. Silicio despues de experimento con Vbias = 5V y v = 200nm/s. Patron
A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.8. Silicio despues de experimento con Vbias = 4V y v = 200nm/s. Patron
S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.9. Silicio despues de experimento con Vbias = 5V y v = 400nm/s. Patron S 47
Indice de cuadros
3.1. Cuadro comparativo de las puntas de tungsteno y platino iridio. . . . 28
4.1. Parametros que aseguran modificaciones sobre la superficie escaneada. 48
1
Indice de cuadros 2
Introduccion
En el campo de la nanotecnologıa siempre se busca tener nuevos procesos que
permitan construir dispositivos y la altısima resolucion (existen reportes de hasta
2nm [8]) que se puede lograr con un microscopio de tunelamiento electronico en
modo de fabricacion y que supera a otras tecnicas como el rayo de electrones, hace
que valga la pena hacer un estudio que evalue la controlabilidad y rapidez del proceso,
pues se podrıa llegar a convertir en una herramienta para litografıa en instalaciones
de sala limpia, como las que existen en la universidad. Con el kit de microscopio de
tunelamiento electronico escolar se han podido visualizar estructuras nanometricas
y en esta oportunidad se exploran sus capacidades para realizar litografıa sobre
materiales semiconductores y carbono. Lo interesante es que se trata de un equipo
de bajo costo al cual a medida que se le agregan capacidades cumple con mayor
exito su proposito principal: acercar a los estudiantes que hasta ahora comienzan sus
carreras al mundo microscopico y a los fabulosos fenomenos que ocurren en el.
3
Indice de cuadros 4
Capıtulo 1
Teorıa de un microscopio de
tunelamiento
1.1. El Efecto Tunel
Considerese una partıcula en un espacio unidimensional, esta es libre de moverse
en cualquiera de las dos direcciones posibles, pero en algun punto existe una barrera
de potencial constante V0 (que es superior a la energıa E de la partıcula) y ancho d
(ver Figura 1.1).
Es decir,
V (x) =
{V0 0 < x < d
0 x < 0 o x > d(1.1)
Desde el punto de vista de la mecanica clasica, con E < V0 es imposible detectar
el cuerpo del otro lado de la barrera, por lo cual la probabilidad de transmision
es cero. Los resultados cambian dramaticamente al utilizar la mecanica cuantica.
Al resolver la ecuacion de Schrodinger para este caso, asumiendo independencia del
tiempo por simplicidad, se tiene que:
Para sectores del espacio por fuera de la barrera:
− h2
2m
d2ψ(x)
dx2= Eψ(x) (1.2)
5
Capıtulo 1. Teorıa de un microscopio de tunelamiento 6
Figura 1.1: Ejemplo de un potencial que es aproximado por una barrera de alturaconstante.
y las soluciones de la ecuacion son de la forma:
ψ(x) =
Aeik1x +Be−ik1x, si x < 0
Ceik1x +De−ik1x, si x > d(1.3)
con
k1 =
√2mE
h2 (1.4)
y en donde A, B, C, y D son constantes que seran determinadas de acuerdo a las
condiciones de frontera impuestas a la funcion y sus derivadas.
Para el espacio donde esta la barrera:
− h2
2m
d2ψ(x)
dx2+ V0ψ(x) = Eψ(x) (1.5)
y la solucion es:
ψ(x) = Fek2x +Ge−k2x, para 0 < x < d (1.6)
donde
k2 =
√2m(V0 − E)
h2 (1.7)
Siendo F y G constantes. Se fija D = 0 porque no hay nada a la derecha de
la barrera que pueda generar una reflexion, por lo tanto la onda solo viajara en la
direccion de x ascendente en este sector del espacio.
Capıtulo 1. Teorıa de un microscopio de tunelamiento 7
Es posible determinar las constantes restantes en terminos de una de ellas y
calcular el coeficiente de transmision de un lado al otro de la barrera, que es definido
como el radio entre la probabilidad de transmision y la probabilidad de reflexion1:
T ≡ C∗C
A∗A(1.8)
Al final se obtiene que:[7]:
T = [1 +sihn2k2d
4 EV0
(1− EV0
)]−1 (1.9)
y para k2d >> 1:
T ' 16E
V0
(1− E
V0
)e−2k2d (1.10)
De (1.10) se puede apreciar que la energıa de la partıcula, su masa, el tamano de
la barrera de potencial y el ancho de esta determinan la probabilidad de transmision.
Estos resultados son sorprendentes. A pesar de que la probabilidad de que la partıcula
Figura 1.2: Tunelamiento a traves de una barrera de potencial. Gran parte de la ondaincidente es reflejada debido a que la energıa es menor que la barrera, pero tambienexiste una pequena probabilidad de que la onda sea transmitida.
sea encontrada al lado derecho de la barrera es extremadamente pequena, no es cero,
contrario a los resultados de la mecanica clasica.
1En el caso mas general la definicion incluye las velocidades de los medios, que en este caso esla misma a ambos lados de la barrera T = (vderecha/vizquierda)C∗C/A∗A que se omiten por ser lasmismas se cancelan.
Capıtulo 1. Teorıa de un microscopio de tunelamiento 8
1.2. Funcionamiento de un STM
1.2.1. Principio de funcionamiento
Para que el equipo funcione se aplica un voltaje entre una punta conductora
y una muestra que debe ser metalica o semiconductora que son mantenidas a una
distancia muy pequena para facilitar el paso de electrones de un material al otro
por efecto tunel (esencialmente, se puede decir que mientras no exista un contacto
directo se tiene una barrera de potencial que impide el paso de los electrones de un
lado al otro). Las imagenes son construidas registrando las variaciones en la corriente
a medida que la punta se desplaza sobre el plano de la muestra.
En un microscopio de tunelamiento electronico se aprovecha el efecto tunel para
obtener mapas de densidades electronicas. Si bien el tratamiento formal del problema
es mas complicado que el presentado en la seccion anterior, este es una aproximacion
que permite entender un poco de la fısica del sistema. En particular, la corriente de
tunelamiento mantiene la proporcionalidad exponencial[9]:
I ∝ e−2ktd (1.11)
siendo d la distancia punta-muestra y
kt =
√2m(φpunta−muestra − E)
h2 (1.12)
de manera analoga al caso unidimensional, tal y como se presento antes.
Detras de esta sencilla explicacion acerca de la manera como se crean las imagenes
de un microscopio de tunelameniento se esconden distintas complicaciones que hacen
que en realidad sea una tarea bastante complicada. Los dos problemas principales
radican en 1) la corta distancia que debe existir para que haya tunelamiento y 2) el
orden de magnitud de la corriente. Suponiendo una funcion de trabajo alrededor de
5eV (que es Φpunta−muestra − E para un STM operado en vacıo[9]), un cambio en la
distancia de 1A produce una variacion en la corriente de casi un orden de magnitud.
[9]. Por tal motivo es necesario que el sistema cuente con un instrumento de medicion
capaz de registrar corrientes de nanoamperios y un sistema de posicionamiento que
pueda desplazarse de fracciones de angstrom a unos cuantos nanometros de manera
Capıtulo 1. Teorıa de un microscopio de tunelamiento 9
controlada. Ademas, se debe contar con mecanismos que limiten las vibraciones a
mucho menos que un angstrom.
1.3. Modos de operacion
1.3.1. Corriente constante
En este caso el control actua moviendo la punta en el eje vertical para mantener
la corriente tan estable como sea posible y las imagenes se producen registrando los
voltajes aplicados al piezoelectrico para que este se estire o se contraiga.
I(x)
x
Figura 1.3: Modo de operacion de corriente constante. La punta del microscopio semueve hacia arriba y hacia bajo con el proposito de mantener una senal estable sinimportar la topografıa del material.
1.3.2. Altura constante
En este modo de operacion la punta se mantiene a una altura fija sobre la muestra
mientras se va desplazando en el plano horizontal. Como la posicion vertical siempre
es la misma, las imagenes se construyen directamente a partir de las variaciones de
la corriente.
El funcionamiento con altura constante es mas limitado pues solo sirve en mues-
tras en las que las variaciones de altura sean muy pequenas, ya que este es un tipo de
Capıtulo 1. Teorıa de un microscopio de tunelamiento 10
control de lazo abierto y por lo tanto no se haran correcciones que permitan seguir
de manera ideal la senal de corriente y ası proporcionar un rango de medicion mas
amplio.
I(x)
x
Figura 1.4: Modo de operacion a altura constante. En este caso no se mueve la puntaen el eje z y las imagenes son el resultado de las variaciones en la corriente.
1.4. Bloques funcionales de
un microscopio de tunelamiento
1.4.1. Control y monitoreo de corriente
La tarea mas importante es registrar y controlar efectivamente la corriente pro-
ducida por el efecto tunel. Debido a la velocidad de respuesta y a las distancias
tan pequenas que se debe mover la punta para generar cambios significativos en la
corriente, se utilizan piezoelectricos que se elongan o se contraen de acuerdo al po-
tencial electrico que se les aplique. Para escoger adecuadamente el voltaje sobre el
actuador se tiene un sistema de control retroalimentado en el cual se compara una
senal de referencia con la medicion real.
Debido a que las corrientes obtenidas por efecto tunel son pequenısimas (∼ 1nA),
no se hace la comparacion directamente sobre estas sino que primero son amplifica-
das para evitar problemas de ruido. En el proceso de amplificacion usualmente se
Capıtulo 1. Teorıa de un microscopio de tunelamiento 11
convierte la corriente medida en un voltaje. Ademas se coloca el amplificador tan
cerca de la punta como sea posible.
1.4.2. Sistema antivibraciones
Debido a que un cambio en la separacion entre punta y muestra de menos de
1A es suficiente para cambiar el orden de magnitud de la corriente es necesario
mantener el sistema aislado de vibraciones externas, por tal motivo los microscopios
de tunelamiento cuentan con varios mecanismos antivibratorios, entre los que se
cuentan mesas que cancelan las vibraciones del piso y cajas que aislan la punta y
muestra de una exposicion directa a las corrientes de aire.
1.4.3. Control de escaneo
Para poder construir imagenes es necesario barrer la muestra y para tener una
buena resolucion se requiere que los pasos sean muy pequenos, razon por la cual
tambien se utilizan piezoelectricos para generar estos desplazamientos, ya que ofrecen
rangos de movimiento diminutos, ideales para este tipo de aplicacion y con una
resolucion muy superior a la ofrecida por sistemas mecanicos.
Por cada piezoelectrico se tendra una senal de voltaje, que por lo general sera ge-
nerada desde el computador que controla la visualizacion.
1.4.4. Adquisicion de datos
Se debe contar ademas con un equipo de adquisicion de datos, que en el caso mas
simple sera un conversor analogo digital para ls senal que entra (voltaje proporcional
a la corriente tunel), conversores digital analogo para el control de los piezoelectricos
que se mueven en el plano horizontal y algun tipo de dispositivo que comunica los
datos desde y hacia el computador de manera ordenada.
Por lo general se cuenta con una tarjeta de adquisicion que cumple con todas
estas funciones y la cual ya tiene un conjunto de instrucciones predeterminadas que
facilitan su programacion e integracion al equipo.
Capıtulo 1. Teorıa de un microscopio de tunelamiento 12
1.4.5. Sistema de visualizacion
Todos los datos que son registrados por el equipo finalmente son almacenados
y procesados en un computador para obtener una representacion grafica de las co-
rrientes registradas en cada punto del plano. Para construir las imagenes se utiliza
una escala simple de color en la cual se representan los valores fısicos por medio de
las variaciones en la intensidad de un color. Es comun el uso de una escala de grises
en la que que se tienen valores entre 0 y 255.
El tamano en pixeles deberıa ser proporcional al numero de datos adquiridos y
siempre menor o igual a esta cifra.
Vale la pena mencionar que es ideal guardar la matriz de datos ya que en la
visualizacion 2D se pierde informacion y que las imagenes obtenidas de este modo
por lo general van a requerir un fuerte postprocesamiento que corrige efectos de las
dificultades presentadas durante el barrido y que posiblemente entregue tambien una
representacion tridimensional.
Capıtulo 2
El STM de Uniandes
Figura 2.1: Microscopio de tunelamiento electronico de la Universidad de Los Andes.
El microscopio de tunelamiento electronico de la Universidad de Los Andes co-
13
Capıtulo 2. El STM de Uniandes 14
menzo en el ano 2005 como parte de un intercambio academico en el cual el Interface
Physics Group de la Westfalische Wilhelms-Universitat Munster, de Alemania, en-
trego uno de sus equipos de microscopıa electronica. El sistema (que fue disenado
con el proposito de ser un STM de bajo costo que permitiera acercar a los alumnos de
pregrado al mundo de la nanotecnologıa) contaba con unas placas de aproximacion,
un trıpode para la punta (con sus respectivos piezoelectricos), un preamplificador de
transconductancia, una caja de componentes electronicos con ajuste del voltaje de
polarizacion, la corriente de referencia y la constante integral del control analogo,
una tarjeta de adquisicion de puerto ISA y un programa junto con su codigo fuente
para la visualizacion de las imagenes.
Desde el ano 2006, gracias al aporte de varios estudiantes de pregrado, se ha veni-
do trabajando de manera contınua en analizar, verificar y mejorar el funcionamiento
del equipo. Es tal la diferencia entre el microscopio con el que se cuenta hoy en dıa y
el que llego a la universidad hace varios anos, que se puede decir que nuestro sistema
no solo es unico sino que presenta modificaciones que lo hacen mejor a la propuesta
original.
El microscopio de tunelamiento de Uniandes solo tiene el modo de funcionamiento
de corriente constante.
A continuacion se presenta una descripcion de cada uno de sus componentes.
2.1. Caja de control
Es un conjunto de circuitos electronicos que cumple dos funciones: 1) es el control
proporcional integral (PI) de posicion de la punta y 2) actua como buffer para mejorar
la respuesta de los piezoelectricos a los voltajes aplicados.
El control PI compara la senal de voltaje que proviene del preamplificador con la
referencia y de acuerdo al resultado aplica el voltaje adecuado al piezoelectrico que se
mueve en el eje vertical. Ademas del ajuste de la referencia, el usuario tambien tiene
la posibilidad de cambiar los valores de las constantes para la parte proporcional
y para la parte integral por separado. El equipo original tenıa un tipo de control
que era solo integral y ademas el voltaje de polarizacion de la muestra tambien era
controlado en esta caja. Para este trabajo se decidio que de ahora en adelante tal
Capıtulo 2. El STM de Uniandes 15
potencial serıa ajustado desde el programa de control en el computador.
2.2. Preamplificador
Se cuenta con amplificador de transconductancia de ganancia lineal que se coloca
tan cerca de la punta del microscopio como es posible. La ganancia es de 8,54 ×108V/A 1 en condiciones de operacion normal. Esto quiere decir que una corriente
de 1nA se vera representada por un voltaje de 0,854V . La salida del circuito va
conectada a la caja de control.
+
-ITunnel
R7
R8
+
-V-
V+
T1 T2
CASE
OPA128/BB
-12
+12
2
3 7 8
651
4
C1
Vout
P1
18kΩ
2kΩ
100nF
Figura 2.2: Esquematico del preamplificador.
1La ganancia fue calculada a partir de la grafica de respuesta del preamplificador obtenida porBernal [3].
Capıtulo 2. El STM de Uniandes 16
2.3. Sistema de adquisicion de datos
Para el funcionamiento del microscopio de tunelamiento es necesario contar con
una tarjeta de adquisicion de National Instruments R©que pueda operar en un rango
de voltajes entre−10V y 10V , que debe tener tres salidas analogas de voltaje (VpiezoX ,
Vpiezoy y Vmuestra) y una entrada de voltaje (VpiezoZ). Debido a las bajas velocidades
de barrido (4HZ por lınea de imagen es un lımite razonable), no es muy grande la
exigencia sobre la velocidad de muestreo del dispositivo y la gran mayorıa de las
opciones comerciales pueden ser utilizadas con el software de control.
En este proyecto se utilizo una tarjeta NI cDAQ-9178, de conexion USB, con un
modulo NI9263 de 4 salidas analogas (100kS/s, 16-bit, ±10V ) y un NI9205 de 32
entradas (±200mV a ±10V , 16-Bit, 250kS/s). Las salidas y entradas de la tarjeta
se comunican con la caja de control por medio de un conector DB9 al que se han
soldado cables para cada una de las senales. Como los dos modulos funcionan de
manera independiente es importante conectar las tierras de ambos componentes para
evitar ruido dentro del sistema.
En el evento del uso de un dispositivo distinto, podrıa ser necesario implementar
algunos cambios a la conexion, pero una vez estos sean realizados el funcionamiento
sera el mismo dentro de condiciones de operacion normales.
2.4. Placas de aproximacion
Estas sirven para soportar el trıpode y el preamplificador, pero ademas cum-
plen la importante tarea de proporcionar un medio de aproximacion gruesa. Para
esto cuentan con tres tornillos de precision. Los de adelante mueven la punta apro-
ximadamente 200µm por vuelta y el de atras alrededor de 2µm, proporcionando
aproximaciones gruesa y fina respectivamente.
2.5. Trıpode
Esta es una pieza en la cual estan instalados los piezoelectricos y que sirve de
soporte para la punta del microscopio. En el diseno aleman la aguja iba debajo del
Capıtulo 2. El STM de Uniandes 17
Figura 2.3: Tarjeta de adquisicion compactRio de National Instruments. R©Modulosde entradas analogas (izquierda), salidas (derecha) y base. Fotos tomadas del sitioweb del fabricante.
trıpode, pero en el equipo Uniandes se agrego una extension que hace que ahora
quede fija a un lado, facilitando el montaje y conexion de la punta.
2.6. Sistema antivibraciones
2.6.1. Baja frecuencia
Para reducir las vibraciones de baja frecuencia se cuenta con dos etapas. La
primera de ellas esta compuesta por 5 placas de marmol que son soportadas por 4
pelotas de tenis.
El segundo mecanismo consiste en suspender en el aire el mecanismo antivi-
bratorio de alta frecuencia por medio de 3 bandas de caucho. Estudios anteriores
Capıtulo 2. El STM de Uniandes 18
Figura 2.4: Diagrama de bloques del sistema electronico del microscopio.
Figura 2.5: Diagrama de las placas de aproximacion.
determinaron que los mejores resultados se encontraban aumentando la longitud de
los sujetadores. [3]
2.6.2. Alta frecuencia
Esta conformado por 7 discos de acrılico de 34cm de diametro y un espesor de
3mm, que son separados por tres trozos de un material elastico (viton) de 4.7mm de
diametro.
Capıtulo 2. El STM de Uniandes 19
Figura 2.6: Piezoelectricos (partes verdes) y trıpode que los sostiene. Tambien seaprecia la base donde se coloca la aguja.
2.6.3. Recomendaciones para evitar vibraciones
A pesar de que los mecanismos mencionados arriba reducen considerablemen-
te las vibraciones, es necesario tratar de reducir las fuentes de ruido mecanico en
el momento de operacion. En ese sentido, se recomienda trabajar en un ambiente
silencioso y tan alejado de motores y personas como sea posible.
Otro aspecto importante de mencionar es que se preste especial cuidado a las
conexiones y a la disposicion de los cables. Estos deberıan estar fijos pero no tensio-
nados, de tal modo que no propaguen vibraciones hacia el equipo.
2.7. Software para el control del microscopio
A excepcion del control de posicion de la punta, todo el sistema electronico del
STM es controlado desde el computador. Para ello se cuenta con una aplicacion que
permite la configuracion preliminar de la tarjeta de adquisicion, lo cual incluye la
seleccion de los canales y los rangos de voltaje esperados para cada uno de ellos. Una
vez se hayan hecho los ajustes pertinentes, se puede pasar a la ventana de barrido
que ofrece varias opciones.
Capıtulo 2. El STM de Uniandes 20
Figura 2.7: Sistema antibraciones. Las placas de aproximacion y el preamplificadorse colocan sobre los discos que estan suspendidos de las bandas de caucho.
2.7.1. Ajustes posibles dentro del programa
Frecuencia de lınea: Se escoge la velocidad por lınea del equipo. Esta no debe
ser superior a 4Hz para optimos resultados. Ademas es recomendable tener en
cuenta que un barrido se va a tardar un tiempo total en segungos de numero
de lıneas/frecuencia, por ejemplo, si se seleccionara una frecuencia de lınea de
0,1, un cuadro de 512 lıneas se demorarıa aproximadamente 85 minutos.
Voltaje de polarizacion de la muestra: Es el voltaje que se aplica a la
muestra referido a tierra. Tiene un rango de 0V a 10V .
Capıtulo 2. El STM de Uniandes 21
Figura 2.8: Programa de control del microscopio. Permite configurar los voltajes apli-cados a los piezoelectricos, visualizar muestras y hacer experimentos de fabricacion.Ademas soporta diversas tarjetas de adquisicion de National Instruments R©
Tamano de la ventana de escaneo: El tamano maximo de escaneo depende
del movimiento de los piezoelectricos, pero el usuario puede decididir explorar
una zona mas pequena y no necesariamente cuadrada.
Posicion inicial: No necesariamente se tiene que comenzar en la esquina supe-
rior de la ventana de escaneo (predeterminado), sino que es posible seleccionar
otras coordenadas iniciales siempre y cuando las dimensiones de la ventana y
esta opcion no lleven a un punto fısicamente inalcanzable (cuando el tamano
del barrido es mayor que la distancia que queda entre el punto inicial y la
posicion mas lejana que alcanzan los piezoelectricos).
2.7.2. Modo de visualizacion
Direccion de barrido: Se puede escoger que la muestra sea escaneada de
izquierda a derecha, derecha a izquierda o en ambas direcciones.
Resolucion: Es el numero de lıneas y columnas que va a tener la imagen. Con
Capıtulo 2. El STM de Uniandes 22
este dato se define el numero de muestras de voltaje que toma el sistema para
la construccion de la matriz que da lugar a la imagen.
2.7.3. Modo de fabricacion
Patron: Existen 7 patrones predeterminados de trazo continuo, es decir que
los piezoelectricos no se mueven en el mismo sentido que durante visualizacion,
sino que sus voltajes X y Y estan programados para crear tales formas sin
tener que variar la polarizacion de la muestra durante el experimento. Adi-
cionalmente existe la opcion de cargar una imagen, en la cual el color blanco
se interpretara como 0V y cualquier otro color sera el voltaje escogido en la
opcion de polarizacion de la muestra, en este caso el barrido es identico al de
visualizacion, pero en cada paso se aplica el potencial deseado.
Figura 2.9: Algunos de los patrones de fabricacion disponibles dentro del programa.
2.8. Cambios realizados al sistema durante este
trabajo
El objetivo principal de este proyecto era realizar modificaciones nanometricas
sobre superficies de carbono pirolıtico de alto ordenamiento (HOPG, por sus siglas en
Capıtulo 2. El STM de Uniandes 23
ingles) y silicio. Este tipo de pruebas ya se habıan hecho antes, pero los resultados
no fueron concluyentes debido a que no fue posible generar un protocolo experi-
mental reproducible[2]. Una de las dificultades encontradas a juicio del autor, era
la imposibilidad de hacer patrones arbitrarios que luego pudieran ser identificados
mas facilmente que cuadrados o cırculos, que eran las figuras que se esperacan obte-
ner y que son facilmente confundidos con cambios accidentales causados por varios
fenomenos, como por ejemplo el choque de una punta contra la muestra.
Para poder continuar con los experimentos de fabricacion y tambien pensando
en el problema de utilizar una interfaz STM-computador que depende de un bus de
datos descontinuado (el sistema ISA), se decidio cambiar esta parte del microscopio.
Esto implicaba cambiar tambien la aplicacion para el computador.
Es ası que el software y el sistema de adquisicion de datos, que no habıan si-
do replanteados desde el diseno aleman original fueron reemplazados y tienen las
caracterısticas presentadas arriba.
Adicionalmente, se modifico el diseno de la caja de control para que ahora el
voltaje de polarizacion de la muestra sea determinado desde el computador. Este
cambio no ha sido implementado aun, pero para el proyecto se hicieron el esquematico
y el diseno de circuito impreso necesarios para su realizacion.
Capıtulo 2. El STM de Uniandes 24
Figura 2.10: Sistema de control del microscopio de tunelamiento electronico en modode fabricacion. Se ha seleccionado un barrido personalizado en el cual a cada unade las celdas que conforman el area de escaneo se le asigna un voltaje de acuerdo alcolor (0V) para el blanco y bias voltage de lo contrario.
Capıtulo 3
Visualizacion de muestras con el
STM de Uniandes
3.1. Preparacion de puntas
Posiblemente la parte mas difıcil e importante del trabajo con un microscopio
de tunelamiento es la fabricacion de las puntas. Se desea que estas sean tan agudas
como sea posible ya que de ellas depende la resolucion del microscopio. Ademas, para
que las imagenes sean comparables es necesario que sean tomadas con puntas muy
similares, ası que se requiere tener procesos altamente reproducibles, con los cuales
se pueda garantizar que la variacion entre una y otra sea mınima.
La punta debe ser de un material conductor que no interactue quımicamente y de
este modo poder mantenerla limpia por largo tiempo. Preferiblemente que tambien
sea rıgido para asegurar la menor reaccion posible a las vibraciones.
Tungsteno (W) y platino iridio (Pt-Ir) son ampliamente utilizados para este fin.
En la Universidad de los Andes se emplean ambos materiales y se dispone de
tecnicas de fabricacion diferentes para cada uno.
3.1.1. Puntas de W
El tungsteno es un material extremadamente duro, por ello las puntas son fabri-
cadas por medio de un ataque electroquımico. El proceso requiere de una solucion de
25
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 26
electrolito, un anodo y un catodo. La pieza de metal que se quiere pulir se conecta
al positivo de la fuente de corriente contınua. Otro pedazo de metal es conectado al
negativo para que sea el catodo. Cuando se enciende la fuente el metal del anodo
es disuelto y convertido en iones positivos al mismo tiempo que una cantidad igual
de los presentes en la solucion es convertida en metal y es depositada en el catodo.
Dependiendo del voltaje utilizado y de la concentracion del electrolito pueden ocurrir
reacciones mas complejas, pero la remocion de material del anodo y la deposicion en
el catodo son los efectos principales.
El anodo es un pedazo de tungsteno de 1,5cm de longitud por 0,5mm de radio 1
y el anodo es un anillo de cobre de 8mm de diametro, en el centro del cual se coloca
el metal que se ataca. El electrolito es una solucion de KOH 2M. Se cuenta con un
circuito de control que automatiza el proceso y este dura alrededor de 50 minutos.
La preparacin del montaje toma cerca de 10 minutos, lo que quiere decir que todo
el procedimiento tarda aproximadamente una hora.
El montaje y procedimiento experimental han sido descritos con gran detalle y
precision en los trabajos de otros autores [3], [5].
La ventaja principal de esta tecnica es que el control que existe sobre el proceso
permite que haya una alta reproducibilidad de los resultados: las puntas tienen re-
laciones de aspecto (diametro sobre longitud) y formas similares, comportandose de
la misma manera al ser utilizadas en el microscopio y por lo tanto proporcionando
imagenes comparables. La gran dificultad esta en el tiempo que toma preparar una
sola aguja.
Las puntas mas agudas que se han podido desarrollar con esta tecnica en la
universidad han tenido un diametro aproximado de 100nm y para obtener buenas
imagenes es deseable que en su extremo mas filudo tengan un tamano no superior
a los 400nm2. Los resultados habituales son puntas que estan entre los 300nm y
1El ataque electroquımico es una tecnica que tambien puede ser utilizada con otros diametros,e incluso con otros materiales, como por ejemplo el Pt-Ir. Sin embargo, en este proyecto solo seutilizo con la configuracion descrita, debido a que experimentos previos demostraron que no habıauna mejora apreciable en la resolucion del microscopio al usar alambres mas delgados y para el otromaterial se cuenta con una tecnica que arroja excelentes resultados.
2La resolucion de las imagenes depende del tamano de la punta, pero afortunadamene inclusocon agujas relativamente grandes se pueden obtener resultados de altısima calidad. Existen varias
estimaciones de la relacion de dicha dependencia, siendo una de ellas r(A) ≈ 3√
R(A)[4]
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 27
Figura 3.1: Punta de tungsteno hecha con un alambre de diametro de 5mm porla tecnica de ataque electroquımico. Idealmente todas las agujas hechas con estealambre tienen la misma forma y relacion de aspecto, ademas de un tamano similaren el extremo.
600nm.
3.1.2. Puntas de Pt-Ir
Para el microscopio de efecto tunel se ha venido utilizando alambre de 0,25mm
de diametro de una aleacion de platino iridio(80 % Pt, 20 % Ir). Este material es de
color plateado brillante y es bastante maleable. Aunque es posible usar el ataque
electroquımico (utilizando una solucion diferente) para la fabricacion de las puntas,
en este caso se ha optado por el corte manual. Con un cortafrıos muy afilado se hace
un corte procurando mantener un angulo muy pequeno entre las pinzas y el alambre
(que esten casi paralelos) y se hala mientras se produce el corte. La agudeza de las
puntas resultantes es increıble, pues en gran parte de los casos estas arrojan mejores
resultados de visualizacion que las de tungsteno, ya que a pesar de su forma irregular,
es suficiente con que unos pocos atomos en el extremo formen una minipunta para
que haya un buen tunelamiento durante los experimentos.
Ademas de ofrecer una mayor resolucion que las de tungsteno, tienen otros puntos
a su favor como lo son el no oxidarse y ser fabricadas con un tecnica que no tarda mas
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 28
Figura 3.2: Punta de tunsgteno y acercamiento al extremo de la misma, que tieneun tamano de alrededor de 500nm.
de 10 minutos, en contraste con el tiempo requerido para el ataque electroquımico.
Su punto debil esta en la naturaleza artesanal del proceso, que no permite que
se tengan puntas iguales con facilidad. Mayor informacion sobre la tecnica de corte
puede ser encontrada en el trabajo de Bonilla ??.
Material: Tungsteno (W) Platino Iridio (PtIr)Diametro exterior: 0,5 mm 0,25mm
Tecnica: Ataque electroquımico CorteTiempo preparacion: 1 hora 10 minutos
Radio: 100− 300nm 40− 300nm
Cuadro 3.1: Cuadro comparativo de las puntas de tungsteno y platino iridio.
3.1.3. Consejos para la fabricacion y almacenamiento de las
puntas
Practicar las tecnicas de produccion hasta dominarlas completa-
mente. Se deben hacer muchas puntas mientras se esta aprendiendo y estas
deben ser examinadas en un microscopio electronico para poder reconocer acier-
tos y errores del proceso. Cuando las puntas son transportadas es importante
no tocar el extremo filudo o golpearlas, ya que esto danara la punta y el inves-
tigador no podra determinar con certeza si fue una falla del proceso o si algo
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 29
Figura 3.3: Puntas de platino iridio. La naturaleza artesanal del proceso hace quetodas las agujas sean diferentes.
paso despues.
Una vez se domine la tecnica, dejar de examinar las puntas en el
otro microscopio. Simplemente se debe asumir que se tiene una buena aguja,
ya que por mas cuidado que se tenga, el hecho de llevarla a otro microscopio
y volverla a traer por lo general implica una alta probabilidad de destruccion
del extremo agudo en el proceso.
Durante la preparacion de las puntas por ataque electroquımico,
evitar las corrientes de aire. Estas pueden hacer que el extremo termine
doblado o que la forma sea irregular.
Tratar de utilizar las puntas tan pronto son fabricadas. Como se ha
mencionado, el hecho de almacenar las puntas trae consigo una alta posibilidad
de deterioro crıtico, por esto, en lo posible no deberıan prepararse agujas hasta
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 30
cuando vayan a ser utilizadas. Sin embargo, en el evento de ser necesario,
mantenerlas guardadas en un ambiente de baja humedad o sumergirlas en
isopropanol.
Si se requiere limpiar las puntas, sumergirlas en isopropanol. Si las
puntas no estan muy sucias, sumergirlas por un par de minutos en este alcohol
sera suficiente para limpiarlas y no hay necesidad de secado, ya que se evapora
rapidamente.
3.2. Equipo requerido
Ademas del microscopio es necesario contar con varios equipos electronicos para
la polarizacion y monitoreo del funcionamiento. Los elementos requeridos son listados
a continuacion:
Osciloscopio: Es indispensable verificar que haya tunelamiento y que este se da
de manera controlada, por lo cual estas dos senales son observadas con frecuen-
cia. Ademas, es deseable monitorear constantemente los voltaje enviados a los
piezoelectricos desde el computador y el control analogo. Por esto es necesario
contar con un mınimo de 4 canales.
Multımetro: Ideal para verificar el voltaje aplicado a la muestra y revisar con-
tactos.
Fuente de voltaje dual DC: Se requiere para polarizar el microscopio. Debe
entregar −15V y 15V con una corriente de 1A.
3.3. Ajustes previos
Antes de poder utilizar el microscopio se deben conectar todos los bloques que
lo conforman y poner las placas de aproximacion sobre la base antivibraciones. Este
proceso es facil gracias a la buena senalizacion de todos los componentes. Todos los
cables propios del microscopio y las entradas se encuentran marcadas, para que no
haya lugar a equivocaciones. Algunos aspectos que vale la pena mencionar son:
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 31
La fuente de voltaje alimenta la caja de control con −15V y 15V .
De la parte frontal de la caja salen los cables para la polarizacion del pream-
plificador.
Existen conectores BNC hembra para la referencia del control, la polarizacion
de la muestra y el voltaje del preamplificador. Aquellas que son salidas para
monitoreo (conexion al osciloscopio o al multımetro) estan marcadas con la
letra T.
Los piezoelectricos utilizan conectores RCA.
El cable de la polarizacion de la muestra va al primer conector hembra de la
placa inferior.
Figura 3.4: Conexion del voltaje de polarizacion para la muestra.
Para escoger correctamente el cable que debe ir a cada canal de la tarjeta de
adquisicion del conector DB9 que se une a la caja de control tener en cuenta
el diagrama de conexiones presentado en la figura 3.5.
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 32
Figura 3.5: Indicacion de las senales que van a cada pin desde la tarjeta de adquisiciona la caja de control.
3.4. Procedimiento
Se recomienda seguir los pasos que se presentan a continuacion y en estricto orden
con el fin de no dejar que nada pase por alto y que se cometa el menor numero de
errores posible.
1. Abrir el programa de control y seleccionar los parametros adecua-
dos en la configuracion. Pasar a la ventana de barrido. Esto incluye
configurar los canales de la tarjeta de adquisicion que vayan a ser utilizados,
escoger la velocidad de barrido, la direccion y la resolucion de la imagen.
2. Colocar la muestra y polarizarla. Todas las muestras deben tener un
alambre o cable para su conexion al sistema.
3. Seleccionar una punta que sea bastante aguda y que este limpia
(que haya sido almacenada de manera adecuada). Las agujas pierden
su capacidad de entregar buenas imagenes cuando son golpeadas o cuando se
adhieren partıculas extranas a ellas. Ademas hay que tener en cuenta que las
puntas de tungsteno se oxidan.
4. Colocar la punta en el trıpode del microscopio. Para ser utilizadas
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 33
en el STM de Uniandes, todas las puntas son colocadas dentro de una aguja
hipodermica de calibre xxx que ha sido deformada para su facil ajuste a la
base del trıpode. Usualmente se voltea la placa superior y se coloca la punta
a presion en la base, pero tambien es posible ponerla sin tener que levantar y
voltear la placa, pues la deformacion de la aguja hipodermica evitara que siga
derecho.
5. Establecer contacto electrico entre punta y preamplificador. Revisar
que todas las demas conexiones sean correctas. El preamplificador se
coloca en la placa superior y es deseable que su posicion sea elegida para que
el cable que conecta la punta a este no sea sujeto a tensiones y que por lo
tanto se vaya a safar durante el escaneo. Ademas, en la experiencia del autor,
la mayorıa de las dificultades presentadas son consecuencia de una falla en la
revision del estado del sistema antes de empezar.
6. Verificar que sı se estan registrando cambios en la entrada. En
la ausencia de corriente, el voltaje debe ser cero. Si se observan cambios en
la salida del preamplificador al tocar la punta con el dedo, esta funcionando
correctamente.
7. Efectuar la aproximacion gruesa. Los dos tornillos de adelante hacen que
la punta baje mas que el de atras. Por tal motivo se sugiere que se muevan estos
en el sentido contrario a las manecillas del reloj hasta que el usuario del equipo
crea que punta y muestra estan pegadas a simple vista. Si el procedimiento
ha sido llevado a cabo con cuidado y lentamente, todavıa no habra senal a la
salida del preamplificador. En este momento pasar a mover el tornillo de atras
en sentido contrario (como las manecillas del reloj) hasta que se vea que hay
un cambio en la senal monitoreada. Quitar la mano del equipo y observar por
un momento la respuesta. Si al cabo de un tiempo (∼ 1min la corriente sigue
estable, continuar con el procedimiento. Si no, acercarse o alejarse segun sea el
caso, siempre con el tornillo de mayor precision.
Ocasionalmente la punta sera chocada contra la muestra y esto se detectara des-
pues, cuando sea imposible estabilizar la corriente de tunelamiento. Sin embar-
go, un primer indicio es el paso de ausencia de senal a saturacion cuando se
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 34
efectua este paso.
8. Ajustar los parametros del control analogo. Al entrar en tunelamiento
se va a detectar una senal de voltaje a la salida del amplificador de transconduc-
tancia, pero esta en muchas ocasiones va a oscilar o tener un comportamiento
erratico del cual solo por el voltaje medio se sabe que se trata de la senal de
interes. La manera de arreglar el problema es variar los parametros del control
PI. No hay una forma de indicar aca una formula que siempre de resultados fa-
vorables. Se recomienda comenzar con los valores medios de ambas constantes
(P e I), variando hasta obtener el ajuste deseado. Otra posibilidad es cambiar
la referencia del control. Si no es posible estabilizar la corriente, no vale la pe-
na continuar con el proceso pues posiblemente la punta se encuentra en malas
condiciones y por lo tanto se debe reemplazar y volver al paso 3.
9. Iniciar la secuencia de barrido en el computador. En lo posible no
hacer mas cambios, que sea solo dar click en el boton de comenzar, ası se
evitan vibraciones.
10. Revisar que el sistema no se encuentre ni en saturacion ni sin
senal. Los piezoelectricos que controlan el movimiento en el plano XY tambien
afectan ligeramente la altura de la punta, por lo cual es comun que cuando se
comienza el barrido el preamplificador no tenga salida o se sature, ası que a
veces es necesario cambiar la altura con el tornillo de atras. Si bien en este punto
se esperan variaciones en la corriente de tunelamiento estas deben ser pequenas
y por lo tanto cambios muy bruscos en los movimientos del piezoelectrico son
indicios de un experimento fallido.
11. Continuar con el escaneo
12. Detener el barrido
13. Devolver los tornillos a su posicion inicial. Esto evitara que se choque
la punta contra la muestra en un ensayo posterior.
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 35
3.5. Resultados y Analisis
Cuando todo el proceso se lleva a cabo con exito se deben obtener imagenes 2D
suaves en escala de grises. Entre mas clara sea la imagen, menor es la distancia entre
punta y muestra. Es ası que un cuadro blanco indica saturacion del preamplificador y
uno negro la ausencia todal de senal. Por lo general se nota un gradiente de tonalidad
que esta relacionado con el hecho de que la muestra en realidad no queda situada
totalmente perpendicular a la punta y por esto a medida que se da el desplazamiento
en X y Y, tambien se cambia la altura con respecto a la muestra.
Figura 3.6: Imagen de una muestra de carbono pirolıtico de alto ordenamiento(HOPG). Segun el equipo corresponde a un area de 400nm × 400nm. Notese queno hay variaciones significativas dentro del cuadro salvo un tono un poco mas oscurohacia la esquina superior derecha, que indica que la muestra estaba inclinada en esadireccion.
En este punto la manera de determinar la fidelidad de una imagen esta en la
habilidad del sistema de seguir la corriente muy establemente y de tener imagenes
bastante uniformes, en las cuales es difıci percibir detalles.
Para poder comparar las imagenes con las obtenidas por otros equipos es necesa-
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 36
Figura 3.7: Foto de una muestra de calibracion de oro. Las manchas ovaladas y surepeticio a lo largo y ancho de la muestra permiten apreciar que sı hay estructura.
rio primero llevar a cabo un procesamiento de datos que reinterpreta la informacion
obtenida durante la etapa de adquisicion y elimine el ruido y la inclinacion. Sin em-
bargo, en opinion del autor, las imagenes que ya han sido procesadas son difıcilmente
comparables entre sı, pues los resultados de un ajuste manual de parametros puede
llevar a grandes diferencias entre dos resultados que pueden provenir de la misma
imagen.
Con la nueva aplicacion para el computador los resultados de visualizacion son
completamente analogos a los que se obtenıan anteriormente.
3.6. Recomendaciones
3.6.1. Calibracion
Ya que la resolucion depende bastante del tamano de la punta, en principio no es
posible comparar dos imagenes tomadas con agujas distintas y tampoco es posible
tener una escala fija, por lo tanto es aconsejable comenzar cada sesion de experimen-
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 37
Figura 3.8: En esta imagen es posible apreciar el encuentro de los planos diferentes deatomos que se intersectan dando lugar a la lınea oscura en la parte inferior izquierda.
tos escaneando una muestra de calibracion y comparando las imagenes obtenidas de
esta con los datos reales para estimar la resolucion lateral del microscopio.
Hay que proceder con precaucion porque si la punta se choca contra la muestra
todo el trabajo previo de caracterizacion sera en vano.
3.6.2. Repeticion de experimentos
Otra manera de verificar que sı se estan teniendo mediciones reales es repetir
varias veces (y preferiblemente en direcciones opuestas) los barridos. Si existen ca-
racterısticas que resaltan y son observadas en imagenes sucesivas (entendiendo por
esto que se hace referencia a manchas que se corren poco y cambian ligeramente de
forma de un cuadro al siguiente) se puede descartar que se trate de ruido, debido a
que este tendrıa naturaleza aleatoria.
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 38
3.6.3. Procesamiento de imagenes
Las imagenes obtenidas necesitan modificaciones que incluyen correccion de la
inclinacion del plano, reduccion del ruido y reajuste a una escala lineal antes de
poder ser interpretadas, por esta razon no es bueno confiar o descartar los cuadros
obtenidos hasta que se hayan hecho tales ajustes.
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 39
Figura 3.9: Imagen de muestra de oro de calibracion tomada con el microscopio detunelamiento de Uniandes. Arriba se presenta la imagen tal cual es entregada enla pantalla de la aplicacion de control y abajo luego de ser procesada con ImageJR©para generar una representacion tridimensional.
Capıtulo 3. Visualizacion de muestras con el STM de Uniandes 40
Capıtulo 4
Litografıa con STM
4.1. Tecnica sugerida
La tecnica empleada en los experimentos de fabricacion se encuentra con frecuen-
cia en la literatura [1], [? ], [6] y consiste en aplicar un voltaje de polarizacion a la
muestra mucho mas grande que el utilizado para procedimientos de visualizacion
(por lo general 10 veces o ms) por un tiempo determinado. Variando los tiempos y
amplitudes de los pulsos de voltaje debe ser posible obtener una configuracion que
permita hacer modificaciones a nanoescala de manera controlada y reproducible. Al-
gunos autores reportan la formacion de huecos individuales y otros la creacion de
patrones.
4.2. Procedimiento
1. Estudios previos de punta y muestra con otros equipos. Esto incluye
pero la visualizacion de punta y muestra en un microscopio electronico.
2. Visualizar la muestra. El proceso siempre debe comenzar observando la
muestra con el mismo equipo, ası se verifica que la punta este en optimas con-
diciones (para un buen proceso de escritura se requiere que esta sea tan aguda
como para lectura) y tambien se ve el estado anterior del material estudiado
con el proposito de buscan cambios una vez se haya realizado el experimento.
41
Capıtulo 4. Litografıa con STM 42
3. Escoger los parametros del barrido de escritura. Cuando se pare el
escaneo de visualizacion se deben escoger la velocidad del nuevo proceso, el
patron que se desea grabar y el voltaje que se quiere aplicar para el proceso de
fabricacion.
4. Ejecutar el escaneo. En un principio el microscopio estara en configuracion
para lectura y por lo tanto idealmente seguira en tunelamiento una vez se
seleccione la opcion de detenerse al final del paso 2. En el evento de saturacion
o ausencia de senal, ajustar la corriente moviendo los tornillos de aproximacion
y/o los parametros del control analogo hasta volver a llegar al punto deseado.
Idealmente los voltajes observados en el osciloscopio deberıan ser muy cercanos
a los de visualizacion, salvo en los puntos donde se desean hacer modificaciones
sobre la superficie del material, es decir que de vez en cuando se debe presentar
saturacion, seguida de condiciones normales de tunelamiento.
5. Observar la muestra con el microscopio nuevamente. La visualizacion
de la muestra debe cambiar de manera significativa en alguna parte de la
superficie si se produjo un cambio.
6. Realizar analisis con otros equipos. Si se desea visualizar el HOPG en
un microscopio electronico es necesario que las imagenes sean tomadas no de
frente a la muestra sino de lado, ya que de otro modo no sera posible detectar
cambios porque el sustrato esta conformado de muchas capas sucesivas del
mismo material.
4.3. Resultados obtenidos
Siguiendo el procedimiento indicado en la seccion anterior se hicieron varios expe-
rimentos en los que se variaron la velocidad de barrido y el voltaje aplicado, utilizando
como sustrato silicio y HOPG. Tambien se usaron los dos tipos de punta disponibles
(W de 0,5mm y Pt-Ir de 0,25mm), pero no fue posible observar diferencias entre los
resultados de usar unas agujas o las otras.
Capıtulo 4. Litografıa con STM 43
Figura 4.1: HOPG antes de prueba
4.4. Analisis y conclusiones
Los resultados de las pruebas demuestran que sı se estan presentando cambios en
la superficie del material una vez se ejecuta el experimento.
Al principio se trato de hacer patrones complejos (como el de sierra) pero estos
no se pudieron apreciar posteriormente. Por tal razon se opto por curvas mas simples
y que fueran de extremo a extremo de la ventana de escaneo. Como resultado de este
cambio en la configuracion se comenzaron a apreciar areas ensombrecidas que antes
no existıan.
Despues de realizar el mismo experimento en repetidas ocasiones y siempre ob-
tener resultados similares se concluyo que sı es posible realizar modificaciones con
un pulso de voltaje. La razn por la que no se haba podido determinar con claridad
es que se esperaban modificaciones por lo menos 10 veces menores al tamano de la
ventana y en realidad en la mayorıa de oportunidades fueron de ordenes de magnitud
comparables al tamano de esta.
El voltaje umbral para que se de el proceso de modificacion es ms alto para el
HOPG que para el silicio, es por esta razon que los cambios en la superficie del silicio
son mas bruscos.
Las modificaciones hechas son de un color mas oscuro que el resto de la muestra,
es decir que hay remocion de material.
Capıtulo 4. Litografıa con STM 44
Figura 4.2: HOPG despues de experimento de fabricacion con Vbias = 4V y v =120nm/s. Patron T.
Figura 4.3: HOPG despues de experimento de fabricacion con Vbias = 6V y v =120nm/s. Patron A.
Capıtulo 4. Litografıa con STM 45
Figura 4.4: HOPG despues de experimento de fabricacion con Vbias = 8V y v =120nm/s. Patron A.
Figura 4.5: Patron A girado. Utilizado en pruebas con silicio.
Capıtulo 4. Litografıa con STM 46
Figura 4.6: Imagenes Si antes del experimento de modificacion.
Figura 4.7: Silicio despues de experimento con Vbias = 5V y v = 200nm/s. PatronA.
Capıtulo 4. Litografıa con STM 47
Figura 4.8: Silicio despues de experimento con Vbias = 4V y v = 200nm/s. Patron S.
Figura 4.9: Silicio despues de experimento con Vbias = 5V y v = 400nm/s. Patron S
Capıtulo 4. Litografıa con STM 48
Material: Silicio HOPGVoltaje: 4V 5V
Velocidad Maxima 400nm/s 400nm/sTemperatura: 19− 24◦C 19− 24◦C
Cuadro 4.1: Parametros que aseguran modificaciones sobre la superficie escaneada.
Capıtulo 5
Trabajo futuro
Desde el punto de vista del autor es necesario seguir trabajando en caracterizar
el proceso de fabricacion y determinar con precision condiciones que permitan hacer
modificaciones de mayor resolucion que las presentadas en este proyecto. Posible-
mente la solucion se encuentre en el ajuste temporal de los pulsos mas que en los
niveles de voltaje utilizados, ya que por encima de 3V se tendrıan valores por encima
de los reportados en la literatura y por lo tanto sı deberıan producirse cambios en
la superficie del material. En ese orden de ideas, convendrıa hacer pruebas en las
que se apliquen pulsos de voltajes separados espacialmente con el fin de observar la
maxima resolucin que se tiene y a partir de ah saber si el problema es una punta
poco aguda.
Ademas de perfeccionar la tecnica de fabricacion, es necesario generar un proto-
colo para el procedimiento en el cual se tengan los valores de voltaje aplicados, el
tiempo de exposicin y los resultados que se pueden esperar.
Adicionalmente, valdrıa la pena experimentar con otros materiales, por ejemplo
el arsenuro de galio (GaAs).
Existen varias tareas por realizar que podrıan mejorar el funcionamiento y utili-
dad del microscopio de tunelamiento electronico de la Universidad de los Andes:
Control de los piezoelectricos: Serıa conveniente explorar la posibilidad
de hacer una caracterizacion del movimiento de los piezoelectricos cuando son
sometidos a los voltajes propios del barrido con el fin de establecer un mejor
control o buscar la manera de medir en tiempo real el desplazamiento de los
49
Capıtulo 5. Trabajo futuro 50
mismos para hacer retroalimentacion y ası contrarrestar la distorsion generada
en las imagenes por la histeresis de estos dispositivos.
Procesamiento de imagenes dentro del programa: Las imagenes que son
obtenidas con el microscopio deben ser procesadas para eliminar los efectos del
ruido, la inclinacion y la respuesta lineal del preamplificador. Con el proposito
de unificar el tratamiento que se le da a todas las imagenes convendrıa que
todo se hiciese dentro de la misma aplicacion y que ademas exista un registro
de esto.
Cambio del preamplificador: Idealmente el amplificador de corriente de-
berıa ser de tipo logarıtmico ya que la senal de entrada es de naturaleza ex-
ponencial y de este modo se podrıa trabajar en un rango mas amplio y las
imagenes serıan mas faciles de interpretar sin necesidad de procesamiento pos-
terior.
Apendice A
Codigo fuente programa
El nuevo sistema de control de barrido y visualizacion del microscopio de tune-
lamiento fue escrito en C sharp utilizando Visual Studio 2008 y el API de National
Instruments, Measurement Studio.
El programa esta dividido en cuatro clases: ventana principal (Main.cs), venta-
na de escaneo (Scan.cs), ventana de visualizacion (ViewImages.cs) y configuracion
(Settings.cs). Se incluye aca el codigo funcional del programa, pero no la parte re-
lacionada con la interfaz grafica, pero en los archivos del proyecto queda una copia
completa con la cual es posible recompilar toda la aplicacion.
A.1. Main.cs
us ing Nat iona l Instruments . Ana lys i s ;us ing Nat iona l Instruments . Ana lys i s . Conversion ;us ing Nat iona l Instruments . Ana lys i s . Dsp ;us ing Nat iona l Instruments . Ana lys i s . Dsp . F i l t e r s ;us ing Nat iona l Instruments . Ana lys i s . Math ;us ing Nat iona l Instruments . Ana lys i s . Monitoring ;us ing Nat iona l Instruments . Ana lys i s . S igna lGenerat ion ;us ing Nat iona l Instruments . Ana lys i s . SpectralMeasurements ;us ing Nat iona l Instruments ;us ing Nat iona l Instruments . NetworkVariable ;us ing Nat iona l Instruments . NetworkVariable . WindowsForms ;us ing Nat iona l Instruments . UI ;
51
Apendice A. Codigo fuente programa 52
us ing Nat iona l Instruments . UI . WindowsForms ;us ing System ;us ing System . C o l l e c t i o n s . Generic ;us ing System . ComponentModel ;us ing System . Data ;us ing System . Diagnos t i c s ;us ing System . Drawing ;us ing System . IO ;us ing System . Text ;us ing System . Windows . Forms ;
namespace mic2005{
pub l i c p a r t i a l c l a s s Main : Form{
pub l i c Main ( ){
In i t i a l i z eComponent ( ) ;i f ( ! check I fCon f i gured ( ) )
scanButton . Enabled = f a l s e ;}
p r i v a t e void v i ewFi l e sBut ton Cl i ck ( ob j e c t sender , EventArgs e ){
// t h i s . Hide ( ) ;ViewImages viewImages = new ViewImages ( ) ;viewImages . Owner = t h i s ;viewImages . Show ( ) ;
}
p r i v a t e void scanButton Cl ick ( ob j e c t sender , EventArgs e ){
// t h i s . Hide ( ) ;Scan scan = new Scan ( ) ;scan . Owner = t h i s ;scan . Show ( ) ;
}
Apendice A. Codigo fuente programa 53
p r i v a t e void s e t t i n g s B u t t o n C l i c k ( ob j e c t sender , EventArgs e ){
// t h i s . Hide ( ) ;S e t t i n g s s e t t i n g s = new S e t t i n g s ( t h i s ) ;s e t t i n g s . Owner = t h i s ;s e t t i n g s . Show ( ) ;
}
p r i v a t e void he lpButton Cl ick ( ob j e c t sender , EventArgs e ){
// t h i s . Hide ( ) ;Process pdfReader = new Process ( ) ;pdfReader . S t a r t I n f o . FileName = ”AcroRd32 . exe ” ;// pdfReader . S t a r t I n f o . Arguments = ”C:\\Users \\Mario\\
Desktop \\ progressRepor t . pd f ” ;pdfReader . S t a r t I n f o . Arguments = ” progressReport . pdf ” ;// pdfReader . S t a r t ( ) ;
}
p r i v a t e bool check I fCon f i gured ( ) {t ry {
Fi leStream f i l e = new Fi leStream (” s e t t i n g s . txt ” ,FileMode . Open , F i l eAcce s s . Read ) ;
StreamReader s r = new StreamReader ( f i l e ) ;s t r i n g s = s r . ReadToEnd ( ) ;s r . Close ( ) ;f i l e . Close ( ) ;i f ( s . Contains (” S e t t i n g s : ok ”) )
re turn true ;e l s e{
re turn f a l s e ;}
}catch ( Exception ex ) {
re turn f a l s e ;}
}pub l i c void changeScanButtonStatus ( bool newValue )
Apendice A. Codigo fuente programa 54
{scanButton . Enabled = newValue ;
}
p r i v a t e void Main Load ( ob j e c t sender , EventArgs e ){
}p r i v a t e void Main FormClosing ( ob j e c t sender ,
FormClosingEventArgs e ){
i f ( System . Windows . Forms . Dia logResu l t . Yes != MessageBox .Show( th i s ,”Do you r e a l l y want to e x i t the a p p l i c a t i o n ?” , ”Confirm
e x i t ” , System . Windows . Forms . MessageBoxButtons . YesNo) )
{Console . WriteLine (” s u c c e s s may”) ;e . Cancel = true ;
}e l s e{}
}
}}
A.2. Scan.cs
us ing System ;us ing System . C o l l e c t i o n s . Generic ;us ing System . ComponentModel ;us ing System . Data ;us ing System . Drawing ;us ing System . Drawing . Imaging ;us ing System . IO ;
Apendice A. Codigo fuente programa 55
us ing System . Text ;us ing System . Windows . Forms ;us ing Nat iona l Instruments .DAQmx;us ing Nat iona l Instruments . Ana lys i s . S igna lGenerat ion ;
namespace mic2005{
pub l i c p a r t i a l c l a s s Scan : Form{
p r i v a t e bool s t a r t e d ;p r i v a t e Task inputScan ;p r i v a t e Task almightyScan ;p r i v a t e St r ing inchanne l ;p r i v a t e St r ing inputMin ;p r i v a t e St r ing inputMax ;p r i v a t e St r ing xChannel ;p r i v a t e St r ing yChannel ;p r i v a t e St r ing outputMin ;p r i v a t e St r ing outputMax ;p r i v a t e St r ing biasVoltageText ;p r i v a t e System . Windows . Forms . Timer aTimer ;p r i v a t e System . Windows . Forms . Timer bTimer ;
p r i v a t e Bitmap bitmapMay ;p r i v a t e BitmapData bitmapMayData ;p r i v a t e i n t numberOfLines ;p r i v a t e i n t numberOfColumns ;p r i v a t e double lowerXBound ;p r i v a t e double upperXBound ;p r i v a t e double lowerYBound ;p r i v a t e double upperYBound ;p r i v a t e double ga in ;p r i v a t e long maxNumberOfSamples ;p r i v a t e long numberOfSamples ;p r i v a t e i n t numberOfTicks ;p r i v a t e double [ ] readData ;
pub l i c Scan ( ){
Apendice A. Codigo fuente programa 56
In i t i a l i z eComponent ( ) ;i f ( radioButton128 . Checked ){
numberOfLines = 128 ;numberOfColumns = 128 ;
}e l s e i f ( radioButton256 . Checked ){
numberOfLines = 256 ;numberOfColumns = 256 ;
}e l s e i f ( radioButton512 . Checked ){
numberOfLines = 512 ;numberOfColumns = 512 ;
}e l s e{
numberOfLines = ( i n t ) rowsNumericEdit . Value ;numberOfColumns = ( i n t ) columnsNumericEdit . Value ;
}
i n i t i a l i z e P i c t u r e ( t rue ) ;s t a r t e d = f a l s e ;
}
pub l i c s t a t i c void Se tGraysca l ePa l e t t e ( Bitmap image ){
// check p i x e l formati f ( image . PixelFormat != PixelFormat . Format8bppIndexed )
throw new ArgumentException ( ) ;
// ge t p a l e t t eColo rPa l e t t e cp = image . Pa l e t t e ;// i n i t p a l e t t ef o r ( i n t i = 0 ; i < 256 ; i++){
cp . Ent r i e s [ i ] = Color . FromArgb( i , i , i ) ;}
Apendice A. Codigo fuente programa 57
// s e t p a l e t t e backimage . Pa l e t t e = cp ;
}p r i v a t e void s ta r tStopButton Cl i ck ( ob j e c t sender , EventArgs e ){
i f ( s t a r t e d == f a l s e ){
StartScan ( ) ;s t a r t e d = true ;
}e l s e{
StopScan ( ) ;s t a r t e d = f a l s e ;
}}p r i v a t e void StartScan ( ) {
//updateImage () ;Fi leStream f i l e = new Fi leStream (” s e t t i n g s . txt ” , FileMode .
Open) ;// crea t e reader & open f i l eStreamReader t r = new StreamReader ( f i l e ) ;//Here I ’m load ing the con f i g u r a t i on va l u e s f o r the daqmx
from the s e t t i n g s f i l e c rea t ed in s e t t i n g st r . ReadLine ( ) ;t r . ReadLine ( ) ;inchanne l = t r . ReadLine ( ) ;t r . ReadLine ( ) ;inputMin = t r . ReadLine ( ) ;t r . ReadLine ( ) ;inputMax = t r . ReadLine ( ) ;t r . ReadLine ( ) ;xChannel = t r . ReadLine ( ) ;t r . ReadLine ( ) ;t r . ReadLine ( ) ;t r . ReadLine ( ) ;t r . ReadLine ( ) ;t r . ReadLine ( ) ;yChannel = t r . ReadLine ( ) ;
Apendice A. Codigo fuente programa 58
t r . ReadLine ( ) ;b iasVoltageText = t r . ReadLine ( ) ;t r . ReadLine ( ) ;outputMin = t r . ReadLine ( ) ;t r . ReadLine ( ) ;outputMax = t r . ReadLine ( ) ;t r . Close ( ) ;f i l e . Close ( ) ;Console . WriteLine (” x channel i s : ” + xChannel ) ;Console . WriteLine (” the b ia s vo l tage channel i s : ” +
biasVoltageText ) ;Console . WriteLine (” y channel i s : ” + yChannel ) ;i n t bound = numberOfLines ∗ numberOfColumns ;readData = new double [ bound ] ;f o r ( i n t i =0; i<bound ; i++){
readData [ i ]=0;}// s e t the gain accord ing to what I observed in the o ther
a p p l i c a t i o ngain = ( double ) 20 / 400 ;Console . WriteLine (” gain i s : ” + gain ) ;// s e t lower bounds based on the o f f s e tlowerXBound = ( gain ∗ xOffsetNumericEdit . Value ) − 10 ;Console . WriteLine (” lower x bound i s : ” + lowerXBound ) ;lowerYBound = ( gain ∗ yOffsetNumericEdit . Value ) − 10 ;Console . WriteLine (” lower y bound i s : ” + lowerYBound ) ;// s e t upper bounds based on the scan s i z eConsole . WriteLine (” width i s : ” + widthNumericEdit . Value ) ;upperXBound = ( gain ∗ widthNumericEdit . Value ) − 10 ;Console . WriteLine (” upper x bound i s : ” + upperXBound ) ;upperYBound = ( gain ∗ heightNumericEdit . Value ) − 10 ;Console . WriteLine (” upper y bound i s : ” + upperYBound ) ;// I do the f o l l ow i n g so t ha t my s i g n a l s f i t p e r f e c t l y the
number o f samples .maxNumberOfSamples = 262144;Console . WriteLine (” the maximum number o f samples i s : ” +
maxNumberOfSamples ) ;long s t ep s = maxNumberOfSamples / numberOfLines ;
Apendice A. Codigo fuente programa 59
Console . WriteLine (” the maximum number o f s t ep s i s : ” +s t ep s ) ;
numberOfSamples = s t ep s ∗ numberOfLines ;Console . WriteLine (” the number o f samples i s : ” +
numberOfSamples ) ;readData = new double [ numberOfLines ∗ numberOfLines ] ;// crea t e the t a s k salmightyScan = new Task (” outputTask ”) ;inputScan = new Task (” scan ”) ;// con f i gu r e the t a s k s accord ing to the p r e v i o u s l y s e l e c t e d
s e t t i n g s// input channel ( z )inputScan . AIChannels . CreateVoltageChannel ( inchannel , ”Z” ,
AITerminalConf igurat ion . Rse ,Convert . ToDouble ( inputMin ) , Convert . ToDouble ( inputMax ) ,
AIVoltageUnits . Volts ) ;// almightyScan . AIChannels . CreateVoltageChannel ( inchannel , ”
Z” , AITerminalConfigurat ion . Rse ,// Convert . ToDouble ( inputMin ) , Convert . ToDouble ( inputMax
) , AIVoltageUnits . Vo l t s ) ;almightyScan . AOChannels . CreateVoltageChannel ( xChannel , ”X” ,
Convert . ToDouble ( outputMin ) ,Convert . ToDouble ( outputMax ) , AOVoltageUnits . Volts ) ;
almightyScan . AOChannels . CreateVoltageChannel ( yChannel , ”Y” ,Convert . ToDouble ( outputMin ) ,Convert . ToDouble ( outputMax ) , AOVoltageUnits . Volts ) ;
i f ( fabr i cat ionRadioButton . Checked ){
almightyScan . AOChannels . CreateVoltageChannel (biasVoltageText , ”BV” , Convert . ToDouble ( outputMin ) ,Convert . ToDouble ( outputMax ) , AOVoltageUnits . Volts ) ;
}// s e t up the t iming// inputScan . Timing . ConfigureSampleClock (” s i g n a l source ” ,
rateSamplesPerSecond , act iveEdge , sampleMode ,samplesPerChannel ) ;
inputScan . Timing . ConfigureSampleClock (”” , numberOfColumns∗f requencyNumericEdit . Value , SampleClockActiveEdge . Ris ing,
Apendice A. Codigo fuente programa 60
SampleQuantityMode . ContinuousSamples , numberOfLines∗numberOfColumns ) ;
almightyScan . Timing . ConfigureSampleClock (”” , s t ep s ∗f requencyNumericEdit . Value , SampleClockActiveEdge . Ris ing,SampleQuantityMode . FiniteSamples , ( i n t ) numberOfSamples
) ;// t r i g g e r c on f i g u r a t i on . I have dec ided not to use
t r i g g e r s − at l e a s t f o r now .inputScan . Tr igge r s . S ta r tTr i gge r . ConfigureNone ( ) ;almightyScan . Tr igge r s . S ta r tTr i gge r . ConfigureNone ( ) ;// Write data to the output channelAnalogMultiChannelWriter channelWriter = new
AnalogMultiChannelWriter ( almightyScan . Stream ) ;// fgen = new Signa lGenerator ( sampleRateNumericEdit . Value ,
Convert . ToInt32 ( numberOfSamplesNumericEdit . Value ) ,// new S ineS i gna l ( frequencyNumericEdit . Value ,
ampli tudeNumericEdit . Value ) ) ;AnalogSingleChannelReader zReader = new
AnalogSingleChannelReader ( inputScan . Stream ) ;// Ver i fy the input t a s kinputScan . Control ( TaskAction . Ver i fy ) ;// I don ’ t even know what t h i s l i n e does , I ’m j u s t
de spera t e . Ac tua l l y i t says we are w i l l i n g to wai t f o ras long as i t t a k e s . . .
// inputScan . Stream . Timeout = −1;// Ver i fy the output t a s kalmightyScan . Control ( TaskAction . Ver i fy ) ;i f ( v i sua l i za t i onRad ioButton . Checked ){
channelWriter . WriteMultiSample ( f a l s e ,mayRegularScan ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}e l s e{
// sawtooth pa t t e rni f ( sawtoothRadioButton . Checked )
Apendice A. Codigo fuente programa 61
{channelWriter . WriteMultiSample ( f a l s e ,
pa t t e rnFabr i ca t i on ( lowerXBound , upperXBound ,lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}// t r i a n g l e pa t t e rn
e l s e i f ( t r iang leRadioButton . Checked ){
}// custom rou t inee l s e i f ( customFabRadioButton . Checked ){
channelWriter . WriteMultiSample ( f a l s e ,mayWrites ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines , numberOfColumns ) ) ;
}e l s e i f ( oRadioButton . Checked ){
channelWriter . WriteMultiSample ( f a l s e ,oPatte rnFabr i cat ion ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}e l s e i f ( mRadioButton . Checked ){
// channelWriter . WriteMultiSample ( f a l s e ,// oPat t e rnFabr i ca t ion ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}e l s e i f ( uRadioButton . Checked ){
channelWriter . WriteMultiSample ( f a l s e ,uPatternFabr icat ion ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,
Apendice A. Codigo fuente programa 62
numberOfLines ) ) ;}e l s e i f ( aRadioButton . Checked ){
channelWriter . WriteMultiSample ( f a l s e ,aPatte rnFabr i cat ion ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}e l s e{
channelWriter . WriteMultiSample ( f a l s e ,cPat te rnFabr i ca t i on ( lowerXBound , upperXBound ,
lowerYBound , upperYBound , numberOfSamples ,numberOfLines ) ) ;
}
}// zReader .
almightyScan . Sta r t ( ) ;inputScan . Sta r t ( ) ;// readData = zReader . ReadMultiSample ( bound ) ;// t imer f o r gu i updat ing purposesnumberOfTicks = 0 ;aTimer . S ta r t ( ) ;s tartStopButton . Text = ”Stop Scan ” ;
}p r i v a t e void StopScan ( ) {
// r e l e a s e t a s k re source s a f t e r i t has been executed// inputScan . Stop () ;inputScan . Dispose ( ) ;almightyScan . Stop ( ) ;almightyScan . Dispose ( ) ;aTimer . Stop ( ) ;// change but ton t e x t to the i n i t i a l s t a t estartStopButton . Text = ” Star t Scan ” ;
}
Apendice A. Codigo fuente programa 63
p r i v a t e void Scan FormClosing ( ob j e c t sender ,FormClosingEventArgs e )
{i f ( System . Windows . Forms . Dia logResu l t . Yes != MessageBox .
Show( th i s ,”Do you want to qu i t the scan mode?” , ”Confirm e x i t ” ,
System . Windows . Forms . MessageBoxButtons . YesNo) ){
Console . WriteLine (” s u c c e s s may”) ;e . Cancel = true ;
}e l s e{
//StopScan () ;// t h i s . Close ( ) ; vgc// t h i s . Dispose ( ) ;
}}pub l i c void i n i t i a l i z e P i c t u r e ( bool b lack ) {
bitmapMay = new Bitmap (512 , 512 , PixelFormat .Format8bppIndexed ) ;
Se tGraysca l ePa l e t t e ( bitmapMay ) ;bitmapMayData = bitmapMay . LockBits (new Rectangle (0 , 0 ,
bitmapMay . Width , bitmapMay . Height ) , System . Drawing .Imaging . ImageLockMode . ReadWrite ,
System . Drawing . Imaging . PixelFormat .Format8bppIndexed ) ;
unsa fe {i n t p i x e l S i z e = 1 ;f o r ( i n t y = 0 ; y < bitmapMayData . Height ; y++){
byte∗ row = ( byte ∗) bitmapMayData . Scan0 + ( y ∗bitmapMayData . S t r i d e ) ;
f o r ( i n t x = 0 ; x < bitmapMayData . Width ; x++){
i f ( b lack ){
row [ x ∗ p i x e l S i z e ] = Convert . ToByte (160) ;}e l s e
Apendice A. Codigo fuente programa 64
{//row [ x ∗ p i x e l S i z e ] = Convert . ToByte (
RandomClass . Next (0 , 255) ) ;row [ x ∗ p i x e l S i z e ] = Convert . ToByte (255) ;
}}
}}bitmapMay . UnlockBits ( bitmapMayData ) ;pictureMay . Image = bitmapMay ;
}
pub l i c void updateImage ( ) {unsa fe {
// v i s u a l i z a t i o nBitmap bitmapMay = new Bitmap (512 , 512 , PixelFormat .
Format8bppIndexed ) ;Se tGraysca l ePa l e t t e ( bitmapMay ) ;BitmapData bitmapMayData = bitmapMay . LockBits (new
Rectangle (0 , 0 , bitmapMay . Width , bitmapMay . Height ) ,System . Drawing . Imaging . ImageLockMode . ReadWrite ,System . Drawing . Imaging . PixelFormat .
Format8bppIndexed ) ;i n t p i x e l S i z e = 1 ;Random RandomClass = new Random( ) ;f o r ( i n t y = 0 ; y < bitmapMayData . Height ; y++){
byte∗ row = ( byte ∗) bitmapMayData . Scan0 + ( y ∗bitmapMayData . S t r i d e ) ;
f o r ( i n t x = 0 ; x < bitmapMayData . Width ; x++){row [ x ∗ p i x e l S i z e ] = Convert . ToByte (100) ;//row [ x ∗ p i x e l S i z e ] = Convert . ToByte (
RandomClass . Next (0 , 255) ) ;}
}bitmapMay . UnlockBits ( bitmapMayData ) ;pictureMay . Image = bitmapMay ;
}}
Apendice A. Codigo fuente programa 65
pub l i c void updateGraph ( Object source , EventArgs e ) {pictureMay . Image = bitmapMay ;
}pub l i c void updateTimeLeft ( Object source , EventArgs e ) {
i n t aux = ( i n t ) ( ( numberOfLines / frequencyNumericEdit . Value) − numberOfTicks ) /60 ;
i f ( aux > 0) {timeLeftTextBox . Text = ””
+ ( i n t ) ( ( numberOfLines / frequencyNumericEdit . Value) − numberOfTicks ) / 60 + ” minutes , ”
+ ( i n t ) ( ( numberOfLines / frequencyNumericEdit . Value) − numberOfTicks ) % 60 + ” seconds ” ;
}e l s e {
timeLeftTextBox . Text = ””+ ( i n t ) ( ( numberOfLines / frequencyNumericEdit . Value
) − numberOfTicks ) % 60 + ” seconds ” ;}i f ( s tartStopButton . Text . Equals (” Star t Scan ”) ) {
numberOfTicks = 0 ;}e l s e {
numberOfTicks = numberOfTicks + 1 ;}
}
pub l i c void updatePicture ( Object source , EventArgs eventArgs ) {
}/// <summary>////// </summary>/// <param name=”lowerBound”></param>
/// <param name=”upperBound”></param>
/// <param name=”numberOfSamples”></param>
/// <re turns ></returns>
Apendice A. Codigo fuente programa 66
pub l i c double [ ] maySawtooth ( double lowerBound , doubleupperBound , long numberOfSamples ) {double [ ] generatedSawtooth = new double [ numberOfSamples ] ;double d e l t a = ( upperBound − lowerBound ) / numberOfSamples ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
generatedSawtooth [ i ] = lowerBound + ( i ∗ d e l t a ) ;}re turn generatedSawtooth ;
}
pub l i c double [ ] mayTriangle ( double lowerBound , doubleupperBound , long numberOfSamples ) {double [ ] g enera tedTr iang l e = new double [ numberOfSamples ] ;double d e l t a = ( upperBound − lowerBound ) / ( numberOfSamples
/2) ;i n t r o o f =0;i f ( numberOfSamples % 2 == 0) {
// roo f = ( numberOfSamples / 2) − 1 ;}e l s e {
// roo f = ( numberOfSamples / 2) ;}f o r ( i n t i = 0 ; i < r o o f ; i++){
generatedTr iang l e [ i ] = lowerBound + ( i ∗ d e l t a ) ;}f o r ( i n t i = r o o f ; i > 0 ; i−−){
// genera tedTr iang l e [ i ] =}re turn generatedTr iang l e ;
}
/// <summary>/// Creates the s i g n a l s f o r the x and y ax i s and re turns them
in a doub le [ ] [ ] , i . e . ready to use wi th/// the measurement s t ud i o api/// </summary>/// <param name=”lowerXBound”></param>
/// <param name=”upperXBound”></param>
/// <param name=”lowerYBound”></param>
Apendice A. Codigo fuente programa 67
/// <param name=”upperYBound”></param>
/// <param name=”numberOfSamples”></param>
/// <param name=”numberOfLines”></param>
/// <re turns ></returns>
pub l i c double [ , ] mayRegularScan ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
) {double [ , ] generatedWaves = new double [ 2 , numberOfSamples ] ;long s t ep s = numberOfSamples / numberOfLines ;Console . WriteLine (”may the number o f s t ep s i s : ” + s t ep s ) ;double de ltaLadder = ( upperYBound − lowerYBound ) /
numberOfLines ;Console . WriteLine (” the d e l t a f o r the ladder i s : ” +
deltaLadder ) ;double [ ] aux = maySawtooth ( lowerXBound , upperXBound , s t ep s )
;// doub le de l taSawtoo th = ( upperBound − lowerBound ) /
numberOfSamples ;//Console . WriteLine (” the d e l t a f o r the sawtooth i s : ” +
de l taSawtoo th ) ;i n t currentStep = 0 ;double currentLadderValue=lowerYBound ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
//Console . WriteLine (” current l adder va lue : ” +currentLadderValue ) ;
// genera te the sawtooth wave// generatedWaves [ 0 , i ] = lowerBound + ( i ∗ de l taSawtoo th
) ;generatedWaves [ 0 , i ] = aux [ currentStep ] ;// genera te the l adder wavegeneratedWaves [ 1 , i ] = currentLadderValue ;i f ( cur rentStep==steps −1){
currentStep =0;currentLadderValue = currentLadderValue +
deltaLadder ;
i f ( currentLadderValue >= upperYBound ){
Apendice A. Codigo fuente programa 68
currentLadderValue = upperYBound ;}
}e l s e {
currentStep = currentStep + 1 ;}
}re turn generatedWaves ;
}
pub l i c double [ , ] mayWrites ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
, i n t numberOfColumns ){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;long s t ep s = numberOfSamples / numberOfLines ;Console . WriteLine (”may the number o f s t ep s i s : ” + s t ep s ) ;double de ltaLadder = ( upperYBound − lowerYBound ) /
numberOfLines ;Console . WriteLine (” the d e l t a f o r the ladder i s : ” +
deltaLadder ) ;double [ ] aux = maySawtooth ( lowerXBound , upperXBound , s t ep s )
;i n t currentStep = 0 ;double currentLadderValue = lowerYBound ;Bitmap loadedPic ture = new Bitmap (512 ,512) ;double b i a s = biasNumericEdit . Value ;// t r y//{
OpenFileDialog open = new OpenFileDialog ( ) ;open . F i l t e r = ”Image F i l e s ( ∗ . jpg ; ∗ . jpeg ; ∗ . g i f ; ∗ .bmp)
| ∗ . jpg ; ∗ . jpeg ; ∗ . g i f ; ∗ .bmp” ;i f ( open . ShowDialog ( ) == Dia logResu l t .OK){
l oadedPic ture = new Bitmap ( open . FileName ) ;pictureMay . Image = loadedPic ture ;
Apendice A. Codigo fuente programa 69
pictureMay . SizeMode = System . Windows . Forms .PictureBoxSizeMode . AutoSize ;
Console . Write (” loaded image o . k . ” ) ;}
f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
generatedWaves [ 0 , i ] = aux [ currentStep ] ;// genera te the l adder wavegeneratedWaves [ 1 , i ] = currentLadderValue ;i f ( cur rentStep == step s − 1){
currentStep = 0 ;currentLadderValue = currentLadderValue +
deltaLadder ;i f ( currentLadderValue >= upperYBound ){
currentLadderValue = upperYBound ;}
}e l s e{
currentStep = currentStep + 1 ;}i n t e l ements InLine = ( i n t ) numberOfSamples /
numberOfLines ;i n t l i n e = i % elements InLine ;
i n t elementsInColumn = ( i n t ) e l ements InLine /numberOfColumns ;
//Console . WriteLine (” Elements in column : ” +elementsInColumn ) ;
i n t column = i / e lements InLine ;//Console . WriteLine (” l i n e : ” + l i n e ) ;//Console . WriteLine (” column : ” + column ) ;i f ( l oadedPic ture . GetPixel ( l i n e , column ) .B ==
Convert . ToByte (255) && loadedPic ture . GetPixel (l i n e , column ) .R == Convert . ToByte (255) &&loadedPic ture . GetPixel ( l i n e , column ) .G ==
Apendice A. Codigo fuente programa 70
Convert . ToByte (255) ){
generatedWaves [ 2 , i ] = 0 ;//Console . WriteLine (” l i n e : ” +l i n e + ”column : ”
+ column ) ;//Console . WriteLine (” co l o r : whi te ”) ;
}e l s e{
generatedWaves [ 2 , i ] = b ia s ;}
}re turn generatedWaves ;
//}// catch ( Except ion )//{
// throw new App l i ca t ionExcep t ion (”Houston , we ’ ve go t aproblem ”) ;
//}}
pub l i c double [ , ] pa t t e rnFabr i ca t i on ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;long s t ep s = numberOfSamples / numberOfLines ;double [ ] f a s t S i g n a l = maySawtooth ( lowerXBound , upperXBound ,
s t ep s ) ;double [ ] s l owS igna l = maySawtooth ( lowerYBound , upperYBound ,
numberOfSamples ) ;double aux = biasNumericEdit . Value ;i n t currentStep = 0 ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
Apendice A. Codigo fuente programa 71
generatedWaves [ 0 , i ] = f a s t S i g n a l [ currentStep ] ;generatedWaves [ 1 , i ] = s l owS igna l [ i ] ;generatedWaves [ 2 , i ] = aux ;i f ( cur rentStep == step s − 1){
currentStep = 0 ;}e l s e{
currentStep = currentStep + 1 ;}
}re turn generatedWaves ;
}
pub l i c double [ , ] oPatte rnFabr i cat ion ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;double aux = biasNumericEdit . Value ;i n t l ine InSample s = Convert . ToInt32 ( numberOfSamples / 4) ;double d e l t a= ( upperXBound−lowerXBound ) / l ine InSample s ;Console . WriteLine (” d e l t a f o r o f a b r i c a t i o n : ” + d e l t a ) ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
//1i f ( i / l ine InSample s == 0) {
//xi f ( i % l ine InSample s == 0) {
generatedWaves [ 0 , i ] = lowerXBound ;}e l s e {
generatedWaves [ 0 , i ] = generatedWaves [ 0 , i−1]+d e l t a ;
Console . WriteLine (” generated : ”+ generatedWaves[ 0 , i ] ) ;
i f ( generatedWaves [ 0 , i ] > 10)
Apendice A. Codigo fuente programa 72
{generatedWaves [ 0 , i ] = 10 ;
}}//ygeneratedWaves [ 1 , i ] = lowerYBound ;
}//2e l s e i f ( i / l ine InSample s == 1) {
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i −1] ;//yi f ( i % l ine InSample s == 0) {
generatedWaves [ 1 , i ] = lowerYBound ;}e l s e {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i−1]+d e l t a ;
i f ( generatedWaves [ 1 , i ] > 10){
generatedWaves [ 1 , i ] = 10 ;}
}}//3e l s e i f ( i / l ine InSample s==2){
//xi f ( i % l ine InSample s == 0){
generatedWaves [ 0 , i ] = generatedWaves [ 0 , i −1 ] ;
}e l s e {
generatedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1 ]− d e l t a ;
i f ( generatedWaves [ 0 , i ] < −10){
generatedWaves [ 0 , i ] = −10;}
Apendice A. Codigo fuente programa 73
}//ygeneratedWaves [ 1 , i ] = generatedWaves [ 1 , i −1] ;
}//4e l s e {
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1 ] ;//yi f ( i % l ine InSample s == 0) {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i −1] ;}e l s e {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ]− d e l t a ;
i f ( generatedWaves [ 1 , i ] < −10){
generatedWaves [ 1 , i ] = −10;}
}}// b i a sgeneratedWaves [ 2 , i ] = aux ;
}re turn generatedWaves ;
}
pub l i c double [ , ] uPatternFabr icat ion ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;double aux = biasNumericEdit . Value ;i n t l ine InSample s = Convert . ToInt32 ( numberOfSamples / 3) ;double d e l t a = ( upperXBound − lowerXBound ) / l ine InSample s ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
Apendice A. Codigo fuente programa 74
//1i f ( i / l ine InSample s == 0) {
//xgeneratedWaves [ 0 , i ] = lowerXBound ;//yi f ( i % l ine InSample s == 0) {
generatedWaves [ 1 , i ] = lowerYBound ;}e l s e {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i−1]+d e l t a ;
i f ( generatedWaves [ 1 , i ] > 10){
generatedWaves [ 1 , i ] = 10 ;}
}}//2e l s e i f ( i / l ine InSample s == 1){
//xi f ( i % l ine InSample s == 0){
generatedWaves [ 0 , i ] = lowerXBound ;}e l s e{
generatedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1 ]+ d e l t a ;
//Console . WriteLine (” generated : ” +generatedWaves [ 0 , i ] ) ;
i f ( generatedWaves [ 0 , i ] > 10){
generatedWaves [ 0 , i ] = 10 ;}
}//ygeneratedWaves [ 1 , i ] = generatedWaves [ 1 , i −1] ;
}
Apendice A. Codigo fuente programa 75
//3e l s e {
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i −1] ;//yi f ( i % l ine InSample s == 0){
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i −1] ;}e l s e{
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ]− d e l t a ;
i f ( generatedWaves [ 1 , i ] < −10){
generatedWaves [ 1 , i ] = −10;}
}}// b i a sgeneratedWaves [ 2 , i ] = aux ;
}re turn generatedWaves ;
}
pub l i c double [ , ] cPat te rnFabr i ca t i on ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;double aux = biasNumericEdit . Value ;i n t l ine InSample s = Convert . ToInt32 ( numberOfSamples / 3) ;double d e l t a = ( upperXBound − lowerXBound ) / l ine InSample s ;//xgeneratedWaves [ 0 , 0 ] = upperXBound ;//ygeneratedWaves [ 1 , 0 ] = lowerYBound ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++)
Apendice A. Codigo fuente programa 76
{//1i f ( i / l ine InSample s == 0){
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1]−
d e l t a ;i f ( generatedWaves [ 0 , i ]<−10){
generatedWaves [ 0 , i ]=−10;}//ygeneratedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ] ;
}//2e l s e i f ( i / l ine InSample s == 1){
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1 ] ;//ygeneratedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ] +
d e l t a ;i f ( generatedWaves [ 0 , i ] > 10){
generatedWaves [ 0 , i ] = 10 ;}
}//3e l s e{
//xgeneratedWaves [ 0 , i ] = generatedWaves [ 0 , i − 1 ] +
d e l t a ;i f ( generatedWaves [ 0 , i ] > 10){
generatedWaves [ 0 , i ] = 10 ;}//ygeneratedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ] ;
}
Apendice A. Codigo fuente programa 77
// b i a sgeneratedWaves [ 2 , i ] = aux ;
}re turn generatedWaves ;
}
pub l i c double [ , ] aPatte rnFabr i cat ion ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
) {double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;double aux = biasNumericEdit . Value ;i n t l ine InSample s = Convert . ToInt32 ( numberOfSamples / 2) ;double deltaY = ( upperXBound − lowerXBound ) / l ine InSample s
;double deltaX = ( upperXBound − lowerXBound ) /
numberOfSamples ;generatedWaves [ 0 , 0 ] = lowerXBound ;generatedWaves [ 1 , 0 ] = lowerYBound ;f o r ( i n t i = 1 ; i < numberOfSamples ; i++){
generatedWaves [ 0 , i ] = generatedWaves [ 0 , i−1]+deltaX ;i f ( generatedWaves [ 0 , i ] > 10) {
generatedWaves [ 0 , i ] = 10 ;}//yi f ( i / l ine InSample s == 0) {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ] +deltaY ;
i f ( generatedWaves [ 1 , i ] > 10) {generatedWaves [ 1 , i ] = 10 ;
}}e l s e {
generatedWaves [ 1 , i ] = generatedWaves [ 1 , i − 1 ] −deltaY ;
i f ( generatedWaves [ 1 , i ] < −10){
generatedWaves [ 1 , i ] = −10;}
Apendice A. Codigo fuente programa 78
}// b i a sgeneratedWaves [ 2 , i ] = aux ;
}re turn generatedWaves ;
}
pub l i c double [ , ] pa t t e rnFabr i ca t i on2 ( double lowerXBound , doubleupperXBound , double lowerYBound ,double upperYBound , long numberOfSamples , i n t numberOfLines
){
double [ , ] generatedWaves = new double [ 3 , numberOfSamples ] ;long s t ep s = numberOfSamples / 4 ;double [ ] f a s t S i g n a l = maySawtooth ( lowerXBound , upperXBound ,
s t ep s ) ;double [ ] s l owS igna l = maySawtooth ( lowerYBound , upperYBound ,
numberOfSamples ) ;double aux = biasNumericEdit . Value ;i n t currentStep = 0 ;f o r ( i n t i = 0 ; i < numberOfSamples ; i++){
generatedWaves [ 0 , i ] = f a s t S i g n a l [ currentStep ] ;generatedWaves [ 1 , i ] = s l owS igna l [ i ] ;generatedWaves [ 2 , i ] = aux ;i f ( cur rentStep == step s − 1){
currentStep = 0 ;}e l s e{
currentStep = currentStep + 1 ;}
}re turn generatedWaves ;
}
pub l i c void fabricat ionTypeChanged ( Object source , EventArgs e ){
Apendice A. Codigo fuente programa 79
}
pub l i c void scanTypeChanged ( Object source , EventArgs e ){
i f ( fabr i cat ionRadioButton . Checked ){
b i a s V o l t a g e l a b e l . Enabled = true ;biasNumericEdit . Enabled = true ;fabr icat ionGroupBox . Enabled = true ;
}e l s e{
b i a s V o l t a g e l a b e l . Enabled = f a l s e ;biasNumericEdit . Enabled = f a l s e ;fabr icat ionGroupBox . Enabled = f a l s e ;
}}pub l i c void reso lut ionChanged ( Object source , EventArgs e ){
i f ( radioButton128 . Checked ){
numberOfLines = 128 ;numberOfColumns = 128 ;rowsNumericEdit . Enabled = f a l s e ;columnsNumericEdit . Enabled = f a l s e ;
}e l s e i f ( radioButton256 . Checked ){
numberOfLines = 256 ;numberOfColumns = 256 ;rowsNumericEdit . Enabled = f a l s e ;columnsNumericEdit . Enabled = f a l s e ;
}e l s e i f ( radioButton512 . Checked ){
numberOfLines = 512 ;numberOfColumns = 512 ;rowsNumericEdit . Enabled = f a l s e ;columnsNumericEdit . Enabled = f a l s e ;
Apendice A. Codigo fuente programa 80
}e l s e i f ( customResRadioButton . Checked ){
rowsNumericEdit . Enabled = true ;columnsNumericEdit . Enabled = true ;numberOfLines = ( i n t ) rowsNumericEdit . Value ;numberOfColumns = ( i n t ) columnsNumericEdit . Value ;
}}
p r i v a t e void rowsNumericEdit AfterChangeValue ( ob j e c t sender ,Nat iona l Instruments . UI . AfterChangeNumericValueEventArgs e )
{numberOfLines = ( i n t ) rowsNumericEdit . Value ;
}
p r i v a t e void columnsNumericEdit AfterChangeValue ( ob j e c t sender ,Nat iona l Instruments . UI . AfterChangeNumericValueEventArgs e )
{numberOfColumns = ( i n t ) columnsNumericEdit . Value ;
}
p r i v a t e void scan Window Ver i f i e r ( ob j e c t sender ,Nat iona l Instruments . UI . AfterChangeNumericValueEventArgs e )
{s t r i n g message = ”” ;bool problems = f a l s e ;i f ( widthNumericEdit . Value − xOffsetNumericEdit . Value < 0
| | widthNumericEdit . Value + xOffsetNumericEdit . Value >
400){
message = message + ” I n v a l i d X range \n ” ;problems = true ;
}i f ( heightNumericEdit . Value − yOffsetNumericEdit . Value < 0
| | heightNumericEdit . Value + yOffsetNumericEdit . Value >
400){
message = message + ” I n v a l i d Y range \n ” ;
Apendice A. Codigo fuente programa 81
problems = true ;}i f ( problems ){
MessageBox . Show(”You must change some va lue s be f o r es t a r t i n g the scan :\n”+ message , ” I n v a l i d arguments ”);
s tartStopButton . Enabled = f a l s e ;}e l s e{
startStopButton . Enabled = true ;}
}
p r i v a t e void saveNowButton Click ( ob j e c t sender , EventArgs e ){
//bitmapMay . Save (DateTime .Now. ToString ( ) +”.bmp”) ;s t r i n g a u x i l i a r = DateTime .Now. ToString ( ) . Replace ( ” : ” , ” . ” )
;a u x i l i a r = a u x i l i a r . Replace (” ” , ”−”) ;a u x i l i a r = a u x i l i a r . Replace (”/” , ” ”) ;Console . WriteLine ( a u x i l i a r ) ;bitmapMay . Save ( a u x i l i a r + ” .bmp”) ;
}
p r i v a t e void patternRadioButton CheckedChanged ( ob j e c t sender ,EventArgs e )
{
}}
}
A.3. Settings.cs
us ing System ;
Apendice A. Codigo fuente programa 82
us ing System . C o l l e c t i o n s . Generic ;us ing System . ComponentModel ;us ing System . Data ;us ing System . Drawing ;us ing System . IO ;us ing System . Text ;us ing System . Windows . Forms ;us ing Nat iona l Instruments .DAQmx;
namespace mic2005{
pub l i c p a r t i a l c l a s s S e t t i n g s : Form{
p r i v a t e Main ventana ;
p r i v a t e Task testTask ;
p r i v a t e St r ing inputMinValue ;p r i v a t e St r ing inputMaxValue ;p r i v a t e St r ing output1MinValue ;p r i v a t e St r ing output1MaxValue ;
pub l i c S e t t i n g s (Main mainWindow){
ventana = mainWindow ;In i t i a l i z eComponent ( ) ;//Here I ’m j u s t adding the r i g h t op t i ons to the GUI −i . e .
t e x t −, but t h i s p i e ce o f code does noth ing in the worldinChannelComboBox . Items . AddRange( DaqSystem . Local .
GetPhysicalChannels ( PhysicalChannelTypes . AI ,Phys ica lChannelAccess . External ) ) ;
i f ( inChannelComboBox . Items . Count > 0)inChannelComboBox . Se l e c t ed Index = 0 ;
XChannelComboBox . Items . AddRange( DaqSystem . Local .GetPhysicalChannels ( PhysicalChannelTypes .AO,Physica lChannelAccess . External ) ) ;
i f (XChannelComboBox . Items . Count > 0)
Apendice A. Codigo fuente programa 83
XChannelComboBox . Se l e c t ed Index = 0 ;YChannelComboBox . Items . AddRange( DaqSystem . Local .
GetPhysicalChannels ( PhysicalChannelTypes .AO,Physica lChannelAccess . External ) ) ;
i f (YChannelComboBox . Items . Count > 0)YChannelComboBox . Se l e c t ed Index = 0 ;
biasVComboBox . Items . AddRange( DaqSystem . Local .GetPhysicalChannels ( PhysicalChannelTypes .AO,Physica lChannelAccess . External ) ) ;
i f ( biasVComboBox . Items . Count > 0)biasVComboBox . Se l e c t ed Index = 0 ;
}
p r i v a t e void t e s tBut ton Cl i ck ( ob j e c t sender , EventArgs e ){
t ry{
i f ( testButton . Text . Equals (” Test ”) ) {// changes the but ton t e x t from S ta r t to StoptestButton . Text= ”Stop ” ;// c r ea t e s a new ta s k f o r c on f i g u r a t i on t e s t i n g
purposestestTask = new Task (” testTask ”) ;// c r ea t e s an input channel wi th the s e t t i n g s chosen
in the GUItestTask . AIChannels . CreateVoltageChannel (
inChannelComboBox . Text , ”Z” ,AITerminalConf igurat ion . D i f f e r e n t i a l ,inputMinValEdit . Value , inputMaxValEdit . Value ,
AIVoltageUnits . Volts ) ;// c r ea t e s two output channel wi th the s e t t i n g s
chosen in the GUItestTask . AOChannels . CreateVoltageChannel (
XChannelComboBox . Text , ”X” ,outputMinValEdit . Value , outputMaxValEdit . Value ,
AOVoltageUnits . Volts ) ;testTask . AOChannels . CreateVoltageChannel (
YChannelComboBox . Text , ”Y” ,
Apendice A. Codigo fuente programa 84
outputMinValEdit . Value , outputMaxValEdit . Value ,AOVoltageUnits . Volts ) ;
//now we must s e t the t iming con f i gura t i on , there ’ sanother method wi th no b u f f e r parameter
i n t b u f f e r S i z e = 1000 ;testTask . Timing . ConfigureSampleClock (”” , 500 ,
SampleClockActiveEdge . Ris ing , SampleQuantityMode. ContinuousSamples ,b u f f e r S i z e ) ;
//Release re source stestTask . Dispose ( ) ;
}e l s e {
testButton . Text = ” Test ” ;StopTask ( ) ;
}}catch ( Exception ex ){
//StopTask () ;MessageBox . Show(” There were problems during t e s t
execut ion :\n” + ex . Message ) ;}
}
p r i v a t e void doneButton Click ( ob j e c t sender , EventArgs e ){
t ry{
Fi leStream f i l e = new Fi leStream (” s e t t i n g s . txt ” ,FileMode . Create , F i l eAcce s s . Write ) ;
StreamWriter sw = new StreamWriter ( f i l e ) ;i f ( ! askForSettingsCB . Checked ){
// Write a s t r i n g to the f i l esw . Write (” s e t t i n g s : pending ”) ;sw . Write ( ” . . . prueba ”) ;
}
Apendice A. Codigo fuente programa 85
e l s e{
sw . WriteLine (” S e t t i n g s : ok ”) ;sw . WriteLine (” In Channel : ” ) ;sw . WriteLine ( inChannelComboBox . Text ) ;sw . WriteLine (” Input Minimun Value : ” ) ;sw . WriteLine ( inputMinValEdit . Value ) ;sw . WriteLine (” Input Maximun Value : ” ) ;sw . WriteLine ( inputMaxValEdit . Value ) ;sw . WriteLine (”X Channel : ” ) ;sw . WriteLine (XChannelComboBox . Text ) ;sw . WriteLine (”Minimun Value x : ” ) ;sw . WriteLine ( outputMinValEdit . Value ) ;sw . WriteLine (”Maximun Value x : ” ) ;sw . WriteLine ( outputMaxValEdit . Value ) ;sw . WriteLine (”Y Channel : ”) ;sw . WriteLine (YChannelComboBox . Text ) ;sw . WriteLine (” Bias Voltage : ”) ;sw . WriteLine ( biasVComboBox . Text ) ;sw . WriteLine (”Minimun Value y : ” ) ;sw . WriteLine ( outputMinValEdit . Value ) ;sw . WriteLine (”Maximun Value y ; ” ) ;sw . WriteLine ( outputMaxValEdit . Value ) ;
}// Close StreamWritersw . Close ( ) ;// Close f i l ef i l e . Close ( ) ;ventana . changeScanButtonStatus ( t rue ) ;
}catch ( Exception ){
}t h i s . Dispose ( ) ;
}p r i v a t e void StopTask ( ){
testTask . Stop ( ) ;
Apendice A. Codigo fuente programa 86
testTask . Dispose ( ) ;}
p r i v a t e void inChannelComboBox SelectedIndexChanged ( ob j e c tsender , EventArgs e )
{
}}
}
sectionViewImages.cs
us ing System ;us ing System . C o l l e c t i o n s . Generic ;us ing System . ComponentModel ;us ing System . Data ;us ing System . Drawing ;us ing System . IO ;
us ing System . Text ;us ing System . Windows . Forms ;
namespace mic2005{
pub l i c p a r t i a l c l a s s ViewImages : Form{
/∗ t h i s i s the image that i s loaded from the f i l e ∗/p r i v a t e Bitmap loadedPic ture ;/∗ I added t h i s v a r i a b l e to a l low undo operat ions , I th ink I ’ l l
have to make∗ i t some s o r t o f array in the fu tu r e ∗/
p r i v a t e Bitmap formerVers ion ;p r i v a t e Bitmap proce s s edP i c tu r e ;/∗ the name i s s e l f −exp lanatory ∗/p r i v a t e Bitmap cur r en tP i c tu r e ;
pub l i c ViewImages ( ){
Apendice A. Codigo fuente programa 87
In i t i a l i z eComponent ( ) ;}
p r i v a t e void loadImageButton Cl ick ( ob j e c t sender , EventArgs e ){
t ry{
OpenFileDialog open = new OpenFileDialog ( ) ;open . F i l t e r = ”Image F i l e s ( ∗ . jpg ; ∗ . jpeg ; ∗ . g i f ; ∗ .bmp)
| ∗ . jpg ; ∗ . jpeg ; ∗ . g i f ; ∗ .bmp” ;i f ( open . ShowDialog ( ) == Dia logResu l t .OK){
l oadedPic ture = new Bitmap ( open . FileName ) ;cu r r en tP i c tu r e = ( Bitmap ) loadedPic ture . Clone ( ) ;pictureBox1 . Image = loadedPic ture ;pictureBox1 . SizeMode = System . Windows . Forms .
PictureBoxSizeMode . AutoSize ;// chooseColorButton . Enabled = true ;// d i scardCo lorsBut ton . Enabled = true ;//penButton . Enabled = true ;// eraserBut ton . Enabled = true ;
}
}catch ( Exception ){
throw new Appl i cat ionExcept ion (” Fa i l ed load ing image ”) ;}
}p r i v a t e void saveP ic ture ( ob j e c t sender , EventArgs e ){
SaveFi l eDia log d i a l o g = new SaveFi l eDia log ( ) ;// d i a l o gConsole . WriteLine (””+ d i a l o g . AutoUpgradeEnabled ) ;
}
p r i v a t e void savePictureAs ( ob j e c t sender , EventArgs e )
Apendice A. Codigo fuente programa 88
{SaveFi l eDia log d i a l o g = new SaveFi l eDia log ( ) ;
}}
}
Bibliografıa
[1] Albrecht. Nanometer-scale hole formation on graphite using a scanning tunneling
microscope. Applied Physics Letters, 55(17), 1989.
[2] Alba Graciela Avila Bernal y Ruy Sebastian Bonilla Osorio. Estudio de superficies
usando un microscopio de efecto tunel (stm). Revista Ingenierıa e Investigacion,
29(3):121–127, 2009.
[3] Rodrigo Alfonso Bernal Montoya. Fabricacion de nanoestructuras usando un
microscopio de efecto tunel: Una primera exploracion. 2007.
[4] G. Binning, H. Rohrer, C. Gerber, y E. Weibel. Surface studies by scanning
tunneling microscopy. Phys. Rev. Lett., 49(1):57–61, 1982.
[5] Ruy Sebastian Bonilla Osorio. Visualizacion y modificacion de superficies utili-
zando un microscopio de barrido de efecto tunel. 2008.
[6] Xiaodong Li Guangyi Shang Xiaohui Qiu Chen Wang y Chunli Bai. Studies
of field related effects in the fabrication process on graphite using a scanning
tunneling microscope. Journal of Applied Physics, 81(3), 1997.
[7] Robert Eisberg y Robert Resnick. Quantum physics of atoms, molecules, solids,
nuclei, and particles. John Wiley and Sons, Inc., 1985.
[8] C J Roberts, M C Davies, D E Jackson, S J B Tendler, y P M Williams. Controlled
nanometre-scale line and symbol formation on graphite in air using a scanning
tunnelling microscope. Unknown Journal, 1991.
[9] Joseph A. Stroscio y William J. Kaiser, eds. Scanning Tunneling Microscopy.
Academic Press, 1993.
89