Jumat, 28 Mei 2010

Termometer Digital

ehhmmm.. bahas apa ya enaknya..???

aq juga bingung.. sembarang wes terserah..
hahahahaa666x

oiya pas jaman kuliah dulu ada tugas interface ini...
Tugasnya buat termometer..??
apa itu..???!!!!!!!!
Tentunya saya sempat berpikir, gimana sih buat termometer itu...

Naahh.. maka dari itu, saya iseng2 deh buat termometer digital.
Disini aku pake sensor LM35, mikronya pake ATM 16, dan cuman displaynya pake LCD 2x16..

berikut schematic dari rangkaian buatan ala Pacoel :p



Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan.

Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35 mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC .


Gambar diatas menunjukan bentuk dari LM35 tampak depan. 3 pin LM35 menujukan fungsi masing-masing pin diantaranya, pin 1 berfungsi sebagai sumber tegangan kerja dari LM35, pin 2 atau tengah digunakan sebagai tegangan keluaran atau Vout dengan jangkauan kerja dari 0 Volt sampai dengan 1,5 Volt dengan tegangan operasi sensor LM35 yang dapat digunakan antar 4 Volt sampai 30 Volt. Keluaran sensor ini akan naik sebesar 10 mV setiap derajad celcius sehingga diperoleh persamaan sebagai berikut :

VLM35 = Suhu* 10 mV

Secara prinsip sensor akan melakukan penginderaan pada saat perubahan suhu setiap suhu 1 ºC akan menunjukan tegangan sebesar 10 mV. Pada penempatannya LM35 dapat ditempelkan dengan perekat atau dapat pula disemen pada permukaan akan tetapi suhunya akan sedikit berkurang sekitar 0,01 ºC karena terserap pada suhu permukaan tersebut. Dengan cara seperti ini diharapkan selisih antara suhu udara dan suhu permukaan dapat dideteksi oleh sensor LM35 sama dengan suhu disekitarnya, jika suhu udara disekitarnya jauh lebih tinggi atau jauh lebih rendah dari suhu permukaan, maka LM35 berada pada suhu permukaan dan suhu udara disekitarnya .

Jarak yang jauh diperlukan penghubung yang tidak terpengaruh oleh interferensi dari luar, dengan demikian digunakan kabel selubung yang ditanahkan sehingga dapat bertindak sebagai suatu antenna penerima dan simpangan didalamnya, juga dapat bertindak sebagai perata arus yang mengkoreksi pada kasus yang sedemikian, dengan mengunakan metode bypass kapasitor dari Vin untuk ditanahkan. Berikut ini adalah karakteristik dari sensor LM35.

  • Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
  • Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC .
  • Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
  • Bekerja pada tegangan 4 sampai 30 volt.
  • Memiliki arus rendah yaitu kurang dari 60 µA.Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara diam.
  • Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.


Untuk lebih jelasnya ni datasheet LM 35 - nya gan.. (weerrr... werr..).


Kalo untuk programnya, monggo dicoba saya sudah bikin. Terserah kreasi dari pembuatnya dan pengembangannya :


Listing Program Termometer Digital

*****************************************************

This program was produced by the

CodeWizardAVR V1.25.3 Standard

Automatic Program Generator

© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 1/6/2010

Author : F4CG

Company : F4CG

Comments:

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*****************************************************/

#include

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x12 ;PORTD

#endasm

#include

#include

#include

#define ADC_VREF_TYPE 0x00

// Read the AD conversion result

unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCW;

}

// Declare your global variables here

void main(void)

{

char lcd_buffer[33];

unsigned int vadc,lcd;

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 86.400 kHz

// ADC Voltage Reference: AREF pin

// ADC Auto Trigger Source: None

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x87;

// LCD module initialization

lcd_init(16);

while (1)

{

// Place your code here

vadc=read_adc(0);

lcd=(((vadc*0.00488)*100));

lcd_gotoxy(0,0);

lcd_putsf("PACUL TERMOMETER");

lcd_gotoxy(0,1);

sprintf(lcd_buffer,"Suhu :%i celcius",lcd);

lcd_puts(lcd_buffer);

delay_ms(500);

};

}



\wassalam/

Tidak ada komentar:

Posting Komentar

Share/Bookmark