All posts by Wolfgang

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.


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.

WOSP-MAC, color measurement at multiple angles

Glass for buildings and cars may have different appearance with respect to color when the viewing angle changes. The angular dependence of color values is important for the design of glass coatings, and hence it is important to verify that the wanted color values are obtained after coating deposition.

The WOSP multiple angle color sensor is a lab instrument that measures color values at fixed angles of incidence of 8°, 35°, 55° and 65° in reflectance. Transmittance measurements at these angles are possible as well.

Glass samples with a width of up to 600 mm are placed on a sample stage that slides into the measurement cabinet.

Measurements can be performed using a very simple software interface – they take about 10 seconds. Results for various samples are collected in a workbook which can be exported as Excel document. In addition, results (measured spectra and related integral quantities) are stored in a JSON file for each sample.


How to develop flexible optical constant models based on given n and k tables

Materials used in thin films may differ in their optical constants n and k from the corresponding bulk versions. Even if you find optical constant tables in literature for your application you may need to make some adjustments to the n and k values. This is certainly difficult if you have just a table of fixed values – what you need is a flexible model which can adjust the spectral shape of n and k by modifying a few key parameters only. This short tutorial shows how to proceed in such a case.

Crystalline silicon is used as example. The database of our SCOUT and CODE software packages contain several silicon versions. Here I have selected the item ‘Silicon (crystalline, MIR-VUV)’. These are the n and k data, featuring several interband transitions and a slow decay of k towards the indirect band gap around 1.1 eV:

If you change the temperature of a silicon wafer or deposit poly-crystalline silicon thin films you may observe similar structures but not exactly the same n and k – a flexible model would be nice to have. Our strategy to develop such a model will be this: First, we generate ‘measured data’ which are computed using the existing n and k table values. Then, in the second step, we setup a suitable model and adjust its parameters to reproduce the ‘measured’ data. If the ‘measurements’ provide enough information the n and k values of the model should be almost the same as those of the original table.

Since we will simulate the measurements we can easily work with a system which would be almost impossible to realize. In order to clearly ‘see’ the weak silicon absorption in the visible we use a 2 micron thick free standing layer – this layer is quite transparent and it will generate a nice interference pattern. To match the amplitude of the fringes will be difficult with wrong k values – so this setup ensures good n and k data of the model in the visible and NIR. The layer stack is this:

Using this layer stack we could now generate several reflectance and transmittance spectra, taken at various angles of incidence. This would make a nice set of ‘measured data’ for the fit procedure. However, to make our life as easy as possible we can use an ellipsometry object in the list of spectra. Objects of this type have the option to compute so-called ‘Pseudo n and k’ values. With this option the ellipsometric angles Psi and Delta are represented by pseudo n and k values of a virtual single interface. In spectral regions where our silicon layer is opaque the pseudo n and k values are the same as the real ones. In the transparent region the pseudo n and k values reflect the interference structures – this looks strange, and one could certainly question the usefulness of the concept ‘Pseudo n and k’. However, the interference pattern is what we go for to get good small k values in the model. The blue curves below show the generated pseudo n and k values. Within this example we will work in the spectral range 200 … 1000 nm:

Ellipsometry objects offer the local menu command ‘Actions / Use simulated data as measured data’ which is what we need now. The blue curves are now copied to the red measurement data as if we had imported measured data.

We can now replace the material object by our first model in the layer stack. I have started with a very simple model which consists of a constant real part of the refractive index and a Tauc-Lorentz model (inside a KKR susceptibility object). It is a good idea to generate a new item of type ‘Multiple spectra view’ which can show both the original table values of n and k and the model values in one graph (lower left side). With this simple model, you cannot expect a good match since  silicon shows several interband transitions in the range 200 … 1000 nm:

However, if we limit the range to 400 … 1000 nm the simple model works quite well:

For the full range (200 … 1000 nm) we need more interband transitions. Sticking to the Tauc-Lorentz oscillator type, I have added 2 more which brings up to a new level (still not satisfying, though):

Depending on your patience (and the needs of the final application) you can add more features as you like, approaching the former table values of n and k more and more. I stopped my example at this level:

The model developed for silicon this way can now be saved to the optical constant database for future use. You can use it for studies of systematic variations of deposition conditions and generate tables like ‘resonance frequency vs deposition temperature’.

You can follow the strategy shown in this tutorial for all kinds of materials, as long as you get good tabulated values of n and k to start with.

New OLE commands exporting spectra

The new OLE command export_spectra_via_variants has been introduced in both SCOUT and CODE (object generation 5.14). The command takes 5 parameters:

  • input: the index of the spectrum object in the list of spectra (counting 1, 2, 3, …)
  • output: a variant array holding the spectral positions (e.g. wavelengths)
  • output: a variant array with simulated spectral values
  • output: a variant array with measured spectral values at the same spectral positions as the simulated values, obtained by linear interpolation between the closest available points
  • output: a string with the spectral unit