Tampilkan postingan dengan label Aplikasi sensor suhu LM35. Tampilkan semua postingan
Tampilkan postingan dengan label Aplikasi sensor suhu LM35. Tampilkan semua postingan

Kamis, 05 Maret 2015

SENSOR SUHU LM35 SEBAGAI PENGONTROL NYALA KIPAS



A. Rangkaian Simulasi





B. Program
#include mega16.h
#include stdlib.h
#include lcd.h
#include delay.h
#define kurangi_suhu_kipas    PIND.6
#define tambah_suhu_kipas   PIND.7

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
int SUHU;
char temp[8];
float suhu_celcius;
unsigned char suhu_kipas,simpan;
eeprom unsigned char p_eeprom;
void tulis_eeprom()
{
        p_eeprom=simpan;
}

void baca_eeprom()
{
        simpan=p_eeprom;
}

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}


void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTD=0xFF;
DDRD=0xFF;
suhu_kipas=24;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("ALAT PENGONTROL");
lcd_gotoxy(0,1);
lcd_putsf("KIPAS DENGAN");
delay_ms(50);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("SENSOR SUHU LM35");
delay_ms(50);

while (1)
    {
    lcd_clear( );
    SUHU = read_adc(3);
    suhu_celcius = (float)SUHU*425/1023;//rumus untuk mengubah kedalam derajat celcius  
    lcd_gotoxy(0,0);
    lcd_putsf("SUHU RUANG");
    ftoa(suhu_celcius,0,temp);//float to array, mengubah tipedata float k tipe data array yg kan ditampilkan di LCD
    lcd_gotoxy(12,0); 
    lcd_puts(temp);
   
    lcd_gotoxy(14,0);
    lcd_putchar(0x89);//menampilkan karakter derajat
    lcd_putsf("C");
   
    lcd_gotoxy(0,1);
    lcd_putsf("KPS ON SH >");
    ftoa(simpan,0,temp);
    lcd_gotoxy(12,1); 
    lcd_puts(temp);
    lcd_gotoxy(14,1);
    lcd_putchar(0x89);//menampilkan karakter derajat
    lcd_putsf("C");
    if(kurangi_suhu_kipas==0){suhu_kipas--;delay_ms(300);simpan=suhu_kipas;tulis_eeprom();}
    if(tambah_suhu_kipas==0){suhu_kipas++;delay_ms(300);simpan=suhu_kipas;tulis_eeprom();}
    baca_eeprom();
    //if(kurangi_suhu_kipas==0){suhu_kipas--;delay_ms(300);}
    //if(tambah_suhu_kipas==0){suhu_kipas++;delay_ms(300);}
    if(suhu_celcius>simpan){PORTB.0=1;}
    else PORTB.0=0;                                                
    delay_ms(5);
    };
}



C. Rangkaian Implementasi





rangkaian simulasi+program dapat di download disini