Oleh: Rahmad Syah Nasution
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);
}
}
thanks sebelom'a, info'a cukup bagus, tapi rasa'a kurang lengkap.
BalasHapusjenis" komponen yg di butuhkan apa aja bro ??
Gan muncul error undefined symbol 'sprintf' mohon mencerahanya gan ?
BalasHapuskomponenya yg dibutuhkan apa pak?
BalasHapusAda yg bhasa assembly apa gak?
BalasHapuskalau pada saat suhu tertentu dikasih output kipas gimana programnya
BalasHapus