Senin, 27 Juni 2011

PENGUKURAN NEGATIVE THEMPERATURE (MINUS) MENGGUNAKAN LM35 DENGAN CODEVISION AVR

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>

int data1, data2;
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.

File program CodeVision AVR dan file simulasi Proteus

Semoga bermanfaat…

6 komentar:

  1. mas, kalo untuk perhitungan atau rumusnya bisa dikasih tau nggak..soalnya rangkaian diataskan memasukkan 2 inputan ADC

    BalasHapus
  2. berdasarkan datasheet untuk pengukuran negative temperatur memang dibutuhkan 2 buah masukan seperti gambar diatas. kalo diliat dari program kan bisa ketahuan rumusnya...

    suhu=adc(0)-adc(1)/2

    BalasHapus
  3. untuk mengatur pwm dengan LM35 itu bisa atau tidak mas?
    rumusnya 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

    BalasHapus
  4. saya kurang mengerti maksud anda...

    memang 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

    BalasHapus
  5. tombol push button itu fungsinya apa???

    BalasHapus
  6. mas, 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