39
SISTEM MIKROKONTROLER DASAR LAPORAN NGARANG NGAWUT “Alarm Kebakaran Menggunakan Sensor Suhu LM35” Disusun Untuk Memenuhi Tugas Mata Kuliah Sistem Mikrokontroler Dasar Semester III PEMBIMBING : Ir. Azam Muzakim I., MT PENYUSUN : Sisca Arisya Harry Andhina 1441160062 JTD 2A PROGRAM STUDI JARINGAN TELEKOMUNIKASI JURUSAN TEKNIK ELEKTRO

Laporan Ngarang Ngawut Polinema

Embed Size (px)

Citation preview

Page 1: Laporan Ngarang Ngawut Polinema

SISTEM MIKROKONTROLER DASARLAPORAN NGARANG NGAWUT

“Alarm Kebakaran Menggunakan Sensor Suhu LM35”Disusun Untuk Memenuhi Tugas

Mata Kuliah Sistem Mikrokontroler DasarSemester III

PEMBIMBING :Ir. Azam Muzakim I., MT

PENYUSUN :

Sisca Arisya Harry Andhina

1441160062

JTD 2A

PROGRAM STUDI JARINGAN TELEKOMUNIKASIJURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI MALANG2015

Page 2: Laporan Ngarang Ngawut Polinema

BAB I

PENDAHULUAN

1.1 Tujuan

Tujuan penyusunan laporan ini yaitu sebagai berikut :

1.1.1 Memenuhi tugas ngarang ngawut dengan judul Alarm Kebakaran Menggunakan

Sensor Suhu LM35

1.1.2 Mengetahui cara merancang Alarm Kebakaran Menggunakan Sensor Suhu LM35.

1.1.3 Mendeteksi terjadinya kebakaran

1.2 Teori Dasar

1.2.1 Mikrokontroler ATMega16

Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu serpih (chip).

Mikrokontroler lebih dari sekedar sebuah mikroprosesor karena sudah terdapat atau berisikan

ROM (Read-Only Memory), RAM (Read-Write Memory), beberapa bandar masukan

maupun keluaran, dan beberapa peripheral seperti pencacah/pewaktu, ADC (Analog to

Digital converter), DAC (Digital to Analog converter) dan serial komunikasi.

Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler AVR.

AVR adalah mikrokontroler RISC (Reduce Instuction Set Compute) 8 bit berdasarkan

arsitektur Harvard. Secara umum mikrokontroler AVR dapat dapat dikelompokkan menjadi 3

kelompok, yaitu keluarga AT90Sxx, ATMega dan ATtiny. Pada dasarnya yang membedakan

masing-masing kelas adalah memori, peripheral, dan fiturnya

Seperti mikroprosesor pada umumnya, secara internal mikrokontroler ATMega16

terdiri atas unit-unit fungsionalnya Arithmetic and Logical Unit (ALU), himpunan register

kerja, register dan dekoder instruksi, dan pewaktu beserta komponen kendali lainnya.

Berbeda dengan mikroprosesor, mikrokontroler menyediakan memori dalam serpih yang

sama dengen prosesornya (in chip).

1.2.1.1 Arsitektur ATMega16

Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori program

dari memori data, baik bus alamat maupun bus data, sehingga pengaksesan program dan data

dapat dilakukan secara bersamaan (concurrent). Secara garis besar mikrokontroler

ATMega16 terdiri dari :

a) Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.

b) Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte, dan SRAM 1Kbyte

Page 3: Laporan Ngarang Ngawut Polinema

c) aluran I/O 32 buah, yaitu Bandar A, Bandar B, Bandar C, dan Bandar D.

d) CPU yang terdiri dari 32 buah register.

e) User interupsi internal dan eksternal

f) Bandar antarmuka SPI dan Bandar USART sebagai komunikasi serial

g) Fitur Peripheral

(a) Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode compare

(b) Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan mode

capture

(c) Real time counter dengan osilator tersendiri

(d) Empat kanal PWM dan Antarmuka komparator analog

(e) 8 kanal, 10 bit ADC

(f) Byte-oriented Two-wire Serial Interface

(g) Watchdog timer dengan osilator internal

Page 4: Laporan Ngarang Ngawut Polinema

Gambar 1.1 Blok Diagram ATMega16

1.2.1.2 Konfigurasi PIN ATMega16

Konfigurasi pena (pin) mikrokontroler Atmega16 dengan kemasan 40- pena dapat dilihat pada

Gambar 2.2. Dari gambar tersebut dapat terlihat ATMega16 memiliki 8 pena untuk masing-masing

bandar A (Port A), bandar B (Port B), bandar C (Port C), dan bandar D (Port D).

Page 5: Laporan Ngarang Ngawut Polinema

Gambar 1.2 Konfigurasi PIN ATMega16

1.2.1.3 Deskripsi Mikrokontroler ATMega16

a) VCC (Power Supply) dan GND(Ground)

b) Port A (PA7..PA0)

Port A berfungsi sebagai input analog pada konverter A/D. Port A juga sebagai suatu

port I/O 8-bit dua arah, jika A/D konverter tidak digunakan

c) Port B (PB7..PB0)

Port B adalah suatu port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih

untuk beberapa bit).

Gambar 1.3 Tabel fungsi alternatif Pin-Pin PORT B

d) Port C (PC7..PC0)

Port C adalah suatu bandar I/O 8-bit dua arah dengan resistor internal pull-up (yang

dipilih untuk beberapa bit).

Page 6: Laporan Ngarang Ngawut Polinema

Gambar 1.4 Tabel fungsi alternatif Pin-Pin PORT C

e) Port D (PD7..PD0)

Port D adalah suatu bandar I/O 8-bit dua arah dengan resistor internal pull-up (yang

dipilih untuk beberapa bit).

Gambar 1.5 Tabel fungsi alternatif Pin-Pin PORT D

f) RESET (Reset input)

g) XTAL1 (Input Oscillator) XTAL2 (Output Oscillator)

h) AVCC adalah pena penyedia tegangan untuk bandar A dan Konverter A/D.

i) AREF adalah pena referensi analog untuk konverter A/D.

1.2.1.4 ADC (ANALOG TO DIGITAL CONVERTER)Ada beberapa register yang digunakan untuk ADC yaitu:

1. Register ADMUX atau register ADC Multiplexer, dinamakan demikian karena di dalam

register tersebut ada bit-bit yang digunakan untuk memilih saluran dari input ADC, untuk bit-

bit dari ADMUX ditunjukkan dalam gambar 1.6

Page 7: Laporan Ngarang Ngawut Polinema

Gambar 1.6 Bit-bit dalam Register ADMUX(ATMega16,2010;217)

Keterangan dari fungsi bit-bit ADMUX Gambar 1.6 adalah sebagai berikut:

- REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih tegangan

referensi dari ADC dan gambar 1.7 menunjukkan beberapa tegangan referensi yang dapat

digunakan.

Gambar tabel 1.7 Pilihan Tegangan Referensi ADC (ATMega16,2010;217)

- ADLAR (ADC Left Adjust Result) adalah bit yang digunakan untuk menentukan format

data hasil konversi ADC. Bila ADLAR = 0 maka hasil konversi 10 bit disimpan dalam

format: 2 bit disimpan di ADCH dan 8 bit di ADCL seperti ditunjukkan dalam Gambar 1.8,

sedangkan bila ADLAR= 1 maka hasil konversi 10 bit disimpan dalam format: 8 bit disimpan

di ADCH dan 2 bit di ADCL seperti ditunjukkan dalam Gambar 1.9

Gambar 1.8 Format Hasil Konversi Bila DLAR sama dengan 0 (ATMega16,2010;220)

Gambar 1.9 Format Hasil Konversi Bila DLAR sama dengan 1(ATMega16,2010;220)

Page 8: Laporan Ngarang Ngawut Polinema

- MUX4, MUX3, MUX2, MUX1 dan MUX0, adalah bit-bit yang digunakan untuk memilih

input analog yang akan dikonversi oleh ADC. Kombinasi MUX4 sampai MUX0 untuk jenis

input ADC dengan acuan Ground (single Ended Input) ditunjukan dalam table 1.10.

Tabel 1.10 Kanal Input ADC untuk jenis Single Ended Input

2. Register ADCSRA atau ADC Control Status Register A, dinamakan demikian karena

register ini tempat untuk mengendalikan (Control) dan danmengetahui keadaan (Status)

dari ADC, dan untuk bit-bitnya ditunjukkan dalam Gambar 1.11

Gambar 1.11 Bit-bit dalam register ADCSRA(ATMega16,2010;219)

Keterangan dari fungsi bit-bit ADCSRA adalah sebagai berikut:

- ADEN atau ADC Enable, merupakan bit untuk mengaktifkan ADC, bila ADEN = 1 maka

ADC aktif dan Port A tidak aktif, bila ADEN = 0 maka ADC tidak aktif dan Port A aktif.

Page 9: Laporan Ngarang Ngawut Polinema

- ADSC atau ADC Start Convertion, merupakan bit yang digunakan untuk memberikan

perintah mulai konversi, bila ADSC = 1, maka ADC mulai bekerja untuk mengkonversi input

analog dan akan berlogika 0 bila selesai konversi.

- ADATE atau ADC Auto Trigger Enable, merupakan bit yang digunakan untuk

mengendalikan aktivasi picu otomatis. Jika ADATE = 1 maka konversi ADC akan dimulai

pada saat tepi positif pada sinyal trigger yang digunakan.

- ADIF atau ADC Interrupt Flag, merupakan bit penanda akhir konversi ADC. Jika ADIF =

1 maka konversi ADC pada suatu saluran telah selesai dan siap diakses.

- ADIE atau ADC Interrupt Enabe, merupakan bit pengatur aktivasi interupsi. Jika ADIE = 1

maka interupsi telah diaktifkan untuk melayani proses konversi ADC.

- ADPS2, ADPS1 dan ADPS0 atau ADC Prescaler Select, merupakan bit-bityang digunakan

untuk mengatur frukeunsi clock ADC dan Gambar 1.12 merupakan pemilihan frekuensi clok

ADC dengan frekuansi osilator (fosc) dari mikrokontroler ATMega 16 digunakan sebagai

sumber clock dan nilai ADPSn digunakan untuk memilih pembagi frekuansi.

Gambar 1.12 Tabel Frekuensi clock ADC(ATMega16,2010;220)

1.2.2 USART

USART (Universal Synchronous Asynchronous serial Receiver and Transmitter)

merupakan protokol komunikasi serial yang terdapat pada mikrokontroler AVR. Dengan

memanfaatkan fitur ini kita dapat berhubungan dengan “dunia luar”. Dengan USART kita

bisa menghubungkan mikrokontroler dengan PC, hape, GPS atau bahkan modem, dan banyak

Page 10: Laporan Ngarang Ngawut Polinema

lagi peralatan yang dapat dihubungkan dengan mikrokontroler dengan menggunakan fasilitas

USART.

Komunikasi dengan menggunakan USART dapat dilakukan dengan dua cara yaitu

dengan mode sinkron dimana pengirim data mengeluarkan pulsa/clock untuk sinkronisasi

data, dan yang kedua dengan mode asinkron, dimana pengirim data tidak mengeluarkan

pulsa/clock, tetapi untuk proses sinkronisasi memerlukan inisialisasi, agar data yang diterima

sama dengan data yang dikirimkan.  Pada proses inisialisasi ini setiap perangkat yang

terhubung harus memiliki baud rate (laju data) yang sama. Pada mikrokontroler AVR untuk

mengaktifkan dan mengeset komunikasi USART dilakukan dengan cara mengaktifkan

register2 yang digunakan untuk komunikasi USART. Register register yang dipakai antara

lain:

UDR : merupakan register 8 bit yang terdiri dari 2 buah dengan alamat yang sama, yang

digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau tempat

data diterima (RXB) sebelum data tersebut dibaca.

UCSRA: merupakan register 8 bit yang digunakan untuk mengendalikan mode komunikasi

USART dan untuk membaca status yang sedang terjadi pada USART.

Bit RXC [status]—> akan “1” bila ada data di UDR (RXB) yang belum terbaca. Dapat

digunakan untuk sumber interupsi, dengan mengeset RXCIE

Bit TXC[status]—> akan “1” bila ada data di UDR (TXB) yang sudah dikirimkan. Dapat

digunakan untuk sumber interupsi, dengan mengeset TXCIE

Bit UDRE[status]—>akan “1” bila UDR siap untuk menerima data baru.

Bit U2X[kendali]—> diisi “1” bila kecepatan transmisi data ingin dinaikkan 2kali.

Page 11: Laporan Ngarang Ngawut Polinema

Bit MPCM[kendali]—>digunakan bila ingin menggunakan komunikasi multiprosesor.

UCSRB: merupakan register 8 bit yang digunakan untuk mengendalikan mode komunikasi

USART dan untuk membaca status yang sedang terjadi pada USART.

Bit RXCIE[kendali]—>digunakan untuk mengaktifkan interupsi yang bersumber dari RXC.

Bit TXCIE[kendali]—>digunakan untuk mengaktifkan interupsi yang bersumber dari TXC.

Bit UDRIE[kendali]—>digunakan untuk mengaktifkan interupsi yang bersumber dari

UDRE.

Bit RXEN[kendali]—>digunakan untuk mengaktifkan receiver.

Bit TXEN[kendali]—>digunakan untuk mengaktifkan transmitter.

Bit UCSZ2[kendali]—>digunakan untuk menentukan panjang data yang dikirim dalam

sekali. Digunakan bersama2 dengan UCSZ1,UCSZ0 pada UCSRC.

Bit RXB8[status]—>digunakan sebagai penampung data ke 9 pada penerimaan data dengan

9 bit

Bit TXB8[status]—>digunakan sebagai penampung data ke 9 pada transmisi data dengan 9

bit

Page 12: Laporan Ngarang Ngawut Polinema

UCSRC: merupakan register 8 bit yang digunakan untuk mengendalikan mode komunikasi

USART dan untuk membaca status yang sedang terjadi pada USART.

Bit URSEL[kendali]—>digunakan untuk memilih register pada UCSRC dan UBRRH. Dua

register ini memiliki alamat yang sama, sehingga untuk proses penulisan memerlukan

bantuan URSEL. Bila URSEL=1, maka register yang diisi adalah UCSRC, sedangkan bila

URSEL=0, register yang diisi adalah UBRRH. Tidak semua mikrokontroler AVR memiliki

URSEL, karena ada yang memiliki register UBRRH dan UCSRC yang beda alamat

Bit UMSEL[kendali]—>bila “1”, maka mode yang dipilih adalah asinkron, “0”=sinkron

Bit UPM1:UMP0:Parity Mode

Kita set :

Bit USBS[kendali]—>bila “1”, maka stop bit berjumlah 2 bit

Bit UCSZ1,UCSZ0[kendali]—>bersama2 UCSZ2 digunakan untuk menentukan jumlah bit

yang akan dikirimkan dalam sekali pengiriman data.

Bit UCPOL: Clock Polarity

Bit ini digunakan untuk mode synchronous saja. Kita set UCPOL=0 trnasmisi clock naik, UCPOL=1 transmisi clock turun.

Page 13: Laporan Ngarang Ngawut Polinema

UBRRL,H: merupakan register 16 bit yang digunakan untuk mengatur laju data (baud rate)

pada saat mode komunikasi asinkron.

Pengaturan mikrokontroler untuk memfungsikan komunikasi serial dapat dilihat seperti gambar

berikut;

1.2.3 Komponen

1.2.3.1 Virtual Terminal

Page 14: Laporan Ngarang Ngawut Polinema

Virtual Terminal adalah alat di Proteus yang digunakan untuk melihat data yang

berasal dari Serial Port (DB9) dan juga digunakan untuk mengirim data ke serial port. Virtual

Terminal digunakan untuk mengirim atau menerima data ke atau dari port serial. Serial port

adalah 9 pin port yang sebagian besar ditemukan di komputer. Dalam sebagian besar proyek,

data dikirim dari perangkat keras ke komputer melalui port serial ini dan kemudian pengguna

merancang beberapa aplikasi pada komputer untuk melihat data dalam beberapa bentuk

representable.

1.2.3.2 LED (Light Emitting Diode)

LED (Light Emitting Dioda) adalah dioda yang dapat memancarkan cahaya pada saat

mendapat arus bias maju (forward bias). LED (Light Emitting Dioda) dapat memancarkan

cahaya karena menggunakan dopping galium, arsenic dan phosporus. Jenis dopping yang

berbeda dapat menghasilkan cahaya dengan warna yang berbeda. LED (Light Emitting

Dioda) merupakan salah satu jenis dioda, sehingga hanya akan mengalirkan arus listrik satu

arah saja. LED akan memancarkan cahaya apabila diberikan tegangan listrik dengan

konfigurasi forward bias. Berbeda dengan dioda pada umumnya, kemampuan mengalirkan

arus pada LED (Light Emitting Dioda) cukup rendah yaitu maksimal 20 mA. Apabila LED

(Light Emitting Dioda)dialiri arus lebih besar dari 20 mA maka LED akan rusak, sehingga

pada rangkaian LED dipasang sebuah resistor sebagai pembatas arus. Simbol dan bentuk fisik

dari LED (Light Emitting Dioda) dapat dilihat pada gambar berikut.

Page 15: Laporan Ngarang Ngawut Polinema

Dari gambar diatas dapat kita ketahui bahwa LED memiliki kaki 2 buah seperti

dengan dioda yaitu kaki anoda dan kaki katoda. Pada gambar diatas kaki anoda memiliki ciri

fisik lebih panjang dari kaki katoda, kemudian kaki katoda pada LED (Light Emitting Dioda) 

ditandai dengan bagian body LED yang di papas rata. Kaki anoda dan kaki katoda pada LED

(Light Emitting Dioda) disimbolkan seperti pada gambar diatas. Pemasangan LED (Light

Emitting Dioda) agar dapat menyala adalah dengan memberikan tegangan bias maju yaitu

dengan memberikan tegangan positif ke kaki anoda dan tegangan negatif ke kaki katoda.

Konsep pembatas arus pada dioda adalah dengan memasangkan resistor secara seri pada

salah satu kaki LED (Light Emitting Dioda). Besarnya arus maksimum pada LED (Light

Emitting Dioda)  adalah 20 mA, sehingga nilai resistor harus ditentukan. Dimana besarnya

nilai resistor berbanding lurus dengan besarnya tegangan sumber yang digunakan.Rangkaian

dasar untuk menyalakan LED (Light Emitting Dioda)  membutuhkan sumber tegangan LED

dan resistor sebagai pembatas arus seperti pada rangkaian berikut.

1.2.3.3 LM35

LM35 merupakan IC sensor suhu yang presisi, dengan tegangan output

yang linear sebanding dengan suhu dalam Celcius. LM35 memiliki keuntungan

lebih linear dari sensor suhu yang dikalibrasi dalam o Kelvin sehingga LM35 tidak

memerlukan kalibrasi eksternal. LM35 memiliki impedansi keluaran rendah,

output yang linier, dan kalibrasi yang melekat membuat pembacaan antarmuka

dengan sirkuit kontrol sangat mudah. LM35 dapat digunakan dengan catu daya

tunggal, atau catu daya dengan plus dan minus. Salah satu rangkaian yang sering

digunakan dalam aplikasi ditunjukkan dalam gambar berikut.

Gambar Rangkaian Sensor Suhu dalam Celcius (LM35,1994;1)

Page 16: Laporan Ngarang Ngawut Polinema

Sedangkan untuk salahsatu bentuk fisik tipe To-92 ditunjukkan dalam gambar berikut.

Untuk fitur-fitur yang dimiliki oleh LM35 adalah sebagai berikut:

Dikalibrasi langsung dalam oCelcius (celcius)

sensivitasnya atau faktor skala yang Linear = 10,0 mV / oC

Akurasi 0,5 oC (pada 25 oC)

rentang suhu dari - 55 sampai +150 oC

Cocok untuk aplikasi remote

Murah

Beroperasi dari 4 sampai 30 Volt

Arus Drain kurang dari 60 mA

Impedansi Output rendah, 0,1 Ohm untuk 1 beban mA

1.2.3.4 Motor DC

Motor DC (Direct Current) adalah peralatan elektromagnetik dasar yang berfungsi

untuk mengubah tenaga listrik menjadi tenaga mekanik. Motor DC dikendalikan dengan

menentukan arah dan kecepatan putarnya. Arah putaran motor DC adalah searah dengan arah

putaran jarum jam (Clock Wise/CW) atau berlawanan arah dengan arah putaran jarum jam

(Counter Clock Wise/CCW), yang bergantung dari hubungan kutub yang diberikan pada

motor DC. Kecepatan putar motor DC diatur dengan besarnya arus yang diberikan.

1.2.3. Transistor NPN

Page 17: Laporan Ngarang Ngawut Polinema

Transistor adalah komponen yang digunakan untuk kebutuhan penyambungan dan

pemutusan (switching), seperti halnya saklar. Yaitu untuk memutus atau menyambungkan

arus listrik. Selain itu transistor juga berfungsi sebagai penguat (amplifier), stabilisasi

tegangan, modulasi sinyal, dan banyak lagi. Transistor NPN adalah transistor positif dimana

transistor dapat bekerja mengalirkan arus listrik apabila basis dialiri tegangan arus positif.

Page 18: Laporan Ngarang Ngawut Polinema

BAB II

PERMASALAHAN

2.1 Flowchart

Page 19: Laporan Ngarang Ngawut Polinema

2.2 Program

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

This program was produced by the

CodeWizardAVR V2.05.0 Evaluation

Automatic Program Generator

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

http://www.hpinfotech.com

Project :

Version :

Date : 31/01/2016

Author : Freeware, for evaluation and non-commercial use only

Company :

Comments:

Chip type : ATmega16

Program type : Application

AVR Core Clock frequency: 8,000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

#include <delay.h>

// Standard Input/Output functions

#include <stdio.h>

#define ADC_VREF_TYPE 0x60

// Read the 8 most significant bits

Page 20: Laporan Ngarang Ngawut Polinema

// of the AD conversion result

unsigned char 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|=0x40;

// Wait for the AD conversion to complete

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

ADCSRA|=0x10;

return ADCH;

}

// Declare your global variables here

unsigned char dataadc;

unsigned char pul;

unsigned char sat;

unsigned data_rx;

void main(void)

{

// 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

Page 21: Laporan Ngarang Ngawut Polinema

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

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out

Func0=Out

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

PORTC=0x00;

DDRC=0xFF;

// 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=0xFF

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

Page 22: Laporan Ngarang Ngawut Polinema

// Timer1 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: Timer2 Stopped

// Mode: Normal top=0xFF

// 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;

Page 23: Laporan Ngarang Ngawut Polinema

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud Rate: 9600

UCSRA=0x00;

UCSRB=0x18;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x33;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 500,000 kHz

// ADC Voltage Reference: AVCC pin

// ADC Auto Trigger Source: ADC Stopped

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

// SPI initialization

// SPI disabled

SPCR=0x00;

// TWI initialization

// TWI disabled

Page 24: Laporan Ngarang Ngawut Polinema

TWCR=0x00;

while (1)

{

// Place your code here

dataadc=read_adc(0);

data_rx = getchar();

pul=(dataadc%100)/10;

sat=dataadc%10;

if(data_rx=='A')

{

puts("Suhu terdeteksi\n\r");

if (dataadc<=25)

{

PORTC.0=0;

PORTC.2=1;

PORTC.1=0;

puts ("Alarm Tidak Berbunyi\n\r");

}

else if (dataadc>25)

{

PORTC.0=1;

PORTC.1=1;

PORTC.2=0;

puts ("Alarm Menyala\n\r");

}

}

}}

2.3 Hasil Simulasi

2.3.1 if (data_rx==’A’)

Page 25: Laporan Ngarang Ngawut Polinema

Apabila pada virtual terminal diketik ‘A’ dan pada kondisi LM35 menunjukkan nilai ≤ 50,

maka motor tidak berputar dan led yang berwarna hijau akan menyala, virtual terminal

menampilkan “Suhu Terdeteksi.......... Alarm Tidak Berbunyi”

2.3.2 else if (data_rx==’A’)

Apabila pada virtual terminal diketik ‘A’ pada kondisi LM35 menunjukkan nilai ≥ 50, maka

motor akan berputar ke kanan dan led yang berwarna merah akan menyala, pada virtual

terminal menampilkan “Suhu terdeteksi..........Alarm berbunyi”

Page 26: Laporan Ngarang Ngawut Polinema

BAB III

PEMBAHASAN

3.1 Inisaialisasi

3.1.1 Port

// 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;

Page 27: Laporan Ngarang Ngawut Polinema

// Port C initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out

Func0=Out

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

PORTC=0x00;

DDRC=0xFF;

// 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;

Keterangan :

PA0/ADC0 sebagai input dari potensiometer (POT-HG)

PA7/ADC7 sebagai input dari LDR

PC(PC0-PC6) sebagai output pada seven segmen

PD0/RXD dan PD1/TXD sebagai input dari virtual terminal

3.1.2 ADC(Analog To Digital Converter)

3.1.2.1 ADMUX Awal

#define ADC_VREF_TYPE 0x60

3.1.2.2 ADMUX 0x60;

7 6 5 4 3 2 1 0

REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

0 1 1 0 0 0 0 0

0110 | 0000

0 x 6 0

REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih tegangan

referensi dari ADC

Page 28: Laporan Ngarang Ngawut Polinema

ADLAR = 1 maka hasil konversi 10 bit disimpan dalam format 8 bit disimpan di ADCH dan

2 bit di ADCL, MUX4-MUX0 bernilai 0 → pilihan input ADC adalah ADC0

// ADC initialization

// ADC Clock frequency: 500,000 kHz

// ADC Voltage Reference: AVCC pin

// ADC Auto Trigger Source: ADC Stopped

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

7 6 5 4 3 2 1 0

ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

1 0 0 0 0 1 0 0

ADPS2, ADPS1,ADPS0 atau ADC prescaler select, merupakan bit bit yang digunakan untuk

mengatur frekuensi clock ADC

1000 | 0100

0 x 8 4

Page 29: Laporan Ngarang Ngawut Polinema

ss = Vref / (2^n - 1) = 5V / (2^8-1) = 0,0196 V ≈ 20 mV

3.1.3 USART

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud Rate: 9600

UCSRA=0x00;

UCSRB=0x98;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x33;

3.1.3.1 UCSRA

UCSRA=0x00;

Keterangan :

7 6 5 4 3 2 1 0

RXC TXC UDRE FE DOR PE U2X MPCM

0 0 0 0 0 0 0 0

0000 | 0000

0 x 0 0

Pada UCSRA ada 2 bit yang terisiyaitu, U2X dan MPCM, karena tidak digandakan

kecepatannya, dan hanya mode single processor maka nilai UCSRA adalah 0x00.

3.1.3.2 UCSRB

UCSRB=0x98;

Keterangan :

7 6 5 4 3 2 1 0

RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8

Page 30: Laporan Ngarang Ngawut Polinema

1 0 0 1 1 0 0 0

1001 | 1000

0 x 9 8

Karena interupsi saat ada data masuk di buffer diaktifkan maka nilai RXCIE bernilai 1.

Karena ATMega dapay menerima dan mengirim menggunakan serial dan 8 bit karakter maka

RXEN =1 dan TXEN = . Dan nilai UCSZ2 =0 digunakan untuk menentukan ukuran karakter

8 bit, bersamaan dengan nilai bit UCSZ1 dan UCSZ0.

3.1.2.3 UCSRC

UCSRC=0x86;

Keterangan :

7 6 5 4 3 2 1 0

URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL

1 0 0 0 0 1 1 0

1000 | 0110

0 x 8 6

Pada UCSRC semua bit terisi, URSEL = 1 karenamengisi UCSRA, UMSEL = 0

karenamenggunkan mode Asinkron, UPM1 = 0 dan UPM0 = 0

karenatidakmenggunkanparitas. USBS = 0 karenamenggunakan 1 bit stop, UCSZ1 = 1 dan

UCSZ0 = 1 karena frame data adalah 8 bit per karakter, UCPOL = 0 karenamenggunakan

mode Asinkron.

3.1.3.4 UBRRH dan UBRRL

UBRRH=0x00;

UBRRL=0x33;

Keterangan :

UCSZ2 UCSZ2 UCSZ2 Character Size0 0 0 5-bit0 0 1 6-bit0 1 0 7-bit0 1 1 8-bit1 0 0 Reserved1 0 1 Reserved1 1 0 Reserved1 1 1 9-bit

Page 31: Laporan Ngarang Ngawut Polinema

Register 8 bit UBRRH dan dan 8 bit UBBRL menyimpan parameter baudrate 16 bit UBRR

register. Rumus untuk menghitung nilai UBRR:

Perhitungan UBBR

Frekuensi clock = 8MHz

Baud Rate = 9600

Konversi Desimal ke Heksadesimal

51

16 --------- 3

3

Heksadesimal = 0033

Penulisan dalam Register UBRRH dan UBRRL

0 | 33

Page 32: Laporan Ngarang Ngawut Polinema

BAB IV

PENUTUP

4.1 Kesimpulan

Kesimpulan yang dapat diambil dari penyusunan makalah ini yaitu:

4.1.1 Mendeteksi kebakaran dapat dipermudah dengan Alarm Kebakaran Menggunakan

Sensor Suhu LM35 berbasis USART.