Introduction: Triops Temperature Controlled Incubator

My son wanted to study Triops growth rate as affected by temperature for a school project. I am not an electrical engineer, nor am I a programmer. At the same time I am more of both those things than my son. So we agreed I would "lab technician" and provide the equipment, while he would do the biology (and of course write the report).

Perhaps to the benefit and also detriment of the project, I have experience researching temperature effects on organisms, so this was always going to be over engineered. He did not know that when he chose his topic, and he certainly knows it now!

Having never grown these things and like all fun projects, of course we had no idea where to start.

We started with reading and found many differing opinions of how Triops hatch and grow, and no general approach. This instructable explains the equipment. You will have to read my son's report to get the details of sands and waters. When it is finished I will attach it.

There are many Internet referfences for the type of water to use, types of vessel and also a fairly large number on just how frustrating this process can be.

We chose Triops longicaudatus, although the species is not that important at this point. We bought just eggs and food, not a full kit as the kits are both expensive and unsuitable for such an experiment (temperature controls, etc).

Are there easier solutions? Yes, of course. They are also not as much fun as doing it yourself!

Step 1: Rinse the Sand! a Lot!

Always clean your sand very thoroughly! We did this by rinsing it with tap water at least 10-15 times. More is always better!

You will see all the really fine particles coming off as you rinse and rinse. Eventually there will be almost no fine particles left and the water should be completely clear.

This removes the chemicals and fine dust from the sand.

Finally rinse it 2 or 3 more times with the final water (to remove impurities like chlorine from the tap water).

Step 2: Incubator Components and Electronics

The incubators and temperature control went through multiple iterations. The primary requirement was that it should work, and that it should be cheap!

The end result was:

1 water bath.

  • Depending on the external temperature to the water bath, this can also be insulated with polystyrene as per the pictures.

1 cold bath

  • This is the cooling fluid. We used cold water and occasionallyput ice in it.
  • The water from this bath is pumped through the pipe leading in and back out of the water bath.
  • In this way, excess temperature is taken out of the water bath and the fluid cycles round back in to the cooling bath..

1 incubator bath

  • This will contain the sand, thermistor and growth water with the Triops.
  • This will be inserted in to the water bath which isolates it from the environmental temperature and helps maintain temperature consistency.

All the baths we used were the same size and stackable, from Ikea (Samla collection).

1 arduino nano per incubator

1 Thermistor per incubator

  • This should be ideally waterproof, as per the picture.
  • Polymer coated thermistors are extremely cheap, sadly in our experience they are not waterprood and cannot be easily waterproofed. So don't go too cheap!

2 grove relays

  • 1 for the cooler
  • 1 for the heater

1 water pump (cooler)

  • Cheap and cheerful is fine as you will not pumping massive volumes

1 length of tubing

  • This should be enough to wrap around the inside of the water bath, leading from and back to the cold bath.
  • We used about 1.5m per incubator

1 heat pad (heater)

  • Taped to the underside of the water bath with aluminium tape
  • You can use two in parallel if necessary.
  • If you do use a second, pay attention to the current supply on your power input or it will not work.
  • Make sure the maximum temperature of the heat pad is not enough to damage your plastic container.
  • In the incubator examples section, you can see our heater taped to the underside of the water bath.

1 Optional air pump

  • Triops are not especially sensitive to low oxygen
  • Depending on your external temperature, surface to volume ratio, water choice and other factors you may need to occasionally oxygenate.
  • At least it will not do any harm!

1 Power supply to feed the water pump

1 Power supply to feed the heater

  • Power supplies is something to be worked out for yourself. We just got independent power supplies for each of the major devices, and ran the arduino off a USB port. The advantage of this was that the arduino could control the pump and heater simultaneously, while the USB port enabled us to collect and track the temperature controls.

The final build pictures are later in the section called "Incubator examples"

Step 3: Arduino Code and Electronics Schematic

#include <Arduino.h>

#define TEMP_SENSOR1 A0

int Vo;
int aircounter;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
unsigned long time;

// Delay interval for main loop
int standarddelay = 2000;
// This is because I want to pump water through
// the cooling system periodically to prevent stagnation
// Number of seconds between regular pump cycle
int interval = 599;
// Counter to track up to interval
int coolercounter;

// Target temperature
// Change this for what you want to hit.
float target = 20;

// The next area is where you will have to play with the settings.
// What we found is that the environment affects
// the variance of the temperature in the incubator. No surprise there.
// You need to play with it and discover for your selves what efficiency your
// cooler and heater have, and how much impact your environmental temperature has.

// If your environment is >2C below the target
float targetmax = target + 0.25;
float targetmin = target - 0;

// If your environment is <2C above the target
// float targetmax = target + 0;
// float targetmin = target - 0.25;

// If your environment is around the same as the target
// float targetmax = target + 0.25;
// float targetmin = target - 0.25;

void setup()
  coolercounter = 0;
float getTemperature1() {
  Vo = analogRead(TEMP_SENSOR1);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  return T; // Celsius
void loop()
  // Temperature read
  float c = getTemperature1();

  time = (millis() / 1000);
  // Regulation
  if (c < targetmin)
    digitalWrite(COOLER_SWITCH, LOW);
    digitalWrite(HEATER_SWITCH, HIGH);
    Serial.print(",COOLER OFF, HEATER ON");
  else if (c > targetmax)
    digitalWrite(COOLER_SWITCH, HIGH);
    digitalWrite(HEATER_SWITCH, LOW);
    Serial.print(",COOLER ON, HEATER OFF");
    digitalWrite(COOLER_SWITCH, LOW);
    digitalWrite(HEATER_SWITCH, LOW);
    Serial.print(",BOTH OFF");
  if (coolercounter < interval)
    coolercounter = coolercounter + (standarddelay / 1000);
    // Add oxygen to the water
    digitalWrite(COOLER_SWITCH, HIGH);
    digitalWrite(COOLER_SWITCH, LOW);
    coolercounter = 0;

The above code is free to help you out. There is no license from the author. Just do the science and have fun with it!

Note in the schematic that if you use a 10K thermistor, you need a 10K resistor between the thermistor and the ground connection. Same thing for a 100K thermistor/resistor.

You can test the thermistor by just holding it. I also found that if the resistor was wrong, or connections not reliable, then the values would swing wildly. So if the output is not consistent, go looking at connections/shorts first.

Step 4: Incubator Examples

We set up three incubators at 20C, 24C and 28C simultaneously.

The warmer incubator water baths were wrapped in silver lined polystyrene as the external temperature was only around 17C and going down with the time of year.

The wiring is a bit of a mess, so look closely at the schematic. The electronics and wiring were mounted on simple plastic lids to insulate the boards from each other (limited space) and to avoid water problems. This also necessary to improve electrical safety with the voltage and current going through the relays. Be careful with that!

Keeping cables as tidy as possible is always something nice, but there is not always enough time.

Step 5: Example Results

This is an example of the output from the arduino code:

24.00,23.93,936129,COOLER OFF, HEATER ON<br>24.00,23.53,936131,COOLER OFF, HEATER ON
24.00,24.03,936133,BOTH OFF
24.00,24.03,936135,BOTH OFF
24.00,24.13,936137,BOTH OFF
24.00,24.13,936139,BOTH OFF
24.00,23.93,936141,COOLER OFF, HEATER ON
24.00,24.13,936143,BOTH OFF
24.00,23.73,936145,COOLER OFF, HEATER ON
24.00,23.83,936147,COOLER OFF, HEATER ON

I put the target temperature in the output as I have been running >1 incubator, so this is useful to know which one I am looking at.

The actual temperature controls were much better than I had expected. For my son's project he tested the temperatures with another device as well, and this showed extremely good consistency.

The time counter is a very basic one. It is more for general activity tracking that for any actual function or result.

It was nice to see the state of the heater and cooler, so those are in as well.

As you can see in the picture, the Triops were relatively happy. We used the plastic mesh (mosquito filter) on the sand to estimate size without extracting them.

First Time Author Contest

Participated in the
First Time Author Contest