by Floris Wouterlood
Leiden, the Netherlands
November 21, 2016
The floor heating system in the living room of my home operates with four loops of tubing embedded in the floor slab. Operating temperatures are monitored with Dallas DS18B20 sensors attached to the loops where the tubes enter and leave the slab. There are eight of these sensors, while two extra sensors monitor the temperatures of the main supply and return pipes of the floor heating manifold. All sensor wires converge onto a junction box that contains a miniboard with the necessary connectors and two additional DHT11 relative humidity sensors. From this junction box a d-sub cable runs to an Arduino Nano mounted on a board that also contains 3.5 inch color TFT screen. This microcontroller/display board is mounted in an attractive acrylic photo display. The present paper describes the construction of this Arduino based monitoring system.
When the living room of my home was renovated I seized the opportunity to add floor heating. The room now has four heating zones defined by loops of polyethylene tubing embedded in the floor slab. A manifold receives hot water from the central heating furnace, regulates the temperature of the circulation water that enters the loops and pumps the water through the loops (Figure 1).
Figure 1: Manifold and tubing belonging to the floor heating system. Picture taken before the cement floor slab was poured.
The manifold offers in total 10 spots where specific temperatures of input- and output water can to be monitored: manifold supply, manifold return, and input- and return temperatures for each of the four loops. The complete temperature picture and its continuous monitoring enables me to play with the energy output of each heating zone. I can fine tune the floor heating to get a maximum of comfort while spending a minimum of energy. A secondary aim in this project was to measure relative humidity in the living room. An extra condition was that data should be displayed neatly arranged and immediately visible in an aesthetic manner.
For this project I needed ten temperature sensors at various strategic positions, and relative humidity sensors. In a previous project I applied a 3.5 inch 320×480 pixel color TFT display (described in detail in both “attic project” papers, see section Previous publications). I like that kind of screen. Its relatively large dimensions make it possible to present all relevant data in a single viewport. With a TFT screen data can be presented in a much more attractive way than with a monochrome LCD display.
Choice of sensors and microcontroller platform
The ‘Arduino’ marketplace offers many cheap temperature and humidity sensors. Initially I had selected the DHT11 sensor for combined temperature and relative humidity data acquisition. The DHT11 however proved to be disappointingly inaccurate for temperature sensing (2 degrees Celsius inaccuracy). Nevertheless I applied the DHT11, yet only for relative humidity measurement. To counterbalance its inaccuracy in relative humidity sensing a pair of these sensors was used in the design and their data averaged. A much more accurate (tenths of Centigrade) temperature sensor than the DHT11 is Maxim’s Dallas DS18B20, whose clever design allows multiple sensors running on a single bus. The latter is a valuable feature given the fact that an Arduino has a limited number of digital pins available supporting functionality while a TFT screen already ‘consumes’ many of them. The DS18B20 offers a very attractive price-performance yield and the single-bus design guarantees that one won’t easily run out of programmable Arduino pins.
As TFT displays are typically marketed as shields, the Arduino Uno Mega would be the typical microcontroller platform of choice. However, to challenge myself I aimed at designing a multi-temperature- and humidity display with a TFT screen using the Arduino Nano as its microcontroller board. The Nano is small and together with a big TFT display can be incorporated in a small assembly mounted in a modest, attractive display casing.
Arduino Nano microcontroller board;
320×480 TFT display shield ILI9341 compatible;
10 Dallas DS18B20 single bus temperature probes taped to the input- and output segments of the floor heating tube loops;
2 DHT11 relative humidity probes;
Resistors: 10kΩ pull up for each DHT11, 10kΩ potentiometer for the DS18B20;
Print boards: main 150 x 90 mm; miniboard in junction box 80×90 mm;
Connectors: 2x d-sub male, chassis;
d-sub cable, female to female;
Acrylic photo stand 150x120mm;
Power supply: 5V to the Nano via an USB power supply.
Figure 2. Dallas DS18B20 temperature probe and DHT11 relative humidity probe, with the coding of their wires/pins. NC= not connected.
Addresses of the temperature probes
Each Dallas DS18B20 sensor chip contains a unique address of 8 bytes that identifies the sensor. In a test environment the ID addresses of the sensors were discovered and documented by connecting the probes one after another with an Arduino Nano and running a special sketch (DS18B20 address finder). Each probe was labeled with a sticker with the ID address written on it.
Location of the temperature probes
I taped the temperature sensors onto the loop tubes where they enter the floor slab, and then wrapped foam tube insulation around the tubing/sensor assemblies. Also the temperature probes taped to the manifold inlet and outlet were surrounded with insulation wrapping. The junction box (below) was positioned inside the wooden cabinet that covers the manifold and tubing (visible in Figure 10).
The junction box is a plastic electricity junction box purchased in a local electricity hardware shop. It contains the miniboard with two DHT11 sensors, pin headers, and a d-sub male chassis connector mounted onto it. There are no resistors because the necessary pull up resistors are mounted on the main board. A project scheme of the contents of the junction box is presented in Figure 3 while the actual miniboard is shown in Figure 4.
Figure 3. Project scheme: temperature sensor wires collect in a junction box that contains a miniboard fitted with two DHT11 relative humidity sensors. A d-sub cable connects the junction box with a board on which the Nano and a TFT display are mounted.
Figure 4. Miniboard inside the junction box. Soldered on it are two DHT11 relative humidity sensors and color-coded female pin headers that receive the pins from the Dallas temperature probes (red=5V, white = data, blue = GND). The bottom view shows the interconnection of all pins in each row of pin headers. Note that the wire colors are different from the pin header colors: red wire = 5V, blue wire = data, black wire = GND, yellow wire = DHT11 data. Pin header B is for control and maintenance purposes. The d-sub cable connects the miniboard hardware with the microcontroller/display unit.
D-sub connector and cable
Connectivity between the junction box (which for practical reasons is placed close to the manifold) and the microcontroller/display unit is maintained with a 100 cm long d-sub cable. D-sub is cheap and effective while the cable has nine wires of which five are being used in the present design (Figure 3). The junction box and the microcontroller/display unit are equipped with male d-sub chassis connectors.
TFT display and its pin assignments
The TFT display is a 3.5 inch 320×480 pixels color Arduino-Uno compatible shield. This means that the pin layout of the display is designed to be attached directly to an Arduino Uno. In order to function properly this TFT display needs to be connected with the proper pins of the Nano (see Figure 5). Pins D10 through D14 are necessary only if one is interested in using the SD slot on the shield. In the present design I used one of these pins (D10) to read data from a DHT11 sensor while the other pins were left unconnected.
Figure 5. A, back of the 3.5 inch TFT display, B: pin connectivity with the Nano microcontroller.
Wiring diagram of the microcontroller display unit board
The concept of the microcontroller display unit was to equip a soldering board with female pin headers that receive the pins of the TFT display, a d-sub connector, an Arduino Nano and a potentiometer. The latter is necessary to fine tune the value of the pull-up resistance connected to the data wire coming from the temperature sensors.
Figure 6. Wiring diagram of the microcontroller display unit board.
The actual board and its components
One consideration was to mount the d-sub connector piggy-back on the back of the soldering board, but this would have produced a visble hole in the board with wires coming from it. To keep the visible part of the design ‘cool’ the d-sub chassis connector was mounted on the front side of the soldering board.
Figure 7. Microcontroller/display unit, front.
Figure 8. Microcontroller/display unit, back.
To solve the mismatch between the male pins on the back of the TFT and the hole pattern in the soldering board I made a rectangular opening in the board that exactly fits the combination of male pin header on the TFT – female pin headers to be attached to the board. The female pin header then was glued into position on the soldering board with superglue, with pieces of transparent plastic acting as supporting collars. Also the bottom pins of the d-sub chassis connector did not match the hole pattern of the soldering board. To solve this another rectangular opening was made in the soldering board to make room for the various wires to be attached to the bottom pins of the d-sub chassis connector. The connector with its wires was then mounted onto the board with tiny bolts.
At each corner of the soldering board a hole was drilled to attach a 15 mm spacer that in turn attaches the board to the acrylic photo stand. In Figure 7 these spacers can be seen mounted into position; Figure 9 shows the assembly working and displaying temperatures / relative humidity.
On the back of the soldering board the various pins and components were connected with color coded wires to the various pins according to the wiring scheme shown in Figure 6. The actual result is shown in Figures 7 (front) and 8 (back).
Figure 9. Fully assembled, working microcontroller/display board.
With the current sketch, the temperatures of all ten probes are read and displayed one after another. As soon as this is done the relative humidity values of the DHT11’s are read, the averaged relative humidity calculated, and displayed. After this the cycle is run again. The TFT screen is shown enlarged in Figure 10.
Figure 10: Manifold, loops, junction box and pump. Inset: TFT display readout
The entire assembly uses very little power. The Nano is connected to a normal 5V DC low-power USB power supply plugged into a normal 230V AC wall outlet. It can also be powered by a USB power bank.
The sketch has complete Serial Monitor functionality.
The present assembly replaces a previous temperature / relative humidity sensing system for the floor heating loops based on a Nano connected to a LCD display. The electronic design of the current main soldering board with its components is a copy of a previous, highly satisfactory ‘attic’ project in which I aimed at measuring temperatures at various points inside and outside the home (see Previous publications, below).
While in the ‘attic’ project I applied ten DS18B20 sensors and four DHT11’s the current floor heating monitoring employs only two DHT11’s. This leaves room to add two extra sensing devices, e.g. a barometer, or a DS8B20 sensor registering ambient room temperature or outside temperature. In this respect an Arduino is an invaluable monitoring device. On top of this, data logging can be added. Limitations are the limited number of programmable pins on the Nano and the size of dynamic memory in which instructions are stored. But, with a creative approach and efficient programming an amazing number of sensors can be monitored and logged.
‘Attic project’ – paper #1’
Floris Wouterlood – Multi temperature-humidity sensing with an Arduino Nano displayed on a 3.5″ color TFT screen
‘Attic project’ – paper #2
Floris Wouterlood – Construction of a desk display with a 3.5 320×480 tft screen for multi-temperature humidity sensing with an Arduino Nano
Sketches (zipped): a Dutch version and an English version): floortemp_tft_10_NL/UK