Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D308064
52
BAB III
PERANCANGAN SISTEM
3.1 PRINSIP KERJA SISTEM
Prinsip kerja sistem pengukur ketinggian air ini secara umum adalah memberikan
informasi kepada Operator (user) pada setiap ketinggian air mengalami perubahan
dengan Handphone sebagai indikator dan akan memberikan informasi panggilan (auto
dial) beserta Alarm (Buzzer) apabila ketinggian air sudah mencapai ketinggian
maksimum yang telah ditetapkan.
Dalam pembuatan sistem pengukur ketinggian air pada tugas akhir ini terdiri dari
beberapa blok rangkaian penyusun utama sistem yaitu rangkaian Mikrokontroler
ATMega8, rangkaian catudaya, sensor Ultrasonik, indikator LED dan Handphone
berfungsi sebagai indikasi pengirim kepada user. Hal ini ditunjukkan pada Gambar 3.1
diagram blok sistem berikut:
Gambar 3.1 Diagram Blok Sistem
53 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Flowchart dari cara kerja sistem pendeteksi ketinggian air berbasis Mikrokontroller
ATMega8 dapat dilihat pada Gambar 3.2 di bawah ini:
Mulai
Aktifkan Sensor
Ping
Ukur Tinggi Air
Apakah Tinggi Air
0-15 Cm
Apakah Tinggi Air
16-20 Cm
Apakah Tinggi Air
21-30 Cm
Hidupkan Indikator
Aman
Hidupkan Indikator
Siaga
Hidupkan Indikator
Awas
Kirimkan SMS Kondisi
Aman
Kirimkan SMS Kondisi
Siaga
Kirimkan SMS Kondisi
Awas
Telpon No Tujuan
1 kali
Tidak Tidak Tidak
SelesaiTombol On/Off
Tidak
Ya
Ya Ya Ya
Gambar 3.2 Flowchart Cara Kerja Sistem
Dari flowchart terlihat cara kerja alat dimulai dengan terlebih dahulu mengaktifkan
sensor Ping yaitu sensor yang digunakan untuk mengukur ketinggian air. Sensor ini
54 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
bekerja dengan memancarkan gelombang ultrasonik sebesar 40 Khz. Cara pembacaan
data dari sensor ini yaitu dengan menghitung waktu tempuh ketika pulsa ultrasonik
40KHz ditransmisikan sampai pulsa tersebut diterima lagi.[2] Dari waktu tempuh
tersebut bisa diketahui jarak yang ditempuh, jarak inilah yang nantinya digunakan untuk
menentukan tinggi air. Untuk indikasinya seperti berikut :
Data jarak ini kemudian dibandingkan untuk mendapatkan nilai tinggi air, dari hasil
perbandingan jika tinggi air yang terukur mempunyai rentang 0 – 15 Cm, sistem akan
mengaktifkan LED sebagai tanda ketinggian air pada level aman kemudian sistem
akan mengirimkan SMS ke Handphone tujuan sebagai informasi kondisi air pada
level aman.
Jika tinggi air yang terukur mempunyai rentang 16 – 20 Cm, sistem akan
mengaktifkan LED sebagai tanda ketinggian air pada kondisi siaga kemudian sistem
akan mengirimkan SMS ke Handphone tujuan sebagai informasi kondisi air pada
level siaga.
Apabila tinggi air yang terukur mempunyai rentang 21 – 30 Cm, sistem akan
mengaktifkan LED sebagai tanda ketinggian air pada level awas dan buzzer sebagai
alarm tanda bahaya. Pada level ini sistem juga akan mengirimkan SMS ke
Handphone tujuan sebagai informasi kondisi air pada level awas dan melakukan
panggilan (Dial) sebanyak 1 kali. Begitu seterusnya sensor akan memantau ketingian
air secara terus menerus dan berakhir pada saat panggilan kondisi awas.
Secara umum blok perancangan seperti ditunjukkan pada Gambar 3.3 berikut :
Gambar 3.3 Blok Perancangan
55 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
+ 5 V
SENSOR PING
Ke Port D.7.
Pada blok perencangan Gambar 3.3 dapat dilihat sebuah bak penampungan air, pipa
paralon dan sensor untuk sistem kerjanya seperti penjelasan diatas, setelah sisi pengirim
(Transmitter) mengirimkan gelombang dan sampai kepada objek (Air) maka gelombang
Ultrasonik akan memantul dan diterima pada sisi terima (Receiver) sensor.
3.2 PERANCANGAN PERANGKAT KERAS (HARDWARE)
3.2.1 Rangkaian Sensor Ultrasonik
Sensor yang digunakan untuk mengukur ketinggian air yaitu sensor jarak
Ultrasonik PING produksi parallax. Sensor ini mampu mengukur dengan rentang
antara 2 cm sampai 300 cm. Sensor Ultrasonik Ping Parallax terdiri dari sebuah
chip pembangkit sinyal 40KHz, sebuah speaker Ultrasonik dan sebuah mikropon
Ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara
mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya[3]. Sensor
Ping terhubung dengan port D.7 berikut adalah Gambar rangkaian sensor
Ultrasonik Ping.
Gambar 3.4 Rangkaian Sensor Ping
Prinsip kerja sensor ping ini adalah :
1. Port D.7 yang digunakan sebagai jalur data sensor dijadikan output.
56 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
2. Mikrokontroler memberikan pulsa trigger (pulsa high) dengan tOUT
selama 2 µs sampai 5 µs).
3. Kemudian setelah memberikan trigger, Port D.7 tersebut dijadikan input.
4. Sensor memancarkan gelombang Ultrasonik sebesar 40 KHz selama 200 µs
(tBURST).
5. Gelombang Ultrasonik ini akan merambat diudara dengan kecepatan 344
meter/detik atau 1 cm setiap 29.034 µs.
6. Jadi waktu yang dibutuhkan sensor untuk 1 cm adalah 58 µs, hal ini
dipengaruhi kondisi 2 kali jarak ukur yaitu waktu untuk mengirimkan
gelombang Ultrasonik dan waktu untuk menerima gelombang Ultrasonik.
7. Gelombang tersebut akan mengenai objek kemudian terpantul kembali ke
sensor.
8. Selama menunggu pantulan, sensor akan menghasilkan sebuah pulsa (High)
9. Pulsa ini akan berhenti (Low) ketika gelombang suara pantulan terdeteksi
oleh sensor.
10. Lebar pulsa tersebutlah yang yang dipresentasikan sebagai jarak antara
sensor Ping dengan objek.
11. Untuk perhitungan lebar pulsa (𝑡𝑖𝑛) didapat dari kecepatan suara dan
perbandingan jarak tempuh pada saat receiver (RX) memencarkan
gelombang suara ke objek pantulan dan akan diterima pada transmitter (TX)
sensor.
12. Kecepatan suara normal diudara ialah 344 meter/detik, dengan
menggunakan persamaan 2.1 maka jarak (S) yang diukur akan dikalian 2
karena pada saat sensor memancarkan gelombang suara dengan lebar pulsa
(𝑡𝑖𝑛) 29.034 µs maka akan kembali diterima sensor dengan lebar pulsa (𝑡𝑖𝑛)
58.068 µs.
3.2.2 Rangkaian Pengendali Mikrokontoller ATMega8
Pada perencanaan dan pembuatan sistem pengukur ketinggian air ini,
pengendalinya menggunakan mikrokontroler keluaran ATMEL yaitu ATMega8
AVR. Mikrokontroler ATMega8 memiliki sejumlah pin atau kaki yang memiliki
57 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
fungsi masing-masing sehingga hanya beberapa pin saja yang digunakan pada
pembuatan sistem pendeteksi ketinggian air ini yang sesuai dengan kebutuhan kerja
sistem. Sistem minimum ATMega 8 ini merupakan pusat dan sebagai pengatur
kerja dari keseluruhan sistem pendeteksi ketinggian air. Fungsi sistem minimum ini
antara lain :
1. Pengolahan data sensor ping
2. Menghidupkan indicator
3. Mengaktifkan Buzzer sebagai alarm
4. Mengatur kerja Handphone untuk mengirimkan informasi berupa SMS dan
Telepon (Dial).
Fungsi masing-masing kaki tersebut dapat dilihat pada Gambar 3.5 sebagai
berikut :
Gambar 3.5 Sistem Minimum ATMega 8
+ 5 V
7
22pF
2
22pF
3
11,0592 Mhz C4C3
R8 220
139
Ke
Handphone
R210K
22nF
22
10
R9 220
8
24
26
25
27
28
X'TAL
C3
IC 2
ATMEGA 8
1
OUTPUT KE RANGKAIAN
INDIKATOR DAN BUZZER
DARI SENSOR PING PORT D.7
PORT C.5
PORT C.4
PORT C.3
PORT C.2
PORT C.1PORT D.0(RXD)
PORT D.1(TXD)
.
.
.
.
..
.
.
58 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Penjelasan fungsi kaki (pin) Mikrokontroler ATMega8 pada pembuatan alat
ini, antara lain :
Tabel 3.1 Fungsi pin Mikrokontroler ATMega8 yang digunakan
No Pin Port Fungsi
1 RST Masukan untuk tombol reset
2 RX.D Sebagai Receiver
3 TX.D Sebagai Transmitter
7 VCC Masukan tegangan (power supply)
8 & 22 GND Ground
9 XTAL1 Osilator
10 XTAL2 Osilator
13 AIN1 Sebagai masukan Sensor Ultrasonik
24 PC.1 Sebagai masukan dari buzzer
25 PC.2 Sebagai tanda LED
26 PC.3 Sebagai tanda LED (kondisi awas)
27 PC.4 Sebagai tanda LED (kondisi siaga)
28 PC.5 Sebagai tanda LED (kondisi aman)
Sistem kerja dari sistem minimum Atmega 8 yaitu mengaktifkan terlebih
dahulu sensor Ping dengan cara membuat Pin D.7 berlogika 1 (High) sehingga
sensor Ping aktif dan memancarkan frekuensi sebesar 40Khz. Gelombang tersebut
akan mengenai objek kemudian terpantul kembali ke sensor. Selama menunggu
pantulan, sistem akan menghitung nilai jarak yang terukur dengan cara meng-
increment register setiap 58us, karena sensor membutuhkan waktu 58us untuk
mengukur 1 Cm.
Gelombang Ultrasonik tersebut akan mengenai objek kemudian terpantul
kembali ke sensor. Selama menunggu pantulan, sistem akan menghitung nilai jarak
yang terukur dengan cara mengincrement register setiap 58us, karena sensor
membutuhkan waktu 58us untuk mengukur 1 Cm. ketika gelombang suara
pantulan terdeteksi oleh sensor Pin D.7 Berlogika 0 (Low), maka sistem akan
membandingan nilai yang tersimpan pada register yang merupakan nilai jarak yang
diukur.
59 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Kemudian sistem akan mengaktifkan LED indikator dengan cara memberi
logika 0 (Low) pada salah satu port C.3 untuk kondisi air pada level awas, portC.4
untuk kondisi air pada level siaga dan Port C.5 untuk kondisi air pada level aman.
Sistem juga akan mengirim perintah ke Handphone melalui port serial Port
D.1(TXD) dan Port D.0(RXD) agar Handphone mengirimkan SMS sesuai kondisi
ketinggian air yang diukur.
1. Rangkaian Oscillator
Rangkaian oscillator merupakan rangkaian yang digunakan sebagai
pembangkit pulsa clock, atau kecepatan. Pada rangkaian oscillator terdapat
komponen crystal dan capacitor polar. Crytal adalah resonator mekanik yang
bergetar menstabilkan getaran elektronis[11]. Jadi, dengan menggunakan kristal
maka akan didapatkan frekuensi clock yang stabil. Kapasitor polar pada alat ini
berfungsi untuk menyimpan muatan listrik. Pada kapasitor polar tegangan
kerjanya dinyatakan dalam satuan Volt dan untuk mengetahui nilai kapasitas
sebuah kapasitor polar satuan yang digunakan adalah µF (MikroFarad).
Kapasitor polar yang digunakan sebesar 22 pF dan frekuensi crystal yang
digunakan sebesar 11,592 Mhz seperti pada Gambar 3.6 berikut :
Gambar 3.6 Rangkaian Oscillator
C3 C4
22pF 22pF
X'TAL
11,0592 Mhz
1
7
28
27
26
25
24
8
22
10913
23
IC 2
ATMEGA 8
60 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Frekuensi crystal yang digunakan sebesar 11,592 Mhz , maka dapat
dihitung dengan menggunakan persamaan 2.1 :
𝟏 𝑴𝑪 =𝟏𝟐
𝒇𝒓𝒆𝒌𝒖𝒆𝒏𝒔𝒊 𝒄𝒓𝒚𝒕𝒂𝒍
=𝟏𝟐
𝟏𝟏, 𝟓𝟗𝟐𝑴𝒉𝒛
= 𝟏, 𝟎𝟑𝟓 𝐮𝐒
Untuk mengetahui berapa kecepatan Mikrokontroler ATMega8 pada saat
mengeksekusi sebuah instruksi dapat dihitung dengan menggunakan persamaan
2.2 :
𝑻𝒊𝒏𝒔𝒕 =𝟏, 𝟎𝟑𝟓 × 𝟏𝟐
𝟏𝟏, 𝟓𝟗𝟐= 𝟏, 𝟎𝟕𝟏 𝐬
Maka kecepatan Mikrokontoller ATMega8 untuk melakukan eksekusi
program adalah 1,071 s.
3.2.3 Rangkaian Indikator
Rangkaian ini difungsikan untuk mengindikasikan 3 kondisi ketinggian air
yang akan diukur. Rangkaian indikator ini terdiri dari 3 LED, yaitu LED merah
untuk mengindikasikan kondisi awas dimana pada kondisi ini ketinggian air antara
21 – 30 Cm, LED kuning untuk mengindikasikan kondisi siaga dimana pada kondisi
ini ketinggian air antara 16 – 20 Cm dan LED hijau untuk mengindikasikan kondisi
aman dimana pada kondisi ini ketinggian air antara 0 - 15 Cm. Berikut adalah
Gambar rangkaian indikator yang dipakai pada sistem ini
Gambar 3.7 Rangkaian Indikator
DC 5 Volt
R3 220
D2 (Kondisi Awas)
D3 (Kondisi Siaga)
D4 (Kondisi Aman)
R4 220
R5 220
Dari Port C.5
Dari Port C.4
Dari Port C.3
61 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Dari Gambar 3.7 di atas nilai Resistor yang digunakan untuk membatasi arus
pada LED yaitu sebesar 220 Ω. Karena arus forward LED sebesar 15 mA dengan
tegangan kerja LED sebesar 1,7 Volt, sedangkan untuk sumber tegangannya adalah
5 Volt maka nilai hambatannya dapat dihitung dengan persamaan 2.29 :
Maka nilai Resistansi untuk LED adalah:
𝑹𝑳𝑬𝑫=
𝑽𝑪𝑪−𝑽𝑳𝑬𝑫𝑰𝒇(𝑳𝑬𝑫)
𝑹𝑳𝑬𝑫=
𝟓 𝒗𝒐𝒍𝒕−𝟏,𝟕 𝒗𝒐𝒍𝒕
𝟎,𝟎𝟏𝟓 𝑨
𝑹𝑳𝑬𝑫=
𝟑,𝟑 𝑽𝒐𝒍𝒕
𝟎,𝟎𝟏𝟓 𝑨
𝑹𝑳𝑬𝑫=𝟐𝟐𝟎 Ώ
Jadi besarnya Resistor yang terpasang pada LED sebesar 220 Ohm.
3.2.4 Rangkaian Buzzer
Buzzer berfungsi untuk Alarm yang digunakan sebagai tanda ketika sensor Ping
mendeteksi ketinggian air 21 Cm sampai dengan 30 Cm, karena pada ketinggian ini
merupakan kondisi air pada level awas. Buzzer akan bekerja ketika pin 24 (PC.1)
IC Atmega 8 kondisinya aktif (berlogika 1) .
Gambar 3.8 Rangkaian Buzzer
+ 5 VOLT
R7 1KC9013
Q1
BUZZER
Ke PIN 24 (PC.1)
62 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Pada Gambar 3.8 penggunaan transistor C9013 dimana transistor berguna
sebagai saklar , transistor tipe NPN C9013 yang akan bekerja apabila mendapat bias
positif. Sehingga apabila mendapat logika 0 (low) dari Mikrokontoller maka Buzzer
tidak akan menghantarkan arus dan tegangan ke transistor (transistor off), sehingga
tegangan keluaran transistor akan menjadi 0 Volt.
Ketika ketinggian air mencapai kondisi awas, maka Mikrokontoller menerima
dan menyebabkan Buzzer mengeluarkan logika 1 (high) dan dapat menghantarkan
arus dan tegangan ke transistor (transistor on), sehingga tegangan keluaran
transistor akan menjadi ± 5 Volt.
3.2.5 Rangkaian Regulator
Agar alat yang dibuat mudah dibawa kemana-mana (Portable) maka sumber
tegangannya menggunakan sebuah Baterai 9 Volt, karena Mikrokontoller yang
dipakai ATMega8 dan beberapa komponen lain membutuhkan tegangan 5 Volt
maka diperlukan rangkaian penurun tegangan dari 9 Volt menjadi 5 Volt. Rangkaian
ini sekaligus sebagai Regulator. Gambar 3.9 dibawah ini adalah rangkaian
Regulator yang digunakan pada sistem ini.
Gambar 3.9 Rangkaian Regulator
9 VOLT
+
ON/OFF D11N4002 IC 1
LM7805In Out
ComC1 C2
R1470
D1
470uF/25V
1000uF/10V
1 3
2
Output DC5 Volt
+
-+ +
63 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Adapun bagian – bagaian pada rangkaian regulator di atas yaitu :
1. Tegangan Sumber (Vcc)
Tegangan sumber menggunakan sebuah Baterai 9 Volt.
2. Penyearah tegangan (rectifier)
Dioda 1N4002 difungsikan sebagai penyearah tegangan (rectifier) sehingga
apabila terjadi pemasangan polaritas Baterai yang terbalik rangkaian tidak
akan tetap aman karena arus tidak dapat mengalir pada rangkaian.
3. Penapis filter
Rangkaian penapis filter berupa Kapasitor yang dipasang sebelum dan
sesudah IC Regulator, Kapasitor yang digunakan adalah Kapasitor 470
uF/25 Volt dan 1000 uF/10 Volt. Untuk rangkaian ini kapasitor berfungsi
sebagai penahan arus listrik (isolator).
4. IC Regulator
Sementara untuk menjaga tegangan agar berada pada nilai tegangan yang di
kehendaki maka diperlukan IC Regulator tegangan, karena tegangan yang
dikehendaki 5 Volt maka IC Regulator yang dipakai IC LM 7805.
3.2.6 Rangkaian Komunikasi Serial
Komunikasi serial digunakan supaya Mikrokontoller ATMega8 dapat
terhubung dengan Handphone, dengan mengirimkan report pada saat air dalam
keadaan Aman, Siaga, Awas, serta memanggil (dial) user apabila ketinggian air
sudah mencapai batas maksimum (Awas). Mikrokontroler Atmega8 memiliki Port
USART pada Pin 2 (RX.D) dan Pin 3 (TX.D) untuk melakukan komunikasi data
antara Mikrokontroler dengan Mikrokontroler ataupun Mikrokontroler dengan
Handphone. USART dapat difungsikan sebagai transmisi data sinkron, dan
asinkron. Sinkron berarti clock yang digunakan antara transmitter (TX) dan
receiver (RX) satu sumber clock. Sedangkan asinkron berarti transmiter dan
receiver mempunyai sumber clock sendiri-sendiri[11].
64 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Supaya Mikrokontoller ATMega8 terhubung dengan Handphone maka
digunakan kabel komunikasi serial Handphone yang memiliki pin transmitter (TX)
dan receiver (RX) sama seperti Mikrokontoller ATMega8, penggunaan dua buah
resistor bernilai 220 Ω hanya sebatas pengaman untuk tegangan yang masuk dari
Mikrokontoller ATMega8 ke Handphone ataupun sebaliknya, seperti Gambar 3.10
berikut :
Gambar 3.10 Rangkaian Serial Antara Mikrokontoller ATMega8 dan
Handphone
3.2.7 Rangkaian Keseluruhan Pendeteksi Ketinggian Air
Setelah perancangan tiap rangkaian pada sistem selesai dibuat maka dapat
dibuat rancangan sistem secara keseluruhan. Perancangan rangkaian sistem
keseluruhan pada pembuatan tugas akhir ini dapat dilihat pada Gambar 3.11
berikut:
R9 220
Kabel Serial
Handphone
1
7
28
27
26
25
24
8
22
10913
23
IC 2
ATMEGA 8
R8 220
1234
65 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Gam
bar
3.1
1 R
angk
aian
Kes
eluru
han
Pen
det
eksi
Ket
inggia
n A
ir
66 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
3.3 PERANCANGAN PERANGKAT LUNAK (SOFTWARE)
3.3.1 Prosedur Penggunaan Program
Dalam tugas akhir ini bahasa pemrograman yang penulis gunakan yaitu bahasa
assembly. Untuk editornya menggunakan software AVR studio versi 4 dimana
software ini sekaligus sebagai kompailernya yang akan mengubah program
assembly menjadi program objek maupun bahasa hexa. AVR studio 4 menyediakan
area kerja dan toolbar yang memudahkan pengguna melakukan berbagai operasi
sesuai yang diinginkan. Pada saat pertama kali membuka program AVR Studio 4,
tampilan akan terlihat seperti yang ditunjukan pada Gambar 3.12 berikut .
Gambar 3.12 Tampilan AVR Studio 4 Saat Pertama Kali Dibuka.
Tampilan pada gambar tersebut tidak aktif pada saat pertama menjalankan
AVR Studio 4 karena secara otomatis sebuah tampilan pembuka (wizard start-up
AVR studio 4) akan muncul. Tampilan pembuka tersebut akan memberikan pilihan
untuk membuat suatu proyek baru atau membuka proyek yang pernah dibuat.
Tampilan tersebut akan terlihat seperti Gambar 3.13.
67 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Gambar 3.13 Wizard Start-Up Dari AVR Studio 4
3.3.2 Membuat Sebuah Proyek
Untuk membuat proyek baru, langkah-langkahnya adalah sebagai berikut :
a. Create New Project baru ketika pertama kali jendela welcome terbuka.
b. Project name. Nama file sumber pada kolom di bawahnya akan secara
otomatis mengikuti. Apabila diinginkan nama yang berbeda tinggal
merubahnya. File sumber akan memiliki ekstensi asm.
c. Create Initial File.
d. Menentukan lokasi tempat menyimpannya program. Lakukan dengan browse
pada tombol di sebelah kanan Location.
e. Tombol next.
68 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Gambar 3.14 Tampilan Proyek Baru
f. Platform debug yang ingin digunakan. Apabila tidak menggunakan
perangkat emulator, AVR simulator. Selanjutnya, memilih tipe
Mikrokontroler yang digunakan.
Gambar 3.15 Platform Debug Dan Tipe AVR
69 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
g. Finish
Pada layar monitor akan muncul tampilan seperti pada Gambar di bawah ini
kemudian lakukan penulisan program assemblynya.
Gambar 3.16 Tampilan Untuk Menulis Program Assembler AVR
Setelah selesai menulis program assembler kemudian File→Save Program.
Setelah itu, Project→Build. Jika pesan yang dihasilkan menunjukan tidak adanya
error, maka proyek tersebut telah berhasil di bangun. Langkah terakhir adalah
Project→save project.
Pada proses pembangunan proyek dapat ditentukan jenis file tambahan yang
ingin dibangkitkan. Caranya, project→AVR Assembler Setup. Dari kotak dialog
tersebut dapat ditentukan file.map maupun file.list.
70 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Gambar 3.17 Options Untuk Membangkitkan File Map dan List
File.list merupakan file laporan hasil assembly program sumber (file.asm) yang
berisi informasi mengenai versi assembler, tanggal, baris, alamat memori program,
kode yang dihasilkan, keterangan error dan informasi lainnya.
3.3.3 Memasukan Program ke Mikrokontroler
Setelah proses kompailer berhasil dan tidak menemukan error dengan
menggunakan program PROGISP Version 1.68, kemudian downloader
dihubungkan dengan computer melalui port USB. Untuk mengambil file HEX yang
akan dituliskan pada IC dengan menggunakan perintah File→Load Flash (cari
letak file.hex tersimpan)→Open.
71 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Gambar 3.18 Tampilan Program PROGISP (Ver 1.68)
Untuk menuliskan kode program ke dalam IC dengan menekan tombol menu
Command→Write Flash). Program akan sekaligus memverifikasi kode program
yang dituliskan. Untuk menghapus tekan tombol erase.
3.3.4 Perancangan Program Dengan Bahasa Assembler
Sebelum melakukan perancangan program, maka dibuat dulu garis besar
program dari sistem yang akan dibuat, yang biasanya dikenal dengan flowchart.
Berikut adalah flowchart dari program untuk bagian pemancar dan penerima yang
penulis buat.
72 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
1. Flowchart dan Program Assembler
Mulai
Inisialisasi Mikrokontoller
Inisialisasi Port Serial
Hapus SMS Pada Inbox
Aktifkan Sensor Ultrasonik
(SBI PortD,7)
Apakah
PinD,7 = 0
Bandingkan Jarak Sensor
(Tinggi Air)
Apakah Tinggi Air
0-15 Cm
Hidupkan Indikator Aman
(Port C, 5)
Kirim SMS Kondisi
Aman
Delay 58 uS (1cm)Naikan 1 Nilai Sensor
(Jarak Sensor)
Apakah Tinggi Air
16-20 Cm
Apakah Tinggi Air
21-30 Cm
Hidupkan Indikator Siaga
(Port C, 4)
Kirim SMS Kondisi
Siaga
Hidupkan Indikator Awas
(Port C, 3) & Buzzer (Port C,1)
Kirim SMS Kondisi
Awas
Telpon (Dial) No Tujuan 1 Kali
Tidak
Tidak Tidak Tidak
SelesaiTombol On/Off
Ya Ya Ya
Tidak
Ya
Gambar 3.19 Flowchart Sistem Pengukur Ketinggian Air
73 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
Flowchart di atas adalah flowchart untuk system pengukur ketinggian air. Dari
flowchart di atas sudah begitu jelas gambaran program yang akan dibuat. Untuk itu
dibuat program satu persatu untuk masing-masing menu flowchart. Flowchart
dimulai dengan menginisialisasi Mikrokontroler dan Port serialnya, menghapus
SMS pada inbox dan kemudian sistem mengaktikan Port yang digunakan untuk
sensor untuk selanjutnya mengerjakan rutin - rutin percabangannya. Berikut adalah
beberapa program yang dipakai.
.include "m8def.inc"
.def nilai_sensor =r22
.def jarak_sensor =r24
.org 0x0000
rjmp inisialisasi
Program di atas adalah untuk inisialisasi Mikrokontroler .Include
"m8def.inc" kode tersebut berguna untuk mengincludekan file m8def.inc ke
dalam program .asm. File m8def.inc yang berisi file definisi dari Mikrokontroler
Atmega8. Dengan menyertakan file tersebut, program assembly yang dibuat lebih
dapat dimengerti dan dipahami. Instruksi .def nilai_sensor =r22 instruksi ini
difungsikan untuk mendefinisikan Register 22 (R22) sebagai tempat menyimpan
nilai waktu yang dihitung oleh sensor ping. .def jarak_sensor=r24 perintah ini
difungsikan untuk mendefinisikan Register 24 (R24) sebagai tempat menyimpan
hasil perbandingan antara nilai waktu sensor dengan data langsung yang hasilnya
merupakan jarak sensor dengan air (tinggi air yang diukur). .org 0x0000 perintah
ini membuat program dimulai dari alamat awal 00 Hexadesimal. Setelah semua
instruksi dikerjakan program memanggil rutin inisialisasi untuk menginisialisasi
Mikrokontroller.
inisialisasi:
ldi tmp,low(ramend)
out spl,tmp
ldi tmp,high(ramend)
out sph,tmp
ldi tmp,0xff
out ddrc,tmp
74 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
cbi portc,1
cbi portc,2
sbi portc,3
sbi portc,4
sbi portc,5
rcall timer1d
rcall init_usart
rcall hapus_inbox
Program di atas berfungsi untuk menginisialisasi stack pointer, port serial dan
port-port yang mau digunakan dengan peripheral yaiutu LED dan Buzzer. Instruksi
ldi tmp,low(ramend) sampai instruksi out sph,tmp instruksi ini digunakan untuk
inisialisasi stack pointer. Stack pointer merupakan suatu bagian dari AVR yang
berguna untuk menyimpan data sementara, variable lokal dan alamat kembali dari
suatu interupsi ataupun subrutin. Stack pointer diwujudkan sebagai dua buah
register, yaitu SPH dan SPL. Pada awalnya, SPH dan SPL akan bernilai 0 sehingga
setiap program harus terdapat inisialisasi ini agar setiap pemanggilan subrutin
ataupun interupsi program dapat kembali ke rutin program semula.
Intruksi ldi tmp,0xff dan out ddrc,tmp akan membuat Port C sebagai keluaran
(output) dimana Port C ini yang digunakan untuk mengaktifkan maupun
menonaktifkan LED dan Buzzer. Instuksi cbi portc,1 digunakan untuk
menonaktifkan Buzzer sedangkan instruksi cbi portc,2 digunakan untuk
menonaktifkan LED yang digunakan untuk indikator SMS. Instruksi sbi portc,3 ,
sbi portc,4 dan sbi portc,5 instruksi ini berfungsi mengeset agat port C.3, C4
dan C5 berlogika 1 (high) sehingga dengan diberi logika 1 maka LED indikator
untuk kondisi aman, kondisi siaga dan kondisi awas akan padam. Selanjutnya
program akan memanggil rutin delay 1 detik yaitu dengan perintah rcall timer1d
rutin ini digunakan untuk menunda program selama 1 detik. Setelah penundaan 1
detik tercapai program akan menjalankan instruksi rcall init_usart, instruksi ini
merupakan perintah untuk mengatur Port serial dari Mikrokontroller agar dapat
berkomunikasi dengan Handphone. Setelah port serial disetting selanjutnya adalah
menghapus isi SMS yang terdapat pada inbox Handphone yaitu dengan perintah
rcall hapus_inbox. Rutin ini akan menghapus 1 sms yang terdapat pada inbox
75 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
setiap kali alat dihidupkan. Dengan instruksi rcall program akan memamanggil
rutin tersebut. Setelah semua instruksi inisialisasi dikerjakan maka program akan
mengaktifkan sensor ping dan membaca hasil pengukurannya berikut adalah
perintah-perintahnya.
START:
rcall delay_200uS
clr nilai_sensor
ser tmp
out ddrd,tmp
cbi portd,7
sbi portd,7
rcall delay_3uS ;3us
cbi portd,7
rcall delay_750uS ;750us
sbi portd,7
clr tmp
out DDRD,tmp
Program di atas adalah kumpulan instruksi-instruksi yang digunakan untuk
mengaktifkan agar sensor ping bekerja sesuai dengan cara kerja dari sensor ping.
Instruksi rcall delay_200uS, instruksi ini digunakan pertama kali sebelum sensor
digunakan dalam hal ini untuk memanggil rutin penundaan sebesar 200uS setelah
instruksi ini selesai selajutnya program akan mengclearkan register yang akan
digunakan untuk menyimpan nilai pembacaan sensor yaitu dengan instruksi
clr.nilai_sensor. Sistem menyiapkan port d.7 yang digunakan untuk output, agar
dapat mengaktifkan sensor ping dalam hal ini dengan perintah ser tmp, out
ddrd,tmp dan cbi portd,7. Selanjutnya port d.7 dibuat high dengan instruksi sbi
port d,7 dan menjaga port d,7 agar high selama 3uS dengan perintah rcall
delay_3uS kemudian port d,7 dibuat berlogika low dan ditahan agar low selama
750uS yaitu dengan perintah cbi portd,7 dan rcall delay_750uS. Langkah
selanjutnya adalah menyiapkan port d.7 agar dapat menjadi port input karena sensor
76 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
akan berlogika low ketika sensor mendeteksi benda yang diukur dengan instruksi
clr tmp dan out DDRD,tmp.
wait:
rcall delay_58us
inc nilai_sensor
sbic PIND,7
rjmp wait
clr jarak_sensor
mov jarak_sensor,nilai_sensor
Program di atas digunakan untuk membaca jarak sensor dengan benda yang
diukur. Pertama-tama program memanggil sub rutin delay_58uS, delay 58uS ini
merupakan waktu yang dibutuhkan untuk sinyal Ultrasonik memancar dan diterima
kembali oleh sensor untuk jarak 1 cm kemudian program akan mengerjakan
perintah inc nilai_sensor, perintah ini akan mengincrement atau menambah nilai
1 data yang tersimpan pada nilai_sensor selanjutnya program menunggu adanya
sinyal pantulan yang ditandai berubahnya logika pada Pin D.7 menjadi logika low
untuk memantaunya dengan perintah sbic PIND,7, jika pin d.7 masih berlogika 1
artinya belum ada sinyal pantulan maka perintah dibawahnya akan dikerjakan yaitu
akan memanggil label wait untuk mengerjakan tundaan selama 58uS kemudian
menambah 1 data yang tersimpan pada nilai_sensor begitu seterusnya sampai
logika pada pin d.7 menjadi low. Jika pin pada D.7 berubah menjadi low maka
program akan meloncat 1 step dibawahnya dalam hal ini program langsung
mengerjakan instruksi clr jarak_sensor, instruksi ini agar register yang nantinya
digunakan untuk menyimpan nilai jarak dari sensor bernilai 0. Selanjutnya program
menyimpan jarak sensor dengan perintah mov jarak_sensor,nilai_sensor, dari
instruksi tersebut nilai sensor dipindah ke jarak_sensor agar nantinya dapat
dibandingkan dengan data langsung. Setelah jarak_sensor didapat langkah
selanjutnya adalah membandingkan dengan data langsung untuk mengetahui tinggi
air yang diukur yang nantinya digunakan untuk membedakan masing-masing
kondisi. 3 kondisi pada ketinggian air yang diukur yaitu :
77 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
a. Kondisi Aman
Kondisi aman yaitu jika tinggi air yang diukur mempunyai rentang antara
0 Cm sampai dengan 15 Cm. berikut adalah programnya :
aman:
cpi jarak_sensor,16
breq stop12
cpi jarak_sensor,17
………………………………
……………………………...
cpi jarak_sensor,30
breq stop12
cbi PORTC,1
sbi PORTC,3
sbi portc,4
sbi portc,5
rcall timer1d
rjmp start
stop12:
cbi portc,1
sbi portc,3
sbi portc,4
cbi portc,5
rcall timer1d
Program di atas digunakan untuk membandingkan data yang sudah
disimpan pada register R24 (jarak_sensor) dengan data langsung. Data
langsung nya yaitu 16 sampai 30 karena tinggi air pada kondisi ini adalah 0
Cm sampai dengan 14 Cm. cpi jarak_sensor,16 instruksi tersebut digunakan
untuk membandingkan data yang sudah disimpan pada jarak_sensor dengan
data 16 jika data yang dibandingkan sama berarti tinggi air adalah 30
dikurangi 16 yaitu 14 Cm. Dengan perintah breq stop12 program akan
memanggil rutin berlabel stop12 jika data yang dibandingkan sama. Jika data
yang dibandingkan berbeda maka perintah selanjutnya dikerjakan yaitu
dibandingkan dengan data langsung bernilai 17 barangkali tinggi airnya
adalah 13 Cm begitu seterusnya data akan dibandingkan dengan data
langsung sampai pada angka 30. Rutin berlabel stop12 berisi perintah untuk
78 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
mengaktifkan LED indikator aman yaitu instruksi cbi portc,5 dan
menonaktifkal LED kondisi siaga, kondisi awas dan mematikan Buzzer
dengan perintah cbi portc,1 , sbi portc,3 dan sbi portc,4.
b. Kondisi Siaga
Kondisi siaga yaitu jika tinggi air yang diukur mempunyai rentang antara
16 Cm sampai dengan 20 Cm. berikut adalah programnya :
cek_siaga:
cpi jarak_sensor,10
breq stop11
cpi jarak_sensor,11
……………………
……………………
cpi jarak_sensor,15
breq stop11
rjmp aman
stop11: ;Kondisi siaga
cbi portc,1
sbi portc,3
cbi portc,4
sbi portc,5
rcall timer1d
ret
Program di atas digunakan untuk membandingkan data yang sudah
disimpan pada register R24 (jarak_sensor) dengan data langsung. Data
langsung nya yaitu 10 sampai 15 karena tinggi air pada kondisi ini adalah 15
Cm sampai dengan 20 Cm. cpi jarak_sensor,10 instruksi tersebut digunakan
untuk membandingkan data yang sudah disimpan pada jarak_sensor dengan
data 10 jika data yang dibandingkan sama berarti tinggi air adalah 30
dikurangi 10 yaitu 20 Cm. Dengan perintah breq stop11 program akan
memanggil rutin berlabel stop11 jika data yang dibandingkan sama. Jika data
yang dibandingkan berbeda maka perintah selanjutnya dikerjakan yaitu
dibandingkan dengan data langsung bernilai 11 barangkali tinggi airnya
79 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
adalah 21 Cm begitu seterusnya data akan dibandingkan dengan data
langsung sampai pada angka 15. Rutin berlabel stop11 berisi perintah untuk
mengaktifkan LED indikator siaga yaitu instruksi cbi portc,4 dan
menonaktifkal LED kondisi aman, kondisi awas dan mematikan Buzzer
dengan perintah cbi portc,1 , sbi portc,3 dan sbi portc,5.
c. Kondisi Awas
Kondisi Awas yaitu jika tinggi air yang diukur mempunyai rentang
antara 21 Cm sampai dengan 30 Cm. berikut adalah programnya :
cpi jarak_sensor,1
breq stop1
cpi jarak_sensor,2
…………………….
…………………….
cpi jarak_sensor,9
breq stop1
rjmp cek_siaga
stop1: ;Kondisi awas
sbi portc,1
cbi portc,3
sbi portc,4
sbi portc,5
rcall timer1d
ret
Program di atas digunakan untuk membandingkan data yang sudah
disimpan pada register R24 (jarak_sensor) dengan data langsung. Data
langsung nya yaitu 1 sampai 9 karena tinggi air pada kondisi ini adalah 21
Cm sampai dengan 30 Cm. cpi jarak_sensor,1 instruksi tersebut digunakan
untuk membandingkan data yang sudah disimpan pada jarak_sensor dengan
data 1 jika data yang dibandingkan sama berarti tinggi air adalah 30 dikurangi
1 yaitu 29 Cm. Dengan perintah breq stop1 program akan memanggil rutin
berlabel stop1 jika data yang dibandingkan sama. Jika data yang
dibandingkan berbeda maka perintah selanjutnya dikerjakan yaitu
dibandingkan dengan data langsung bernilai 2 barangkali tinggi airnya
adalah 28 Cm begitu seterusnya data akan dibandingkan dengan data
80 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
langsung sampai pada angka 9. Rutin berlabel stop1 berisi perintah untuk
mengaktifkan LED indikator Awas yaitu instruksi cbi portc,3 , mengaktifkan
Buzzer yaitu dengan perintah sbi portc,1 dan menonaktifkan LED kondisi
Aman dan kondisi Siaga dengan perintah sbi portc,4 dan sbi portc,5.
Program selanjutnya setelah mengaktifkan LED indikator untuk masing-
masing kondisi, program akan mengirimkan informasi kondisi air yang sedang
diukur berupa SMS ke nomor tujuan yang sudah dimasukan dalam program dan
akan melakukan pemanggilan ke nomor tujuan sebanyak 1 kali khusus untuk
kondisi air pada level Awas. Adapun rutin-rutinnya untuk pengiriman SMS adalah
sebagai berikut:
kirim_kondisi_aman:
rcall kirim_sms_1
rcall kirim_no
rcall isi_pesan_3
rcall done
rcall hapus_inbox
ret
Program di atas dipakai untuk mengirimkan informasi berupa SMS kondisi air
pada level Aman. Pertama program akan memanggil rutin kirim_sms_1 dimana
rutin ini berupa perintah-perintah untuk mengatur agar Handphone dapat mengirim
SMS yaitu perintah AT+CMGS=25 dan nomor SMS center dari nomor
Handphone yang digunakan.
kirim_sms_1:
ldi ZL,low(2*msg3)
ldi ZH,high(2*msg3)
load2_1:
lpm
mov txbyte,r0
cpi txbyte,0
breq tunggu_cmgs_1
rcall usart_tx
inc ZL
rjmp load2_1
81 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
tunggu_cmgs_1:
rcall usart_rx
cpi rxbyte,'>'
breq ok_11
rjmp tunggu_cmgs_1
ok_11:
sbi portc,2
rcall timer1d
ldi ZL,low(2*msg4)
ldi ZH,high(2*msg4)
load3_1:
lpm
mov txbyte,r0
cpi txbyte,0
breq OK_111
rcall usart_tx
inc ZL
rjmp load3_1
OK_111:
RET
msg3:
.db "AT+CMGS=25",13,10,0
msg4:
.db "07912658050000F0",0
Dari program pada label kirim_sms_1 difungsikan untuk mengirimkan
perintah ke Handphone yaitu perintah AT+CMGS=25 perintah ini agar
Handphone dapat mengirim SMS dengan panjang PDU 25 yaitu dengan instruksi
ldi ZL,low(2*msg3) dan ldi ZH,high(2*msg3), setelah perintah ini dikirimkan
Mikrokontroller menunggu adanya balasan berupa karakter ’>’ dengan instruksi
cpi rxbyte,'>', jika karakter ini diterima berarti Handphone siap menerima perintah
selanjutnya untuk mengirimkan SMS, perintah selanjutnya yaitu mengirimkan
nomor pusat pesan dari provider yang digunakan. instruksi ldi ZL,low(2*msg4)
dan ldi ZH,high(2*msg4) perintah ini akan mengirimkan ke Handphone dari string
msg4 yaitu data "07912658050000F0". Data ini berupa susunan data dari nomor
pusat pesan untuk kartu IM3 dari provider Indosat. Untuk yang kedua program akan
mengerjakan perintah rcall kirim_no, instruksi ini berfungsi untuk mengirimkan
SMS ke nomor tujuan yang sudah disimpan pada program. Berikut adalah rutinnya:
82 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
kirim_no:
ldi ZL,low(2*msg5)
ldi ZH,high(2*msg5)
load4:
lpm
mov txbyte,r0
cpi txbyte,0
breq OK_2
rcall usart_tx
inc ZL
rjmp load4
OK_2:
rcall timer1d
ldi ZL,low(2*msg6)
ldi ZH,high(2*msg6)
load5:
lpm
mov txbyte,r0
cpi txbyte,0
breq OK_3
rcall usart_tx
inc ZL
rjmp load5
OK_3:
RET
msg5:
.db "01000D91265842767824F2",0
msg6:
.db "0000",0
Dari program pada label kirim_no di atas berfungsi untuk mengirimkan nomer
tujuan dari sms. Instruksi ldi ZL,low(2*msg5) dan ldi ZH,high(2*msg5) perintah
ini akan mengirimkan ke Handphone dari string msg5 yaitu data
"01000D91265842767824F2". Data ini berupa susunan nomer tujuan dari SMS
yang dikirim yaitu nomor Handphone 6285246787422. Perintah ketiga setelah
nomor tujuan SMS selesai dikerjakan program akan mengerjakan perintah rcall
isi_pesan_3, perintah ini berisi instruksi-instruksi berupa isi pesan yang akan
dikirimkan yang berupa data kondisi air yang diukur. Berikut adalah programnya.
83 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
isi_pesan_3:
ldi ZL,low(2*msg8)
ldi ZH,high(2*msg8)
load62:
lpm
mov txbyte,r0
cpi txbyte,0
breq OK_42
rcall usart_tx
inc ZL
rjmp load62
OK_42:
RET
msg8:
.db "0CCBA793989C2641C166D009",0
Instruksi ldi ZL,low(2*msg8) dan ldi ZH,high(2*msg8) perintah ini akan
mengirimkan ke Handphone dari string msg8 yaitu data
"0CCBA793989C2641C166D009", data ini merupakan susunan data PDU yang
kalau diterjemahkan berupa sms dengan isi pesan “KONDISI AMAN”. Untuk
informasi kondisi yang lain perbedaan pada isi pesannya. Berikut adalah string
msg7 dimana datanya adalah "0DCBA793989C2641D364F01804", data ini
merupakan susunan data PDU yang kalau diterjemahkan berupa SMS dengan isi
pesan “KONDISI SIAGA”. Sedangkan untuk kondisi Awas string yang dipakai
adalah msg9 yang isinya adalah "0CCBA793989C2641C16B700A", data ini
merupakan susunan data PDU yang kalau diterjemahkan berupa SMS dengan isi
pesan “KONDISI AWAS”.
telp:
rcall timer1d
rcall timer1d
ldi ZL,low(2*msg10)
ldi ZH,high(2*msg10)
load7:
lpm
mov txbyte,r0
cpi txbyte,0
84 Laporan Tugas Akhir BAB III
STT Telematika Telkom Puwokerto D308064
breq OK_5
rcall usart_tx
inc ZL
rjmp load7
OK_5:
rcall timer1d
rcall timer1d
rcall timer1d
rcall timer1d
rcall timer1d
rcall timer1d
rcall timer1d
ret
msg10:
.db "ATD 085246787422;",13,0
Program di atas digunakan untuk menelpon ke nomor Handphone yang sudah
di simpan dalam program adapun perintah untuk menelpon ke nomor tujuan dengan
perintah AT Command yaitu “ATD”. Instruksi ldi ZL,low(2*msg10) dan ldi
ZH,high(2*msg10) perintah ini akan mengirimkan ke Handphone dari string
msg10 yaitu data "ATD 085246787422". Data ini berupa susunan perintah AT
Command dan nomor tujuan yang hendak dihubungi. ATD adalah AT Command
pada Handphone yang difungsikan untuk memanggil ke nomor tujuan, sedangkan
085246787422 merupakan nomor tujuan yang hendak dihubungi.