Minggu, 08 Juli 2012

RANGKAIAN ALAT PEMANTAU SUHU Menggunakan Sensor LM35 dan Mikrokontroller ATMega 16



Gambar 3D Alat
Gambar jalur PCB
Gambar Rangkaian keseluruhan

       Sensor LM35 merupakan sensor suhu yang dapat mendeteksi suhu yang terjadi dengan memiliki tingkat presisi yang tinggi. Sensor LM35 mempunyai  tegangan keluaran yang linearitas terhadap suhu celcius.
Sensor suhu LM35 terdiri dari tiga pin kaki. Kaki pertama PIN Vout berfungsi sebagai pin tegangan keluaran, kaki kedua PIN +Vs berfungsi sebagai pin sumber tegangan dan kaki PIN GND berfungsi sebagai pin ground.
Tegangan yang dibutuhkan untuk sensor LM35 sebasar 5V dan memiliki parameter bahwa setiap kenaikan skala 1°C tegangan keluarannya 10mV sehingga diperoleh persamaan sebagai berikut:

VLM35=Suhu*10mV..............................................................

Misalnya pada perancangan menggunakan sensor suhu LM35 keluaran ADC menghasilk suhu 20°C, sehingga saat suhu 20°C tegangan keluaran sensor suhu LM35 (20°C*10mV)= 200mV=0,2V.


Prongram yang digunakan adalag bahasa C :
Program ini untuk menampilkan Suhu1, Suhu2, Suhu 3 dan Suhu 4. Karena sensor yang saya gunakan disini adalah 4 sensor.

#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
// Standard Input/Output functions
#define ADC_VREF_TYPE 0x40 // set Vref menjadi ADC=AVCC 0x40(dari code)
unsigned int v,adc; // yg tulisan nya unsigned int untuk menampilkan variable
unsigned int T1,T2,T3,T4;
char buf[16]; // deklarasi variabel array ?
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;//?
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW; }
void main(void)
{
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
// LCD module initialization
lcd_init(16);
lcd_clear();
delay_ms(1000);
while (1)
      
      {      
       adc=read_adc(0); //baca ADC0 (PA0)
       v=(adc*5)/1.024; //hasilnya dikalikan 5 mV 
       T1=(v/10)-1; //konversi ke suhu (Celcius)
       
       adc=read_adc(1); 
       v=(adc*5)/1.024;  
       T2=(v/10)-1;
       
       adc=read_adc(2); 
       v=(adc*5)/1.024;  
       T3=(v/10)-1;
       
       adc=read_adc(3); 
       v=(adc*5)/1.024;  
       T4=(v/10)-1; 
       
       lcd_clear();
       lcd_putsf("T1=     T2=  ");
       lcd_gotoxy(0,1);
       lcd_putsf("T3=     T4=  "); 
       
       sprintf(buf,"%d",T1);  // harus di rubah dari int to str 
       lcd_gotoxy(3,0);        // untuk ditampilkan ke kolum 3 dan baris 0
       lcd_puts(buf);          // untuk di tampilkan ke buf(lcd)   
       lcd_putchar(0xdf);
       lcd_putchar('C');       // C di kasi tanda petik karena karakter
                         // klu masih 1 karakter perintahnya lcd_putchar('C') kalau 2 karakter lcd_putsf('C').
       sprintf(buf,"%d",T2);  
       lcd_gotoxy(11,0);        
       lcd_puts(buf);            
       lcd_putchar(0xdf);
       lcd_putchar('C'); 
       
       sprintf(buf,"%d",T3);
       lcd_gotoxy(3,1);
       lcd_puts(buf);
       lcd_putchar(0xdf);
       lcd_putchar('C');
       
       sprintf(buf,"%d",T4);
       lcd_gotoxy(11,1);
       lcd_puts(buf);
       lcd_putchar(0xdf);
       lcd_putchar('C');
delay_ms(1000);
}
}