The Nanoscale World

Extracting Force distance and Current distance type spectroscopy data: what is the recipe?

rated by 0 users
Not Answered This post has 0 verified answers | 5 Replies | 4 Followers

Top 75 Contributor
12 Posts
Points 147
Andres posted on Thu, Dec 20 2012 3:30 AM

Normal 0 false false false EN-GB X-NONE X-NONE MicrosoftInternetExplorer4

 

Dear all, this is a bit of a follow up on a previous post [1].

 

Normal 0 false false false EN-GB X-NONE X-NONE

We need to know how to read the force curves in our own program.

 

Our program is cross-platform, it may be used on PowerPC Mac, ARM Linux, x86-64 FreeBSD, etc. We need to be able to compare data from different SPM machines with the same software. Also the software package can do different data sets of different SPM machines (not only Bruker).

 

Hence our program cannot utilise i386 Windows DLLs, Matlab, NanoscopeAnalysis or any such existing software, even if its license permitted it, because such software is not available for the target systems.

 

We must implement all reading of the force curves in our program.

Independently.

 

Of course, we can use the original instrument's software or NanoscopeAnalysis to verify that we read the data correctly.

 

We are not able to read the force curves (in our program) to match how the original software shows them.

 

We think we follow the file format documentation but, apparently, we do not follow it correctly.

 

So what we need is an explanation what we are doing wrong and why.

 

What we do not need is more opaque software that reads the data correctly.  We cannot learn anything more from it since we aleady know we read the data incorrectly.

 

-----[ example ]---------------------------------------------------

 

Let's use 120808Bi2Te3.274 as an example. ([2] attached Link only valid for 2 months)  How do we read it?

 

-----[ abscissa ]--------------------------------------------------

 

Look at the first channel, i.e. first ‘Ciao force image list’

section (with Data offset: 40960).

 

It says

        X Data Type: Ramp

        @4:Ramp channel: S [Zsweep] "Z"

so it is a something-Z spectrum.

 

What is the range of Z?  We look at ‘@4:Ramp size’ in the same

section:

        @4:Ramp size: V [Sens. Zsens] (0.005035400 V/LSB) 38.98636 V So the hard value is 38.98636 V.

 

To scale the Z range to physical units we look up ‘@Sens. Zsens’ in ‘Scanner list’, finding:

        @Sens. Zsens: V 25.65000 nm/V

 

Hence the Z range is 25.65*38.98636 nm = 1 µm.

 

-----[ ordinate 1 ]--------------------------------------------------

 

Now, we have a something-Z spectrum and must find what is the ‘something’.  We look at ‘@4:Image Data’:

        @4:Image Data: S [] "Log(Resistance)"

Therefore, the ordinate is ‘Log(Resistance)’.

 

Indeed, there is a matching scale

        @4:Z scale: V [Sens. Log(Resistance)] (0.0003750000 log(Ohm)/LSB) 24.57600 log(Ohm) in the same section.

 

To resolve the soft scale we look up the corresponding Sens field:

        @Sens. Log(Resistance): V 1.000000

 

Multiplying it: 24.576*1.0 log(Ohm)/V*V = 24.576 log(Ohm).

 

The LSB terminology is confusing, but we know it means to divide the raw data with 2^{number-of-bits} = 65536.

 

So the conversion factor for raw data is 24.576/65536 log(Ohm).

 

-----[ ordinate 2 ]--------------------------------------------------

 

The next curve has the same abscissa, so the description will not be repeated here.  Let's focus on the ordinate.

 

Again, we look at ‘@4:Image Data’:

        @4:Image Data: S [DeflectionError] "Deflection Error"

Therefore, the ordinate is ‘Deflection Error’.

 

Indeed, there is a matching scale

        @4:Z scale: V [Sens. DeflSens] (0.0003750000 V/LSB) 2.500000 V in the same section.

 

To resolve the soft scale we look up the corresponding Sens field:

        @Sens. DeflSens: V 749.0624 nm/V

 

Multiplying it: 2.500000*749.0624 nm/V*V = 1.87266 µm

 

The LSB terminology is confusing, but we know it means to divide the raw data with 2^{number-of-bits} = 65536.

 

So the conversion factor for raw data is 1.87266/65536 µm.

 

-----[ ordinate 3 ]--------------------------------------------------

 

The next curve has the same abscissa, so the description will not be repeated here.  Let's focus on the ordinate.

 

Again, we look at ‘@4:Image Data’:

        @4:Image Data: S [Lateral] "Friction"

Therefore, the ordinate is ‘Friction’.

 

Indeed, there is a matching scale

        @4:Z scale: V [Sens. Friction] (0.0003750000 V/LSB) 24.57600 V in the same section.

 

To resolve the soft scale we look up the corresponding Sens field:

        @Sens. Friction: V 1.000000

 

Multiplying it: 24.576*1.0 V = 24.576 V

 

The LSB terminology is confusing, but we know it means to divide the raw data with 2^{number-of-bits} = 65536.

 

So the conversion factor for raw data is 24.576/65536 V.

 

-----[ comparison ]--------------------------------------------------

 

We have read curves 1 and 3 correctly.

 

But we have read curve 2 completely wrong.

 

All other software says the ordinate of curve 2 is ‘Force’.  Why?

 

The units of curve 2 are Newtons.  Why?

 

The correct conversion factor for raw data is completely different.

Why?

 

 

 

 

 

[1] http://nanoscaleworld.bruker-axs.com/nanoscaleworld/forums/p/991/2538.aspx#2538

[2]  http://filexch.npl.co.uk/cgi-bin/download.pl?id=kgimtjoixnvxvhqvcssq


  • | Post Points: 14

All Replies

Top 50 Contributor
23 Posts
Points 273
Janne replied on Thu, Dec 20 2012 9:00 AM

Deflection Error can be multiplied by the cantilever spring constant to get the force acting on the cantilever.

This will give you a relative force value (offset by arbitratry value) because the deflection error is also just relative to some arbitrary baseline.

To get the absolute force, you need to set your baseline to 0. The baseline is the part where no force is acting on the tip (i.e. tip "far away" from surface, at the beginning of a force curve).

Search for the "Spring Constant:"  entry in the header to get the spring constant (if you had it set during measurement).

  • | Post Points: 12
Top 500 Contributor
3 Posts
Points 34
Yeti replied on Fri, Dec 21 2012 5:29 AM
Thank you for the answer concerning the conversion (I am the original source of the question), unfortunately, I am stuck at a prior step at this moment. I am not a SPM user, I did not carry out any specific measurement and I do not have any a priori knowledge what specific kind of data I have. I am a guy who writes software for actual SPM users. The software should load the curves from whatever file, whatever kind of data they represent -- be it I-V spectroscopy, F-Z spectroscopy or dependence of cantilever frequency on the phase of Moon. The Nanoscope file format is quite general. So it is not possible to *assume* what the file contains and read it based on that; it is necessary to *recognise* what the file contains. Using a procedure for finding out the kind of data (that appears to work for images), I can load 2 of 3 curves in some file correctly and one completely wrong (data type, scale, units). Details are in the original post. The problem is not, at this stage, that I cannot convert some specific curve correctly (that may come later). The problem is that I cannot even tell, algorithmically, what kind of kind of curve I got. That is why the original post asks *why* this should be read as Force, not how to read it if I know that it is Force.
  • | Post Points: 12
Top 50 Contributor
23 Posts
Points 273
Janne replied on Fri, Dec 21 2012 7:09 AM

Ok I understand. Maybe somebody else has a better answer, but for me the data type "Deflection Error" is equivalent to Force after a linear transformation.

  • | Post Points: 12
Top 500 Contributor
3 Posts
Points 34
Yeti replied on Tue, Dec 25 2012 3:56 AM

Janne:
data type "Deflection Error" is equivalent to Force after a linear transformation.

 

Oh, they may be equivalent but Bruker or Veeco software apparently knows there is a rule ‘if you see Deflection Error data perform this transform and show it as Force instead’.  So they are equivalent mathematically but not equivalent from the ‘what the user expects to see’ point of view.   This is a priori knowledge that does not seem to be derivable if I just get the file with no auxiliary information.  So to read the curves as expected I need to know these rules: what transforms to perform on what data, when.  Or, alternatively to know that I read the files wrong and how this can be done without a priori rules.

 

It is kind of funny that every time try to ask this question the answer is of the form ‘you can do ..., this can be converted ...’ while I desperately need an answer ‘you must do ..., you must convert ...’ (or at least should, if not must).

  • | Post Points: 10
Top 75 Contributor
13 Posts
Points 149
Hartmut replied on Fri, Dec 28 2012 11:18 AM

Hi Andres,

hope, you had a nice Christmas time.

You can do the conversion of the ordinates in the following way:

The conversion factors from LSB to volts are already given in the parenthesis of the "Z scale"-parameter line, e.g. of data set 2 ("deflection error") @4:Z scale: V [Sens. DeflSens] (0.0003750000 V/LSB) 2.500000 V. Here, the respective conversion factor is: 0.0003750 V/LSB. If you multiply your 2-byte integers from the raw data with this factor, you get deflection (or more exactly deflection error) in volts. If you want nm, you multiply further with Sens. DeflSens. If you use the 2.5V value to calculate a new hard scale (via 2.5V/2^16), you will obviously be wrong. For the other data sets it worked, because the voltages in the Z scale parameter are given as 24.57V (which is 0.000375*2^16 and therefore will lead to the same scaling factor of 0.000375V/LSB for conversion as is written in parenthesis).  

The data can be represented in 3 ways ("plot units"): volt, metric, force. This is set during data acquisition and saved in the "ciao force list" under "unit display". In case, "force" is chosen, deflection data are converted to force data in Newtons via deflection sensitivity and spring constant.

I am curious: What do you mean with "all other software"? Besides Nanoscope Analysis and Gwyddion, did you compare as well with other analysis software?

Regards (and Happy New Year),

Hartmut.

  • | Post Points: 10
Page 1 of 1 (6 items) | RSS
Copyright (c) 2011 Bruker Instruments