PENGUKURAN SUHU RUANGAN MENGGUNAKAN SENSOR SUHU DAN ARDUINO DENGAN 3 UNIT EXHAUST FAN


PENGUKURAN SUHU RUANGAN MENGGUNAKAN SENSOR SUHU DAN ARDUINO DENGAN 3 UNIT EXHAUST FAN


Dalam tutorial ini saya akan menunjukkan cara membuat sebuah rangkaian mikrokontroller menggunakan arduino uno dan beberapa sensor suhu sebagai indikator untuk menyalakan tiga unit exhaust fan. Ada begitu banyak tutorial tentang sensor suhu di internet, tutorial ini hanya simulasi menggunakan software PROTEUS 7  dan arduino .  Pertama-tama mari kita bahas tentang komponen yang kita perlukan untuk membuat indikator suhu dan pengontrol lainnya.

1.             Microcontroller Arduino Uno R3

Arduino UNO adalah  mikrokontroler berbasis IC ATmega328 dengan flash memory 32 kb dimana 0.5 kb digunakan oleh bootloader, dilengkapi dengan 14 pin output/input digital dan 6 pin input analog serta sebuah tombol riset, power jack, ICSP header, port USB, dan dilengkapi sebuah osilator Kristal 16 MHz yang menunjang dari kecepatan kinerja pada mikrokontroler tersebut.

·         Daya (Power)
Arduino UNO dapat di supply melalui koneksi USB atau dengan sebuah power supply eksternal. Supply eksternal (non USB) didapatkan dari sebuah adaptor AC ke DC atau battery. Arduino UNO ini dioperasikan pada sebuah supply eksternal mulai dari 6 -20 volt. Tetapi range supply yang aman bagi arduino adalah 7-12 volt.

·         Pin Daya pada Arduino
a.       VIN
Akses penyuplai tegangan 5 volt melalui power jack.
b.      5V
Pin output tegangan 5 volt yang diatur dari regulator pada board. Apabila board disupply tegangan diatas 5 volt, maka tegangan akan diregulasi oleh board dan dikeluarkan 5 volt pada pin tersebut.
c.       3.3 volt
Prinsip kerjanya sama dengan pin 5 volt, tapi tegangan yang masuk diregulasi oleh board menjadi 3.3 volt.
d.      GND
Pin ini adalah Ground.

·         Pin Input dan Output
a.       Serial 0 (RX) dan 1 (TX)
Kedua pin ini digunakan sebagai receiver dan transmitter serial data TTL.
b.      Eksternal interrups (pin 2 dan 3)
Pin-pin ini bisa di konfigurasi pemicuan sebuah interrupt atau gangguan pada sebuah nilai rendah, kenaikan atau penurunan yang besar dan perubahan nilai.
c.       PWM (pin 3, 5,6,9,10, dan 11)
Pin yang memberikan 8 bit PWM output dengan fungsi analog write().
e.       SPI 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
Pin pensupport komunikasi SPI.
f.        LED (13)
LED yang terpasang dan terhubung ke pin digital 13.
g.      TWI (pin A4/SDA dan pin A5/SCL)
Pensupport komunikasi TWI dengan menggunakan wire library.
h.      AREF
Referensi tegangan untuk input analog.
i.        EREF
Tombol pelindung yang memblok sesuatu pada board (reset otomatis).



2.             Sensor Suhu LM35
Pin Sensor LM35

            Sensor Suhu LM35 adalah salah satu jenis sensor yang merubah besaran suhu ke besaran listrik dalam bentuk tegangan. LM35 memiliki 3 buah pin kaki, pin1 untuk INPUT tegangan positif (+), pin2 OUTPUT, pin3 INPUT tegangan negatif/GND (-).

Dapat beroperasi pada tegangan 4 volt sampai 30 volt. Setiap suhu 1 derajat Celcius akan menunjukan tegangan 10 mV.

Persamaan:
Vout = 10 mV/1ºC

Artinya, jika terbaca tegangan Vout = 500 mV, maka temperaturnya = 500mV/10mV= 50ºC.

Berikut ini adalah karakteristik dari sensor LM35:
  • Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
  • 2Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC.
  • 3Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
  • 4Bekerja pada tegangan 4 sampai 30 volt.
  • 5Memiliki arus rendah yaitu kurang dari 60 µA.
  • 6Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara diam.
  • 7Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
  • 8Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.

Gambar rangkaian sensor LM35


Skema Sensor Suhu LM35

3.             Motor DC
Motor DC adalah motor listrik yang memerlukan suplai tegangan arus searah pada kumparan medan untuk diubah menjadi energi gerak mekanik. Kumparan medan pada motor dc disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Motor arus searah, sebagaimana namanya, menggunakan arus langsung yang tidak langsung/direct-unidirectional. Motor DC memiliki 3 bagian atau komponen utama untuk dapat berputar sebagai berikut.
Bagian Atau Komponen Utama MOtor DC
·         Kutub medan. Motor DC sederhana memiliki dua kutub medan: kutub utara dan kutub selatan. Garis magnetik energi membesar melintasi ruang terbuka diantara kutub-kutub dari utara ke selatan. Untuk motor yang lebih besar atau lebih komplek terdapat satu atau lebih elektromagnet.
·         Current Elektromagnet atau Dinamo. Dinamo yang berbentuk silinder, dihubungkan ke as penggerak untuk menggerakan beban. Untuk kasus motor DC yang kecil, dinamo berputar dalam medan magnet yang dibentuk oleh kutub-kutub, sampai kutub utara dan selatan magnet berganti lokasi.
·         Commutator. Komponen ini terutama ditemukan dalam motor DC. Kegunaannya adalah untuk transmisi arus antara dinamo dan sumber daya.

Keuntungan utama motor DC adalah sebagai pengendali kecepatan, yang tidak mempengaruhi kualitas pasokan daya. Motor ini dapat dikendalikan dengan mengatur:
·         Tegangan dinamo – meningkatkan tegangan dinamo akan meningkatkan kecepatan
·         Arus medan – menurunkan arus medan akan meningkatkan kecepatan.
Hubungan antara kecepatan, flux medan dan tegangan dinamo ditunjukkan dalam persamaan berikut:
Gaya Elektromagnetik (E)

Torque (T) :

Dimana:
E          = gaya elektromagnetik yang dikembangkan pada terminal dynamo (volt)
Φ         = flux medan yang berbanding lurus dengan arus medan
N         = kecepatan dalam RPM (putaran permenit)
T          = torque electromagnetic
Ia         = arus dynamo
K         = konstanta persamaan


4.             LCD (Liquid Cristal Display)

LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan diberbagai bidang misalnya alal–alat elektronik seperti televisi, kalkulator, atau pun layar komputer. Pada postingan aplikasi LCD yang dugunakan ialah LCD dot matrik dengan jumlah karakter 2 x 16. LCD sangat berfungsi sebagai penampil yang nantinya akan digunakan untuk menampilkan status kerja alat.


Fitur LCD 16 x 2

Adapun fitur yang disajikan dalam LCD ini adalah :

a. Terdiri dari 16 karakter dan 2 baris.

b. Mempunyai 192 karakter tersimpan.

c. Terdapat karakter generator terprogram.

d. Dapat dialamati dengan mode 4-bit dan 8-bit.

e. Dilengkapi dengan back light.

Spesifikasi Kaki LCD 16 x 2

Pin                        Deskripsi

1                           Ground

2                           Vcc

3                           Pengatur kontras

4                           “RS” Instruction/Register Select

5                           “R/W” Read/Write LCD Registers

6                           “EN” Enable

7-14                       Data I/O Pins

15                          Vcc

16                          Ground



Nah,
sekarang hubungkan semuanya seperti yang ditunjukkan dalam diagram sirkuit  di atas dan masukan  scrip arduino seperti yang ditunjukkan di bawah ini dan setelah itu dapat anda running simulasinya . Anda dapat mengunduh scrip lengkap, file simulasi, dari tautan ini


//
#include <LiquidCrystal.h>
 LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
byte sensorPin[] = {0,1,2,3,4,5,6,7};
byte ledPin[] = {16,15,14}; // number of leds = numbers of sensors
const byte sensors = 8;
const byte leds=4;
int motor1 = A4;
int motor2 = A5;
int motor3 = A3;

void setup()
  {
    for(int i = 0; i< sensors; i++) //initialize all sensor pins to input pin
    {
       pinMode(sensorPin[i], INPUT);
    }
        for(int i = 0; i< leds; i++) //initialize all led pins to output pins
    {
       pinMode(ledPin[i], OUTPUT);
    }
    pinMode(motor1, OUTPUT);        //initialize motor pin to output pin
    pinMode(motor2, OUTPUT);        //initialize motor pin to output pin
    pinMode(motor3, OUTPUT);        //initialize motor pin to output pin
    lcd.begin(20, 4);            //initializing 20x4 LCD
    lcd.clear();                //clear LCD first
    lcd.print("TEKNIK ELEKTRO");  // display string TEKNIK ELEKTRO
  }

void loop()
{
  int level = 0;
  for(int i = 0; i < sensors; i++)
  {
     if(digitalRead(sensorPin[i]) == HIGH)
     {
        digitalWrite(ledPin[i/2], HIGH);
      level = i+1;
     } else
     {
       digitalWrite(ledPin[i/2], LOW);      
     }   
  }
  lcd.setCursor(0,1);
  lcd.print("EXHAUST FAN");
  lcd.setCursor(0,2);  
  switch(level) {
     case 1:
      lcd.print("LEVEL 1");
      digitalWrite(motor1, LOW);
      digitalWrite(motor2, LOW);
      digitalWrite(motor3, LOW);
       lcd.setCursor(0,3);
       lcd.print("                      ");
      break;
     case 2:
       lcd.print("LEVEL 2");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, LOW);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 3:
       lcd.print("LEVEL 3 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, LOW);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 4:
       lcd.print("LEVEL 4 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, LOW);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 5:
       lcd.print("LEVEL 5 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, HIGH);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 6:
       lcd.print("LEVEL 6 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, HIGH);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 7:
       lcd.print("LEVEL 7 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, HIGH);
      digitalWrite(motor3, LOW);
        lcd.setCursor(0,3);
        lcd.print("                      ");
       break;
     case 8:
       lcd.print("LEVEL 8 ");
      digitalWrite(motor1, HIGH);
      digitalWrite(motor2, HIGH);
      digitalWrite(motor3, HIGH);
       lcd.setCursor(0,3);
       lcd.print("BAHAYA : SUHU OVER HEAT");
       break;
      
     default:
      lcd.print("NORMAL");
      digitalWrite(motor1, LOW);
      digitalWrite(motor2, LOW);
      digitalWrite(motor3, LOW);
       lcd.setCursor(0,3);
       lcd.print("                      "); 
      break;
  }
  delay(40); 
 }



Deskripsi Singkat Kode ini sangat mudah dimengerti. Karena kita menggunakan 8 sensor suhu pada port sehingga semua pin pada port diinisialisasi sebagai port keluaran, demikian juga LCD dan perangkat lainnya diinisialisasi. Setelah itu masukan diambil dari sensor suhu, dan jika menghasilkan output1 level yang sesuai ditampilkan pada LCD. Motor exhaust fan 1, 2 dan 3 akan menyala jika suhu ruang sudah benar-benar over heat dan akan kembali off jika suhu ruangan tersebut  berkurang secara bertahap maupun sekaligus semua.




Komentar