Upload
sisca-arisya
View
50
Download
1
Embed Size (px)
Citation preview
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
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
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
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).
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).
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
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)
- 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.
- 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
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.
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
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.
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
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.
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)
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
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.
BAB II
PERMASALAHAN
2.1 Flowchart
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
// 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
// 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
// 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;
// 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
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’)
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”
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;
// 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
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
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
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
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
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.