Monday, 25 September 2017

Wind Chime Wavelength Calibration

This post describes how to perform a wavelength calibration using Wind Chime. The methodology is the same as used on the 7205 UV Diode Array:

  1. A scan of the wavelengths from 198nm to 1000nm of the output of the Xenon lamp.
  2. The data is analyzed to find all the peaks in the scan
  3. These peaks are compared against a set of reference wavelengths
  4. If there is a match you can send the corrections to the Spectrophotometer

Press START SCAN to scan each wavelength from 198nm to 1000nm, this will take some time.

Progress is shown

Once done, enter your reference wavelengths. The app will already have populated the fields with default values, to remove a reference just delete the number.

Press ANALYZE, Wind Chime will find all the peaks in the scan and then attempt to find an overlapping match with the reference peaks.

The status will show the number of peaks found, here it is 16. To find more peaks, reduce the slope threshold, to find less increase the slope threshold. Press analyze to recompute.

If you don't get a match remove one of the more troublesome reference points and press analyze again.

Once you are happy press SUBMIT PEAKS, this will first send an ERASE CALPOINTS command to the spectrophotometer and then ADD CALPOINT commands for each of the reference/match pairs.

The spectrophotometer will store the calibration data in its onboard FRAM

Friday, 15 September 2017

Wind Chime v1.5

This releases sees two new screens, Photometrics and Alignment. There are also a few bug fixes and minor improvements. The navigation menu has now been divided up into categories to make it easier to find a particular function. Find Home command will now wait up to 100s before timing out.


Press blank to take a dark and blank reading, press sample to take a sample reading. You can change the wavelength from the wavelength screen, see below.

There is also a USB logging function that will log each sample to a file called photometrics.csv on an USB memory stick. Makesure you insert a USB stick before turning on logging and that when you finish, you turn off logging and unmount the drive (see my earlier post about removing USB sticks).


The wavelength screen has been revamped, there are now 2 presets for the stray light test.

Optics Alignment

The alignment screen is similar to he 73's alignment screen and has been designed for a engineer to aligned the optics.

The CALIBRATE ENDSTOP button will find the 0nm (white band) and store it in the PCB.

See the release notes for further details

Thursday, 7 September 2017

WindChime v1.4

New Features for version 1.4 of WindChime

  • Bootloader support
  • EMC Testing

Menu highlighted to show new screens
Note that you can update to v1.4 from v1.3 from within the app using the Update screen


Before using the bootloader functions, ensure you are first connected to the spectro. Note also that /dev/ttyO1 is now the default setting, however the app will remember your setting.

Currently the spectro is in Bootloader mode, press JUMP

The spectro is now in Application mode

In order to use the spectro, you will need to issue the jump command to put the Spectro into application mode.

Launch Settings

WindChime will launch automatically on boot up, you can set to connect automatically and send a jump instruction.

EMC Testing

The EMC Test screen will periodically send out the current date and time. You can either send to a printer or to a file on a connected USB memory stick. Note that if you are having problems with your USB memory stick please see How to safely eject a USB memory stick.

Ejecting USB Memory Stick

This post will describe how to safely eject a USB memory stick from the Bibby Beagle Bone Black android computer.

Follow these instructions incase you are having problems reading/writing to a USB stick.

Swipe down to reveal the notification drawer

Press the settings icon

Press the Storage option

Press Unmount shared storage

Press OK

You can now safely unplug your USB memory stick

Tuesday, 11 July 2017

Thor Burn In Program

Version 1.18.00 of Thor has a new program, Burn In, which will try to remove any moisture from the dual sensing probe. It does this by heating to various set point temperatures and waiting until the difference between the safety and block temperatures (drift) is below a certain threshold.

Starting Up

To access the burn in program, scroll the side bar to the bottom and select Burn In

Setting Up

Minimum Drift is the allowed temperature difference between the safety and block temperatures for the burn in program to continue to the next setpoint.

Time Out is the time allowed at one particular set point before the burn in program will give up waiting for the drift to come below the Minimum Drift.

Settling Time when the set point has been reached the program will wait a further amount of time before monitoring the drift

Set Points  Select which temperatures to test, 150, 200, 250, 300, 350, 400°C

Press start to start the program, once started you will not be able to change the settings.

Screen Shot

First ensure you have a USB memory stick inserted into the SMP50.

Press the menu key and press Screen Shot, this will capture an image of the screen and save it to the USB stick

This is useful for sending error reports or anomalous behaviour.

Report and Logs

The report screen shows the temperatures before and after the drift monitoring stage, and the time taken to complete the stage.

More useful is the log file, here temperatures and state are recorded every second. Insert a USB stick, and from the menu press Copy log file to USB.

Example of log output

14:25:00 250.0,250,25.0,Settling,Plateau
14:25:01 250.0,250,25.0,MonitorDrift,Plateau
14:25:02 250.0,250,25.0,Next,Plateau

Format for each row
Time block temperature °C, safety temperature °C, ambient temperature °C, burn in program state, heater state


The block temperature is accurate to 0.1°C, the safety 1°C, so expect the drift to flit about by 1°C.

The SMP50 firmware will go into an error state if the drift becomes greater than 15°C for several seconds. The burn in program will detect this error, cool for 10 seconds, clear the error and go back to the previous set point to try again.

The burn in program moves thru the following states

           (Press start)
           (Heater reaches Plateau)
           (Settling time is up)
           (drift is below the specified minimum)
           (Go to next setpoint and back to the Heat stage or Finished)

TimedOut state will occur if the time taken for the MonitorDrift stage goes over the specified Time Out setting

Error state will occur if the SMP50 reports an error, the Burn in program will cool and go back to the previous set point and resume the program from there.

Trouble Shooting

Stuck at a setpoint

The SMP50 may be stuck at at set point with a drift that does not decrease and will eventually Time Out.
1)Try a larger minimum drift value to allow the MonitorDrift stage to pass
2)Uncheck the set point

The idea here is to force the SMP50 to heat to a higher temperature, if the drift becomes too large the SMP50 will go into a error state which the Burn In program will detect, clear and return to the previous set point.

3) increase (at least double) the Settling and Time Out times to see if probe just needs more time

Drift is getting worse

The SMP40 kit I tested the program is nearly 10 years old. The Burn In program just made the drift worse, I suspect this is due to a faulty probe. However if the drift is becoming worse on new SMP50 units, stop using the burn in program. The solution to the problem will have to be rethought.

Wednesday, 5 July 2017

Guide to WindChime v1.3

This post is a guide to the features in WindChime v1.3.0


When you launch WindChime you will see the home screen which shows a title and version number. There is nothing much to do here, conveniently the nav bar  on the left will be open for you to select a more useful screen. If the nav bar is not open, press the hamburger icon in the top left corner.


Before you can use WindChime you will need to connect to a Spectrophotometer. WindChime can connect over TCP/IP or Serial Port. If you are connecting to Breezy (a simulator) enter the IP address shown in Breezy's connection screen, eg

For USB serial connectrion ,try /dev/ttyUSB0 or /dev/ttyUSB1
For direct serial connection, try /dev/ttyO0 or /dev/ttyO1 depending on which UART you are connected


Shows the status of the WindChime service and details about the connected Spectrophotometer


The WindChime service will log all communications to the Spectrophotometer. A new log file will be created each day. Select the log file on the left, WindChime will load the last 30 or so lines of the log file, as log files can be huge and display the text on the right.

Logs are sorted by latest date first, so the current log will be the first in the list.

Insert a USB stick and press COPY to copy the selected log file to the USB. Press DELETE to delete the selected log file. Press the menu button and select DELETE ALL to delete all log files.


The WindChime service will start automatically on boot up, check the boxes here to automatically connect and find home on start up, otherwise you will have to do it manually.


This screen allows you to conveniently update the WindChime app and service

Copy the latest version of WindChime to a USB stick and name the file windchime.apk, plug in the USB stick and press Update and then follow the on screen instructions.


This screen allows you to set the wavelength of the instrument. If the spectrophotometer has not been initialized, you will need to press the FIND HOME button first.

Lamp Output

This program will scan from 198nm to 1000nm and take a ADC reading at each wavelength and plot it in the chart. Press the menu button for options to copy the data to a USB stick, or send a screen shot to the USB stick.

This screen is useful for checking the accuracy of a unit with a Xenon lamp fitted, as the peaks in a Xenon lamp will be at well defined positions*. Pinch zoom the chart to zoom into a peak to see if it is at the expected wavelength.

*The lamp manufacturer may provide you with the necessary data, if the lamp is the same one as used in the UV Diode Array, you will have this data already.

Continuous Readout

This program will repeatedly take a light ADC reading every 500ms, its similar to a kinetics run.
The chart plots ADC value against time and will roll after 120 readings have been taken.

This screen is useful when adjusting the optics to maximize brightness.

Sipper Pump

If a Sipper Pump accessory is fitted use this screen to test out the motor.


If a Peltier accessory is fitted use this screen to set the temperature (20 to 50°C). The current temperature will be updated every 500ms.


If a turret / Eight cell accessory has been fitted use this screen to select its position. Note if the accessory has not been initialized, press FIND VANE first.


If a MicroVolume accessory has been fitted use this screen to set up and move the position of MicroVolume.

Monday, 5 June 2017

Wind Chime and Breezy Setup

Breezy is a PC application that simulates a spectrophotometer. Wind Chime is a library, service and tools app that provides the communications to a spectrophotometer.

The Wind Chime Service runs in its own process, the Breeze app will bind to the service and send commands to the service, the service will sends these commands on to the spectrophotometer and will send back any responses to the client.

The Wind Chime library, is a shared library used by the service and your app. The library is already included in BreezeUI, see /breeze/libs/windchimelibrary.jar. Perform a SVN update if you do not see it.

The Wind Chime Tools app, is used to configure the service's connection to the spectro and perform any initialization on the spectro, eg the 73 Series of spectros do the following when you first power them on:

  • Power On Start Test 
  • Find the zero order light
  • Find the gratings home position
  • Initialize any connected accessories

Getting Started

Here we will connect Breezy to Wind Chime via a TCP/IP socket.

First run breezy and connect to a socket:

Second, install the WindChime APK and open the Wind Chime tools app. The app uses a navigation drawer.

Go to connection, enter the IP address and Port, press connect

Go to Status, here you can check on the service's status, notice that the spectro is not yet initialized

Go to Wavelength screen and press find home. to initialize the spectro. Eventually POST and accessory initialization will be added.

On Breezy go to the Log tab and check you are seeing the comms messages

Back to Wind Chime, you can set the tools app to automatically connect and find home, via the settings screen. The app will automatically run on boot up.

Setting up BreezeUI

The various measurements, such as Photometrics, can be done either with a dummy class or one that binds to the Wind Chime service. To hook up the Breeze app to the service, edit bibby.jenway.breeze.MainModel

Comment out the line
this.spectrophotometer = new DummySpectro(2000L);

and uncomment this line
this.spectrophotometer = new ServiceSpectro(appContext);

Run Breeze and perform a photometrics measurement

Keep an eye on the Breezy log screen to see the messages that are been sent back and forth.

That's it. Note that the current version of Wind Chime is 1.2.0, Breezy were used for this post.