Five Channel Digital Thermometer

Pictured below is a five channel thermometer which is destined to be used as a part of a ground source heat pump heated underfloor heating system in Cyprus.

five channel thermometer for ground source heatpump

display for five channel digital thermometer

This system has an 11kw ground source heat pump with a 160 litre hot water cylinder (HWC). Soon 4 square metres of solar thermal panels will be added to heat a 300 litre thermal store (TS). The whole system has been put together by an experienced plumber using tapstats to control the flow of heated water depending on its temperature – no electronic controllers at all. He did however have the need for a way to easily monitor the temperature of the water in the two large vessels.

The two vessels have been made with pockets in them for temperature sensors – two for the hot water cylinder (one at the top and one at the bottom), and three for the thermal store (for sensors at the top, middle, and bottom).

We used our usual waterproof DS18B20 temperature sensors for this thermometer as they have proven to be accurate and very reliable.

If you need any kind of digital thermometer, thermostat, or data monitoring / datalogging device, email with details of your requirements.

Solar Swimming Pool Heating Controller with Datalogger and Display

Our 2016 Solar Water Heating Pump Controller is one of our most popular products. Pictured below is a derivative recently requested by one of our pump controller for swimming pool heating with datalogger and lcd displayThis controller will be used to control the operation of a pump circulating water through a solar thermal panel. Our standard controllers have at least two sensors – one for the pool/tank and one for the solar panel – but for this particular project only one sensor could be used: at the solar panel.

Therefore, instead of using the temperature differential between the solar panel and the pool to decide when the pump should be turned on or off, the user sets a high temperature threshold above which the pump will turn on, and a low temperature threshold below which it will subsequently turn off.

Sensible starter values would be 70 degrees C at the panel to turn on the pump, and around below 35-40 degrees at the panel to turn off the pump. With experimentation and analysis (this device has a built in datalogger) it will be possible to refine these thresholds to maximise efficiency. The pump should not be turning on and off too frequently and running for very short times, but the panel should also not be left at very high temperatures for a long time or it will radiate heat away before it can be transferred to the water.

If this device was to be used in a small pool or hot tub, and if the arriving hot water from the panel is pumped straight in without pre-mixing, a lower pump turn on temperature would be essential so that no-one gets burned on the incoming hot water.

If you need any kind of pump controller, email with details of your specific requirements.

Testing Arduino Low Power Library with Pro Mini

In general when using an Arduino Pro Mini in one of our projects or products, we use an external LP2940CZ-5.0 voltage regulator instead of the on board regulator. This is because most things we make are for 12V battery systems, and the voltage from a 12V battery can get to well over 12V which is the specified upper input voltage for a Pro Mini. We have measured that one of these regulators with a 10uF capacitor across its 5.0V output, draws a quiescent current of only 0.079mA.

We have found that an Arduino Pro Mini, whether powered as described above, or with the on board regulator draws around 20mA @ 12.0V. This is very high for an always on battery powered device – it will use 500mAh (0.5Ah) of battery charge per day. Therefore, we are always interested in testing ways to minimise power consumption.

breadboard test of low power library for arduino pro mini

We set up the above test circuit with a 12V input, and our usual LM2940CT-5.0 regulator connected to an Arduino Pro Mini (16MHz / 5V). With a sketch containing just delay(8000); in the loop() function – i.e. the Arduino will wait 8 seconds, then wait another 8 seconds, then wait another 8 seconds, etc – we measured a current draw of 19.793mA @ 12.0V input voltage.

We downloaded and installed the following Lightweight low power library for Arduino – LowPower.h, and modified our test sketch as shown below to power down the microcontroller for 8 seconds within the loop.


This time we measured the current draw to be just 6.265mA @ 12.0V input voltage – a huge reduction of around 70% power consumption obtainable just by replacing the delay function with the powerDown function from the LowPower library.

We make a lot of dataloggers and monitoring devices which spend most of their time doing nothing – just waiting to take the next measurement. Therefore this low power library is a quick and easy way to reduce power consumption.

(Note that 8 seconds is the maximum power down duration that can be set with this library, but by using loops of multiple 8 second intervals in your sketches, you can create a low power consumption delay of as long as you want.)

A standalone arduino in a low power consumption circuitIf you use a Standalone Arduino on a breadboard directly powered by a battery pack of the correct voltage (i.e. no voltage regulation required), it is possible to run your Arduino off less than 50uA @5V (<1000th the power consumption of our tests above) and therefore power something for years with a AA cells or smaller. See here for an excellent article How to Run An Arduino For Years on a Battery from the Open Home Automation website where they use the JeeLib low power library with a standalone Arduino.

Solar Water Heating Pump Controller with SD Card Datalogger

Pictured below is a controller we recently made for a solar water heating system including a full datalogger.

solar water heating pump controller with sd card datalogger

This controller is based closely around our 2016 Solar Water Heating Pump Controller which already has basic datalogging functionality – minimum, maximum, and average temperature sensor readings displayed on the LCD.

To this we have added a micro SD card reader and a high accuracy DS3231 Real Time Clock (RTC). Every 15 seconds, the temperature of each of the sensors, the status of the controller, and the date and time are appended to a logging text file on the micro SD card.

arduino data log file from sd cardThe collected data can then be copied over from the SD card to a computer for detailed analysis, graph plotting, and so on.

This controller is based around an Arduino Pro Mini coupled with an LCD module, DS3231 RTC module, micro SD card module, and DS18B20 temperature sensors – all of which are readily available and economically priced. The only difficulties with this project came from the limitations of having only 32KB of flash memory (program space) on the Arduino Pro Mini – not a lot when including so many code libraries for the various modules and sensors as well as 750 lines of of project specific code for this complex datalogging controller.

running out of sram arduino

If you need any kind of datalogger, please email with details of your exact requirements.

Saving Arduino Collected Data to Text File on Windows

We are often asked how to log data from an Arduino to a text file saved on a Windows PC. This is very simple with Linux and Mac OS, but it can be also be achieved on Windows with minimal effort.

We make a lot of dataloggers, the majority of which either store data internally and then output a summary to an LCD display, or dump all collected data to an SD card for later processing and analysis on a PC. However, it is relatively simple to collect data from any number of sensors connected to an Arduino board and send that data over a serial connection directly to a text file on a PC.

There are many software options available, but we typically use CoolTerm (available free of charge here: download CoolTerm) which is a serial monitor which will also capture transmitted data to a text file and automatically add time stamps to each line of data which are essential for a good datalogger.

As an example we slightly modified the code for our 2016 solar water heating pump controller so that every time data is taken from the two connected digital temperature sensors, those measurements and also the system status (pump ON or OFF) are output through the serial port to a connected PC. (Full details on generating Serial output from an Arduino are available here: Arduino Serial from the official Arduino Reference site.)

Download CoolTerm from the link already provided above. You will end up with an approximately 10MB zip file which needs to be extracted. When that is done, go into the folder created, and double click on the CoolTerm application.

Launch CoolTerm applicationClick on Connection > Options and then in Serial Port Options select the Port you would like to use. If you are using the Arduino IDE, in the bottom right hand corner of the window will be shown the type of board you are using followed by COM# where # is the number of the port your Arduino is currently set up to use and is also the port you should select within CoolTerm).

Selecting the serial COM port to use with CoolTerm with ArduinoAt the same time set the baudrate to 9600 (making sure that in the sketch you have uploaded to your Arduino, you have also included Serial.begin(9600); in the setup() function.

CoolTerm connection options

Assuming that you would like all data to be timestamped (adding the date and time to every line of data sent), do Connection > Options > Receive and check the ‘Add timestamps to received data’ box.

timestamp serial data from Arduino and store in text file on PC

Then to have any serial data from your Arduino automatically stored in a text file on the PC, do Connection > Capture to Text File and then click on Start. You then just have to set the name for the file that you would like your data to be stored in, and your datalogger is complete.

arduino coolterm serial monitor showing arduino collected data

To stop collecting data, you can either click on the large Disconnect icon, or if you want to stay connected to the Arduino board, do Connection > Capture to Text File > Stop.

Once you have either disconnected the Arduino board or Stopped the capture, you cannot then restart and append data to the same file – you can only overwrite the original file or start a new one. If you want to pause capture and then restart it to append to the same file, do Connection > Capture to Text File > Pause to pause, and then Connection > Capture to Text File > Resume to resume it at a later time.

Data collected from solar pump controller from Arduino via Serial and CoolTerm to PC

When you have finished capturing data, you will end up with a text file of everything captured which can be processed and visualised using Excel or a similar application.

24V Low Voltage Disconnect with SD Card Datalogger

Pictured below is a low voltage disconnect device we recently made for use with a 24V battery system. In addition to the user-programmable low voltage disconnect functionality and LCD display of our standard Programmable 12V LVD with Display, this modified 24V device also includes a full datalogger, storing measured battery voltages at regular intervals to a micro-SD card for later analysis.

24V Low Voltage Disconnect with SD Card DataloggerThis particular unit is destined to be used by a company specialising in the maintenance of the UK’s transport infrastructure; with the low voltage disconnect used to protect batteries from being overly depleted, and the datalogger used to track the rise and fall of battery voltage over time.

If you need any kind of low voltage disconnect and/or datalogging solution, please email with details of your requirements.

Voltage Measuring Datalogger with micro SD Card

Pictured below is an Arduino-based datalogger we recently made for measuring the voltage output of induced EMF in coils through which a magnet is passing. The voltage output needs to be logged once per second for up to a few hours.

SD card dataloggerThis particular datalogger is 12VDC powered, and will measure and log voltages up to 15VDC. (The induced voltage to be measured in this project has been measured with an oscilloscope not to exceed 5V).

Each time the datalogger is connected to the power source and to the coil to be measured, a new log file is created on the supplied 2GB micro-SD card. An on board reset button can also be used to start a new log file.

On start up or when reset, the SD card is initialised and checked to ensure that it is present and working properly. If it is not, the red LED turns on and stays on to warn the user – there are few things worse than running an experiment only to find that no data was collected. If all is well with the SD card, then once every second the coil voltage is measured and appended to the latest log file.

When the experiments are complete, the SD card can be removed from the datalogger and accessed via a PC for processing and analysis. The generated datalog files are simple text files with each measured data point on a new line in chronological order.

If you need a datalogger,  email details of your exact requirements to