Rangkaian dan Pengujian Sistem Kontrol Aliran Air Dengan Mikrokontroler Atmega8535 Dan Pemograman C

BAB 2
LANDASAN TEORI

Dari Rangkaian dan Pengujian Sistem Kontrol Aliran Air dengan Mikrokontroler
ATMega8535 dan Pemrograman C, ada beberapa bagian yang perlu kita ketahui
yaitu :
2.1. Water Flow Sensor YF-S201
Sensor aliran air ini terbuat dari plastik dimana didalamnya terdapat rotor dan
sensor hall effect. Saat air mengalir melewati rotor, rotor akan berputar.
Kecepatan putaran ini akan sesuai dengan besarnya aliran air. Sensor berbasis hall
effect ini dapat digunakan untuk mendeteksi aliran air hingga 30 liter/menit (1.800
L/hour), dapat digunakan dalam pengendalian aliran air pada sistem distribusi air,
sistem pendinginan berbasis air, dan aplikasi lainnya yang membutuhkan
pengecekan terhadap debit air yang dialirkan.

Gambar 2.1.Water Flow Sensor YF-S201

2.1.1. Spesifikasi Sensor Flow
a.

Debit air yang dapat diukur: 1 - 30 Ltr / menit


b.

Maksimum tekanan air: 2 MPa

5

c.

Tekanan hidrostatik / Hydrostatic Pressure: ≤ 1,75 MPa

d.

Catu daya antara 4,5 Volt hingga 18 Volt DC

e.

Arus: 15 mA (pada Vcc = 5V)

f.


Kapasitas beban: kurang dari 10 mA (pada Vcc = 5V)

g.

Maksimum suhu air (water temperature usage): 80°C

h.

Rentang Kelembaban saat beroperasi: 35% - 90% RH (no frost)

i.

Duty Cycle: 50%±10%

j.

Periode signal (output rise / fall time): 0.04µs / 0.18µs

k.


Diameter penampang sambungan: 0,5 inch (1,25 cm)

l.

Amplitudo: Low ≤ 0,5V, High ≥ 4,6 Volt

m. Kekuatan elektrik (electric strength): 1250 V / menit
n.

Hambatan insulasi: ≥ 100 MΩ

o.

Material: PVC

Prinsip kerja sensor ini adalah dengan memanfaatkan fenomena Efek Hall.
Efek Hall ini didasarkan pada efek medan magnetik terhadap partikel bermuatan
yang bergerak. Ketika ada arus listrik yang mengalir pada divais Efek Hall yang
ditempatkan dalam medan magnet yang arahnya tegak lurus arus listrik,

pergerakan pembawa muatan akan berbelok ke salah satu sisi dan menghasilkan
medan listrik. Medan listrik terus membesar hingga gaya Lorentz yang bekerja
pada partikel menjadi nol. Perbedaan potensial antara kedua sisi divais tersebut
disebut potensial Hall. Potensial Hall ini sebanding dengan medan magnet dan
arus listrik yang melalui divais.

6

2.2

Mikrokontroller ATMega8535

Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis atau
dihapus.Biasanya digunakan untuk pengontrolan otomatis dan manual pada
perangkat elektronika.
Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan
terutama

dalam


pengontrolan

robot.Seiring

perkembangan

elektronika,

mikrokontroler dibuat semakin kompak dengan bahasa pemrograman yang juga
ikut berubah. Salah satunya adalah mikrokontroler AVR (Alf and Vegard’s Risc
processor) ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction
Set Computing) dimana program berjalan lebih cepat karena hanya membutuhkan
satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR
dapat dikelompokkan menjadi 4 kelas, yaitu kelas ATtiny, keluarga AT90Sxx,
keluarga ATmega, dan AT86RFxx.Pada dasarnya yang membedakan masingmasing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan
instruksi yang digunakan, mereka bisa dikatakan hampir sama.

2.2.1. Fitur mikrokontroler ATMega8535
1.


Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.

2.

ADC internal sebanyak 8 saluran.

3.

Tiga buah Timer/Counter dengan kemampuan pembandingan.

4.

CPU yang terdiri atas 32 buah register.

5.

SRAM sebesar 512 byte.

6.


Memori Flash sebesar 8 kb dengan kemampuan Read While Write.

7.

Port antarmuka SPI

7

8.

EEPROM sebesar 512 byte yang dapat diprogram saat operasi.

9.

Antarmuka komparator analog.

10.

Port USART untuk komunikasi serial.


11.

Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16
MHz.

12.

Dan lain-lainnya

2.2.2. Pin-pin pada Mikrokontroler ATMega8535

Gambar 2.2.Konfigurasi pin ATMega8535
Konfigurasi pin ATMega8535 dengan kemasan 40 pin DIP (Dual Inline Package)
dapat dilihat pada gambar 2.2. Dari gambar di atas dapat dijelaskan fungsi dari
masing-masing pin ATMega8535 sebagai berikut:

8

1.


VCC merupakan pin yang berfungsi sebagai masukan catu daya.

2.

GND merukan pin Ground.

3.

Port A (PortA0…PortA7) merupakan pin input/output dua arah dan pin
masukan ADC.

4.

Port B (PortB0…PortB7) merupakan pin input/output dua arah dan dan pin
fungsi khusus, Timer/counter, komparator analog, dan SPI

5.

Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin
fungsi khusus yaitu, TWI, komparator analog, dan Timer oscilat


6.

Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin
fungsi khusus,yaitu,komparator analog, interupsi external, komunikasi
serial.

7.

RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.

8.

XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.

9.

AVCC merupakan pin masukan tegangan untuk ADC.

10.


AREFF merupakan pin masukan tegangan referensi ADC.
Kapabiltas detail dari ATMega 8535 adalah sebagai berikut :

1.

Sistem mikroprosesor 8 bit bebrbasis RISC dengan kecepatan maksimal 16
MHz.

2.

Kapabiltas memori flash 8 Kb, SRAM sebesar 512 byte, dan EEPROM
(Electrically Erasable Programmable Read Only Memory) sebesar 512 byte.

3.

ADC internal dengan fidelitas 10 bit sebanyak 8 channel.

4.

Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps.

5.

Enam pilihan mode sleep menghemat penggunaan daya listrik.

9

2.2.3. Peta Memori ATMega8535
ATMega8535 memiliki dua jenis memori yaituProgram Memori dan Data
Memori ditambah satu fitur tambahan yaitu EEPROM Memori untuk penyimpan
data.
a. Program Memori
ATMega8535 memiliki On-Chip In-System Reprogrammable Flash
Memoriuntuk menyimpan program.Untuk alasan keamanan, program memori
dibagi menjadi dua bagian, yaitu Boot Flash Section dan Application Flash
Section.Boot Flash Section digunakan untuk menyimpan program Boot Loader,
yaitu program yang harus dijalankan pada saat AVR reset atau pertama kali
diaktifkan.
Application Flash Section digunakan untuk menyimpan program aplikasi
yang dibuat user. AVR tidak dapat menjalakan program aplikasi ini sebelum
menjalankan program Boot Loader. Besarnya memori Boot Flash Section dapat
deprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi
bit di register BOOTSZ. Jika Boot Loader diproteksi, maka program pada
Application Flash Section juga sudah aman.

Gambar 2.3.Peta Memori Program

10

b. Data Memori
Gambar berikut menunjukkan peta memori SRAMpada ATMEGA 8535. Terdapat
608 lokasi address data memori. 96 lokasi address digunakan untuk Register File
dan I/O Memori sementara 512 likasi address lainnya digunakan untuk internal
data SRAM. Register file terdiri dari 32 general purpose working register, I/O
register terdiri dari 64 register.

Gambar 2.4.Peta Memori Data

c. EEPROM Data Memori
ATMega8535 memiliki EEPROM 8 bit sebesar 512 byte untuk menyimpan data.
Lokasinya terpisah dengan sistem address register, data register dan control
register yang dibuat khusus untuk EEPROM. Alamat EEPROM dimulai dari
$000 sampai $1FF.

Gambar 2.5.EEPROM Data Memori

11

d. Status Register (SREG)
Status register adalah register berisi status yang dihasilkan pada setiap operasi
yangdilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari
inti CPUmikrokontroler.

Gambar 2.6.Status Register ATMega 8535

Bit 7 – I : Global Interrupt Enable
Jika bit Global Interrupt Enable diset, maka fasilitas interupsi dapat dijalankan.
Bit ini akanclear ketika ada interrupt yang dipicu dari hardware, setelah program
interrupt dieksekusi,maka bit ini harus di set kembali dengan instruksi SEI.
Bit 6 – T : Bit Copy Storage
Instruksi bit copy BLD dan BST menggunakan bit T sebagai sumber atau tujuan
dalamoperasi bit.
Bit 5 – H: Half Carry Flag
Bit 4 – S : Sign Bit
Bit S merupakan hasil exlusive or dari Negative Flag N dan Two‘s Complement
Over flow Flag V.
Bit 3 – V : Two’s Complement Overflow Flag
Digunakan dalam operasi aritmatika
Bit 2 – N : Negative Flag
Jika operasi aritmatika menghasilkan bilangan negatif, maka bit ini akan set.

12

Bit 1 – Z : Zero Flag
Jika operasi aritmatika menghaslkan bilangan nol, maka bit ini akan set.
Bit 0 – C : Carry Flag
Jika suatu operasi menghasilkan Carry, maka bit ini akan set.

2.3.

Liquid Crystal Display (LCD) 2x16

Kegunaan LCD banyak sekali dalam perancangan suatu sistem dengan
menggunakan mikrokontroler.LCD (Liquid Crystal Display) dapat berfungsi
untuk menampilkan suatu nilai hasil sensor, menampilkan teks, atau menampilkan
menu pada aplikasi mikrokontroler. Pada praktek proyek ini, LCD yang
digunakan adalah LCD 16 x 2 yang artinya lebar display 2 baris 16 kolom dengan
16 Pin konektor.Adapunkonfigurasidandeskripsidaripin-pin LCDantaralain:
VCC (Pin 1)
Merupakan sumber tegangan +5V.
GND 0V (Pin 2)
Merupakan sambungan ground.
VEE (Pin 3)
Merupakan input tegangan Kontras LCD.
RS Register Select (Pin 4)
Merupakan Register pilihan 0 = Register Perintah, 1 = Register Data.
R/W (Pin 5)
Merupakan read select, 1 = read, 0 = write.
Enable Clock LCD (Pin 6)
Merupakan masukan logika 1 setiap kali pengiriman atau pembacaan data.

13

D0 – D7 (Pin 7 – Pin 14)
Merupakan Data Bus 1 -7
Anoda ( Pin 15)
Merupakan masukan tegangan positif backlight
Katoda (Pin 16)
Merupakan masukan tegangan negatif backlight

Gambar 2.7.Fisik LCD2x16
Setiap memori mempunyai fungsi-fungsi tersendiri:
a.

DDRAM

DDRAM merupakan memori tempat karakter yang ditampilkan. Contohnya
karakter ‗A‘ atau 41h yang ditulis pada alamat 00 akan tampil pada baris pertama
dan kolom pertama dari LCD. Apabila karakter tersebut di alamat 40h, karakter
tersebut akan tampil pada baris kedua kolom pertama dari LCD.

b.

CGRAM

CGRAM merupakan memori untuk menggambarkan pola seluruh karakter dan
bentuk karakter dapat diubah-ubah sesuai keinginan. Akan tetapi isi memori akan
hilang saat power supply tidak aktif sehingga pola karakter akan hilang.

14

c.

CGROM

CGROM adalah memori untuk menggambarkan pola sebuah karakter dan pola
tersebut ditentukan secara permanen dari HD44780 sehingga arah yang melalui
transistor.
1.

Tipe:

UJT,

BJT,

JFET,

MOSFET,

IGBT,

HBT,

MISFET,

VMOSFET,MESFET, HEMT, SCR serta pengembangan dari transistor yaitu
IC.
2.

Polaritas : NPN atau N-Channel, PNP atau P-channel

3.

Maximum kapasitas daya : Low Power, Medium Power, High Power

4.

Maksimum frekwensi kerja : low, medium, atau high frequency, RF
transistor,Microwave, dan lain-lain.

5.

Aplikasi : Amplifier, Saklar, General purpose, Audio, Tegangan Tinggi, dan
lain-lain.

2.4

Bahasa Pemograman ATMega8535

PemrogramanmikrokontrolerATMega8535dapatmenggunakanlowlevelLanguage(
assembly)danhighlevellanguage(C,Basic,Pascal,JAVA,dll)tergantungcompileryan
gdigunakan (WidodoBudiharto,2006). Bahasa AssemblermikrokontrolerAVR
memilikikesamaaninstruksi,sehingga

jikapemrogramansatujenismikrokontroler

AVR sudah dikuasai, maka akan dengan mudah menguasai pemrograman
keseluruhan

mikrokontrolerjenismikrokontrolerAVR.Namunbahasaassembler

relatif lebih sulit dipelajari dari padabahasa C.
Untukpembuatansuatuproyekyangbesar akan memakan waktu yang lama
serta penulisan programnya akan panjang. Sedangkan bahasa C memiliki

15

keunggulan dibanding bahasa assembleryaitu independentterhadap hardware serta
lebih mudah untuk menangani project yang besar.Bahasa C memiliki keuntungankeuntungan yang dimiliki bahasa assembler(bahasamesin), hampir semuaoperasi
yang dapat dilakukan oleh bahasa mesin,dapat dilakukan dengan bahasa C dengan
penyusunanprogram

yanglebihsederhanadanmudah.BahasaCterletakdiantara

bahasa pemrograman tingkat tinggi dan assembly(AgusBejo,2007).

2.5

Dasar Pemrograman ATMega8535 dengan Bahasa C

2.5.1 Pendahuluan
Bahasa 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
Standar Institut) yang dijadikan acuan oleh para pembuat kompiler.

16

2.5.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:
1.

Karakter pertama tidak menggunakan angka;

2.

Karakter kedua berupa huruf, angka, garis bawah,;

3.

Tidak menggunakan spasi;

4.

Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda;

5.

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

17

2.5.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.1.Pemodifikasi
Pemodifikasi Tipe

Persamaan

Jangkauan Nilai

Signed char

Char

-128 s/d 127

Signed int

Int

-32.768 s/d 32.767

Signed short int

Short, signed short

-32.768 s/d 32.767

Signed long int

Long, long int, signed long

-2.147.483.648 s/d
2.147.483.647
Unsigned char

Tidak ada

0 s/d 255

Unsigned int

Unsigned

0 s/d 65.535

Unsigned short int

Unsigned short

0 s/d 65.535

Unsigned long

0 s/d 4.294.967.295

Unsigned long
int
Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil
program,

#include
#include
Void main (void)
{
int a, b; // pengenal

18

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
While(1)
{
PORTB = a – b;
PORTC = d – e;
delay_ms(100);
}
}

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 ― */ ―.

19

Contoh:
// ini adalah komentar
/* ini adalah komentar
Yang lebih panjang
Dan lebih panjang lagi */

2.5.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 .hdisebut 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 ) contohnya di bawah ini:
#include
#include
#include

2.5.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:

20

Tabel 2.2.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
void main (void)
{
unsigned char a, b;
a = 0x03;
b = 0x05;
DDRC 0XFF; // PORTC digunakan sebagai output
while (1)
{
PORTC = (a * b);
delay_ms(500);
}
}

2.5.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:

21

Tabel 2.3.Operator Pembanding
Operator

Contoh

Keterangan

==

x==y

Benar jika kedua data bernilai sama

!=

x != y

Bernilai benar jika kedua data tidak
sama
Bernilai benar jika nilai x lebih besar
>

x>y
dari pada y

<

x=

x >= y
dengan y
Bernilai benar jika x lebih kecil atau

>

Operator geser kanan