diharapkan terjadi komunikasi antara mikrokontroler dengan komputer dibutuhkan sebuah buffer yang dapat mengubah sinyal level TTL dari mikrokontroler menjadi
sinyal level RS232. Salah satu Buffer yang sering digunakan adalah IC MAX232CPE dan menggunakan transistor NPN maupun PNP.
Gambar 2.18 merupakan penggunaan ic max 232 dalam rangkaian sebagai komunikasi
serial.
2.6 Bahasa Pemograman Mikrokontroler
Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan ATMEL menggunakan software AVR STUDIO dan CodeVisionAVR. AVR STUDIO
merupakan software yang digunakan untuk bahasa assembly yang mempunyai fungsi yang sangat lengkap, yaitu digunakan untuk menulis program, kompilasi, simulasi dan
download program ke IC mikrokontroler AVR. Sedangkan CodeVisionAVR merupakan software
C-cross Compiler, dimana program dapat ditulis dalam bahasa C, CodeVision memiliki IDE Integrated Development Environment yang lengkap, dimana penulisan
program, compile, link, pembuatan kode mesin assembler dan download program ke chip AVR dapat dilakukan dengan CodeVision, selain itu ada fasilitas terminal, yaitu
melakukan komunikasi serial dengan mikrokontroler yang sudah di program. Proses
download program ke IC mikrokontroler AVR dapat menggunakan Sistem
programmable Flash on-Chip mengizinkan memori program untuk diprogram ulang
dalam sistem menggunakan hubungan serial SPI.
2.7. Dasar Pemrograman ATMega8535 dengan Bahasa C
2.7.1. Pendahuluan
C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah bahasa yang berorientasi pada mesin dan bahasa tingkat tinggi bahasa
yang berorientasi pada manusia. Seperti yang diketahui, bahasa tingkat tinggi mempunyai kompatibilitas antara platform. Karena itu, amat mudah untuk membuat
program pada berbagai mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap perintahnya sangat bergantung pada jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam
bentuk blok. Tujuannya untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa C mudah sekali dipindahkan dari satu
jenis program ke bahasa program lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa standar ANSI American National Standart Institute yang dijadikan acuan oleh
para pembuat kompiler.
2.7.2 Pengenal Pada Bahasa C
Pengenal merupakan sebuah nama yang didefinisikan oleh program untuk menunjukkan sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Pemberian
pengenal pada program harus memenuhi syarat-syarat di bawah ini: a. Karakter pertama tidak menggunakan angka;
b. Karakter kedua berupa huruf, angka, garis bawah,; c. Tidak menggunakan spasi;
d. Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda; e. Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator dari
bahasa C. Contoh menggunakan pengenal yang diperbolehkan:
1. Nama 2. _nama
3. Nama2 4. Nama_pengenal
Contoh penggunaan pengenal yang tidak diperbolehkan: 1. 2nama
2. Nama+2 3. Nama pengenal
2.7.3 Tipe Data
Pemberian signed dan unsigned pada tipe data menyebabkan jangkauan dari tipe berubah. Pada unsigned menyebabkan tipe data akan selalu bernilai positif sedangkan
signed menyebabkan nilai tipe data bernilai negatif dan memungkinkan data bernilai
positif. Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini. Tabel 2.9 Tipe Data
Pemodifikasi Tipe Persamaan
Jangkauan Nilai
Signed char Char
-128 sd 127 Signed int
Int -32.768 sd 32.767
Signed short int Short, signed short
-32.768 sd 32.767
Signed long int Long, long int, signed
long -2.147.483.648 sd
2.147.483.647 Unsigned char
Tidak ada 0 sd 255
Unsigned int Unsigned
0 sd 65.535 Unsigned short int
Unsigned short 0 sd 65.535
Unsigned long int Unsigned long
0 sd 4.294.967.295
Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil program,
include mega.8535 include delay.h
Void main void {
int a, b; pengenal unsigned d, e;
a = 50; b = 40;
d = 50; e = 40;
PORTC = 0x00; DDRC = 0Xff; set PORTC sebagai output
PORTB = 0x00; DDRB = 0Xff; set PORTB sebagai output
While1 {
PORTB = a – b; PORTC = d – e;
delay_ms100; };
}
Program di atas akan memberikan data di PORTB = 10 desimal sedangkan PORTC = -10 desimal karena PORT mikrokontroler tidak dapat mengeluarkan nilai
negatif maka PORTB dan PORTC akan memiliki keluaran 0x0A tapi pada kenyataannya PORTC lebih banyak memakan memori karena tanda negatif tersebut
disimpan dalam memori. Pada program di atas terdapat tulisan
set PORTB sebagai output
yang berguna sebagai komentar yang mana komentar ini tidak mempengaruhi hasil dari program. Ada
dua cara penulisan komentar pada pemrograman bahasa C, yaitu dengan mengawali komentar dengan tanda “ “ untuk komentar yang hanya satu baris dan mengawali
komentar dengan tanda “ “ dan mengakhiri komentar dengan tanda “ “.
Contoh:
ini adalah komentar ini adalah komentar
Yang lebih panjang Dan lebih panjang lagi
2.7.4. Header
Header digunakan untuk menginstruksikan kompiler untuk menyisipkan file
lain. Di dalam file header ini tersimpan deklarasi, fungsi, variable, dan jenis mikrokontroler yang kita gunakan pada software Code Vision AVR. File-file yang ber
akhiran .h disebut file header.
File header yang digunakan untuk mendefinisikan jenis mikrokontroler yang
digunakan berfungsi sebagai pengarah yang mana pendeklarasian register-register yang terdapat program difungsikan untuk jenis mikrokontroler apa yang digunakan pada
software Code Vision AVR . Contoh:
include mega8535.h includedelay.h
include stdio. h
2.7.5. Operator Aritmatika
Operator aritmatika digunakan untuk melakukan proses perhitungan matematika. Fungsi-fungsi matematika yang terdapat pada bahasa C dapat dilihat pada tabel di
bawah ini. Tabel 2.10 Operator Aritmatika
Operator Keterangan
+ Operator untuk penjumlahan
- Operator untuk pengurangan
Operator untuk perkalian Operator untuk pembagian
Operator untuk sisa bagi
Contoh penggunaan operator aritmatika dapat dilihat di bawah ini.
include mega8535.h include delay.h
void main void {
unsigned char a, b; a = 0x03;
b = 0x05; DDRC 0XFF; PORTC digunakan sebagai output
while 1 {
PORTC = a b; delay_ms500;
} }
2.7.6. Operator Pembanding
Operator pembanding digunakan untuk membandingkan 2 data atau lebih. Hasil operator akan di jalankan jika pernyataan benar dan tidak dijalankan jika salah.
Operator pembanding dapat kita lihat pada tabel di bawah ini. Tabel 2.11 Operator Pembanding
Operator Contoh Keterangan
= = x = = y Benar jika kedua data bernilai sama
= x = y Bernilai benar jika kedua data tidak sama
x y Bernilai benar jika nilai x lebih besar dari pada y
x y Bernilai jika x lebih kecil dari y
= x = y Bernilai jika x lebih besar atau sama dengan y
= x = y Bernilai benar jika x lebih kecil atau sama dengan y
2.7.7. Operator Logika
Operator logika digunakan untuk membentuk logika dari dua pernyataan atau lebih. Operator logika dapat dilihat pada tabel di bawah ini.
Tabel 2.12 Operator Logika Operator Keterangan
Logika AND | |
Logika OR Logika NOT
Contoh program:
include mega8535.h include delay.h
void main void {
DDRC = 0XFF; sebagai output DDRA = 0X00; sebagai input
while 1 {
If PINA.0 == 1 || PINA.1 == 1 { PORTC = 0XFF;
delay_ms500; PORTC = 0X00;
Delay_ms500; }
else{
PORTC = 0x00; delay_ms500;
} }
}
Penjelasan program: Apabila PINA.0 atau PINA.1 diberi input logika 1 maka PORTC akan
mengeluarkan logika 0xff kemudian logika 0x00 secara bergantian dengan selang waktu 0,5 s. dan apabila bukan PINA.1 atau PINA.0 diberi logika 1 maka PORTC akan
mengeluarkan logika 0x00.
2.7.8. Operator Bitwise
Operator logika ini bekerja pada level bit. Perbedaan operator bitwise dengan operator logika adalah pada operator logika akan menghasilkan pernyataan benar atau
salah sedangkan pada operator bitwise akan menghasilkan data biner. Operator bitwise dapat dilihat pada tabel di bawah ini.
Tabel 2.13 Operator Bitwise Operator
Keterangan Operasi AND level bit
| Operasi OR level bit
Operasi XOR level bit ~
Operator NOT level bit Operator geser kanan
Operator geser kiri
Contoh program:
include mega8535.h include delay.h
void main void {
unsigned char a,b,c; DDRC = 0xff; portc sebagai output
while 1 {
a = 0x12; b = 0x34;
c = a b; PORTC = c;
delay_ms500; };
}
Penjelasan program:
a = 0x12 = 0001 0010
b = 0x32 = 0011 0010
------------------------- a b = 0x12 = 0001 0110
2.7.9. Operator Penugasan dan Operator Majemuk
Operator ini digunakan untuk memberikan nilai atau manipulasi data sebuah variabel. Operator penguasa dapat kita lihat pada tabel di bawah ini:
Tabel 2.14 Operator Penugasan Operator Keterangan
= Memberikan nilai variabel
+= Menambahkan nilai variabel
- = Mengurangi nilai variabel
= Mengalikan nilai variabel
= Membagi nilai variable
= Memperoleh sisa bagi
Contoh: a += 2 ; artinya nilai variabel a berubah menjadi a = a + 2
b = 4; artinya nilai variabel b berubah menjadi b = b 4 selain operator penugasan di atas juga ada operator penugasan yang berkaitan dengan
operator bitwise seperti pada tabel di bawah ini: Tabel 2.15 Operator Majemuk
Operator Contoh Arti
= x = 1
Variabel x di AND kan dengan 1 |=
x |= 1 Variabel x di OR kan dengan 1
~= x ~= 1
x = ~ 1 ; x = 0xFE =
x = 1 Variabel x di XOR kan dengan 1
= x = 1 Variabel x digeser kiri 1 kali
= x = 1 Variabel x digeser kanan 1 kali
2.7.10. Operator Penambahan dan Pengurangan
Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu variabel dengan selisih 11. Operator ini dapat dilihat pada tabel di bawah ini.
Tabel 2.16 Operator Penambahan dan Pengurangan Operator
Keterangan ++
Penambahan 1 pada variable --
Pengurangan Contoh:
a = 1; b = 2;
a ++; b --;
Penjelasan: Maka operator a++ akan mengubah variabel a dari satu menjadi 2, sedangkan operator
B— akan mengubah variabel b dari 2 menjadi 1.
2.7.11. Pernyataan If dan If Bersarang
Pernyataan if digunakan untuk pengambilan keputusan terhadap 2 atau lebih pernyataan dengan menghasilkan pernyataan benar atau salah. Jika pernyataan benar
maka akan di jalankan instruksi pada blok nya, sedangkan jika pernyataan tidak benar maka instruksi yang pada blok lain yang dijalankan sesuai dengan arah programnya.
Bentuk pernyataan IF adalah sebagai berikut: 1. Bentuk sederhana
if kondisi{
Pernyataan_1; Pernyataan_2;
............ }
2. Pernyataan else
if kondisi {
Pernyataan_1; ............;
} else
{ Pernyataan_2;
............; }
3. If di dalam if Pernyataan ini sering disebut nested if atau if bersarang. Salah satu bentuknya
adalah sebagai berikut:
if kondisi1 Pernyataan_1;
else if kondisi2 pernyataan_2;
else if kondisi3 pernyataan_3;
else pernyataan;
Contoh program:
if PINA.0 = =1 {
PORTC = 0xff; }
else {
PORTC = 0x00; }
Penjelasan program: Jika PINA.0 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff, jika
yang pernyataan yang lain maka PORTC akan mengeluarkan logika 0x00.
2.7.12. Pernyataan Switch
Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinan. Bentuk pernyataan switch adalah sebagai berikut.
Switch ekspresi
{
case nilai_1
: pernyataa_1;break;
case nilai_2 : pernyataan_2;break;
case niai_3 : pernyataan_3;break;
…
Defaut : pernyataan_default;break;
}
Pada pernyataan switch, masing-masing pernyataan pernyataan_1 sampai dengan pernyataan_default
dapat berupa satu atau beberapa perintah dan tidak perlu berupa blok pernyataan. Pernyataan_1 akan dikerjakan jika ekspresi bernilai sama
dengan nilai_1, pernyataan_2 akan dikerjakan jika ekspresi bernilai sama dengan nilai- _2
, pernyataan_3 akan dikerjakan jika ekspresi bernilai sama dengan nilai_3 dan seterusnya. Pernyataan_default bersifat opsional, artinya boeh dikerjakan apabila nilai
ekspresi tidak ada yang sama satupun dengan salah satu nilai_1, nilai_2, nilai_3 dan
seterusnya. Setiap akhir dari pernyataan harus diakhiri dengan break, karena ini digunakan untuk keuar dari pernyataan swich.
Contoh :
Switch PINA {
case 0xFE : PORT=0x00;break;
case 0xFD : PORT=0xFF;break;
}
Pernyataan di atas berarti membaca port A, kemudian datanya PINA akan dicocokan dengan nilai case. Jika PINA bernilai 0xFE maka data 0x00 akan dikeluarkan
ke port C kemudian program keluar dari pernyataan switch tetapi jika PINA bernilai 0xFD maka data 0xFF akan dikeluarkan ke port C kemudian program keluar dari
pernyataan switch.
2.7.13. Pernyataan While
Pernyataan while digunakan untuk mengulangi sebuah pernyataan atau blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk
pernyataan while adalah sebagai berikut :
while kondisi
{ sebuah pernyataan atau blok pernyataan
}
Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka tanda { dan } bisa dihilangkan.
Contoh :
unsigned char a=0;
….. while a10
{ PORT=a;
a++; }
Pernyataan di atas akan mengeluarkan data a ke port C secara berulang-ulang. Setiap kali pengulangan nilai a akan bertambah 1 dan setelah niai a mencapai 10 maka
pengulangan selesai.
2.7.14. Pernyataan Do..While
Pernyataan do…while hamper sama dengan pernyataan while, yaitu pernyataan yang digunakan untuk menguangi sebuah pernyataan atau blok pernyataan secara terus
menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :
do {
sebuah pernyataan atau b;ok pernyataan
} while kondisi
.
Yang membedakan antara pernyataan while dengan do..while adalah bahwa pada pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi terpenuhi
maka barulah blok pernyataan dikerjakan. Sebaliknya pada pernyataan do…while blok
pernyataan dikerjakan terebih dahulu setelah itu baru diakukan pengetesan kondisi, jika kondisi terpenuhi maka dilakukan pengulangan pernyataan atau blok pernyataan lagi.
Sehingga dengan demikian pada pernyataaan do..while blok pernyataan pasti akan dikerjakan minimal satu kali sedangkan pada pernyataan while blok pernyataan beum
tentu dikerjakan.
2.7.15 Pernyataan For
Pernyataan for juga digunakan untuk melakukan pengulangan sebuah pernyataan atau blok pernyataan, tetapi berapa kali jumah pengulangannya dapat ditentukan secara
lebih spesifik. Bentuk pernyataan for adalah sebagai berikut :
for
nilai_awal ; kondisi ; perubahan {
sebuah pernyataan atau blok pernyataan }
Nilai_awal
adaah nilai inisial awal sebuah variabel yang didefenisikan terlebih dahulu untuk menentukan nilai variabel pertama kali sebelum pengulangan
.
Kondisi
merupakan pernyataan pengetesan untuk mengontrol pengulangan, jika pernyataan kondisi terpenuhi benar maka blok pernyataan akan diulang terus
sampai pernyataan kondisi tidak terpenuhi salah.
Perubahan
adalah pernyataan yang digunakan untuk melakukan perubahan nilai variabel baik naik maupun turun setiap kali pengulangan dilakukan.
Contoh :
unsigned int a; for a=1, a10, a++
{ PORT=a;
}
Pertama kali nilai a adalah 1, kemudian data a dikeluarkan ke port C. selanjutnya data a dinaikkan a++ jika kondisi a10 masih terpenuhi maka data a akan terus
dikeluarkan ke port C.
2.8. Software ATMega8535 Editor dan Simulator
2.8.1. Software ATMega8535 Editor
Instruksi - instruksi yang merupakan bahasa C tersebut dituliskan pada sebuah editor, yaitu Code Vision AVR. Tampilannya seperti berikut ini:
Gambar 2.19 Tampilan Code Vision AVR
2.8.2. Software Downloader
Melakukan download program ke mikrokontroler dapat menggunakan ponyprog2000. Tampilannya seperti di bawah ini:
Gambar 2.20 Tampilan Ponyprog2000
2.8.3. Software Desain PCB Printed Circuit Board Eagle 4.13r
Untuk mendesain PCB dapat digunakan software eagle 4.13r yang dapat di- download
di internet secara gratis . Tampilan software eagle 4.13r dapat dilihat pada gambar 2.4 dibawah ini :
Gambar 2.21Tampilan software Eagle 4.13r
Cara menggunakan software ini terlebih dahulu yang dikerjakan adalah mendesain skematik rangkaian, setelah itu memindahkannya ke dalam bentuk board dan
mendesain tata letak komponen sesuai keinginan tetapi harus sesuai jalur rangkaian nya agar rangkaian dapat berfungsi sesuai dengan skematiknya. Setelah itu didesain layout
PCB nya , barulah siap di-print dan di-transfer ke PCB. Pada proses pentransferan layout ke PCB dapat digunakan kertas Transfer Paper.
Cara menggunakan software ini terlebih dahulu yang dikerjakan adalah mendesain skematik rangkaian, setelah itu memindahkannya ke dalam bentuk board dan
mendesain tata letak komponen sesuai keinginan tetapi harus sesuai jalur rangkaian nya agar rangkaian dapat berfungsi sesuai dengan skematiknya. Setelah itu didesain layout
PCB nya , barulah siap di-print dan di-transfer ke PCB. Pada proses pentransferan layout ke PCB dapat digunakan kertas Transfer Paper.
BAB III
3.1. Diagram Blok Rangkaian
Gambar 3.1. Diagram Blok System
Fungsi Tiap Blok
1. Blok Sensor Ultrasonik : Sebagai inputpenhitung ketinggian level air. 2. Blok Mikrokontroller
: Mengkonversi data dari sensor dan modul GSM 3. Blok LCD
: Sebagai output tampilan 4. Blok Power Supply
: Sebagai penyedia tegangan ke system dan sensor 5. Blok Modul GSM
: Sebagai pengirim informasi dan penerima Feedback
6. Blok Handphone : Sebagai penerima informasi dari Modul GSM
3.2. Rangkaian Power Supply
Gambar 3.2 Rangkaian Power Supplay PSA Gambar 3.2 menunjukkan rangkaian PSA
yang dibuat terdiri dari keluaran 5 volt yang digunakan untuk mensupplay tegangan ke seluruh rangkaian, termasuk ke mikro
dan lcd. Rangkaian tersebut berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian tersebut bermula dari tegangan DC Batreai 9 Volt, selanjutnya 9
volt DC akan diratakan oleh kapasitor 2200 µF. Regulator tegangan 5 volt LM7805 digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahan pada
tegangan masukannya. LED hanya sebagai indikator apabila PSA dinyalakan.
3.3 Rangkaian Sensor Ultrasonic