More on error messages …

Object generation 5.30 comes with some more script functions supporting error handling. We have generated a simple demo application in CODE which looks like this:

While some measurement routines (list of spectrometers) and other procedures produce error messages by themselves you can generate error message by a script command:

  • raise error message,0,1,This is wrong – user tried do divide by 0
  • raise error message,0,2,This is a warning only ..

Here the first integer parameter indicates the type of error, the second one the classification. ‘1’ means ‘critical error’, ‘2’ stands for warning.

The script command ‘verify function value’ automatically raises an error message if the condition the function value is out of range. You can add the keyword ‘silent’ to suppress a dialog popping up – in this case the classification is ‘Warning’. Without the keyword you get a dialog and classification ‘critical error’:

  • verify function value,of(1),0.3,0.4,reflectance maximum,silent
  • verify function value,of(1),0.3,0.4,reflectance maximum

Error messages get a timestamp and are collected in an array until the script command ‘clear error messages’ is executed.

If you use CODE to acquire spectra with a spectrometer object you can generate measurement reports which collect all measured spectra for a sample – these are JSON files. Should there be warnings issued by the measurement scripts the corresponding error messages are stored in the ‘error section’ of the JSON files as well.

The new view element ‘error messages view’ shows error messages in a view.

 

What makes the difference between a good and a very good optical model?

Answering some recent questions about optical modelling, I dug out some old slides. They explain some model improvements that were implemented a long time ago. Combined with today’s fast computer hardware they provide the basis of high quality modelling.

Optical constant models describe the response of matter to the electric fields of a light wave. The main mechanisms are

  • acceleration of free charge carriers in conductive materials (free charge carrier absorption)
  • exciting oscillations of bound charges (vibrational modes)
  • lifting up electrons from an occupied electronic state to an empty state (interband transitions)

Interband transitions

Electronic transitions can be roughly described by simple harmonic oscillators. However, these are not very realistic and should be used far away from the resonance frequency of the oscillator only. For band transitions of crystalline materials the Tauc-Lorentz model is appropriate:

Be prepared to superimpose several of these terms since crystalline materials may have feature many interband transitions, like AlGaAs:

Amorphous semiconductors and almost all oxides and nitrides used in thin film applications can be described by the so-called OJL model. It is based on some very simple assumptions about the interband  transition and states within the band gap which are caused by disorder:

For many materials the OJL model produces the correct shape of n and k with a few parameters only:

This makes fitting optical constants rather easy. In addition, the band gap parameter as well as the tail state exponent (also called ‘disorder parameter’) have physical meaning and characterize the state of the material.

Vibrational modes

Although harmonic oscillators should be the right tool to describe vibrating parts of molecules or crystal lattices they are simplifying too much. Here is an attempt to describe 2 strong and a weak side band of molecules on a metal surface:

The model is ok but the overall shape of the absorption bands is not reproduced very well. The reason is that the harmonic oscillator has a constant damping parameter, i.e. the vibration is slowed down in the same way in the center (where the absorption is strong) as in the regions of small absorption. As the amplitude of whatever vibration we might have is certainly stronger in the resonance region the interaction with the outside world is certainly stronger. So whatever causes the damping will be stronger close to the resonance frequency and weaker far away from it – at least this is very likely. The so-called ‘Kim oscillator’ model uses a Gaussian decay of the damping with distance from the center of the oscillator and it fits many absorption bands very nicely, much better than the harmonic oscillator:

Besides describing vibrational modes the Kim oscillator can also model high energy interband transitions above the OJL model and the broad band absorption of confined charge carriers (which are almost free but are blocked to leave a microcrystal).

Free charge carrier excitation

The absorption of light by the acceleration of free charges in a metal or doped semiconductor can be described by the classical Drude model. It has 2 parameters only – the plasma frequency is directly related to the concentration of charge carriers whereas the damping constant is connected to the mobility (or the inverse mean free path).

The only class of materials for which we need more than the Drude model is that of highly doped semiconductors, i.e. those materials which are used for transparent but conductive layers (TCOs). The following example shows the difference – the transmission spectrum of a ITO layer is not adequately reproduced by the (in this case too simple) Drude model:

Again, like in the harmonic oscillator case, we need to introduce frequency dependent damping. As it turns out we need to have a smooth transition between 2 levels of damping – high in the mid infrared, and low in the near infrared:

The 3 extra parameters of this model describe the difference of the damping constants, the width as well as the spectral position of the transition zone.

For many applications TCOs need to be rather thick (a few hundred nm). Be prepared to face inhomogeneity in depth of such layers. In this case you need to use 2 or more sublayers which differ in the concentration of charge carriers.

Mixed materials

Surface roughness, porous materials or mixtures of 2 phases require the computation of effective optical constants.

Unfortunately, there is not a unique way of mixing optical constants. Our software packages have the following implementations for effective material properties:

  • Bruggeman model (also known as EMA = Effective Medium Approximation)
  • Maxwell Garnett model
  • Looyenga model
  • Bergman representation (very general, very powerful, but very difficult to apply). In fact, the Bergman representation includes all simple concepts, i.e. Bruggeman, Maxwell Garnett and Looyenga are special cases within the Bergman formalism.

For some composites it does not really matter which approach you take. Here is the reflectance of a SiO2-air mixture, computed using the simple expressions given above:

That should not lead to the wrong conclusion that this is always the case. Especially metals show a large variety of mixed properties. For a silver-air mixture the simple solutions give very different results (in fact, all of them will be quite wrong and you have to use the difficult Bergman approach):

Which model should I use?

Finally, here are some recommendations which model to choose:

 

New start behaviour

Using SCOUT and CODE as OLE servers in your own applications you had – up to now – no chance to verify a correct start of the software. Starting with object generation 5.28 the start-up routine gives information about the attempt to start the software remotely.

To enable response of the server to a calling OLE client the server has to survive a failing start, at least in such a way that it still can react to client requests. Whereas in the past the software would be closed when no proper license was identified it will now continue to run in a restricted mode (and show up in Task Manager).

We have implemented 4 OLE routines to retrieve status information:

  • license_status: returns an integer number charcterizing the state of the program
  • license_status_string: returns a line of text describing the status of the program
  • license_status_details: returns more detailed information about the program status
  • available_program_instances: returns the number of program instances that can be started in addition to the already running instances (most licenses have a limitation concerning the number of instances that can be operated in parallel).

 

WOSP-DESKTOP-RT system improved

Our desktop system for absolute R and T measurements has been modified: You can now use a combination of the WOSP-LEDO-P light source and an Avantes spectrometer to record spectra in the range 270 … 1050 nm. A polarizer is an optional add-on.

The system needs a table of dimensions 1000 mm * 700 mm or larger (table not included in the system). The new design allows reflectance measurements at 8° angle of incidence which was not possible with the previous version.

WOSP-LEDO-P

Following customer demands we have added a small halogen light source to the LEDO system. This enhances the intensity at the NIR end of the spectrum. Although in this case the light source is not based on LEDs alone we still call it LEDO (actually: LEDO-P): The built-in halogen bulb has an average lifetime of 20,000 hours which is in the range of the expected LED lifetime.

There is a strong increase in counts in the NIR range due to the halogen lamp (blue vs. green in the graph below):

Consequently, the NIR noise is reduced and we can extend the useful spectral range up to 1050 nm (100% line, measurements have been done with an Avantes EVO spectrometer):

Spectra taken with the new light source (200 ms integration time, 25 averages, 5 seconds total measuring time):

Stability in time: The graph below shows 25 sample spectra taken during a period of 3 minutes:

Optics in motion

Sometimes it is useful to move optical components. Scanning a sample in one or two directions can show gradients of thin film properties. Or you may be forced to move a spectrometer system to a calibration position.

With upcoming 3D printers, low cost CNC machines and laser cutters for private use, moving things has become rather cheap. Motion controllers based on Arduino boards can drive payloads at very low costs. Nevertheless, position errors are significantly below one mm which is sufficient for macroscopic optical measurements.

GRBL is the language to talk to Arduino controllers. We have integrated GRBL into SCOUT and CODE to simplify the combination of optical measurements and mechanical motion. You can use script commands to move equipment in up to 3 dimensions and take measurements at any wanted position. This opens up the route to fully automated measurement systems.