Menurut datasheet, LM35 dapat mengukur dengan range -55° sampai 150°C dengan akurasi 0,5°C. Untuk lebih jelasnya dapat dibaca pada datasheet. Untuk mendapatkan datasheet LM35 silakan download disini. Aplikasi ini pun telah saya simulasikan menggunakan software proteus, dan mempunyai hasil yang sangat presisi untuk pembacaannya. Dibawah ini adalah schematic rangkaiannya:
Sedangkan untuk listing program lengkapnya adalah sebagai berikut, pada akhir postingan ini saya juga menyertakan file program dalam codevision AVR serta file simulasi proteus.
#include <mega16.h>
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
float suhu_minus;
char temp[8];
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0×40
// 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|=0×40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0×10)==0);
ADCSRA|=0×10;
return ADCW;
}
void ambil_dataADC()
{
data1=read_adc(0);
data2=read_adc(1);
}
void hitung_suhu_minus()
{
suhu_minus=(float)(data1-data2)/2;//rumus mencari suhu minus
}
void tampil_LDC()
{
lcd_gotoxy(0,0);
lcd_putsf(“ElectrO-cOntrOl”);
ftoa(suhu_minus,1,temp);//float to array
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(5,1);
lcd_putchar(0xdf);//menampilkan karakter derajat
lcd_putsf(“C”);
}
void main(void)
{
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0×84;
// LCD module initialization
lcd_init(16);
while (1)
{
ambil_dataADC();
hitung_suhu_minus();
tampil_LDC();
delay_ms(500);
};
}
Untuk mendapatkan file program dalam bentuk CodeVision AVR dan file simulasi proteus untuk aplikasi pengukuran temperatur negatif silakan download link dibawah ini.
Semoga bermanfaat…
mas, kalo untuk perhitungan atau rumusnya bisa dikasih tau nggak..soalnya rangkaian diataskan memasukkan 2 inputan ADC
BalasHapusberdasarkan datasheet untuk pengukuran negative temperatur memang dibutuhkan 2 buah masukan seperti gambar diatas. kalo diliat dari program kan bisa ketahuan rumusnya...
BalasHapussuhu=adc(0)-adc(1)/2
untuk mengatur pwm dengan LM35 itu bisa atau tidak mas?
BalasHapusrumusnya bagaimana mas?
kalo dilihat dari program kan LM35 cuma bisa memberi tegangan sampai 1,5 volt.sementara yang dibutuhkan PWM untuk gelombang penuh kan 2,56 volt untuk rumusnya:
suhu=(vin/vref)*255
dimana:
vin=tegangan input
vref=tegangan referensi (ADMUX=2,56)
255=lebar data 8 bit
saya kurang mengerti maksud anda...
BalasHapusmemang anda ingin membuat aplikasi seperti apa? klo misalkan anda ingin mengatur putaran kecepatan kipas (motor DC), tinggal diumpankan saja nilai suhu ke PWM (yg sebelumnya harus diproporsiaonalkan terlebih dahulu), misal:
PWM=suhu*5;
angka 5 adalah nilai untuk memproporsionalkan nilai suhu terhadap PWM, angka ini bisa diganti sesuai kebutuhan aplikasi anda
tombol push button itu fungsinya apa???
BalasHapusmas, mo tanya, ini aku kemarin buat, udah berjalan normal, ketika LM35 aku panasin pkai solder/korek api, suhu bisa naik, namun setelah 59 derajat ke atas, keluaranya jadi -60, -61, -62, dan sterusnya, kira2 kenapa yha? thanks :D
BalasHapus