How To Connect a Thermocouple Sensor

This tutorial is intended for users of Evolved Horizon – a software for acquiring, visualizing, storing and analyzing sensor data from Arduinos. If you have any questions contact us at In order to use Evolved Horizon™ to collect data from a thermocouple via an Arduino, the signal needs to be boosted using an amplifier such as the Adafruit MAX31855 breakout board, which is then connected to the digital i/o pins on the ARDUINO. This tutorial describes the whole process from hardware setup to data analyze.

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 Adafruit board comes with a 2-pin terminal block for connection to the thermocouple, and a pin header for connecting to the 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 μF 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 Arduino board. Ground and Vin are connected to corresponding pins on the Adafruit, the 3V tap is ignored, and DO, CS and CLK are connected to whichever pins have been assigned to these functions on the Arduino.

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 an Evolved Horizon user that you want to use.
Click the Setup 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. This tutorial describes the upload process, but there is a seperate, and more detailed tutorial on how to upload Stardots Firmware to an Arduino. 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 /bin/resources/hardware/firmware folder under your Evolved Horizon installation folder and the application will auto-detect any new firmware available for upload. Please select your Arduiono model and use the newest firmware.

Buffer selection
There are often many choices for buffer size. This size indicates the amount of data points your Arduiono 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 to 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 is the number of channels. In this tutorial we choose an Arduino Zero, firmware [], 300 x 12 buffer size (up to 300 datapoints and 12 channels) and let the application decide the USB-port.

USB connect
Please plug your USB cable into your computer and to the programming port of the Arduino board. Remove all other USB cables (if any)! 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, you are presented with the Welcome Screen of the Client. Here you may enter Evolved Horizon four main interfaces: 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 of the Client; enter the Modules Interface by clicking on the button indicated by a green rectangle

For now, lets turn our attention to the Modules, and display its interface by clicking on the icon. You are now presented with the configuration interface for all the various modules; an in-depth description of Modules is found in the manual found in the documentation section.

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. Press the + button to create a new Plot. Give the plot a suitable Id (it will be used later), and some x- and y-axis lables. Check the X-Axis Flow under Advanced settings. This 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 enough 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 channel’s 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 discover 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” or type devmgmt.msc. Expand the “Ports” to see the list. Device Manager
  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 inspecting 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 2 above).

Now we have to define a Session module that essentially couples the device with the channels, in addition to defining the sample rate and sample length; see screenshot below for an example. Please note that a session requires exactly one 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 choose folder located 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 Modules 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 a 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, and by constructing new ones. The possibilites are virtaully endless.

Yay – a bit of scouffling, but we are now ready to start measuring the temperature! Return to 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 at least 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. Also, in the Console, additional error info may be given.

Enter the I/O interface by clicking on the button indicated by the green rectangle

Our assembly is ready to be started

The experiment is running!

Our experiment was finished correctly (and may be restarted again!)

Great – You have now successfully conducted a thermocouple experiement! Its now easy to conduct more identical experiment (run them again), or change the existing one. For example you could:

  • Add more thermocouple sensors (add more Channels and couple them with the Session)
  • Adjust the rendering of data (e.g., add another Plot, histogram, and couple it with a Channel)
  • Adjust the session time to 1 hour instead of 1 minute (go to the Session settings)
  • Increase the sample rate (go to Session settings)

We would love to have your comments, feedback, questions and suggestions; please e-mail us:

Step 5 (optional) Examine the result and export data

To see the data you just recorded is a piece of cake: just enter the Analysis interface, find and select the experiment just conducted and finally click on the Visualize Data button. Export the data by clicking on the second button from the left below the database table, Export database. It will bring out a Export to dialog where you may choose the folder and filename and filetype (Excel or .csv).

Enter the Analysis Interface

Visualize the stored data by selecting the assembly and click “Visualize Data”. Export by clicking on the indicated “Export database” button below the database table

Choose location (folder), filename and filetype for complete raw-data export

The final exported (Excel) file will contain all data and other information from the assembly, channels and session.

Advanced data-analysis will be in another tutorial.


You may skip the manual module creation process by downloading and running the thermocouple tutorial script; unzip the scriptfile into your users script folder, open the Evolved Horizon console and type Thermocouple Tutorial and press enter. Done!