DNA Melting: Using the LockIn DNAMelter GUI

From Course Wiki
Jump to: navigation, search
20.309: Biological Instrumentation and Measurement

ImageBar 774.jpg


The MATLAB function LockInGUI runs the LockIn DNA Melting GUI. The LockIn version is similar to the Basic version; however the LockIn version provides for driving the LED, temperature control, and digital filtering.

On the left side of the window, the LockIn GUI has panels for setting the LED carrier frequency and amplitude, for temperature control (min and max temperature as well as ramp times), for temperature control PID parameters, temperature sensor parameters, setting the lock-in phase, and choosing filter frequencies and bandwidth.


Carrier: Set the frequency, amplitude, and offset of the carrier waveform. Offset should always be greater than amplitude to keep the LED drive linear. Rsense is the scaling resistor for setting the LED current. Use the LED button to turn the LED drive on and off.


Temperature: The temperature control algorithm implements a temperature ramp from minT to maxT (Heat time), a hold at maxT (Hold time), then a ramp from maxT down to minT (Cool time), and finally a hold at minT until temperature control is disabled.

The Start button initiates a temperature control cycle. ("Start" will change to "Stop" when temperature control is active; if you stop a cycle, you have the option to resume at the last temperature.) The "Start" button is actually multi-function: click on the down-arrow to select other functions: Go to min T will force the temperature to minT; Heat will force the temperature to maxT; Cool will force the temperature to 0 C (it won't get there, but it will try); Hold suspends the control cycle and maintains the current temperature; Resume will resume a previously interrupted control cycle; Stop will turn off power to the TEC.

Use the Fan button to turn on the fan manually (usually the fan is only on after the Hold time when ramping down the temperature).


PID Gains: The program controls the temperature by turning the TEC on and off several times a second. The duty cycle (fraction of time the TEC is on) is determined by a PID algorithm:

$ {\rm DutyCycle} = P T_{\rm err} + I \int T_{\rm err} dt + D \frac{d}{dt} T_{\rm err} $

where $ T_{\rm err} $ is the difference between the desired and measured temperature. The P, I, and D parameters are the proportional, integral, and derivative gains, respectively. If the PID gains are changed, the default values can be restored by right-clicking on the PID Gains box.


Temperature sensor: It is important to set the Vref and Rpullup parameters each time LockInGUI is run, so that the temperature is computed accurately. (Remember you are attempting to determine the melting temperature of a DNA sample.) Vref is the actual voltage supplied either by the reference or +15V supply, and Rpullup is the "pull-up" resistor in the temperature circuit. Rt0 is the sensor resistance at 0 C (1000 ohms) and alphaT is the sensor temperature coefficient (3.85 ohm/degree). Rt0 and alphaT should not be changed unless a different type of temperature sensor is used.

The LockIn GUI graphs the fluorescence voltage signal as well as temperature data in multiple plots. LockInGUI acquires the temperature and fluorescence signals at 200 kHz every 0.1 seconds (20000 data points). Select signals and their associated spectra are displayed in the two left-hand graphs. Fluorescence voltage and temperature (averaged over the 20000 points every 0.1 seconds) versus time are plotted in the upper right-hand graph. Fluorescence voltage versus temperature is plotted in the lower right-hand graph.

Before starting a run, use the Clear button to clear out data accumulated from setting up or from a previous run.

Use the Open file ... button to save to a file. Data will be continuously saved to the file, including all data after the "Clear" button was pressed. (If you press the Clear button while a file is open, only the plot is cleared, but all data is still saved.) At the end of the run, Close the file, so that no more data is saved.

The data will be tab-delimited and can be read into Matlab with the load command. The data will be in 3 columns of time, temperature, and fluorescence signal.

Troubleshooting: If there is a data acquisition error, for example, "Data acquisition cannot start!", it may be the DAQ device is not working. Try physically disconnecting the USB cable from the DAQ box and then reconnecting it. The X-series devices (blue and silver boxes) have on/off switches: make sure it is on or toggle the power off and on. If that fails, open the Measurement and Automation Explorer ("MAX"), open the Devices and Interfaces drop-down on the left side, and make sure there is only one "NI USB-6xxx" entry and that it is called "Dev1." Try to run the LockInGUI program again, and/or close it, re-open it, and run it again. If this does not work, consult an Instructor.


LockInGUI may be run in the Matlab command window or in another script as


or with optional Matlab-style 'Name', Value pairs which can be used to pre-set parameters in the GUI


The following options may be set:

Option name Description Default
'rate' Data acquisition rate 200000 Hz
'duration' Data acquisition time 0.1 seconds
'Vref' Temperature circuit reference voltage 15 V
'Rpu' Temperature circuit pullup 15000 ohms
'Rt0' Temperature sensor R at T=0 1000 ohms
'alphaT' Temperature sensor coefficient 3.850 ohms/degree
'CalculateTemperatureFcn' User function to calculate temperature (see below)
'taskbarHeight' Height of Windows taskbar for sizing window 40 pixels
'LEDoffV' Drive voltage to force LED off -0.025 V
'frequency' LED drive frequency 8000 Hz
'amplitude' LED drive amplitude 0.010 A
'offset' LED drive offset 0.012 A
'Rsense' LED current scaling resistor 100 ohms
'Tmin' Start temperature 25 C
'Tmax' End temperature 95 C
'tHeat' heat ramp time 900 seconds
'tCool' cool ramp time 900 seconds
'tHold' hold time 120 seconds
'Pgain' Proportional gain 0.5
'Igain' Integral gain 0.02
'Dgain' Derivative gain 0.75
'Ilimit' PID integral limit 1
'controltime' Temperature control update time 1 second
'fan' Set to 1 to force fan always on 0
'BandPassFilterFcn' User function to set BandPassFilter See Filters
'BandPassFilter' Band pass filter kernel 1
'DownSampleRate' Intermediate down sample frequency 1000 Hz
'DownSampleFilterFcn' User function to set DownSampleFilter See Filters
'DownSampleFilter' Down-sampling filter See Filters
'LowPassFilterFcn' User function to set LowPassFilter See Filters
'LowPassFilter' Low pass filter kernel 1



Starts the GUI with Rpullup set to 14860 and Vref set to 14.96.

'CalculateTemperatureFcn' may be used to specify an external function to calculate temperature if a special temperature sensor or circuit is substituted for the standard setup. The function takes two arguments, a struct and a voltage, and returns the calculated temperature. The struct contains the standard parameters as well as any others specified in the command line. The standard temperature function is equivalent to

@(params,V) (params.Rpu*V/(params.Vref - V) - params.Rt0)/params.alphaT

Clicking on the icon in the upper-left corner or pressing Alt-space will bring up the system menu. The system menu contains options for showing the about box, and for saving/loading the current configuration.


The band pass filter is set by the user-supplied 'BandPassFilterFcn'. This function takes 2 arguments, the carrier frequency and the data acquisition rate, and returns a filter kernel for use by the Matlab filter function. The Matlab fir1 function may be used to generate a suitable kernel, for example,

DNALockIn( 'BandPassFilterFcn', @(F,R) fir1(256,[(F-500)/(R/2) (F+500)/(R/2)]) )

generates an order-256 bandpass filter with a 1000 Hz window centered on the carrier frequency. (Note that R/2 is the Nyquist frequency = one-half the sample rate.) BandPassFilterFcn is called when DNALockIn starts and any time the carrier frequency is changed. The default is to use a band pass filter of 1 (all pass filter), a filter with no effect.

'DownSampleFilterFcn' sets the down sample filter. This function takes 2 arguments, the down-sample frequency and the data acquisition rate, and returns a filter kernel, which should be a low-pass filter. DownSampleFilterFcn is called only once when DNALockIn starts. The default is a low-pass filter with cutoff at the down-sample frequency:

@(F,R) fir1(256,F/(R/2))

'LowPassFilterFcn' sets the low pass filter. This function takes 1 argument, the down-sample frequency and returns a filter kernel, which should be a low-pass filter. LowPassFilterFcn is called only once when DNALockIn starts. For example,

DNALockIn( 'LowPassFilterFcn', @(F) fir1(256,1/(F/2)) )

generates an order-256 low-pass filter with a cutoff of 1 Hz. The default is an all-pass filter of 1.