Search
  • Andrew Pelling

DIY CO2 Incubator - Arduino and Circuits

Updated: Aug 17, 2021


The electronics and code are embarrassingly primitive. In general terms, an Arduino UNO simply monitors temperature and CO2 content and turns on/off the heaters or open/closes the solenoid valve as necessary to maintain the various setpoints. I am 100% sure the whole setup can be improved and made more efficient (some areas for improvement are listed later on). However, even though this embodiment is pretty dumb it works and mammalian cells can be grown and differentiated

The Arduino is essentially operating four simple circuits:

  1. Control of a 12V DC fan.

  2. Reading temperature sensors.

  3. Reading the CO2 sensor.

  4. Relay control to supply 12V to the heaters (on/off) or to the solenoid (open/closed).

That’s it! Below these circuits will be described. It is recommended to build/test each circuit before throwing it all on a single board. Here, the whole thing was prototyped on a breadboard and then locked down on perfboard. Depending on your setup, this is probably a good ideas as the current draw by heaters can be high and may eventually damage your breadboard.

IMPORTANT NOTE: In the breadboard images below I have not shown the 12V power supply. However, you will need it! Using a DC barrel adaptor, connect a 12V supply to one set of rails and the Arduino 5V to the other (with common ground). In the images I indicate which set of rails the 12V supply should be connected to.

Download the Entire Arduino Control Code

PWM DC Fan Control

Components needed: 1x TIP120 transistor, 1x 1kOhm resistor, 1x 100uF cap, 12V DC Fan, 12V power supply

This is a very common setup. You can visit this Instructable for more info. In the current Arduino code the fan is connected to a PWM Pin, however, the fan is always on so PWM control is not really being exploited. You could just run the fan off the 12V supply and remove any Arduino control completely. In potential redesigns of the setup it might useful to have the fan come on at certain times, or change speed, etc. For this small box setup, I found that having the fan continuously on helped to keep the atmosphere well mixed and the temperature fairly stable.

Circuit for PWM Fan Control

More Pictures and Circuit Diagram
Arduino Test Code for Fan Only

Reading the Temperature Sensors

Components needed: 2x DS18B20 sensor (or as many as you like), 1x 4.7kOhm resistor.

For temperature I decided on using two DS18B20 sensors wired parasitically. Below is a circuit for two sensors, however the wiring to add as many sensors as you like is very simple (follow the link in the previous sentence). In general, the outer legs of each sensor (legs 1 & 3) are wired together and then to ground. Data is collected on the middle leg of each sensor. These are wired together and then to 5V via a 4.7 kOhm resistor. In this specific example, readings are made from Pin 12 of the Arduino which is wired to leg 2 of one of the sensors. Each sensor identifies itself automatically on the bus and data from individual sensors is easily recorded.

Circuit for reading two DS18B20 Temperature Sensors

To use the sensors in the Arduino you will need the OneWire and Dallas Temperature Control Libraries. The test code provided here is for two sensors and the data is being collected on Pin 12. Its is straightforward to change the code for a single sensor, or to add more.

More Pictures and Circuit Diagram
Arduino Test Code for Two DS18B20 Temperature Sensors

Reading the CO2 Sensor

Components needed: 1x GC-0017 CO2 Sensor.

For CO2 sensing I decided to employ an NDIR based sensor from co2meter.com (GC-0017, 0-20%). There are only 4-pins we care about on the sensor (GND, 3.3-5.5VDC, Rx, Tx) and its very easy to hook up.