SENSOR SUHU SEBAGAI PENGONTROL SUHU OTOMATIS
A.Simulasi Rangkaian
B. Script Program
#include
<mega8535.h> // header ATmega 8535
#include
<lcd.h> //header LCD
#include
<delay.h> //header delay
#include
<stdlib.h> //
#include
<stdio.h> // header untuk bilangan
#asm
.equ __lcd_port=0x15 ;PORTC //
#endasm
#define
ADC_VREF_TYPE 0x40 // mendefinisikan ADC yaitu membaca 8 bit dari hasil ADC
unsigned
char read_adc(unsigned char adc_input) // tipe data bilangan bulat
{
ADMUX=adc_input|(ADC_VREF_TYPE&0xff);
delay_us(10); // selang waktu
ADCSRA|=0x40; // register untuk
inisialisasi ADC.
while((ADCSRA&0x10)==0);
ADCSRA|=0x10; // register untuk
inisialisasi ADC
return ADCW;
}
//--deklarasi
variabel
int
SUHU;
char
temp[8];
float
suhu_celcius;
void
main (void) // program utama
{
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE&0xff;
ADCSRA=0x84;
// register port B sebagai output dan pada
kondisi awal mati
PORTB=0x00;
DDRB=0xFF;
lcd_init(40); // inisialisasi jumlah
karakter LCD 16
// indikator buzzer
PORTB.0=1;
delay_ms(1000);
PORTB.0=0;
delay_ms(1000);
PORTB.0=1;
delay_ms(1000);
PORTB.0=0;
delay_ms(1000);
// tampilan awal LCD
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" BISMILLAH");
lcd_gotoxy(0,1);
lcd_putsf(" TA MIKRO 2016 ");
delay_ms(5000);
lcd_gotoxy(0,0);
lcd_putsf(" Kelompok 3");
lcd_gotoxy(0,1);
lcd_putsf(" DIGI-TEMP.
");
delay_ms(5000);
while (1)// perulangan jika berlogika 1
{
lcd_clear(); // menghapus komentar diatas
nya
SUHU=read_adc(0);// membaca nilai ADC
suhu_celcius=(float)SUHU*500/1023; // rumus
konversi suhu
ftoa(suhu_celcius,1,temp); //menampilkan
nilai suhu
lcd_gotoxy(6,1); // meletakkan kursor pada
kolom 4 baris 2.
lcd_puts(temp); // meletakkan nilai volt
lcd_gotoxy(9,1);// meletakkan kursor pada
kolom 9 baris 2
lcd_putchar(0xdf); // menampilkan karakter
"volt" pada saat running
lcd_gotoxy(10,1);// meletakkan kursor pada
kolom 10 baris 2
lcd_putsf("C"); // menampilkan
pada layar LCD
lcd_gotoxy(2,0); // meletakkan kursor pada
kolom kedua baris pertama
// pernyataan if
if(suhu_celcius>=45) // jika suhu diatas
50 derajat maka
{
lcd_gotoxy(11,1); // meletakkan kursor
pada kolom 11 baris 2
lcd_putsf("pass"); //
menampilkan
PORTB.0=1; //PORTB.0 bernilai 1 output
ke BUZZER
delay_ms(100);// selang waktu
PORTB.0=0;//PORTB.0 bernilai 0
delay_ms(100);// selang waktu
PORTB.1=1;//PORTB.1 bernilai 1 output
ke relay
PORTB.2=1;// PORTB.2 bernilai 1 output
ke indikator (LED)
delay_ms(100);// selang waktu
PORTB.2=0;// PORTB.2 bernilai 0 output
ke indikator (LED)
delay_ms(100);// selang waktu
}
else{PORTB.1=0;} // pernyatan jika syarat
if tidak dipenuhi
delay_ms(1000);// selang waktu
}
}
Gambar 1. Pengatur Suhu Otomatis
0 komentar:
Posting Komentar