12V Low Voltage Disconnect with Display and SD Card Datalogger

12V low voltage disconnect with display and sd card dataloggerPictured above is a low voltage disconnect device which we recently made for a client. It offers all of the battery monitoring, protecting, and datalogging functions and features of our REUK Programmable Low Voltage Disconnect with Display and Datalogger, but with the added benefit of an on board microSD card to store the measured battery voltage once per minute.

low voltage disconnect sd card datalogger

The voltage data is written to a simple text file on the SD card. When the battery is connected to the low voltage disconnect and powers it, POWER CONNECTED is written to the log file. Then each subsequent minute, the battery voltage is written to the file preceded by the number of minutes since the power was last connected. For example the line 6,13.98 indicates that 6 minutes after the power was connected, the battery voltage was measured to be 13.98V.

While the pre-existing basic datalogging of the LVD is useful for constantly displaying the minimum, maximum, and average measured voltages, every now and then it is good to have the option to copy the data from the SD card to a PC for more detailed analysis and plotting etc.

If you need any kind of datalogger, please email neil@reuk.co.uk with details of your requirements.

Solar Water Heating Pump Controller for Distant Pool

Pictured below is our standard 2016 Solar Water Heating Pump Controller with Datalogger. We recently made a modified version of this controller for use in a particular situation where the standard unit would not be very efficient.

2016 SOLAR PUMP CONTROLLER WITH LCD DISPLAY AND DATALOGGER. Solar water heating pump controller with backlit display to show temperatures and system status information and a dataloggerIn this case, the controller was to be used to heat a swimming pool. The problem was that this pool was located 30 metres away from a garage where the controller would be fitted, with 50mm water pipes already installed running underground to and from the pool from the garage (on the roof of which were installed solar water heating panels). There was therefore no easy way to retro fit a temperature sensor at the pool – that would necessitate digging a new 30 metre long trench, fitting sensor cable into an armoured tube, and burying it.

It was however possible to fit a temperature sensor to the return water pipe where it emerged in the garage, but the contents of that pipe would cool down much faster than the large volume of water in the pool, and this would result in the pump being turned on frequently unnecessarily, often cooling the pool instead of heating it.

To get around this problem, the controller was modified to provide additional features. The key feature was that the pump would not be turned on until the temperature of the solar panel exceeded a user programmable value. When this threshold is reached, the pump is run for a user programmable number of seconds (TD) which circulates the water through the system sufficiently to get an accurate measurement of the temperature of the pool water. When TD seconds have elapsed, if the temperature differential between the solar panel and pool exceeds the user programmed differential (diffOFF), the pump will continue to run until the differential falls below diffOFF – standard operation for the 2016 controller.

If however after the test run of the pump, the differential is not high enough, the pump will be turned off, and the temperature of the pool sensor will be saved. For up to the next four hours this saved value of the pool temperature will be used rather than the sensor temperature (which will rapidly fall when the pump is turned off). The pool temperature over the course of 4 hours will not fall by more than a degree or two, so using this saved value is acceptable for efficiency. During the 4 hours, if the temperature differential exceeds the second user programmed differential (diffON), the pump will be run as per standard operation and after TD seconds the controller will start to use the current pool temperature sensor measurement instead of the previously saved value as the pipe in the garage will now be at pool temperature. The pump will continue to run until the differential falls below diffOFF.

If during the 4 hours, diffON is not achieved, the controller will wait until the solar panel temperature exceeds the user programmed temperature before running the pump for TD seconds again and repeating the above processes.

Overall these modifications (together with a few additional features not described above) will result in a far more efficient system than our standard controller would have given and less wear on the pump.

If you have any special requirements which are not met by our standard controllers, please email neil@reuk.co.uk with details.

Multi Level Low Voltage Disconnect with Display

Pictured below is a special multi level low voltage disconnect controller which we recently made. As with our other low voltage disconnect products, this device is designed to automatically disconnect loads from a battery when the battery voltage drops below a user set threshold. The loads are then reconnected when the battery voltage has risen above a second higher threshold.

Three level low voltage disconnect (LVD) controller with relays and display

What makes this low voltage disconnect special is that it can be programmed with three independent pairs of voltage thresholds, and control three sets of loads. If you have a selection of devices powered from your 12V battery, some will be more important than others, and some will use more power than others. Having multiple LVD voltage thresholds allows you to choose which devices should have their power cut first as the battery charge level goes down. Cutting the power to high consumption low importance devices leaves more charge available to keep the more critical devices going for as long as possible.

If the battery was powering a large amount of lights for example, one light could be connected to the lowest voltage threshold output to stay on as an emergency light, while the rest of the lights could be turned off at a higher threshold. On a boat, the fridge and navigation system would be connected to the lowest threshold output, while the television and most lighting could be connected to a higher threshold.

display for three level low voltage disconnectThe standard display shows the voltage measured on the battery, as well as the status of the three outputs corresponding to the Bot (Bottom), Mid (Middle), and Top ranges. In the image above, at a battery voltage of 12.32V, the Top range is off while the other two remain on.

all outputs off low voltage disconnect

At a lower voltage (10.55V shown above), all three outputs are off.

all outputs on low voltage disconnect

…and then with the battery voltage fully restored (13.53V while being charged), all three outputs are on.

By pressing the View Thresholds button, the user set voltage ranges are shown on the display.

Showing the voltage ranges for the multi threshold low voltage diisconnectAbove for example the bottom range has the low voltage disconnect at 11.0V and the cancellation voltage (at which the output will be turned on again) at 12.2V.

programming the multi threshold low voltage disconnectProgramming the six voltage thresholds is done using the two on board buttons. These thresholds are stored in non-volatile (long term) memory and are therefore not lost when/if it is disconnected from the battery.

When the battery voltage is measured to have moved above or below a threshold which will result in an output status changing, the back light of the display flashes on and off. The voltage has to remain constantly on the new side of the threshold for 10 seconds before the output status will actually change so that any spikes and dips in measured voltage do not result in devices being turned on or off unnecessarily.

If you need any kind of low voltage disconnect, battery monitor, and/or datalogging device, email neil@reuk.co.uk with details of your requirements.

Intel Curie tinyTILE – Mini Arduino 101

intel curie tinyTILEPictured above is the new tinyTILE development and production platform featuring the Intel Curie module. This board is a miniature version of the Arduino 101 and measures in at just 35 x 26mm (1.38 x 1.02 inches), and has been designed to fit on prototyping breadboards.

The tinyTILE board can be programmed using either the Arduino IDE or Intel’s own software – the Intel Curie Open Developer Kit (ODK), and the I/O connections are functionally identical to those on the Arduino 101.

With its small size, low-power consumption, array of motion sensors (6-axis sensor with accelerometer and gyroscope), and Bluetooth Low Energy (BLE), tinyTILE should be ideal for battery powered wearable devices and any other IoT projects involving motion monitoring.

tinyTILE has a 32-bit 32 MHz Intel Quark SoC, 384 kB flash memory, and 80 kB SRAM. It also includes a digital signal processor (DSP) offering quick pattern matching identification of actions and motions.

tinyTile can be USB powered via its micro-USB connector. The board has its own internal 3.3V regulator and 3.3V (but 5V tolerant)  I/0 connections.

tinyTILE is available now from element14.com (US+) and cpc.farnell.com (UK) amongst others.

Timer for Poultry Egg Incubator

Pictured below is a timer we built to accompany a Poultry Egg Incubator Controller we made recently.

timer for poultry egg incubatorWhen incubating eggs it is very important to keep track of the time since they were laid since, for example, eggs must be turned regularly until the last few days before hatching, and for some eggs the temperature and humidity ranges need minor adjustments during the incubation period.

Our timer is 12VDC powered like the incubator, and has a display to show the elapsed time since it was last manually reset. The time is shown in days:hours:minutes:seconds format.

Since eggs take anything up to 6 weeks to hatch, the time elapsed is stored in memory on the timer microcontroller every 15 minutes so that if the power to the timer is cut for any reason (e.g. flat battery or accidental disconnection of one of the power leads), when the timer is reconnected to power, it will restart from within no more than 15 minutes of where it was before the power cut.

After incubation has finished, a reset button (Reset Button 1) must be pressed for 1 second to reset the timer to 0:00:00:00 ready for the next lots of eggs to go into the incubator.resetting poultry egg incubator timer

This timer is built around an Arduino Pro Mini. The microcontroller with its on board crystal keeps time well enough for this application. (If more accuracy was required we would have added a real time clock (RTC).). Reset Button 2 on the timer resets the internal clock which is limited to 4,294,967,295 milliseconds (just under 50 days) – plenty of time for pretty much everything up to ostrich eggs, but not long enough for emperor penguin, albatross, and some cuckoo eggs. For exotic eggs with very long incubation periods, an RTC would need to be added.

If you need a timer or a poultry incubator controller, email neil@reuk.co.uk with details of your requirements.

Poultry Egg Incubator with Humidity Sensor

Pictured below is a controller we recently made for use in a poultry egg incubator, designed to keep eggs within a very narrow specific temperature and humidity range for a few weeks. This is achieved using a heater, a fan, and a humidifier.egg incubator with humidity sensor, fan, heater, and humidifierThe eggs need to be turned at least three times per day every day except for the last few days before hatching. Previously we made a Controller for Poultry Incubator which had a motor which was turned on and off at different times of the day to turn the eggs. For this new incubator, the motor used is a very slow turning 12 VAC device makes 6 full rotations every 24 hours. That motor therefore did not need to be controlled with a timer – it is just left running at all times.

egg incubator controller status summary displayThe display for this controller shows the current measured temperature from the waterproof DS18B20 digital temperature sensor (read at 12 bit resolution = 0.0625°C resolution), and the humidity from a DHT11 sensor (within 5% accuracy). The DHT11 actually has a built in thermistor, but its temperature measurements are nowhere nearly accurate enough for this type of project.

The bottom line of the display shows the three devices being controlled – heater, fan, and humidifier respectively. In the image above, the heater is marked as being on. If the humidity level gets too low, the humidifier will be switched on. If the temperature gets too hot, the fan will turn on (and of course the heater will already be turned off by then).

Setting humidity range for poultry egg incubator

The user has full control over the thresholds at which the heater, fan, and humidifier will turn on and turn off. The temperature thresholds for the heater and fan can be set in steps of 0.2°C, and the humidity thresholds in steps of 2%.

For example, the heater could be set to turn on at or below 36.4°C and off again at or above 38.4°C. Then the fan could be set to turn on at or above 38.6°C and off again at or below 37.4°C. Humidity should ideally be around 60% (raising to 65% just before hatching), so the humidifier could be set to turn on at or below 56% and off again at or above 64% relative humidity.

display for egg incubatorWith all the thresholds programmed in by the user according to the requirements of the particular type of eggs to be incubated, a button can be pressed to show in turn the values programmed in – for example, above the humidifier is shown to be set to turn on at or below 43% RH and turn off at or above 70% RH.

If you need any kind of egg incubator controller (or the electronics for a temperature and humidity controlled humidor – functionally pretty much identical to an incubator!) – please email neil@reuk.co.uk with details of your specific requirements.

User Programmable Target Shooting Controller with Display

Pictured below is a target shooting controller which we recently made for a shooting club in Australia.

programmable shooting target controllerWe had previously made them a controller with fixed time series – for example, Standard Pistol 150s, 30s, and 10s, Centre Fire face target 3s then away for 7s repeating 5 times, and Rapid Fire 8s, 6s, and 4s. Other clubs in the area required something similar, but with flexibility in the timings.

shooting target controller display - start seriesWe therefore enhanced the software written for the original controller so that all of the different time series could be modified, reducing or increasing the time that the target faced the shooter by the operator at the range to meet specific and potentially changing needs.

shooting target controller display modify series timingWhen the start button is pressed, the target turns away from the shooter. After 7 seconds the on board buzzer sounds for half a second and the target faces the shooter. (An external 12V buzzer or siren can be connected to the terminals on the controller board if a louder sounds is required). After the user programmed time, the target turns away from the shooter (again accompanied by the sound of the buzzer), and then a further 7 seconds later, the target is turned back to face ready for the next shooter.

If you need any kind of shooting target timer controller, please email neil@reuk.co.uk with your specific requirements. (Search for shooting on the REUK.co.uk website for information on some of the other turning target timers we have made in the past.)

Target Shooting Timer Example Instructions

programmable target shooting controller with display

Pictured above is the version of this shooting target timer controller which we currently sell. It is physically smaller, but otherwise functionally identical to the original, and the connections are the same as per the photographic diagram at the top of this post.

On the controller there are two buttons. Press button1 (Down) to run the currently displayed series. Press and hold button2 (Up) for more than half a second to be able to select from the seven saved series (using button1 to go down and button2 to go up through the list).

The device is fitted with a 10A rated SPDT relay with NO, COM, and NC connections. It has the relay energised when the target is to be faced, and de-energised when the target is to be edged. You can therefore wire things up whether your solenoids need to be powered to face the target, or need to be powered to edge the target using the NO-COM or NC-COM connections respectively.

When a series has run to completion, the target will edge, the screen will go blank for 7 seconds and then the target will face with the controller reset and ready to be run again.

In order to modify any of the timings of the seven pre-programmed series, press and hold button1 for 5 seconds or longer. Then, use button1 to decrease the number of seconds for the selected series, or button2 to increase the number of seconds. The value will be shown on the screen as you increase or decrease it. After five seconds of inactivity (no button presses), the new displayed value will be saved under the name of the selected series – e.g. Standard Pistol 150s could become Standard Pistol 125s or whatever you have set it as.

The maximum time limit is 254 seconds for any series – e.g. you could set Standard Pistol 254s, but you could not set Standard Pistol 255s or higher.

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 neil@reuk.co.uk with details of your requirements.

Arduino Thermostat with Full Code

We are often requested to build simple thermostats – devices to turn something on or off depending on a measured temperature. Pictured below is an example of one such thermostat we made recently using an Arduino Pro Mini.

arduino thermostat

This particular thermostat was designed to keep a 12V 2A output turned on unless the temperature measured on a waterproof DS18B20 digital temperature sensor reaches above 80°C. The output must then remain off until the measured temperature has fallen to below 70°C.

The thermostat was designed to control a low voltage pump, turning it off if the water in a hot water tank fed by a solar water heating panel gets to be too hot. The 10°C temperature difference between the turn off and turn back on temperatures is hysteresis to prevent the pump being turned on and off rapidly multiple times.

In the image above a MOSFET is used to switch the small pump on and off, but typically a relay would be used in most pump controlling thermostats so that high currents and high voltages can be switched by the low voltage powered thermostat. Therefore, in the Arduino sketch, all references are to a relay. The relay will need to be connected to the relevant Arduino pin via an NPN transistor.

Here is a poorly drawn and badly photographed circuit diagram of the thermostatic relay controller. Click on the image to view it in larger size.

circuit diagram for arduino thermostat relay controller

We used an Arduino Pro Mini because of its small size and price, but any Arduino board could be used for this type of controller.

While the Arduino Pro Mini has an on board 5V regulator, we prefer to use an external low drop 5V regulator (lp2950cz-5.0) because they are much more robust and will cope with higher input voltages – for example 12V batteries while they are being heavily charged.

The red LED shown on the circuit board at the top of this page is not used in this project.

Here is the full sketch (source code) for this thermostat

/*
 * REUK.co.uk - 2017
 * This is a thermostat which will keep a relay closed
 * until the temperature measured reaches 80 degrees C, and then will then
 * then re-close the relay only when the temperature falls to 70 degres or below.
 */

// For the temperature sensors
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire plugged into pin 3 on the arduino
#define ONE_WIRE_BUS 3

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensor1(&oneWire);

const int relay = 5;

// Fixed temperature thresholds - turn off output at >80C, and turn back on again when <70C
const float onTemp = 70.0;
const float offTemp = 80.0;

// Keep track of whether the relay is energised/closed (1) or open (0). Start with closed (1).
int relayStatus = 1;

void setup(void)
{ 
 // Start up the library
 sensor1.begin();
 //set the resolution to 10 bit ADC
 sensor1.setResolution(10);
 
 // Set up the relay output for the arduino, and start with it high
 // since the thermostat only turns off at >offTemp degrees.
 pinMode(relay, OUTPUT);
 digitalWrite(relay, HIGH);
}

void loop(void)
{ 
 // Read in the temperature of the sensor
 sensor1.requestTemperatures(); // Read temperature of sensor1
 float sensorOneTemperature = sensor1.getTempCByIndex(0);

if(relayStatus == 1 and sensorOneTemperature >= offTemp-0.00001){
 // Relay is currently closed, but the temperature exceeds offTemp - therefore open the relay
 digitalWrite(relay, LOW);
 // Remember the new status
 relayStatus = 0;
 }

if(relayStatus == 0 and sensorOneTemperature <= onTemp+0.00001){
 // Relay is currently open from a previous high temperature event, but now the temperature 
 // is below the threshold so close it again
 digitalWrite(relay, HIGH);
 // Remember the new status
 relayStatus = 1;
 }

// Wait 1/10th of a second before we measure the temperature again.
 delay(100);
}

Hen House Door Controller for Dawn/Dusk or Timer Operation

Pictured below is a controller we recently made to open and close the door of a hen house automatically.

hen house door controller with light detector for dawn/dusk operation and a programmable digital timerWe make a lot of door controllers for a range of different needs, and in general they either open and close the door depending on times programmed into a timer, or automatically detect dawn and dusk with a light detector and open or close the door accordingly.

With this particular controller, the user can select between two modes – dawn/dusk mode or timer mode. If timer mode is selected, the door will open when the timer turns ON and close when the timer turns OFF. In this way the door can be made to open and close at times convenient to the owner – for example opening the door later on weekend mornings so that the poultry do not disturb neighbours.

If instead the dawn/dusk mode is selected, the door will open at dawn and close at dusk, with the ambient light level for the day-dusk and night-dawn thresholds calibrated by the user when setting up the controller and light detector in its location.

If you need any kind of automatic door controller, email neil@reuk.co.uk with details of your specific requirements.