Arduino based egg incubator

Published by MKDas on

In this article we will learn to make an Egg Incubator with Arduino UNO and other associative devices. To make an incubator, we need to maintain an optimum temperature and humidity with other parameters like CO2. As this is a learning project, so we’ll focus on basic incubator design.

Disclaimer: Electricity is always dangerous. Skill required to work with electricity. Do work with your own risk. Author will not be responsible for any misuse or harmful act. This website contents is also copyright protected. Anything copied and directly posted in your website and claiming it as yours is prohibited and nonsensical. Author published all the articles as opensource to help you making your project and learning purpose only. Learn and make one for yourself. If need any help feel free to ask the author. Author will be helpful to you. Thanks.

What is Egg Incubator?

An Egg incubator is that device which maintain an optimum temperature and humidity with other parameters like CO2 as like the hen maintain to hatch her eggs. It can be used in any biological sector. In common, incubator is known in chicken industry to help producing chicken from eggs. Here is a very common egg incubator which is available in the market.

A common egg incubator

And our goal to make this one as our basic egg incubator:

Our Target Egg incubator

Key Points for an egg incubator:

To make an egg incubator, the first thing to maintain is the temperature. Next the humidity and then CO2 level. Bigger the egg capacity more parameters to maintain. Then another job we need to do to get healthy chicken is turning/moving the egg position periodically. Normally each hen do this job herself while she is hatching. Also we need to reduce CO2 amount from the incubator room. So the key point of this project will be:

  • Temperature control.
  • Humidity control.
  • Turning.
  • CO2 level reduction.

Here we’ll make the very basic one. So that anyone can build one for himself.

Temperature Control:

To control the temperature, we need a control system that can heat, cool and can sense temperature. We also need to spread the heat inside properly. That is why we will also need a circulating fan. So to make this system we’ll use these items:

  • A heater
  • A cooling fan
  • A circulating fan
  • Relays to turn on/off the heater and fan
  • Temperature sensor


In big incubator, large heater elements are used but for our small one, we will use simple incandescent lamps as our heater. A 100Watt lamp for this purpose will be enough. To reduce the light intensity, we can use to lamps in series which will draw same 100Watts and will generate same heat but heat will be more spread than using single lamp. If you wan to use more lamps in series, it will be less intensity of light but heat will be more spread.

Two lamps in series


For cooling, we can use cooling fans. Large system need large fan but we can use the very known cooling fans.

Cooling fan

This cooling fan should be positioned in outside to inside way[normally we use inside to outside way in most of the cases]. Benefits of using in this way is, we need to cool the inside air temperature but we also need to reduce the CO2 level of inside air. Positioning this way do these two job at the same time.

There may have a question, if we use the fan in outside to inside way then where the inside air will go? Yes, we should not make the incubator air tight. We need to heat the eggs but we must have to maintain little air flow inside from outside to supply some Oxygen to the eggs. Yes, hatching eggs need Oxygen like we breath but not in high volume. A very small volume they need. Also heated eggs produce CO2. This gas build up reduce chicken production.

Circulating Fan:

We can use cooling fan as our circulating fan. Two or Four fan will be good for our incubator. These circulating fans should be positioned inside in circular way. This will maintain a well air circulation as well as it will reduce concentrated heat build up. A positioning like this will be enough to maintain proper air circulation.

Circulating fan and heater lamp positioning

Relay switch:

Relays are good for AC lamp switching. Although there are multiple ways to do this job but as basic one we can use relay for both lamp and fan controlling.

A commercial relay

Temperature Sensor:

There are different types of temperature sensor available in the market. You can use any of that if you wish and know how to use. But here in out project, we’ll use LM35 Temperature sensor.

LM35 pinout

This sensor gives 10mV/’C. From that linear data, we can calculate the actual temperature.

Humidity Control:

To control humidity of the system, we need to measure the humidity first. To measure humidity, here in our project we’ll use DHT11 as our humidity sensor.

DHT11 humidity sensor

And to add humidity we need an humidifier. But for small incubators we can not use the available one to humidify because those makes high amount of fogs quickly. That is why we do not need any humidifier for small system. But if you wish to add, that can be added in bigger system. Here in our project, we will simply use a small bowl of clean water and some cotton balls on that.

A bowl of clean water

As the inside temperature is warm and there is air flow inside, so this bowl of water will be vaporize in small amount which will maintain the inside humidity. And the cotton ball or a piece of cotton cloth will help the process. All we need to do is to check the humidity level and water level time to time. Although the control circuit will alarm if there is low or high humidity but we just need to check this bowl of water.


For turning purpose, you can do that yourself with your had if you can not arrange a tray like this:

Egg Turning tray

I had this tray in stock so I used it for this project but it’s your choice. But I’ll advice to use this type of tray. Here there is a bi-directional turning motor which helps the tray to turn and interesting thing is this motor is rated 220V AC. This makes the turning system more easier. We need to turn the eggs from -45′ to +45′ from the middle in 30~45minutes interval.

Block Diagram:

Here is the block diagram of our project:

Block Diagram

Control circuit:

We have all the accessories collected this far. Now its time to make the control circuit. We are using Arduino UNO as the controller as this is very popular device as well as very helpful for beginners.

Egg Incubator Control Circuit

Circuit analysis:

You can see that the control circuit is a very simple one. Relays are used to control lamps and cooling fans and turning motor. And ULN2003A is used as the the relay driver. We also have a buzzer as audio alarming system and to tune the temperature, we used a variable resistor. The power supply for this project is made with a 12V/3000mA Transformer (TR1), Bridge diode (BR1) and Capacitor C1. After that, we used a voltage regulator LM7812 to power arduino. We used this to prevent arduino to be damaged due to over voltage.

Sensors (LM35 & DHT11) are connected to A1 and D13 respectively. A user pot is connected to A0 pin of Arduino UNO.

Working principle:

After sensing the input parameters, Arduino decide when to turn on the heater and when to turn on the cooler. The temperature should be kept around 36.8’C. When the temperature is low, lamps will be turned on automatically. If the temperature is higher than 0.5’C from the set point, heaters will be turned off. If the temperature is higher than 1.5’C from the set point, cooler will be on. At the same time, buzzer will alarm at temperature is 2’C higher than the set point. The circulating fan is controlled according to the heater. When heater is on, circulating fan is on. When heater is off but temperature is higher than set point, circulating fan runs periodically( few moments on, few moments off).

The turning motor will be turned on for 3-4 seconds after each 30minutes. I did not calculated this time preciously. Used just like a timer counter using timer interrupt. There is no exact timing to do turning for small incubators. A turn in around 30 minutes works fine.


Here is the arduino coding for this project. Code is very simple and easy to understand.

#include <LiquidCrystal.h>
LiquidCrystal lcd(11, 10, 6, 5, 4, 3);

#define   Heater  2
#define   Cooler  8
#define   Fan     12
#define   Buzzer  7
#define   Turning 9

#define   Heater_ON   digitalWrite(Heater,HIGH);
#define   Heater_OFF  digitalWrite(Heater,LOW);
#define   Cooler_ON   digitalWrite(Cooler,HIGH);
#define   Cooler_OFF  digitalWrite(Cooler,LOW);
#define   Fan_ON      digitalWrite(Fan,HIGH);
#define   Fan_OFF     digitalWrite(Fan,LOW);
#define   Turning_ON  digitalWrite(Turning,HIGH);
#define   Turning_OFF digitalWrite(Turning,LOW);
#define   Buzzer_ON   digitalWrite(Buzzer,HIGH);
#define   Buzzer_OFF  digitalWrite(Buzzer,LOW);

#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT11
float Temperature = 0;
float Setpoint = 0;
unsigned int timer_counter = 0;
unsigned int counter1 = 0;

void setup()
  pinMode(Heater, OUTPUT);
  pinMode(Cooler, OUTPUT);
  pinMode(Fan, OUTPUT);
  pinMode(Buzzer, OUTPUT);
  pinMode(Turning, OUTPUT);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);//cr
  lcd.print("Egg Incubator");
  Timer1.attachInterrupt( timerIsr );

void loop()



void timerIsr()
  //Turning control
  if (timer_counter > 16200 && timer_counter < 16500)

  if (timer_counter > 16500)
    timer_counter = 0;


void Temperature_control()
  if (Temperature >= Setpoint + 0.5)
    if (counter1 > 20)
      counter1 = 0;
      if (Fan == HIGH)
      else if (Fan == LOW)

    if (Temperature >= Setpoint + 1.5)
    else if (Temperature <= Setpoint + 0.5)

    if (Temperature >= Setpoint + 2.0)
  else if (Temperature <= Setpoint - 0.5)
    if (Temperature <= Setpoint - 1.0)
void Read_temp()
  Temperature = 0;
  for (int i = 0; i < 30; i++)
    Temperature += analogRead(A1) * 0.5;
  Temperature /= 30;

void Read_setpoint()
  Setpoint = 0;
  for (int i = 0; i < 30; i++)
    Setpoint += analogRead(A0) / 25.6;
  Setpoint /= 30;

void PrintTemp()
  lcd.setCursor(9, 0);//cr
  lcd.print(Setpoint, 1);

  lcd.setCursor(0, 0);//cr
  lcd.print(Temperature-1, 1);

void Read_DHT11()
  float h = dht.readHumidity();

  lcd.setCursor(0, 1);//cr

  lcd.setCursor(9, 1);//cr


You can download this .ino file from here.

As this code is not so critical, so I think you can understand it easily.


I like to work with PCBs. So I make PCBs for all of my projects.

PCB of Egg Incubator

You can download the PCB file from here.


Here is my incubator what was finally completed. I gave this to one of my student to use. He resulted me after one hatch is that he’s getting 70% hatching rate. If everything is made more carefully this hatching rate will be higher. My standard commertial ones gives 85% hatching on average although those are made in standard format and with bigger capacity.

Our mini Incubator

Hope you enjoyed the project and made one for yourself. If any help required, feel free to ask. Thanks.


Mithun K. Das; B.Sc. in EEE from KUET. Blog:


Deponkor · December 12, 2020 at 1:01 pm

Nice project..
But If This project with set up button (high – low temperature & humidity & trunning motor ) manully occur is good. if u want change and modify ,I will respect u.

    Mithun K. Das · December 12, 2020 at 2:49 pm

    If you understand the working principle, you can add buttons for settings. · February 13, 2021 at 10:55 am

This is something New ! · February 22, 2021 at 9:30 am

Best view i have ever seen !

Leave a Reply

Your email address will not be published. Required fields are marked *