Sabtu, 03 Desember 2016

SENSOR SUHU SEBAGAI PENGONTROL SUHU OTOMATIS



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
    lcd_putsf("  ::SUHU::"); // menampilkan pada layar LCD "SUHU"

    // 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