Examples

From SweepMe! Wiki
Jump to navigation Jump to search

SweepMe! can be used for sheer number of academic and industrial measurements and processes, from a simple reading of a temperature sensor to device fabrication by physical vapor deposition in a vacuum chamber. A few example use-cases are presented in this article. However, the possibilities are indeed unlimited! As the retired NASA astronaut Ron Garan once said, “We are limited only by our imagination and our will to act”.

For each use-case, a self-explanatory example Sequencer is given, with a short explanation. One can configure the Modules by double-clicking on them in the Sequencer window. In this article, the Sequencer is depicted with the free online ASCII tree-generator tool Tree.

Current-voltage characteristics

Task

Acquire an IV curve of a two-terminal device, such as an LED, a solar cell, a photodetectors, or a sensor.

Sequencer

MakeFile
└── SMU - Keithley 2400

Tree

Explanation

One SMU module is all you need for a quick and simple current-voltage curve of a semiconductor device. Don't forget to configure the Sweep editor that comes with the SMU module to define your voltage or current sweep.

Transistor measurement

Task

Acquire IV characteristics of a transistor, e.g. output characteristics or transfer characteristics.

Sequencer

SMU - Keithley 4200-SCS
└── MakeFile
    └── SMU - Keithley 4200-SCS

Tree

Explanation The upper SMU module makes voltage sweep, e.g. to vary the gate voltage. The lower SMU module is performing its variation for each higher variation. So, if it is performing a drain voltage variation, one finally gets output characteristics as for each gate voltage of the upper SMU a drain variation of the lower SMU is done. If you swap the SMU modules regarding gate and drain variation, one can measure transfer characteristics for a number of drain voltages.

Joint base/gate and collector/drain transistor sweep

Task

Acquire an IV characteristics of a transistor by simultaneously sweeping the voltage at gate (or base) and drain (or collector) with a constant offset.

Sequencer

MakeFile
└── SMU drain
    └── Calc
        └── SMU gate

Tree

Explanation Sometimes, the drain voltage and the gate voltage need to be ramped up at the same time. In this case, one SMU module must follow the voltage of another module. To achieve this, the module SMU drain will perform in this example the main voltage variation, e.g. from 0.5 V to 1.5 V. Now, a module Calc is inserted between the SMU modules to calculate a new sweep value for SMU gate. Here, it is important that the Calc module uses the "Sweep value of SMU drain" so that the calculation is done based on the sweep value of SMU drain and not the measured value of the voltage (which would be known to late). The Sweep value of the SMU gate then needs to be the result of the Calc module instead of the Sweep editor that is normally used as default.

Current/voltage/resistance transients

Task

Measure current, voltage, or resistance over time with a given time distance between the points

Sequencer

MakeFile
└── Loop
    └── SMU - Keithley_2400
        └── Delay

Tree

Explanation

The SMU module will be configured to measure exactly one point. This can be done in the Sweep editor by using the same value for start and end. Thus, the SMU performs a "sweep" over one value, i.e. it stays at a constant voltage or current. Whether the SMU is sourcing voltage or current can be adjusted with the Sweep mode in the Setup tab of the SMU module. Further, one can select 'Resistance' and/or 'Conductance' in the post-processing section of the module. To now repeat the measurement, a Loop module is added to the same branch. It can be configured by double-click to run for a given number of points or infinite (using 0). To have a given time between the measurement points, the module "Delay" is used. Double-click it and enter the number of seconds. The module will make sure that the next point is not started before the given time has passed since the start of the previous measurement point. If you for example use a delay of 1 s and a loop of 1000, your measurement will run 1000 s. The MakeFile module defines how often new files are created. As it is the topmost module, only one data file is created in which all data is saved.

Battery charging & discharging tests

Task

Measure accelerated battery capacity test

Sequencer

MakeFile
└── Loop1
    └── SMU - Rohde&Schwarz NGx series
        └── Loop2
            └── Logger - Temperature sensor
                └── Delay
                    └── Condition

Tree

Explanation

An SMU module applies a number of fixed voltages to the battery and reads the current flow. The Loop2 module make sure that each voltage is read out multiple times with time spacing as given by the Delay module. The higher Loop1 module allows to repeat the entire voltage variation to make lifetime test, e.g. of charging and discharging cycles. The Condition module can be used to stop the measurement when a certain criteria is reached. Of course, further modules can be adeded. For example, a temperature sensor could be helpful to log the batteries temperature at each step.

Sensor monitoring system

Task

Make a simple data acquisition and monitoring system for sensors and actuators of a lab or building

Sequencer

MakeFile
└── Loop
    └── Logger - Arduino_DHTxx
        └── MQTT
            └── Delay

Tree

Explanation

A microcontroller board like Arduino can come in handy as an interface between sensors and computers. There are different SweepMe! drivers accompanied with Arduino .ino sketch files to read common sensors. In the example below, a DHT temperature and relative humidity sensor is read with the Logger-Arduino_DHTxx driver in a certain interval, defined by delay. The data then is published with popular IoT protocol MQTT over the local network. For more information, please refer to Arduino Driver guide and MQTT articles.

Angle dependent spectra

Task

Measure angular-dependent spectra of a light sources like OLED or LED

Sequencer

MakeFile
└── Switch - Rotation stage
    └── SMU - Keithey 2400
        └── Spectrometer - OceanOptics USB4000

Tree

Explanation

A Switch module controls a rotation stage (e.g. a stage from Zaber or an Arduino controlled stepper motor) and sweeps angles from -90 to 90 around the light source. At the same time, an SMU drives the light source with a constant current and a spectrometer acquires the spectrum at each point.

Sensitive EQE measurements

Task

Measuring external quantum efficiency of solar cells or photo detectors

Sequencer

MakeFile
└── Switch - Lamp
    └── Switch - Optical chopper
        └── Monochromator
            └── Switch - Filter wheel
                └── Switch - Current amplifier
                    └── LockIn 
                        └── LockIn
                            └── CustomFunction

Tree

Explanation

A module Switch is used to load a driver for controlling a lamp power supply and another one for controlling an optical chopper. A Monochromator module makes a wavelength variation defined in the Sweep editor of this module. At each wavelength, the wavelength is handed over to a Switch module that connects to a filter wheel in order to change filters such that second harmonics are reduced. A further Switch module controls a current amplifier. Two LockIn modules are used to measure the signal at the sample and at the same time at a reference to be able to automatically calculate important parameters such as EQE with a CustomFunction module that is running an individual evaluation script.

Device lifetime and material degradation characterization

Task

Measure device lifetime and material temperature, humidity dependent characterization

Sequencer

Loop												# loop which is set to run endlessly
└── Condition										# condition to break the measurement loop e.g. after one month
    └── Delay										# a delay ensures a certain time gap between each data point
        └── MakeFile								# MakeFile here only saves the data of the modules below it
            └── Temperature-BELEKTRONIG_BTC-LAB		# Peltier element temperature controller
                └── Logger-RaspberryPi-Pico			# an MCU as a simple DAQ

Tree

Explanation

SweepMe! not only suits short-time measurements, but also measurements that can last for weeks and months! You can integrate SweepMe! into your lifetime and degradation setups. In the comments of the Sequencer section above, the purpose of each module is explained.

Wafer prober tests and measurements

Task

In semiconductor industry, it's sometimes the case that the test and automation engineer design a measurement routine quickly and apply different measurements for each die on a wafer.

Sequencer

MakeFile                        				# generate a txt file to save the data
└── ReadValues                      			# read wafer map and measurement flags from an Excel file
    └── WaferProber-SENTIO              		# wafer prober modules sweeps through a wafer map, defined either by the Excel file or the prober native software	
        └── Switch-Keithley_707B            	# this module activates required eletrical probes for each measurement
            ├── Condition                  		# example measurement routine one
               └── SMU-Keithley_4200-SCS
                   └── SMU-Keithley_4200-SCS
            ├── Condition                 		# example measurement routine two
               └── Temperature-Eurotherm_350x
                   └── SMU-Keithley_4200-SCS
                       └── SMU-Keithley_4200-SCS     
            └── Condition                  		# example measurement routine three
                └── SMU-Keithley_4200-SCS

Tree

Explanation

This example consists of three branches and the first three modules are shared among all of them. The user needs to set the initial parameters of the wafer prober with the native software or on the machine itself. Then one can define the wafer chip die positions or index and different measurement routine flags in an Excel file and read it by putting the add-on module ReadValues in the Sequencer. SweepMe!'s WaferProber module interfaces with the prober machines and sweeps through the wafer map given by the Excel file or by the native software. At each die, a series of Condition modules check for the measurement flags defined in the Excel file and run the appropriate measurement for the specified die.

Vacuum thin film deposition

Task

Make a fully automated and controlled sample fabrication system through Physical Vapor deposition (PVD) by thermal evaporation

Sequencer

MakeFile
└── Delay															    # define an interval
    └── Logger-Leybold_CombivacCM31                    				    # UHV pressure meter
        └── Logger-Inficon-SQM-160                        			    # two-channel QCM deposition rate monitor
            └── CustomFunction-Smoothing_Savitzky-Golay      			# smoothing filter for the matrix deposition rate
                └── CustomFunction-Smoothing_Savitzky-Golay      		# smoothing filter for the dopant deposition rate
                    └── Switch-Yoctopuce_Yocto-Relay                	# pneumatic shutter
                        ├── Loop										# pre-heating to slightly below the evaporation temperatures
                           └── Temperature-Eurotherm-22xx				# temperature controller for matrix crucible
                               └── Temperature-Eurotherm-22xx			# temperature controller for dopant crucible
                                   └── Condition                		# exit the loop when the temperatures are reached
                        ├── Loop										# waiting loop to guaranty ultra-high vacuum 
                           └── Condition								# exit the loop if UHV is met
                        ├── Loop										# stabilization loop (with more aggressive PID parameters)
                           └── PID                                     # PID module to stabilize the matrix rate
                               └── PID                                 # PID module to stabilize the dopant rate
                                   └── Temperature-Eurotherm-22xx      # read temperature and apply power to matrix crucible
                                       └── Temperature-Eurotherm-22xx  # read temperature and apply power to dopant crucible
                                           └── Condition               # open the shutter at the right deposition rate and exit the loop
                        └── Loop										# deposition loop (with more robust PID parameters)
                            └── PID                                     # PID module to keep the matrix rate stable
                                └── PID                                 # PID module to keep the dopant rate stable
                                    └── Temperature-Eurotherm-22xx      # read temperature and apply power to matrix crucible
                                        └── Temperature-Eurotherm-22xx  # read temperature and apply power to dopant crucible
                                            └── Condition 				# stop the measurement when a desired thickness is deposited

Tree

Explanation

With SweepMe! you have all you need for a quick, yet powerful thin-film fabrication with PVD by thermal evaporation. For this you need to boost your SweepMe! with its Add-On Modules like PID, Condition, and CustomFunction. It's not even required to manually tune the PID parameters; instead, one can use PID module's autotuning feature.

Optimization or alignment routine

Task

Change a position e.g. of a motor until some signal is optimized

Sequencer

Loop - nonstop
└── Switch - Motor
    └── Logger - Sensor
        └── CustomFunction
            └── Condition

Tree

Explanation

Such an optimization routine can be done in an branch that is just dedicated to the alignment task. Such a branch can be, for example, added before the branch at which the final measurement should run. The idea is to use Loop module that run nonstop. A CustomFunction module returns at each iteration of the sequencer flow a new value that is used by the Switch module as sweep value for the motor position. The signal of the sensor measured with a Logger module is handed over again to the CustomFunction script that saves the history and further returns a boolean flag (True or False) that is used by the Condition module to decide whether the alignment branch is skipped and the next branch can continue. This is way it also possible to create CustomFunction script that first runs a coarse scan over the possible range of positions and later a more fine-grained scan to e.g. find a maximum or minimum of the signal. Once the optimum position is found and calculated, the CustomFunction script could return this position to the move the motor there and once the motor has arrived, the boolean flag can be changed to proceed with the next branch of the sequencer, e.g. to perform a certain measurement at this position.