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 semiconductor device

Sequencer

MakeFile
└── SMU-Keithley_2400
    └── SMU-Keithley_2400  # e.g. for transistors characteristic curve

Tree

Explanation

One SMU module is all you need for the quickest, simplest current-voltage curve of a semiconductor device like an LED, a solar cell, or a transistor. By adding a second SMU, one can measure the characteristic curves of two-port networks and devices. Don't forget to input the sweep range of SMU(s) in the sweep values window of the module!


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 capacity tests

Task

Measure accelerated battery capacity test

Sequencer

MakeFile
└── SMU - Rohde&Schwarz NGx series
    └── Condition
        └── Loop
            └── Delay

Tree

Explanation

An SMU module drains a fixed current from the battery and reads the voltage at each step, given by the loop module. The condition module stops the measurement when the voltage drops below a certain threshold, and finally, a delay module guarantees a minimum time gap between each data point.

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								# Having 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.