Pengujian sensor SHT-11 Pengujian LCD Pengujian Bahasa Pemrograman

Gambar 4.1 Informasi Signature Mikrokontroller Atmega menggunakan kristal dengan frekuensi 4 MHz, apabila ChipSignature sudah dikenali dengan baik dan dalam waktu singkat, bisa dikatakan rangkaian mikrokontroler bekerja dengan baik dengan mode ISP-nya.

4.4 Pengujian sensor SHT-11

Kaki Serial Clock Input SCK digunakan untuk mensinkronkan komunikasi diantaramikrokontroler dan SHT-11. Kaki Serial Data DATA yang merupakan tristate digunakan untuk mentransfer data masuk dan keluar dari alat. Proses pengukuran dilakukan dengan memberikan logika “00000101’ untuk RH dan ‘00000011’ untuk temperatur, lalu controller harus menunggu agar proses pengukuran selesai. Waktu yang dibutuhkan sekitar 500 ms untuk resolusi 14 bit Gambar 4.2 Gambar SHT-11 ke mikrokontroller Pengujian sensor menggunakan komunikasi 2 wire, komuniasi 2 wire ini berbeda dengan komunikasi serial I2C yang sering dijumpai pada modul sensor modern. SCK serial clock befungsi untuk clock kerja dari komunikasi, jadi clock komunikasi mikrokontroler harus sama Universitas Sumatera Utara dengan SHT-11. Jalur DATA merupakan jalur yang digunakan untuk mengirim data. Data dapat dirubah ketika pulsa clock pada tepi pulsa turun dan data akan tetap valid latch pada tepi pulsa naik.

4.5 Pengujian LCD

Rangakaian LCD diuji dengan menampilkan karakter dengan perintah sebagai berikut : Cls LCD “SUHU” Lowerline LCD “RH” Perintah di atas menampilkan teks “SUHU” pada baris pertama dan “RH” pada baris kedua. Gambar 4.3 berikut adalah tampilan karakter hasil perintah dari LCD. Gambar 4.3 Tampilan hasil dari LCD Liquid Crystal Display

4.6 Pengujian Bahasa Pemrograman

include mega8.h crystal 8MHz include alcd.h include stdio.h include delay.h include stdlib.h include math.h define ADC_VREF_TYPE 0x00 unsigned int SUHU,Lembab,nilaisuhu,nilailembab,Cal; unsigned char error,checksum; char inp; typedef union { unsigned int i; float f; } value; enum {TEMP,HUMI}; define DATA_OUT PORTB.0 define DATA_IN PINB.0 define SCK PORTB.1 define noACK 0 define ACK 1 adr command rw define STATUS_REG_W 0x06 000 0011 0 define STATUS_REG_R 0x07 000 0011 1 Universitas Sumatera Utara define UKUR_SUHU 0x03 000 0001 1 define UKUR_HUMI 0x05 000 0010 1 define RESET 0x1e 000 1111 0 unsigned int read_adcunsigned char adc_input { ADMUX=adc_input | ADC_VREF_TYPE 0xff; Delay needed for the stabilization of the ADC input voltage delay_us10; Start the AD conversion ADCSRA|=0x40; Wait for the AD conversion to complete while ADCSRA 0x10==0; ADCSRA|=0x10; return ADCW; } Untuk menulis data ke SHT11 char tulis_SHTunsigned char bytte { unsigned char i,error=0; DDRB = 0b00000011; for i=0x80;i0;i=2 shift bit { if i bytte DATA_OUT=1; else DATA_OUT=0; SCK=1; clk delay_us5; delay 5 us SCK=0; } DATA_OUT=1; DDRB = 0b00000010; DATA Output SCK=1; clk 9 ack delay_us2; error=DATA_IN; cek ack DATA akan di pull down oleh SHT11 delay_us2; SCK=0; return error; cek jika ada error } Untuk membaca data dari SHT11 char baca_SHTunsigned char ack { unsigned char i,val=0; DDRB = 0b00000010; DATA Input for i=0x80;i0;i=2 shift bit { SCK=1; clk delay_us2; if DATA_IN val=val | i; baca bit delay_us2; SCK=0; } DDRB = 0b00000011; DATA Output DATA_OUT=ack; ack==1 pull down DATA-Line SCK=1; clk 9 ack delay_us5; delay 5 us SCK=0; DATA_OUT=1; DATA-line return val; } void start_SHTvoid { DDRB = 0b00000011; DATA Output Universitas Sumatera Utara DATA_OUT=1; SCK=0; Inisial state delay_us2; SCK=1; delay_us2; DATA_OUT=0; delay_us2; SCK=0; delay_us5; SCK=1; delay_us2; DATA_OUT=1; delay_us2; SCK=0; DDRB = 0b00000010; DATA Input } void reset_SHTvoid { unsigned char i; DDRB = 0b00000011; DATA output DATA_OUT=1; SCK=0; Inisial state fori=0;i9;i++ 9 SCK cycle { SCK=1; delay_us1; SCK=0; delay_us1; } start_SHT; start transmisi data DDRB = 0b00000010; DATA Input } Mengecek status register sensor char StatusReg_SHTunsigned char p_value, unsigned char p_checksum { unsigned char error=0; start_SHT; start transmisi data error=tulis_SHTSTATUS_REG_R; mengirim command ke sensor p_value=baca_SHTACK; baca status register 8-bit p_checksum=baca_SHTnoACK; baca checksum 8-bit return error; error=1 jika tidak ada respon dari sensor } Membaca data hasil pengukuran char ukur_SHTunsigned char p_value, unsigned char p_checksum, unsigned char mode { unsigned error=0; unsigned int temp=0; start_SHT; start transmisi data switchmode{ mengirim command ke sensor case TEMP : error+=tulis_SHTUKUR_SUHU; break; case HUMI : error+=tulis_SHTUKUR_HUMI; break; default : break; } DDRB = 0b00000010; DATA input while 1 { ifDATA_IN==0 break; tunggu hingga sensor selesai melakukan pengukuran } ifDATA_IN error+=1; jika sudah timeout 2 detik switchmode{ mengirim command ke sensor case TEMP : temp=0; temp=baca_SHTACK; temp=8; Universitas Sumatera Utara nilaisuhu=temp; temp=0; temp=baca_SHTACK; nilaisuhu|=temp; break; case HUMI : temp=0; temp=baca_SHTACK; temp=8; nilailembab=temp; temp=0; temp=baca_SHTACK; nilailembab|=temp; break; default : break; } p_checksum =baca_SHTnoACK; baca checksum return error; } void mainvoid { value humi_val,temp_val; PORTB=0x00; DDRB=0x03; PORTC=0x00; DDRC=0xC0; PORTD=0x00; DDRD=0x00; ADC initialization ADMUX=ADC_VREF_TYPE 0xff; ADCSRA=0x82; lcd_init16; lcd_clear; lcd_gotoxy0,0; lcd_putsfPengukuran Suhu; lcd_gotoxy0,1; lcd_putsf dan Kelembaban; delay_ms1000; lcd_init16; lcd_clear; lcd_gotoxy0,0; lcd_putsfJESSY R.TARIGAN; lcd_gotoxy0,1; lcd_putsf===============; delay_ms1000; lcd_init16; lcd_clear; lcd_gotoxy0,0; lcd_putsf METROLOGY USU; lcd_gotoxy0,1; lcd_putsf================; delay_ms1000; reset_SHT; while 1 { delay_ms500; error=0; error+=ukur_SHTunsigned char humi_val.i,checksum,HUMI; mengukur kelembaban error+=ukur_SHTunsigned char temp_val.i,checksum,TEMP; mengukur suhu Universitas Sumatera Utara error += StatusReg_SHTinp, checksum; iferror=0 { reset_SHT; jika ada error, reset koneksi putsfError; } else { SUHU = nilaisuhu100215; lcd_gotoxy0,0; lcd_putsf Suhu : \xdfC; lcd_gotoxy8,0; lcd_putcharSUHU100 10 + 0x30; lcd_putcharSUHU10 10 + 0x30; lcd_putchar.; lcd_putcharSUHU 10 + 0x30; Cal = read_adc510; Lembab = nilailembab10Cal; lcd_gotoxy0,1; lcd_putsf RH : ; lcd_gotoxy8,1; lcd_putcharLembab100 10 + 0x30; lcd_putcharLembab10 10 + 0x30; lcd_putchar.; lcd_putcharLembab 10 + 0x30; delay_ms1000; delay_ms1000; } } }

4.7 Pengujian secara keseluruhan