Connecting a thermocouple and amplifier to the Stardots evolved-horizon platform

In order to use Evolved Horizon™ to collect data from a thermocouple, the signal needs to be boosted using an amplifier such as the Adafruit MAX31855 breakout board, which is then connected to the SPI port on processor board where you are running Evolved Horizon™.

Step 1 Hardware setup

This step requires a small amount of assembly, which will be described here. This amplifier only works with K-type thermocouples.

The board comes with a 2-pin terminal block for connection to the thermocouple, and a pin header for connecting to the processor board. These need to be soldered together.

The Adafruit MAX31855 components

Terminal block and pins soldered on to board

The thermocouple is then connected to the terminal block on the amplifier, observing the polarity marked on the board. The negative wire of a K-type thermocouple will be coloured red and will be magnetic. If you connect the wrong way around, the temperature recorded will be wrong, and you will see that it decreases as the junction gets warmer. A 0.01 uF capacitor should be added across the thermocouple leads if it will be used in electrically noisy environments.

Jumper leads are then connected from the pin header to the processor board. Ground and Vin are connected to corresponding pins on the processor, the 3v tap is ignored, and DO, CS and CLK are connected to whichever pins have been assigned to these functions on the processor.

Jumper and thermocouple cables connected

The assembled system

The system is now ready for Evolved Horizon™ to be run.

Step 2 Application start, Firmware and User preperations

Double-click on the Evolved Horizon shortcut to start the Booter. The Booter first checks booter updates, license, and Evolved Horizon updates, and then starts the actual application. The reminder of this step may be skipped if a) you already have uploaded the Stardots ARDUINO firmware to a supported ARDUINO and b) have a Evolved Horizon user that you want to use. Click the settings button on the launch screen, as seen below.

Startup screen for the Evolved Horzion application. The MCR-runtimes are loaded and depending on your system it may take up to a minute. Please wait…

The launch screen for Evolved Horizon. You may configure new (application) users, upload firmware to device by clikcing on the settings button indicated by a green Arrow.

By clicking on setup-button you are presented to the Configuration & Information interface. If you wish, you may add a new user by clicking on the “+” button below the user table, as seen in the screenshot below.

Add, remove and configure new application users. The Root Profile Folder is were all the modules, scripts and exports are saved. If you want to use the shared folders modules etc. by checking the “Use Shared Folder”. Use “Shared Folder Primary” to indicate the priority of the search and save folder.

Upload (“flash”) a supported device by choosing device class, type and firmware. Choose the size of the data buffer (length x #channels) and specify the USB port.

To be able to use an ARDUINO for Evolved Horizon, you must upload a firmware to it. A firmware is a piece of code that Stardots have written in C++ that provides the link between your computer and the hardware of the ARDUINO. The firmware is located in your …/Resources/hardware/firmware folder and the application will auto-detect any new firmware available for upload. Please select your ARDUINO and use the newest firmware. There are often many choises for buffer size. This size indicates the amount of data points your ARDUINO may hold. The buffers are in compile-time, meaning that they are static, and must be choosen before uploading the firmware. Compile-time buffers are preferable to use in embedded systems due various details that will not be discussed here. The buffer sizes are displayed in [length x width] notations. Length is the number of data-points per channel, and width if the number of channels. In this tutorial we choose an ARDUINO ZERO, firmware [], 300×12 buffer size (up to 300 datapoints and 12 channels) and let the application decide the USB-port. OBS: please plug your USB-Cable to the programming port, and remove all other (if any) ARDUINO boards! Press upload.

Close the “Configuration & Information” interface by clicking the back-arrow or by closing the window. You are now ready to launch the application and define your experiment.

Step 3 Launch Evoled Horizon and configure Modules

At the launch screen, choose the user and press “Launch”. The only mode supported at this time is local. We are planning to support remote client/server to be able to remotely configure modules, run experiments and analyse the data. After the launch sequence is completed, your are presented to the Welcome Screen of the Client. Here you may enter Evolved Horizon four main interface: Console, Modules, I/O and Analysis. The console is the interface were you may see detailed information from the server, run various commands or whole scripts. The Console will not be discussed in detail in this tutorial. The “I/O” interface is what runs the experiments, i.e., the real-time acquiring of the sensors. The “Analysis” interface includes a combined database viewer/editor/exporter as well as a visualizer and signal processing tool.

The Launch screen of Evolved Horizon. Choose the correct user and mode (only “local” supported right now). Press “Launch” to start the client/server.

The Welcome screen and its four buttons for the main interfaces; Console, Modules, I/O and Analysis.

For now, lets turn our attention to the “Modules”, and display its interface by clikcing on the icon. You are now presented with the configuration interface for all the various modules. The I/O modules are arranged in an hierarchy, as seen in the figure below. All modules may be combined to form different experimental settings. Please note the minimum and maximum amount of sub-modules; e.g., a session may only have one device but as many channels as the hardware may support.

Hierarchy of the Evolved Horizon I/O modules.


We start from the bottom of the I/O-modules by clicking on the “Plots” on the left side. Lets configure a line plot for the acquired thermocouple data. Give the plot a suitable ID (it will be used later), and some x- and y-axis lables and check the “X-axis flow” under advanced settings. The latter setting will constantly update the limits of the x-axis and, hence, simulate a “flow”. However, this settings could be somewhat taxing on your hardware, if you do not have a sufficiently computer performance, uncheck this setting. Lets now define a thermocouple channel by clicking “Channels->New ->Sensor Chip -> ThermoCouple -> Adafruit 31855”, as seen below. Choose a suitable ID and match the “Data Port / DO” , “Chip Select Port / CS” and “Clock Port / CLK” to those digital pins on the ARDUINO that you have connected your Adafruit to (see step 1 above). Couple the channel to the plot, i.e., configure where the channel shall plot its data, by selecting our line plot from the “Plot” setting under “Sub modules”. Click Create and see the channel table to verify that is correctly configured.

Add a new plot by clicking on the “Plots” followed by clicking on the “+” sign. Choose “Line Plot” as the Plot type.

Define a new thermo-couple channel by clicking on “Channels” followed by clicking the “+” sign. Select Sensor Chip-> ThermoCouple -> Adafruit MAX 31855 as the channel type.

Define to which plot this channels data shall be rendered by selected the one (or many) plots from the “Plot” setting under “Sub Modules”.

An overview of the currently loaded channel modules.

Now lets create a new device: our newly flashed ARDUINO ZERO (or whatever device you may have). The interesting setting will be the USB-port; it must match the port which your operating system has designated. There are various ways to descover the correct USB-port of the ARDUINO:

  1. (Easiest). Open the console of the Evolved Horizon by clicking on the console button located in the lower left corner of every interface. Type “serial” for a list of devives connected to the computer.
  2. (Windows) Open or search  for “device manager”. Expand the “Ports” to see the list.
  3. (MAC/Linux) Evolved Horizon is currently not supported
Create a new device by choosing the correct device type and USB-port.

After you have created the ARDUINO device module, verify that the device is properly connected by inpecting the status column of the deive list. It should read “Ready”… if not, please verify the USB-port and that you have successfully uploaded the Firmware to it (as described in Step 1 above). Now we have to define a “session” module that essentially describes the:

  1. Channel(s) to use (1-64)
  2. Device to use (1)
  3. I/O sample-rate in Hz (1-10000 Hz)
  4. Session length, in seconds (1-inf)

See screenshot below for an example. Please note that a session requires 1 device and 1-64 channels and are defined in the “Sub Modules” section.

Create a new session and couple it to one device and one or many channels…

We are almost finished. We need two more modules; a database and an assembly. Since we want to store all collected sensor data we want to configure a database module (although this module is optional); lets create a binary, file-based database. Key settings here are, as always, the ID and the Database Root Folder. The actual database will reside in the …/<database root folder>/ID/. Please folder choose on a fast drive that you have access to, and that you have a backup strategy.

Evolved Horizon highly optimized binary file-based database that is capable of fast storing and retreiving of hetergenous data, even up to BigData…

Finally, we are ready for the Assembly module; the final module in the I/O tree. This module is what you run in the I/O interface. You want to give it a short describing ID and to couple it with 1 database (optionally) and 1-64 sessions.

The top I/O module, the assembly. An assembly is what you run at the I/O interface.

It is now perhaps easier to understand the I/O module hierarchy. You may now define new experiments by resuing the previous defined modules, construct new ones. The possibilites are virtaully endless. Some tip:

  • Keep the IDs short but descriptive.
  • Read the help at the bottom of the settings to gain insights about a particular setting.
  • Try to resuse as many modules as you can, to keep the number of modules limited and to have one place to change the settings.
  • If your experiments (assemblies) are very different and used at different times, and perhaps by other physical users, consider creating a new Evolved Horizon user in the launcher instead.
  • Type [modinf -complete] (without the []) in the Evolved Horizon console for a complete listing of all information and settings. (type [modinf -complete -file “my modules.xlsx” -open] to export all of them to excel).

Yay – a bit of scouffling, but we are now ready to start meassuring the temperature! Return the welcome screen by clicking the Back button in the top-left corner or by closing the window.

Step 4 Start the I/O

Having defined a complete assembly with atleast one session, we may now start it by adding it to the I/O queue and verify that the “Start” button is enabled. If not, something is wrong, and the status may give you hint of what it is…

The Welcome screen and its four buttons for the main interfaces; Console, Modules, I/O and Analysis.

Add assemblies to the I/O queue, and if all assemblies in the queue are ready you may start the queue. Prior to start you may shift assembly queue position, remove assemblies etc. Press refresh to update module and queue status. Press restart to clear queue and restart the I/O Engine.
Step 5 (optional) Examine the result and export data