Introduction: TempUino a Temperature/Humidity Controller Arduino Based
This is a very simple project to build a temperature humidity controller with 2 relays to control a hot source and a humidifier. In this project i used an Arduino Uno and a DHT11 sensor combined with a lcd, potentiometer, button and relays. The button used have only the function to turn on the backlight of lcd while pressing it.
The potentiometer, regolate the setting of temperature (in Celsius degrees) and humidity (in percentage) from 0 to 99.
When the temperature or humidity reaches the set value the associated relay close the contact and turn off the associated device.
Step 1: The Supplies
To make this project we need:
- 1x Arduino Uno rev3
- 1x DHT11 sensor
- 1x LCD 16x2
- 2x 2.2KOhm Resistor
- 1x 10KOhm Resistor
- 2x 22pF Ceramic Condensator
- 1x 220uF Electrolitic Condensator
- 2x 100nF Poliester Condensator
- 1x 47uF Electrolitic Condensator
- 2x BC337 Transistor
- 3x 1N4007 Diode
- 1x 16Mhz Oscillator
- 3x 10KOhm Potentiometer
- 1x TL7805C Voltage Regolator
- 2x G5V2 Omron or Axicom Relay
-2x 3 PIN Terminal blocks
-1x 2 PIN Terminal blocks
- 2x 3 PinHead
- 1x Panel Switch
- 1x Panel momentary Button or PCB momentary Button
- 1x 100x75 mm Copper Clad Board Single Layer for PCB
- 1x A4 Glossy paper sheet
- Laser Printer
- Ferric Chloride
- 1x Plywood sheet 420x210x4mm Or a 3D Printer for the box
- Hot glue
- Wire
- Solder Iron
- Acrylic Trasparent (or your favourite color) spray paint
- 4x M4x20mm Bolt with nut
- 2x M4x15mm Bolt with nut
Step 2: The Code
Let's star from the code.
This is the simple code i used in this project.
You need the specific library of the sensor to use with Arduino. In my case i used those librarys from adafruit:
#include <DHT.h> #include<DHT_U.h> #include<Adafruit_Sensor.h> #include <LyquidCrystal.h> #define DHTPIN 8 // 8 Pin sensor #define DHTTYPE DHT11 // dht11 type of sensor used DHT dht(DHTPIN, DHTTYPE); // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //potentiometer const int tempP = A2; const int umidP = A3; //relays const int releT = A0; const int releU = A1; // costant int PMin = 0; int PMax = 1023; int statotsu = 0; int statotgiu = 0; int statohsu = 0; int statohgiu = 0; int tempimpostata = 0; int umidimpostata = 0;void setup() { //LCD initialize lcd.begin(16, 2); lcd.print("TEMP"); lcd.setCursor(9, 0); lcd.print("UMID"); lcd.setCursor(1, 1); lcd.print("IMP"); lcd.setCursor(10, 1); lcd.print("IMP"); //Out Pin pinMode(releT, OUTPUT); pinMode(releU, OUTPUT); } void loop() { statotsu = analogRead (tempP); //Read potentiometer value tempimpostata = map(statotsu, PMin, PMax, 0, 99); //Set the value from 0 to 99 based on potentiometer value statohsu = analogRead (umidP);//Read potentiometer value umidimpostata = map(statohsu, PMin, PMax, 0, 99);//Set the value from 0 to 99 based on potentiometer value int t = dht.readTemperature() - 2; //read and adjust the temperature value in Celsius from sensor int h = dht.readHumidity(); //read the humidity from sensor //Print the temperature value on the LCD lcd.setCursor(5, 0); lcd.print(t); //Print the temperature value setted by potentiometer lcd.setCursor(5, 1); if (tempimpostata < 10) { lcd.print("0"); lcd.print(tempimpostata); } else { lcd.print(tempimpostata); } //Print the humidity value on the LCD lcd.setCursor(14, 0); lcd.print(h); //Print the humidity value setted by potentiometer lcd.setCursor(14, 1); if (umidimpostata < 10) { lcd.print("0"); lcd.print(umidimpostata); } else { lcd.print(umidimpostata); } //Turn On or Off the Temperature Relay if ( t < tempimpostata ) { digitalWrite ( releT, HIGH ); } else { digitalWrite (releT, LOW); } //Turn On or Off the Humidity Relay if ( h < umidimpostata ) { digitalWrite ( releU, HIGH ); } else { digitalWrite (releU, LOW); } }
Step 3: The PCB
It's time to make the pcb.
First we need a circuit draw.
I made with Eagle and retouched with Illustrator
Next step is to make the pcb.
I used the toner transfer method to make a pcb. You can find a lot of this metod here
With this metod you don't need a UV Lamp and a photoresist. This metod it's simple and fast and i have good results with a not very thin lines.
Attachments
Step 4: The Box
I designed the box with SolidWorks and printed the shape to cut and assemble.
I transfered the shape to the playwood, cut it and glued.
Next I painted the various parts in black and printed the front panel
here the pdf for plywood cut and for the 3D printer
Step 5: The Circuit Assembly
Now we can solder the componet to the pcb and place in to the box.
This is the fun part for me.
At the and of soldering. i Spryed the back souface of the pcb with the acrylic trasparent paint to protect the circuit from the oxidation, next i glued the pcb on the back panel
Step 6: Boxing and Testing
When i finished to soldering and positioning the component, I've closed the box and tuned on using a 12V DC 1A power supply.
Now let's connect the hot source and the humidifier, set the value of temperature (in celsius degrees) and Humidity (in percentage) and go.