Professional Documents
Culture Documents
A. Perangkat Keras
- komponen pada sistem yang telah dibuat dapat berfungsi dengan baik atau tidak.
3. Sensor Ultrasonik
4. Motor servo
5. Rangkaian relay
6. Power Supply
Pengujian dilakukan dengan mengukur nilai tegangan pada kaki – kaki input
pengendali utama yang berupa modul kit DT-AVR Low Cost Micro System.
57
Secara teori, apabila mikrokontroler diberikan logika high, maka akan didapat
nilai tegangan terukur 4,5 – 5,5 V pada kaki mikrokontroller. Dan apabila
diberikan logika low, maka akan didapat nilai tegangan terukur mendekati 0 V
Dari data hasil pengujian yang dilakukan, didapat nilai tegangan pada
datasheet untuk masing – masing PORT pada kondisi high dan low. Namun
komputer melalui port serial. Data dikirim dengan menekan tombol huruf
pada keyboard.
Pada pengujian kali ini digunakan karakter huruf dari a sampai e di mana
setiap huruf tersebut mewakili nilai angka dari 0 sampai 4. Diberikan pula
hyperterminal agar ada jeda dari saat tombol keyboard ditekan hingga data
dapat dilihat pada lampiran. Dari pengujian didapatkan data pada tabel
berikut.
berhasil dilakukan.
3. Pengujian Sensor Ultrasonik
ultrasonik sebesar 40 kHz selama 200 us. Setelah 5 us, maka PORT B.7 akan
bernilai low, dan sensor menunggu adanya gelombang pantul. Gelombang ini
akan merambat dan memantul jika mengenai objek pantul berupa air pada
pulsa. Apabila gelombang pantul telah terdeteksi oleh sensor, maka pulsa ini
akan low dan counter akan mulai mencacah untuk mengukur lebar pulsa dari
pantul diterima sensor. Lebar pulsa ini akan digunakan dalam perhitungan
dengan hasil pengukuran menggunakan penggaris. Hal ini terjadi karena pada
cairan dideklarasikan dengan tipe data integer. Hal ini dimaksudkan agar
mengingat permukan air pada tangki selalu bergoyang naik turun. Apabila
dibuat dengan tipe data float, maka nilainya akan berubah terus dan tidak
stabil.
Motor servo berfungsi membuka keran air sehingga air dapat keluar ke
ke kiri untuk membuka keran dan ke kanan untuk menutup keran. Dari hasil
delay sebesar 0,72 ms untuk sinyal high pada PORT B.2. Dan untuk berputar
ke kiri sebesar 600, dibutuhkan delay sebesar 0,25 ms untuk sinyal high pada
PORT B.2.
pemberian pulsa high. Jadi untuk 10 ke kanan dibutuhkan 0,0072 ms, maka
untuk 600 dibutuhkan ± 0,0072 x 60 = 0,432 ms. Hal ini bisa terjadi karena
tingkat akurasi motor servo yang sudah berkurang mengingat motor servo
penelitian yang lain. Namun pada penelitian ini, kinerja motor servo ini masih
61
pompa air untuk mengisi tangki sehingga level cairan dapat tercapai. Relay
yang digunakan adalah relay 12 volt. Jadi pada saat PORT C.4 pada
dan akan melewati resistor dan kemudian ke transistor. Pada saat basis
transistor diberikan tegangan maka input tegangan 12 volt pada relay akan
mengaktifkan koil sehingga timbul medan magnet sehingga relay yang tadinya
NO akan menjadi NC untuk tegangan 220 volt ke pompa. Keluaran dari koil
mengalir dari kolektor ke emitor. Arus tersebut akan terus mengalir selama
basis transistor terus mendapat suplai tegangan dari PORT C.4 dari
mikrokontroler.
Apabila level cairan telah tercapai, maka PORT C.4 akan bernilai low
dan tidak ada tegangan yang keluar dari PORT C.4 sehingga tidak ada arus
medan magnet dan posisi NC kembali ke NO. Dengan begitu tegangan 220
digunakan untuk mensuplai daya bagi rangkaian pengendali dan relay. Berikut
dapat bekerja dan switch pompa dapat bekerja. Modul DT-AVR Low Cost
pada Modul DT-AVR Low Cost Micro terutama pada Vcc sebesar 5 V, karena
indikator.
63
B. Perangkat Lunak
1. Pemrograman Web
a. Komunikasi Serial
file library php_ser.dll, 1 file referensi berupa html, dan 2 buah file php untuk
uji coba modul dari library php_ser.dll. Library ini harus diintegrasikan ke
pastikan bahwa direktori ekstensi berada pada alamat yang benar sesuai
php.ini
melakukan start ulang web server, kita perlu menguji apakah library
php_ser.dll sudah dapat berfungsi atau belum. Caranya dengan menyalin file
php yang ada dalam satu folder hasil download library php_ser.dll yaitu file
tampil sederet link dan cari link bertuliskan php_ser_test.php lalu klik, maka
Gambar 30. Modul – modul untuk mengakses port serial telah dimuat
library php_ser.dll yang berkaitan dengan komunikasi serial akan dimuat dan
siap digunakan.
<?
ser_open("COM1", 9600, 8, "None", 1, "None");
$str = ser_isopen();
echo "<br>";
..............................
..............................
echo "Port yang digunakan = $str";
..............................
..............................
?>
67
Fungsi ser_open akan membuka port serial sehingga komunikasi port serial
dapat dilakukan dengan parameter port di COM1, baudrate sebesar 9600, bit
data sebesar 8 bit, parity kosong, stop bit bernilai 1, dan flow control kosong.
fungsi tersebut:
level cairan pada tangki. Fungsinya sama seperti hyperterminal di mana data
yang berhasil diterima dan dibaca pada port serial dapat ditampilkan, hanya
data di port serial. Salah satu fungsi yang terdapat dalam modul
<?
68
Fungsi ser_read akan membaca data yang ada di port serial COM 1 dan akan
web:
Gambar 32. Hasil Pembacaan Port serial COM 1 pada Halaman Web
Selain dalam bentuk tulisan, nilai level cairan juga dapat dilihat dalam bentuk
grafis berupa gambar tangki yang merepresentasikan nilai level cairan yang
dalam bentuk grafis di sini diambil dari variabel $data pada fungsi ser_read.
69
Bentuk tampilan halaman monitoring level cairan pada komputer server dan
memberikan input nilai level cairan yang diinginkan. Untuk itu digunakan
<?
$data = ser_read(2);
echo "<br>";
ser_write( "a" ); // mengirim karakter a ke port serial
echo "<IMG SRC=\"a.png\">";
?>
level 0 cm, b mewakili nilai level 1, dan seterusnya hingga z. Pada halaman
pengendalian, nilai tiap level cairan dibuat berupa push button yang berjumlah
26 buah dan masing – masing mewakili satu nilai level cairan. Berikut
tombol tambahan untuk isi, buang dan stop secara manual. Masing – masing
diwakili oleh karakter A untuk isi, B untuk buang, dan C untuk stop.
71
file php yang telah terintegrasi fungsi ser_write untuk mengirimkan karakter
yang dimaksud. Jadi terdapat 29 file php yang terintegrasi dengan fungsi
tampil konfirmasi dari sistem tentang nilai level yang dimaksud. Dengan
dilakukan.
72
Gambar 37. Tampilan konfirmasi tentang nilai level cairan yang diinginkan
d. Database
cairan yang telah berhasil disimpan. Berikut komponen database untuk data
Tepatnya pada tabel rekam dengan field tanggal, jam, tinggi, dan volume.
Agar pengguna dapat mengakses database itu pada halaman web, database
harus ditampilkan dalam bentuk data array. Berikut tampilan halaman untuk
Gambar 39. Halaman untuk mengakses database hasil pengukuran level cairan
Bentuk tampilan halaman antara admin dengan client secara umum sama,
hanya saja admin memiliki otoritas untuk dapat menyimpan data hasil
pengukuran level cairan dan menghapusnya sedangkan untuk client tidak bisa.
Client hanya mampu untuk melihat data hasil pengukuran level cairan saja.
dapat men-download data hasil pengukuran level cairan dalam format pdf
yaitu dengan menekan tombol bergambar printer pada bagian bawah halaman.
Gambar 41. Data hasil pengukuran level cairan dalam format pdf
2. Pemrograman Mikrokontroler
a. Monitoring
ke port serial melalui pin USART. Dalam bentuk diagram alir, alur program
Jadi proses pembacaan data dan pengiriman ke port serial dilakukan dengan
mikrokontroler adalah timer 1 yang bernilai 8-bit di mana 8-bit bernilai 255.
Jadi proses interupt akan berjalan setiap TCNT1 bernilai 255. Apabila terjadi
PORT B.7 sebagai output dan memberikan logika high pada PORT B.7 selama
40KHz selama 200 µs. Kemudian setelah 5 us PORT B.7 akan kembali
berlogika low. Agar gelombang pantul dapat terdeteksi oleh sensor ultrasonik,
kita atur PORT B.7 sebagai input dan membuatnya berlogika high sehingga
sensor mengeluarkan pulsa. Pulsa ini akan berhenti pada saat gelombang
pada PORT B.7, apabila pada PORT B.7 telah menerima gelombang pantul
dari gelombang ultrasonik maka counter akan mulai mencacah lebar pulsa
dasar di mana :
Karena jarak pada penelitian ini direpresentasikan oleh lebar pulsa gelombang
pantul, maka :
dalam satuan µs sehinga menjadi 0,0344424 cm/ µs. Sehingga apabila nilai
n=((counter*0.034442)/2) .....................................................................(3)
Dengan rumusan di atas diperoleh nilai level cairan yang terbaca oleh sensor sebagai
berikut :
Terlihat bahwa nilai yang terbaca oleh sensor berbeda dengan nilai seharusnya
pada plant (yang terbaca dengan penggaris). Persentase nilai yang terbaca oleh
sensor terhadap nilai yang terbaca oleh penggaris rata – rata sebesar :
Namun perubahan nilai yang terbaca oleh sensor sebanding dengan perubahan
perubahannya linier. Jadi untuk nilai level V dapat kita cari dengan rumusan :
V= ((n*100)/40,6323) ...................................................................(5)
permukaan cairan, dengan kata lain besar nilai yang terbaca akan semakin besar
seiring dengan pertambahan jarak antara sensor dengan permukaan cairan, sehingga
satu nilai yang merupakan jarak antara sensor dengan titik 0 cm yang digunakan
Tinggi tangki sebesar 40 cm, apabila dipasang sensor, maka jarak sensor
dengan dasar tangki terukur sebesar 37,7 cm. Titik 0 cm pada penelitian ini berada
pada 3 cm dari dasar tangki, sehingga jarak antara sensor dengan titik 0 cm sebesar
gunakan tipe data float pada deklarasi variabel, maka program tidak akan bisa di-
Untuk itu kita gunakan tipe data integer untuk deklarasi variabelnya. Dalam
perhitungan nilai V tetap bisa kita pergunakan data float (desimal) agar data lebih
akurat. Nilai ini tidak mutlak harus 34,7 cm, namun dapat berubah sesuai kebutuhan
kalibrasi pada plant. Bisa saja bertambah ataupun berkurang, maka dapat dikatakan
nilainya ±34,7 cm. Sehingga rumusan nilai V untuk menghitung nilai level cairan
menjadi :
V= ((34,7)-((n*100)/40)) ....................................................................(6)
//====================MONITORING==================
TCNT1=255;
PORTC.0=PORTB.7;
counter=0; //inisialisasi nilai
setout=1; //Set as output
out=1;
delay_us(5);
out=0;
setout=0; //Set as input
out=1; //Pullup diaktifkan
while (in==0)
{
};
while (in==1)
{
counter++;
};
n= ((counter*0.034442)/2);
V= ((34,7)-((n*100)/40,6323)); //referansi tinggi tngk=40
if(V<10) //; sensor 37,7; dasar 3; ± 34,7
{
printf("0%d",V);
}
else if(V>=10)
{
printf("%d",V);
}
delay_ms(300);
}
b. Pengendalian
1. Pengendalian Otomatis
nilai level cairan dari 0 sampai 25. Setelah menerima karakter yang
logika program yang sama untuk proses pengendalian. Diagram alir dari
80
berikut.
if(rxtx=='k')
{
'k'==10;
if(V>10)
{
while (V>10)
{
for (i=1;i<50;i++)
{
buka ();
PORTC.4=0x00;
buang ();
}
}
while (V<=10)
{
for (i=1;i<50;i++ )
{
tutup ();
PORTC.4=0x00;
diam ();
}
break;
}
}
else if(V==10)
{
for (i=1;i<50;i++)
{
tutup ();
PORTC.4=0x00;
diam ();
}
}
else if(V<10)
{
while (V<10)
{
for (i=1;i<50;i++)
{
tutup ();
PORTC.4=0xFF;
isi ();
}
}
while (V>=10)
{
for (i=1;i<50;i++ )
82
{
tutup ();
PORTC.4=0x00;
diam ();
}
break;
}
}
};
yang sedang terbaca oleh sensor sekarang lebih besar, sama dengan atau
Apabila level yang terbaca lebih besar dari 10 cm, maka ketika V
servo untuk membuka kran air, PORTC.4 untuk relay pompa akan low dan
servo untuk menutup kran air, PORTC.4 untuk relay pompa akan low dan
menjalankan fungsi tutup() servo untuk menutup kran air, PORTC.4 untuk
relay pompa akan low dan fungsi diam() untuk lampu undikator kuning.
air, PORTC.4 untuk relay pompa akan high untuk menghidupkan pompa
83
dan fungsi isi() sehingga lampu indikator merah akan menyala. Ketika V
tutup() servo untuk menutup kran air, PORTC.4 untuk relay pompa akan
2. Pengendalian Manual
Isi dan Stop. Dengan tiga tombol ini, maka pengguna dapat menambah
atau mengurangi tinggi level cairan pada plant tanpa harus menentukan
besar nilai set point. Pengguna cukup memilih untuk mengisi atau
secara manual :
if(rxtx=='A')
{
tutup ();
PORTC.4=0xFF;
isi ();
};
if(rxtx=='B')
{
buka ();
PORTC.4=0x00;
buang();
};
if(rxtx=='C')
{
tutup ();
PORTC.4=0x00;
diam ();
};
mewakili satu aksi. Huruf ‘A’ untuk Isi, huruf ‘B’ untuk Buang, dan huruf
‘C’ untuk Stop. Apabila pengguna menekan tombol Isi, maka akan
servo untuk menutup keran air, PORTC.4 untuk relay bernilai high dan
untuk relay bernilai low, dan fungsi buang() untuk lampu indikator hijau.
atau pengurangan level cairan, maka dengan menekan tombol Stop akan
keran air, PORTC.4 untuk relay bernilai low, dan fungsi diam() untuk
tidak seperti yang diharapkan. Hal ini terjadi pada saat pengguna menekan
PORTC.4 bernilai low, dan fungsi buang() akan aktif untuk menyalakan
PORTC.4 bernilai low dan indikator lampu kuning akan menyala. Namun
pada prakteknya saat pengguna menekan tombol stop, motor servo tidak
mau menutup keran. Dengan kata lain, rutin program stop tidak berjalan
servo akan bergerak ke kiri untuk membuka keran air hanya selama
rentang waktu yang diberikan pada for (i=1;i<50;i++), setelah lewat dari
perulangan for maka servo akan berhenti (tidak ada pergerakan). Dan
mulai dari saat rentang for berjalan sampai seterusnya apabila kita
untuk PWM:
berikut:
if(rxtx=='A')
{
tutup ();
PORTC.4=0xFF;
isi ();
}
if(rxtx=='B')
{
buka ();
PORTC.4=0x00;
buang ();
}
if(rxtx=='C')
{
tutup ();
PORTC.4=0x00;
diam ();
}
ke kiri untuk membuka keran air, dan apabila tombol stop ditekan, motor
servo berhasil bergerak ke kanan untuk menutup keran. Dengan kata lain
dijalankan .
buah interrupt timer overflow yaitu timer 0 dan timer 1. Kedua timer dapat
dua buah timer ini terletak pada Timer / Counter Interrupt Mask Register
Pada register ini, timer 0 terletak pada bit 0 dengan nama TOIE0
dan timer 1 terletak pada bit 2 dengan nama TOIE1. TOIE sendiri disebut
sebagai bit pengaktif interupsi timer/counter. Agar kedua timer ini dapat
berjalan, maka bit 0 dan bit 2 harus diaktifkan, dengan kata lain kedua bit
ini harus bernilai 1. Sehingga bila dituliskan dalam bilangan biner menjadi
menjadi 0x05. Sehingga pada listing program, kita tuliskan nilai TIMSK
MCUCR=0x00;
MCUCSR=0x00;