Sistem Kerja Alat
Thermostat yaitu alat yang digunakan untuk mempertahankan suhu sesuai dengan set point yang telah ditentukan. Suhu dibaca oleh sensor LM35 dan hasilnya ditampilkan pada LCD. Sedangkan set point di seting dengan menggunakan keypad 3x4. Heater/pemanas di kontrol ON/OFF-nya menggunakan relay yang terhubung dengan kaki output Arduino.
Kebutuhan Hardware
- Sensor LM35
- Modul LCD 2x16
- Modul Relay 5Vdc
- Heater
- Keypad 3x4
- Modul Arduino UNO
- Power supply +9Volt
Diagram Blok
Schematic
Koneksi Arduino UNO dengan LCD
Koneksi Keypad 3x4
Koneksi Sensor LM35
Koneksi Relay
Source Code/Sketch
#include <LiquidCrystal.h>
#include <Keypad.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
byte derajat[8] = {
0b01100,
0b10010,
0b10010,
0b01100,
0b00000,
0b00000,
0b00000,
0b00000
};
char key;
byte SPkeypad;
byte T,setPoint;
byte setSP, f_awal;
const byte ROWS=4;
const byte COLS=3;
char keys[ROWS][COLS]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS]={9,10,11,12};
byte colPins[COLS]={A1,A2,A3};
Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(8,OUTPUT);
lcd.createChar(1, derajat);
lcd.begin(16, 2);
lcd.print(" Thermostat ");
lcd.setCursor(0, 1);
lcd.print("ARDUINO dg LM35");
delay(2000);
lcd.clear();
setPoint=40;
}
void loop(){
lcd.setCursor(0,0);
lcd.print("SP=");
lcd.print(setPoint);
lcd.write(1);
lcd.print("C ");
T=(analogRead(0)*5)/10;
lcd.setCursor(8, 0);
lcd.print("T=");
lcd.print(T);
lcd.write(1);
lcd.print("C ");
if(T<(setPoint-1) || f_awal==0){
lcd.setCursor(0,1);
lcd.print("Set=* Heater ON ");
digitalWrite(8,HIGH);
f_awal=1;
}
else if(T>=setPoint){
lcd.setCursor(0,1);
lcd.print("Set=* Heater OFF");
digitalWrite(8,LOW);
}
delay(100);
bacaKeypad();
}
void bacaKeypad(){
key=keypad.getKey();
if(key != NO_KEY){
if (key=='*'){
lcd.clear();
lcd.print("Seting Set Point");
delay(1000);
lcd.clear();
lcd.print("SP= ");
lcd.write(1);
lcd.print("C ");
lcd.blink();
lcd.setCursor(3,0);
byte kursor=3;
byte selesai=1;
do{
key=keypad.getKey();
if(key != NO_KEY){
if (key!='*' && key!='#' && kursor<5){
lcd.print(key);
key=key-48;
SPkeypad=SPkeypad*10;
SPkeypad=SPkeypad+key;
kursor++;
lcd.setCursor(kursor,0);
}
else if (key=='#' && kursor==5){
selesai=0;
}
}
if(kursor==5){
lcd.noBlink();
lcd.setCursor(0,1);
lcd.print("Save tekan #");
}
}
while(selesai);
setPoint = SPkeypad;
SPkeypad = 0;
f_awal=0;
lcd.clear();
lcd.print("Set point OK!");
delay(1000);
lcd.clear();
}
}
}
#include <Keypad.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
byte derajat[8] = {
0b01100,
0b10010,
0b10010,
0b01100,
0b00000,
0b00000,
0b00000,
0b00000
};
char key;
byte SPkeypad;
byte T,setPoint;
byte setSP, f_awal;
const byte ROWS=4;
const byte COLS=3;
char keys[ROWS][COLS]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS]={9,10,11,12};
byte colPins[COLS]={A1,A2,A3};
Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(8,OUTPUT);
lcd.createChar(1, derajat);
lcd.begin(16, 2);
lcd.print(" Thermostat ");
lcd.setCursor(0, 1);
lcd.print("ARDUINO dg LM35");
delay(2000);
lcd.clear();
setPoint=40;
}
void loop(){
lcd.setCursor(0,0);
lcd.print("SP=");
lcd.print(setPoint);
lcd.write(1);
lcd.print("C ");
T=(analogRead(0)*5)/10;
lcd.setCursor(8, 0);
lcd.print("T=");
lcd.print(T);
lcd.write(1);
lcd.print("C ");
if(T<(setPoint-1) || f_awal==0){
lcd.setCursor(0,1);
lcd.print("Set=* Heater ON ");
digitalWrite(8,HIGH);
f_awal=1;
}
else if(T>=setPoint){
lcd.setCursor(0,1);
lcd.print("Set=* Heater OFF");
digitalWrite(8,LOW);
}
delay(100);
bacaKeypad();
}
void bacaKeypad(){
key=keypad.getKey();
if(key != NO_KEY){
if (key=='*'){
lcd.clear();
lcd.print("Seting Set Point");
delay(1000);
lcd.clear();
lcd.print("SP= ");
lcd.write(1);
lcd.print("C ");
lcd.blink();
lcd.setCursor(3,0);
byte kursor=3;
byte selesai=1;
do{
key=keypad.getKey();
if(key != NO_KEY){
if (key!='*' && key!='#' && kursor<5){
lcd.print(key);
key=key-48;
SPkeypad=SPkeypad*10;
SPkeypad=SPkeypad+key;
kursor++;
lcd.setCursor(kursor,0);
}
else if (key=='#' && kursor==5){
selesai=0;
}
}
if(kursor==5){
lcd.noBlink();
lcd.setCursor(0,1);
lcd.print("Save tekan #");
}
}
while(selesai);
setPoint = SPkeypad;
SPkeypad = 0;
f_awal=0;
lcd.clear();
lcd.print("Set point OK!");
delay(1000);
lcd.clear();
}
}
}
Jalannya Alat
- Untuk mendapatkan suhu yang stabil Anda bisa buat tegangan supply tersendiri pada sensor LM35 dengan supply tegangan dari 5Vdc s/d 15Vdc. Semakin besar supply LM35 maka hasilnya semakin bagus asal tidak lebih dari 15Vdc.
- Upload program diatas.
- Tampilan awal.
5. Heater akan ON apabila suhu dibawah set point
6. Heater OFF pada saat suhu sama dengan set point.
7. Heater akan menyala lagi setelah suhu berkurang 20C dibawah set point.
8. Seting setpoint dengan menekan tombol Set
9. Setelah 1 detik tampil Set point
10. Tekan tombol angka pada keypad misal set point yang akan dimasukkan 38°C, maka tekan
tombol 3 kemudian delapan.
11. Tekan tombol pagar ‘#’ jika setingan sudah selesai.
12. Tampilan kembali pada tampilan normal.
Video Project III - 8. Thermostat dan Modul Keypad 3x3 berbasis Arduino
KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO
KONTAK KAMI 085743320570 (adi sanjaya)
KONTAK KAMI 085743320570 (adi sanjaya)
mas mau tanya kalau setpointnya menginginkan 4 digit bagaimana ?
ReplyDeletemas, key = key - 48;
ReplyDeleteSPkeypad = SPkeypad*10;
SPkeypad = SPkeypad + key;
kursor++;
dapetnya dari mana? dan kenapa pakai itu?
SPkeypad = SPkeypad*10;
ReplyDeleteSPkeypad = SPkeypad + key;
kursor++;
Program diatas artinya apa Pak ?
Pak, saya mau tanya maksud program dibawah ini apa pak ?
ReplyDeleteSPkeypad = SPkeypad*10;
SPkeypad = SPkeypad + key;
kursor++;
Mantap, terimakasih ilmunya gan,, semoga makin sukses
ReplyDelete