ALAT PENGUKUR KEDALAMAN SUMUR
BERBASIS MIKROKONTROLER AT89S51
TUGAS AKHIR
Diajukan untuk memenuhi salah satu syaratmemperoleh gelar Sarjana Teknik
Program Studi Teknik ElektroFakultas Teknik Universitas Sanata Dharma
disusun oleh
YUSUF FREDY HARYANTONIM : 005114105
PROGRAM STUDI TEKNIK ELEKTROJURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS SANATA DHARMA
YOGYAKARTA2007
WELL DEPTH MEASURING TOOLBASED ON AT89S51 MICROCONTROLLER
FINAL PROJECT
Presented as Partial Fulfilment of the Requirements To Obtain the Sarjana Teknik Degree
In Electrical Engineering
By
YUSUF FREDY HARYANTO
005114105
ELECTRICAL ENGINEERING STUDY PROGRAMELECTRICAL ENGINEERING DEPARTMENT
ENGINEERING FACULTYSANATA DHARMA UNIVERSITY
YOGYAKARTA2007
iv
v
v
“Bersyukurlah kepada Tuhan Allahmu sebab Dialah sumber segala rahmat dan karunia yang
diberikan kepadamu ”
Ku persembahkan karya ilmiah ini untuk :Tuhan ku Yesus KristusSebab Dialah sumber segala sesuatu, oleh Dia dan kepada Dialah kemuliaan sampai selama-lamanya.Bunda Maria.................Keluargaku :Ayahanda tercinta (alm), Ibunda tercinta, mba Christin, mas Anto, mas Anton, mba Emi, cicil, fandy dan orang-orang yang selalu mendukung dan menyayangi saya. Special for Caecilia Erlin Desiana tercinta yang selalu menemani aku dan memberi semangat.Dan Almamaterku............
vi
Alat Pengukur Kedalaman Sumur Berbasis Mikrokontroler AT89S51
NAMA : Yusuf Fredy Haryanto NIM : 005114105
INTI SARI
Tugas akhir ini membahas tentang alat untuk mengukur kedalaman sumur. Kedalaman sumur yang dihasilkan menggunakan satuan meter, yang akan ditampilkan melalui seven segments.
Alat ini terdiri dari rengkaian sensor, pengendali motor, microcontrollerdan seven segments. Kedalaman tersebut diketahui melalui optocoupler dan ditangkap menggunakan microcontroller. Fungsi dari microcontroller yaitu menghitung pulsa dari sensor, mengatur putaran motor dan menampilkan hasil perhitungan pada seven segments. Microcontroller yang digunakan pada alat ini adalah AT89S51.
Hasil akhir dari penelitian ini adalah alat dapat mengukur kedalaman dengan jangkauan 00,00 meter sampai 99,95 meter, dan resolusi 5 centi meter
Kata kunci : Pengukuran kedalaman, aplikasi microcontroller
vii
Well Depth Measuring Tool Based On AT89S51 Microcontroller
NAME: Yusuf Fredy Haryanto NIM : 005114105
ABSTRACT
This paper discussed about the tool to measuring the depth of well. The well depth that is resulted using this tool uses the meter unit of depth.
This tool consists of sensor circuit, motor controller, microcontroller and seven segments. The depth is sensed by optocoupler and being captured using microcontroller. Microcontroller tasks are counting pulses from sensor, controls the direction of motor and display the counting result at seven segments. Microcontroller that is being used in this appliance is AT89S51
The results are this tool can measure the depth with range 00.00 m up to 99.95 m, and 5 cm resolution which is presented in through the seven segments. The seven segments circuit represents the end of the all circuit systems in the well depth measuring.
Keywords: Depth measurement, microcontroller application.
viii
Kata Pengantar
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, oleh
karena kasih dan penyertaan-Nya sehingga penulis dapat meyelesaikan Tugas
Akhir yang berjudul “Pengukur Kedalaman Sumur Berbasis Mikrokontroler
AT89S51”. Tugas Akhir ini disusun sebagai salah satu syarat untuk
memperoleh gelar Sarjana Teknik. Dalam penyusunannya, banyak pihak yang
telah membantu dan memberikan dukungan pada penulis, oleh karena itu,
penulis ingin mengucapkan terima kasih kepada:
1. Bapak Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.A., M.Sc., selaku Dekan
Fakultas teknik Universitas Sanata Dharma, Yogyakarta.
2. Bapak Agustinus Bayu Primawan, S.T., M.Eng., selaku Ketua Jurusan Teknik
Elektro, Fakultas Teknik, Universitas Sanata Dharma, Yogyakarta.
3. Ibu Wiwien Widyastuti, S.T., M.T., selaku Dosen Pembimbing Akademik.
4. Bapak B. Djoko Untoro S., Ssi., MT selaku Pembimbing I yang bersedia
membagikan ilmu yang dimilikinya dalam membantu proses penyusunan
tugas akhir ini.
5. Bapak Ir. Tjendro selaku Pembimbing II Yang bersedia meluangkan waktunya
untuk membantu proses penyusunan tugas akhir ini.
6. Seluruh staf Dosen Jurusan Teknik Elektro USD yang telah memberikan
banyak pelajaran berharga selama masa kuliah.
7. Pak Djito, Mas Sur, Mas Broto, Mas Mardi dan segenap staf serta karyawan
Fakultas Teknik USD, terimakasih atas keramahannya dan pelayanannya.
8. Ibunda tercinta MM. Sudarmi yang selalu mendoakan dan memberi kasih
sayangnya serta dukungan yang tiada habisnya.
9. Ayahanda tercinta Herybertus Satinem (alm) terimakasih atas nasehat dan
pengorbanan yang kau berikan untukku semasa hidup mu.
10. Istriku tercinta Caecilia Erlin Desiana terima kasih atas dorongan semangat,
kasih sayang, cinta, dan doamu.
ix
11. Mbak Christin, mas Anto, mas Anton, mba Emi yang selalu memberi
semangat dan doa.
12. Para “pembimbing dua” Iyung, Aas, Parto”, makasih atas pengorbanannya dan
dukungannya.
13. Teman-teman seperjuangan di Prodi Teknik Elektro 2000: Joko, Niko, Surya,
Sigit, Roy, Marsel, Bowo Andre, Wahyu dan semua anak TE 2000. You are
the best!
14. Anak kontrakan, Puguh (kumis), Ucok, makasih atas semuanya.
15. Semua pihak yang telah membantu selama penyusunan laporan tugas akhir ini
yang tidak dapat penulis sebutkan satu per satu.
Penulis menyadari bahwa tugas akhir ini masih memiliki banyak
kekurangan. Oleh sebab itu, segala bentuk saran dan kritik yang bersifat
membangun sangat penulis harapkan demi penyempurnaan .
Penulis
x
D A F T A R I S I
Hal
HALAMAN JUDUL ………………………………………………….…….…..... i
HALAMAN PENGESAHAN PEMBIMBING ….........……………...................... iii
HALAMAN PENGESAHAN PENGUJI…………………………….........…........ iv
PERNYATAAN KEASLIAN KARYA …………………………..…………........ v
HALAMAN PERSEMBAHAN DAN MOTO HIDUP…………………………... vi
INTISARI …………………………………………………………....………….... vii
ABSTRACT ……………………………………………………………....……...... viii
KATA PENGANTAR …………………………………………………...……...... ix
DAFTAR ISI ……………………………………………………………...…........ xi
DAFTAR GAMBAR …………………………………………………………....... xiv
DAFTAR TABEL …………..............……………………………………………......xvi
DAFTAR LAMPIRAN............................................................................................. xvii
BAB I PENDAHULUAN
1.1. Judul .................. ................................................................................... 1
1.2. Latar Belakang .............. ......................................................................’ 1
1.3. Pembatasan Masalah ............................................................................ 1
1.4. Tujuan dan Manfaat ......... .................................................................... 2
1.5. Metodologi Penelitian .............................................................................. 2
1.6. Sistematika Penulisan ........................................................................... 3
BAB II DASAR TEORI
2.1. Sensor Posisi .................................................................................... 4
2.1.1. Sensor Rotary Encoder..................................................................... 4
2.1.2. Pengondisi Sinyal............................................................................. 6
2.2. Mikrokontrolet AT89S51................................................................. 8
2.2.1. Timer dan Counter dalam Mikrokontroler AT89S51........................ 8
2.2.2.a.Timer Mode Register........................................................................ 8
2.2.2.b.Timer control Register Timer 0 dan 1 ............................................. 9
2.2.2.c.THx dan TLx..................................................................................... 10
2.2.3. Sistem Interupsi................................................................................ 10
xi
2.3. Display / Penampil............................................................................ 11
2.3.1. Dioda Pemancar cahaya.................................................................... 11
2.3.2. Penampil seven segment................................................................... 12
BAB III PERANCANGAN ALAT
3.1. Perancangan Perangkat keras .......................................................................13
3.1.1. Rangkaian Sensor .............................................................................. 13
3.1.2. Rangkaian Sensor rotary encoder...................................................... 14
3.1.3 Piringan rotary encoder....................................................................... 15
3.1.4. Rangkaian Pengondisi Sinyal.............................................................. 15
3.1.5. Mekanisme alat pengukuran............................................................... 19
3.1.6. Mikrokontroler AT89S51 ................................................................. 20
3.1.7. Driver motor....................................................................................... 21
3.1.8. Unit Penampil............................... ..................................................... 23
3.2.. Perancangan Perangkat Lunak............................................................ 26
3.2.1. Algoritma Perangkat Lunak ............................................................... 26
3.2.2. Diagram alir program utama .............................................................. 27
3.2.3. Diagram alir subrutin increment cacah pulsa ..................................... 28
BAB IV HASIL PENGAMATAN DAN PEMBAHASAN
4.1. Pengamatan Cara kerja Alat.................................................................. 30
4.2. Pengamatan Pada sensor........................................................................ 33
4.3. Pengamatan Pada Pengendali Motor DC............................................... 34
4.4. Proses Pencacahan ................................................................................ 34
4.5. Perhitungan jumlah pulsa......................................................................
4.6. Proses Pengukuran kedalaman.............................................................
35
36
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan............................................................................................
5.2. Saran......................................................................................................
40
40
DAFTAR PUSTAKA ............................................................................................
LAMPIRAN ............................................................................................................
xii
DAFTAR GAMBAR
Gambar 2.1 Piringan rotary encoder................................................................ 5
Gambar 2.2 Pulsa increment encoder .........................................................….....…..5
Gambar 2.3.a Phototransistor............................................................................ 6
Gambar 2.3.b Sensor rotary encoder...………………….................................. 6
Gambar 2.4 Transistor penguat....................................................................... 7
Gambar 2.5 Schmitt triger............................................................................... 7
Gambar 2.6 Register TMOD (Timer Mode Control Register)........................ 8
Gambar 2.7 Register TCON………...............................………….…............ 9
Gambar 2.8 Interrupt Enable Register............................................................ 10
Gambar 2.9 Interrupt Priority Register .......................................................... 11
Gambar 2.10 Rangkaian LED........................................................................... 11
Gambar 2.11 Bentuk tampilan seven segment……..….................................... 12
Gambar 3.1 Diagram blok sistem Pengukur Kedalaman Sumur..................... 13
Gambar 3.2.a Phototransistor........................................ .................................... 14
Gambar 3.2.b Sensor rotary encoder.................................................................. 14
Gambar 3.3 Pulsa rotary encoder.................................................................... 15
Gambar 3.4 Lebar pulsa.................... ........……............................................. 16
Gambar 3.5 Rangkaian Pengkondisi sinyal.........................................…….... 17
Gambar 3.6 Gelombang keluaran schmitt triger............................................. 18
Gambar 3.7 Mekanik Alat Pengukur Kedalaman Sumur................................ 19
Gambar 3.8 Rangkaian reset............................................................................ 20
Gambar 3.9 Rangkaian osilator....................................................................... 21
Gambar 3.10 Hubungan L293D dengan mikrokontroler AT89S51..... ............ 22
Gambar 3.11 Rangkaian indikator LED............................................................ 23
Gambar 3.12 Skema dasar konfigurasi saklar menggunakan transistor............. 24
Gambar 3.13 Rangkaian penampil seven segment............................................ 26
Gambar 3.14 Diagram alir program utama........................................................ 27
Gambar 3.15 Diagram alir subrutin increment cacah pulsa.............................. 29
xiii
Gambar 4.1 Foto alat secara keseluruhan........................................................ 31
Gambar 4.2 Foto alat tampak depan...................................................................32
Gambar 4.3 Foto alat saat tampilan maksimal................................................. 32
Gambar 4.4 Pulsa keluaran dari rangkaian sensor............................................ 35
Gambar 4.5 Gambar satu pulsa......................................................................... 36
Gambar 4.6 Grafik error pada pengukuran....................................................... 39
xiv
DAFTAR TABEL
Tabel II.1. Mode operasi pemilih timer / counter AT89S51 .............................. 9
Tabel II.2. Tabel kebenaran seven segment........................................................ 12
Tabel 3.2. Logika pada L293D........................................................................... 23
Tabel 4.1. Tegangan keluaran sensor..............................................................................33
Tabel 4.2. Pengamatan tegangan pada pengendali motor.................................. 34
Tabel 4.3. Hasil pengukuran dengan beban........................................................ 37
Tabel 4.4. Hasil pengukuran dengan menarik tali.............................................. 38
xv
DAFTAR LAMPIRAN
Lampiran 1. Skematik Rangkaian…………………………………….…….......L1
Lampiran 2. Listing Program Mikrokontroler…….…………….………….......L2
Lampiran 3. Data-sheet AT89S51……...………………………………....……L3
Lampiran 4. Data-sheet Phototransistor…………………………………....… .L4
Lampiran 5. Data-sheet Transistor…………………………………… ……......L5
Lampiran 6. Data-sheet L293D……………………………………… ………...L6
Lampiran 7. Data-sheet seven segment…………………………………………L7
xvi
BAB I
PENDAHULUAN
1.1. Judul
Alat Pengukur Kedalaman Sumur Berbasis Mikrokontroler AT89S51
1.2. Latar Belakang
Perkembangan elektronika akhir-akhir ini sangat pesat apalagi
perkembangan yang terjadi pada mikrokontroler. Mikrokontroler yang ada saat ini
sangat luas aplikasinya terutama dalam bidang elektronika. Penggunaan
mikrokontroler dalam bidang elektronika misalnya pada sistem kontrol,
monitoring, proteksi, juga dalam hal pengukuran. Piranti ini sangat baik untuk
melakukan pekerjaan tersebut dengan ditunjang oleh sistem perangkat lunak
(software) yang ada.
Mikrokontroler di dalam penelitian ini diaplikasikan sebagai pengukur
kedalaman sumur. Setelah data diolah dalam mikrokontroler AT89S51 kemudian
hasil olahan data tersebut akan ditampilkan melalui penampil seven segment.
Dengan alat Pengukur Kedalaman Sumur berbasis mikrokontroler AT89S51
ini diharapkan dapat membantu dunia industri maupun kehidupan sehari-hari
yang memudahkan manusia dalam hal pengukuran terutama segala sesuatu
yang berkaitan dengan pengukuran kedalaman.
1.3. Pembatasan Masalah
Adapun batasan masalah yang dipakai pada penelitian ini adalah :
1. Rotary encoder hanya berfungsi sebagai penghasil cacah pulsa.
2. Optocoupler berfungsi untuk mendeteksi banyaknya jumlah pulsa yang
dihasilkan.
3. Alat ini hanya dapat mengukur sampai pada permukaan sumur.
1
4. Pemanfaatan mikrokontroler AT89S51 sebagai pengendali dan sarana
untuk mengimplementasikan program perhitungan kedalaman sumur.
5. Motor dc sebagai sarana penggerak mekanik.
6. Tampilan untuk jarak kedalaman permukaan air sumur ini
menggunakan seven segment.
7. Jangkauan kedalaman maksimal yang diukur 99,95 meter dengan
resolusi sebesar 5 cm.
1.4. Tujuan dan manfaat dari Penelitian
Tujuan dan manfaat dari penelitian ini adalah untuk membuat miniatur
(prototipe) sistem dari alat pengukur kedalaman sumur berbasis mikrokontroler
AT89S51. Sedangkan tujuan sekunder dari penelitian ini adalah :
1. Merancang suatu sistem untuk menghitung kedalaman sumur berbasis
mikrokontroler AT89S51.
2. Mengerti dan memahami cara kerja masing-masing rangkaian
3. Dapat merancang rangkaian-rangkaian sensor, seven segment dan
pengendali motor dc.
4. Memberi kemudahan dalam pengukuran kedalaman sumur
5. Mengaplikasikan ilmu-ilmu yang telah diperoleh selama kuliah
khususnya yang mempelajari mikrokontroler, dan beberapa mata
kuliah yang lainnya.
1.5. Metodologi Penelitian
Dalam penulisan Tugas Akhir ini, metode penelitian yang digunakan
meliputi :
1. Studi literatur pustaka yang berkaitan dengan mikrokontroler, rotary
encoder, dan pengendali motor dc.
2. Membuat rangkaian sensor dan rotary encoder.
3. Membuat program proses perhitungan pencacahan.
4. Ide perancangan yang direalisasikan kedalam rangkaian nyata, diuji,
dan diamati melalui percobaan-percobaan.
2
I.6. Sistematika Penulisan
Sistematika penulisan laporan ini terdiri dari :
BAB I : PENDAHULUAN
Pada Bab Pendahuluan ini berisikan tentang judul, latar
belakang, pembatasan masalah, tujuan penelitian, manfaat
penelitian, metodelogi penelitian, dan sistematika penulisan.
BAB II : DASAR TEORI
Pada dasar teori ini menjelaskan teori dasar pembentukan dari
‘Alat Pengukur Kedalaman Sumur Menggunakan AT89S51’,
yang terdiri dari AT89S51, seven segment, Motor dc,
Optocoupler, dan rotary encoder.
BAB III : PERANCANGAN ALAT
Dalam bab ini berisikan tentang perancangan perangkat keras
yang terdiri dari rangkaian mikrokontroler AT89S51, rotary
encoder, Motor dc, Optocoupler, dan seven segment. Dan
berisikan tentang perancangan perangkat lunak dalam pembuatan
alat tersebut.
BAB IV : PENGAMATAN DAN PEMBAHASAN
Pada bab ini akan membahas tentang analisis hasil penelitian
yang telah dilaksanakan.
BAB V : KESIMPULAN DAN SARAN
Bab yang terakhir ini merupakan kesimpulan dari alat yang telah
dibuat dan berisikan saran-saran untuk pengembangan menuju
yang lebih baik.
3
BAB II
DASAR TEORI
2.1. Sensor Posisi
Sensor berfungsi untuk memonitoring dan menganalisis gejala yang terjadi
pada posisi suatu benda. Hal ini sangat penting dalam hal mengendalikan posisi
dari benda yang dikendalikan.
2.1.1. Sensor Rotary Encoder
Encoder merupakan peralatan mekanis yang dapat memonitor gerakan
atau posisi. Secara khusus encoder menggunakan sensor cahaya untuk
memberikan suatu urutan pulsa yang dapat diubah ke dalam gerakan, posisi atau
arah. Encoder terbuat dari piringan yang sangat tipis dan LED yang tetap tidak
bergerak ditempel sehingga cahaya secara kontinyu difokuskan ke celah piringan.
Sebuah cahaya menggerakan transistor yang ditempel pada sisi yang lain dari
piringan sehingga dapat mendeteksi cahaya dari LED. Piringan ditempelkan pada
motor atau peralatan lain sehingga ketika diputar piringan bergerak. Begitu
cahaya dari LED difokuskan pada transistor maka transistor akan saturasi dan 21
gelombang pulsa elektronika akan dihasilkan. Tipe piringan ini digunakan dalam
aplikasi yang lebih mudah tetapi ukuran lubang piringan dibatasi sejumlah
ketelitian yang ditentukan.
Rotary encoder pada dasarnya dibagi menjadi dua jenis yaitu Increment
Rotary encoder dan Absolute rotary encoder. Increment rotaray encoder relatif
lebih murah dan memberikan resolusi sudut yang tinggi dan dapat mendeteksi
seberapa kecilnya putaran yang terjadi. Absolute encoder memiliki kelebihan
dalam hal transmisi data yang handal terutama apabila terdapat peralatan listrik
yang dapat menimbulkan interfensi.
Increment encoder mempunyai kelebihan dibanding Absolute encoder
diantaranya resolusi yang tinggi dan juga murah meskipun terdapat kelemahan.
Gambar 2.1. memperlihatkan piringan increment encoder.
4
Gambar 2.1 Piringan Rotary encoder
Pada gambar diatas terdapat satu buah sensor. Sensor A dimanfaatkan untuk menentukan piringan berputar searah jarum jam. Pulsa yang dihasilkan oleh incremen encoder ditunjukan pada gambar 2.2.
Pulsa A
Gambar 2.2 Pulsa increment encoder
Sensor merupakan piranti elektronika yang berfungsi sebagai sensor cahaya, yang
terdiri dari bagian sumber (source) dan penerima (receiver).
Bagian sumber biasanya berupa LED infra marah, sedangkan penerimanya
berupa phototransistor. Sensor dibuat sedemikian rupa sehingga cahaya yang
dipancarkan dari sumber dapat diterima dengan baik oleh penerima seperti yang
ditunjukan pada gambar 2.3.a. Sensor terbuat dari galium arsenida infrared
emiting diode dan silicon phototransistor yang sudah dikemas dalam bentuk
tertentu.
A
5
RR
R
5v5v
Gambar 2.3.a Phototransistor Gambar 2.3.b Sensor Rotary encoder
Dari gambar 2.3.b menunjukan bahwa saat phototransistor tidak terhalang
maka akan terjadi aliran elektron dari basis menuju emiter sehingga
mengakibatkan phototransistor aktif. Dengan kata lain saat dioda infra merah
memancarkan cahaya, pada basis phototransistor akan mengalir arus IB sehingga
menghasilkan tegangan VB yang cukup besar sehingga phototransistor ON.
Untuk memaksimalkan tegangan phototransistor, maka phototransistor
dibuat bersifat seperti saklar yang terhubung tertutup yang menyebabkan tegangan
pada emiternya maksimal VE VCC, pada keadaan ini phototransistor bekerja
pada daerah jenuh atau saturasi. Dan apabila phototransistor terhalang maka arus
pada basisnya sama dengan nol sehingga phototransistor off, dengan demikian
tegangan basisnya sangat kecil (VB < VF) pada keadaan ini phototransistor
bersifat seperti saklar yang terhubung buka. Arus kolektor fototransistor pada
kondisi ini maksimal yang menyebabkan tegangan VE sangat kecil VE 0, kondisi
demikian sering disebut phototransistor pada keadaan cut-off.
2.1.2. Pengkondisi Sinyal
Rangkaian penguat dan Schemitt trigger merupakan sebagian rangkaian
pengondisi sinyal dalam sistem kendali. Pengondisi sinyal memiliki tugas
memodifikasi atau mengubah dalam arti luas keluaran sensor untuk disesuaikan
6
dengan kebutuhan unsur berikutnya. Berdasarkan fungsinya, pengondisi sinyal
dapat diklasifikasikan sebagai rangkaian pengondisi seperti penguatan dan
pelemahan serta rangkaian pengolah seperti konversi tegangan ke frekuensi dan
konversi tegangan ke arus.
Untuk menguatkan sinyal yang dihasilkan oleh rotary encoder
menggunakan penguat transistor seperti ditunjukan pada gambar 2.4 berikut ini.
Gambar 2.4. Transistor Penguat
Sinyal yang telah dikuatkan dipicu menggunakan pemicu schmitt trigger
agar sinyal keluaran terjadi perubahan yang tajam dari tinggi ke rendah atau
sebaliknya. Rangkaian pemicu schmitt trigger menggunakan CMOS Inverting
Schmitt Trigger. Rangkaian ini sudah dikemas dalam IC 7414 seperti
diperlihatkan pada gambar 2.5.
Gambar 2.5 Schmitt Triger
R
BD677
Ke schmitt triger
Dari sensor
+5V
7
2.2. Mikrokontroler AT89S51
Mikrokontroler AT89S51 merupakan mikrokontroler buatan Atmel yang
menguasai teknologi pembuatan FPEROM (Flash Programmable and Erasable
Read Only Memory). FPEROM merupakan ROM (Read Only Memory) yang
dapat dihapus dan ditulis kembali dengan teknologi flash. Kelebihan flash ini
adalah mikrokontroler dapat menyimpan program secara internal, tidak
membutuhkan ROM eksternal.
AT89S51 memiliki 4 kBytes FPEROM, 256 Bytes RAM, 32 jalur I/O
(Input/Output), dan dua 16-bit timers/counters.
2.2.1. Timer dan Counter dalam Mikrokontroler AT89S51
Mikrokontroler AT89S51 dilengkapi dengan dua buah timer/counter, yaitu
timer 0 dan timer 1. Pencacah timer/counter AT89S51 merupakan pencacah biner
naik (count-up binary counter) yang mencacah dari 0000h sampai FFFFh. Saat
kondisi pencacah berubah dari FFFFh kembali ke 0000h akan timbul sinyal
limpahan (overflow).
Masing-masing timer juga dapat berfungsi sebagai counter. Pada saat
sebagai timer, register naik satu (increment) setiap satu siklus mesin. Pada saat
sebagai counter, register naik satu (increment) pada saat transisi dari 1 ke 0 dari
masukan eksternal, T0 dan T1.
2.2.2. a. Timer Mode Register (TMOD)
Penggunaan register TMOD yang ditunjukkan pada Gambar 2.6. adalah
untuk mengatur kerja Timer 0 dan Timer 1. Register TMOD terbagi atas dua
yaitu, bit 0 sampai 3 (TMOD.0 sampai TMOD.3) untuk mangatur kerja Timer 0,
sedangkan bit 4 sampai 7 (TMOD.4 sampai TMOD.7) untuk mengatur kerja
Timer 1. Register TMOD merupakan register yang tidak bit addressable.
GATE C/T M1 M0 GATE C/T M1 M0
Timer 1 Timer 0
Gambar 2.6. Register TMOD
8
GATE : Jika GATE = 1, maka timer/counter “x” aktif bila pin INTx
high dan pin TRx juga high.
Jika GATE = 0, maka timer/counter “x” aktif jika hanya pin
TRx high.
C/T : low untuk fungsi timer dan high untuk fungsi counter.
M1 dan M0 : pemilih mode timer/counter (Mode 0 sampai Mode3) yang
konfigurasinya dapat dilihat pada tabel II.1.
Tabel II.1. Mode operasi pemilih Timer/counter AT89S51
M1 M0 Mode Operasi0 0 0 Timer/counter 13-bit0 1 1 Timer/counter 16-bit1 0 2 Timer/counter 8-bit isi ulang (auto reload)1 1 3 Gabungan timer/counter 16-bit dan 8-bit
2.2.2.b. Timer control Register Timer 0 dan 1
TCON merupakan bit addressable sehingga bisa diatur per-bitnya (dengan
instruksi SETB atau CLR). Register TCON (gambar 2.7.) berisi pengaturan timer
dan interupsi eksternal sekaligus dalam 1 byte.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Timer1 Interupsi
Gambar 2.7. Register TCON
Jika dalam pemrograman tidak memakai interupsi eksternal, maka IE dan
IT dapat diabaikan (diset ‘0’).
TR1 dan TR0 : pengatur aktif dan nonaktif timer / counter.
TF1 dan TF0 : penampung bit limpahan (overflow) timer/counter
IE1 dan IE0 : tanda (flag) interupsi eksternal
IT1 dan IT0 : menentukan pen-trigger-an interupsi eksternal.
9
2.2.2.c. THx dan TLx (x adalah penomoran Timer)
Pengaksesan timer masing-masing memerlukan dua register 8-bit. Timer 0
melalui TH0 (Timer 0 High Byte) dan TL0 (Timer 0 Low Byte), sedangkan timer 1
melalui TH1 (Timer 1 High Byte) dan TL1 (Timer 1 Low Byte).
2.2.3. Sistem Interupsi
Interupsi merupakan suatu sarana dalam mikrokontroler yang sangat
berperan dalam penanganan sistem input/output. Dalam proses interupsi,
terjadinya sesuatu pada perangkat keras akan dicatat pada flip-flop tertentu yang
sering disebut petanda (flag). Catatan dalam petanda tersebut diatur sedemikian
rupa sehingga merupakan sinyal permintaan interupsi pada prosesor.
Program yang dijalankan dengan cara tersebut dinamakan sebagai program
pelayanan interupsi (ISR – Interrupt Service Routine). Saat prosesor menjalankan
ISR, pekerjaan yang sedang dilakukan dalam program utama ditinggalkan
sementara. Selesai menjalankan ISR program utama kembali dijalankan.
AT89S51 menyediakan 5 sumber interupsi yakni : interupsi external 0,
interupsi external 1, interupsi timer 0, interupsi timer 1, dan interupsi port serial.
Setiap sumber interupsi dapat diaktifkan atau dinonaktifkan dengan mengatur
interrupt enable (IE) bit dalam SFR.
Dalam mikrokontroler AT89S51 terdapat dua register khusus yang dapat
digunakan untuk mengatur sistem interupsi yakni interrupt enable (IE) register
dan interrupt priority (IP) register.
EA - - ES ET1 EX1 ET0 EX0
Gambar 2.8. Interrupt Enable Register
Enable bit = 1, mengijinkan interupsi tersebut.
Enable bit = 0, membatalkan interupsi bersangkutan.
10
- - - PS PT1 PX1 PT0 PX0
Gambar 2.9. Interrupt Priority Register
Keadaan tinggi pada salah satu bit membuat bit tersebut berada dalam
prioritas tinggi. Register TCON menyediakan 4 bit yang dapat juga digunakan
untuk mengatur interupsi.
2.3. Display/ Penampil
Penampil yang digunakan adalah dioda pemancar cahaya dan seven
segment. Konfigurasi dioda terbagi atas dua yaitu konfigurasi common annoda
dan common cathoda. Untuk konfigurasi common annoda, kaki-kaki annoda-nya
dihubung menjadi satu sedangkan untuk konfigurasi common cathoda kaki-kaki
cathoda-nya yang dihubung menjadi satu.
Penampil yang digunakan pada rangkaian ini menggunakan konfigurasi
common annoda.
2.3.1. Dioda Pemancar cahaya
Dioda pemancar cahaya (Light Emiting Dioda atau LED) bila diberi pra-
tegangan maju akan memancarkan cahaya. Gambar 2.10. menunjukkan rangkaian
LED yang dihubungkan dengan resistansi secara seri.
VCC
Vd
Ra
Gambar 2.10. Rangkaian LED
Kebutuhan arus LED diantara 10mA sampai 20mA dan tegangan antara
1,5V sampai 2 V, sehingga nilai Ra dapat dicari dengan persamaan berikut :
d
dcca I
VVR
.................. (2.4.1)
11
2.3.2. Penampil Seven Segment
Salah satu penampil yang digunakan adalah seven segment yang
ditunjukkan pada gambar 2.11.
a
b
c
d
e
fg
dp
Gambar 2.11. Bentuk Tampilan Seven Segment
Pada seven segment, untuk menampilkan suatu lambang harus dinyalakan
tiap segment yang berkaitan dengan lambang tersebut yang digerakkan oleh
saklar. Sebagai contoh, bila diinginkan desimal 8 menyala, saklar a, b, c, d, e, f, g
ditutup, maka segment LED a, b, c, d, e, f, g menyala sehingga pada seven
segment akan tertampil desimal 8.
Seven segment tersebut mempunyai hubungan common anode yaitu anoda-
anoda terhubung satu sama lain. Pada kaki-kaki katoda dipasang resistor sebagai
penahan arus dan saklar sebagai fungsi driver.
Untuk lengkapnya, dapat dilihat pada tabel kebenaran untuk tampilan
seven segment tabel II.2.
Tabel II.2. Tabel Kebenaran Seven Segment
Cacahan Segmen Yang Menyala0 a, b, c, d, e, f1 b, c2 a, b, g, e, d3 a, b, g, c, d4 f, g, b, c5 a, f, g, c, d6 a, f, g, c, d7 a, b, c8 a, b, c, d, e, f, g9 a, b, g, f, c
12
BAB III
PERANCANGAN ALAT
3.1. Perancangan Perangkat Keras
Pengukur kedalaman sumur berbasis mikrokontroler AT89S51 ini
memiliki tiga bagian utama yaitu masukan, pengontrol dan keluaran. Piranti
masukannya adalah rangkaian sensor rotary encoder dan rangkaian sensor
optocoupler yang dihubungkan ke pengkondisi sinyal. Piranti kontrolnya adalah
mikrokontroler AT89S51, sedangkan piranti keluarannya digunakan penampil
seven segment empat digit yang menunjukkan kedalaman sumur.
Trafo
Regulator
MikrokontrolerAT89S51
Motordriver
P2.1
P2.0
P2.2
Limitswitch 1
Limitswitch 2
P3.2
P3.3
Sensor P1.0
AC
P0.0. P0.1, P0.2, P0.3, P0.4, P0.5, P0.6. P0.7
Gambar 3.1. Diagram Blok Sistem Pengukur Kedalaman Sumur
3.1.1. Rangkaian Sensor
Dalam perancangan ini membutuhkan dua buah sensor. Kedua sensor
yang digunakan mempunyai fungsi yang berbeda. Yang satu berfungsi untuk
menentukan posisi awal dari benda saat sistem direset. Sensor berikutnya
berfungsi untuk memonitor posisi akhir benda yang digerakan.
13
3.1.2. Rangkaian sensor rotary encoder
Rotary encoder terdiri dari LED infra merah, piringan bercelah dan
phototransistor. Rotary encoder ini akan bekerja saat motor mulai berputar,
dengan tali yang dihubungkan dari motor ke rotary encoder maka bersamaan
dengan perputaran motor maka rotary encoder akan berputar. Tali yang
digunakan untuk memutar rotaray encoder ini berfungsi juga sebagai penduga
kedalaman sumur yang akan diukur. Dalam perancangan ini tali penduga yang
digunakan minimal sepanjang 100 meter. Pada saat rotary encoder mulai berputar
maka sensor optocoupler akan mulai bekerja dan akan menghasilkan suatu
gelombang pulsa elektronik. Dari banyaknya pulsa elektronik inilah yang nantinya
akan diproses oleh mikrokontroler menjadi jarak kedalaman sumur. Rangkaian
phototransistor ditunjukan pada gambar 3.2.a. Dan rangkaian elektronis dari
sensor rotary encoder diperlihatkan pada gambar 3.2.b.
4K7150
4K7
5v5v
Gambar 3.2.a. Phototransistor Gambar 3.2.b. sensor rotary encoder
LED memancarkan cahaya yang difokuskan ke phototransistor melalui
sebuah celah yang dibentuk dengan sangat teliti. Pada saat dioda diberi tegangan
maju maka Vd = 1.7V dengan arus 20 mA. Penentuan nilai resistor diperoleh
dengan menggunakan persamaan:
Rd = FI
VdVcc
Rd = mA
VV
20
7,15 = 165
14
Karena dipasaran tidak terdapat nilai resistor seperti hasil perhitungan
maka dalam perancangan menggunakan resistor dengan nilai 150 .
Jika cahaya dari dioda dihalangi maka phototransistor akan off, sehingga
tegangan kolektor phototransistor menjadi rendah. Saat tegangan kolektor rendah
VCE = 0,3V dan Ic = 1mA maka nilai Rc dapat diperoleh dengan persamaan:
Rc =C
CE
I
VVcc
Rc = mA
VV
1
3,05 = 4,7 K
3.1.3. Piringan rotary encoder
Piringan bercelah terdapat 8 buah celah. Celah-celah tersebut melewatkan
atau menghalangi sorotan cahaya yang akan diterima oleh phototransistor.
Keluaran phototransistor terbentuk sesuai dengan ada tidaknya sorotan cahaya.
Kondisi ini akan menghasilkan suatu gelombang kotak pada keluaran
phototransistor. Bentuk gelombang diperlihatkan pada gambar 3.3 berikut ini:
pulsa
A
Gambar 3.3. Pulsa rotary encoder
Sensor tersebut dipasang dengan posisi tertentu agar membentuk
gelombang keluaran. Untuk mendapatkan jumlah pulsa dalam satu putaran dapat
mengunakan persamaan sebagai berikut:
1pulsa = Pulsa
……………………….. ( persamaan 3.1)
= .d
Keterangan:
= Keliling lingkaran
15
= 3,14
d = diameter lingkaran
Jumlah celah yang digunakan dalam perancangan ini sebanyak 8 celah.
Setiap celah mempunyai jarak yang sama. Jarak setiap celah besarnya 2,5 cm.
Karena piringan terdiri dari celah dan tidak celah maka satu siklus gelombang yag
terjadi oleh perubahan terang dan gelap mempunyai jarak dua kali jarak celah.
Dari persamaan diatas dapat dihitung menggunakan persamaan 3.1 yang berarti
satu pulsa sama dengan 5 cm dengan diameter roda putar piringan adalah 6,369
cm. Hasil perhitungan adalah sebagai berikut:
1pulsa = Pulsa
5 cm = Pulsa
d
.
5 cm = 4
.14,3 d
3,14.d = 5 x 4
= 20
d = 6,369 cm
Jika digambarkan dalam bentuk pulsa akan terlihat seperti gambar 3.4. berikut ini:
2,5 cm
5 cm
Gambar 3.4. Lebar pulsaDalam perancangan ini untuk menentukan banyaknya jumlah cacahan yang
dihasilkan dengan jarak maksimal 99,95 meter dapat diperoleh dari perhitungan
sebagai berikut :
∑ pulsa = cm
m
5
95,99
= cm
cm
5
9995
16
= 1999 pulsa
3.1.4. Rangkaian Pengkondisi Sinyal
Pada bagian ini berfungsi untuk mengkondisikan sinyal dari sensor posisi
sebelum sinyal itu masuk ke mikrokontoler AT89S51. Rangkaian yang digunakan
berfungsi agar dapat dibaca oleh mikrokontroler.
7414
5K6
IN T O/P1.7
5V
1K
BD677A
Gambar 3.5. Rangkaian Pengkondisi sinyal
Dari gambar 3.5 rangkaian pengkondisi sinyal ini terdiri dari transistor
NPN dan inverter yang dikemas dalam IC74LS14.
Saat phototransistor cutoff transistor saturasi dengan IB = 1mA, sehingga
IC dapat diperoleh dengan persamaan sebagai berikut:
IC = .IB ; = 750
IC = 750.1 mA = 750 mA
Berdasarkan perhitungan diatas IC merupakan arus maksimal yang
dihasilkan oleh transistor. Pada perancangan sudah diketahui Vcc = 5V dan Rc =
1K. Ketika transistor saturasi maka VCE = 0,3V. Dengan demikian Ic dapat
diperoleh dengan persamaan sebagai berikut:
Ic = C
CE
R
VVcc =
K
VV
1
3,05 = 4,7 mA
17
Ketika Ic = 0 maka:
VCE = Vcc – Ic.Rc
VCE = 5 – 0
VCE = 5Volt
Sinyal dari penguat sinyal dibutuhkan untuk menggerakan rangkaian
masukan pada CMOS inverter schmitt trigger. Sinyal keluaran transistor penguat
terjadi perubahan dari tinggi ke rendah dan dari rendah ke tinggi belum sempurna.
Untuk itu digunakan schmitt trigger agar dapat menghasilkan gelombang keluaran
dengan perubahan yang tajam. Gambar 3.6 memperlihatkan bentuk gelombang
keluaran schmitt trigger. Keluaran dari schmitt triger diumpankan ke kaki P3.4
pada mikrokontroler.
A P3.4
Gambar 3.6. Gelombang Keluaran SchmittTtrigger
Dari keluaran yang berupa pulsa seperti gambar 3.6. inilah yang akan digunakan
oleh mikrokontroler untuk melakukan proses perhitungan sehingga dapat
diperoleh jarak kedalaman.
18
3.1.5. Mekanisme Alat Pengukuran
G
3.7. Mekanik Alat Pengukur Kedalaman Sumur
ON/FFStart
Tali
Deteksi PosisiKedalaman
Limit Switch 2
Limit switch 1Optocoupler
Air
Sumur
Tali
MotorRotary encoder
19
3.1.5.a. Saat pengukuran
Pada gambar 3.7 diatas untuk melakukan pengukuran, tombol start
ditekan maka kondisi limit switch 1 menjadi ON yang mengakibatkan motor akan
mulai berputar CCW, hal ini menunjukan bahwa proses pengukuran dimulai.
Bersamaan dengan itu rotary encoder berputar CCW untuk memulai pencacahan
hingga deteksi posisi menyentuh permukaan air.
Saat deteksi posisi kedalaman mencapai permukaan air maka tali akan
mengendor yang mengakibatkan limit switch 1 menjadi kondisi OFF, dan motor
akan berhenti berputar, itu berarti rotary encoder akan berhenti mencacah. Hasil
dari awal pencacahan sampai akhir pencacahan akan diproses oleh mikrokontroler
dan akan ditampilkan pada seven segment sebagai hasil pengukuran.
3.1.5.b. Selesai pengukuran
Setelah hasil pengukuran diperoleh, pada saat limit swich 1 off kondisi ini
digunakan untuk memutar balik arah putaran motor. Motor akan berputar CW dan
deteksi posisi kedalaman akan naik. Saat deteksi posisi kedalaman menyentuh
limit switch 2 maka hal itu akan mengakibatkan motor akan berhenti berputar, hal
ini menunjukan bahwa pengukuran sudah selesai.
3.1.6. Mikrokontroler AT89S51
3.1.6.a. Rangkaian Reset
Rangkaian reset digunakan untuk mereset mikrokontroler pada saat catu
daya dihidupkan seperti pada gambar 3.8.
10K
10uF
VCC
AT89S51
9RST
Res
et1
2
1K
Gambar 3.8. Rangkaian reset
20
Keadaan reset pada mikrokontroler diperoleh apabila pin reset diberi
logika tinggi (biasanya dalam waktu beberapa milidetik). Waktu reset tersebut
dapat dihitung dengan rumus T = RC. Pada perancangan ini waktu reset 100 ms
dengan menggunakan kapasitor C = 10 µF, maka nilai resistansi dapat dihitung :
100 ms = 10 µF x R
R = 100.10-3 / 10.10-6
R = 10 K.
Cara kerja rangkaian reset adalah sebagai berikut, bila tegangan catu
dihidupkan arus akan mengalir melewati kapasitor sehingga akan menimbulkan
beda tegangan pada resistor. Tegangan pada pin reset merupakan beda tegangan
antara Vcc dengan kapasitor.
3.1.6.b. Rangkaian Osilator
Mikrokontroler mempunyai rangkaian osilator internal (on-chip oscillator)
yang dapat digunakan sebagai sumber clock bagi CPU. Untuk dapat menggunakan
rangkaian osilator dalam chip tersebut, harus ditambahkan sebuah kristal dan dua
buah kapasitor pada pin XTAL1 dan pin XTAL2 (pin 19 dan pin 18 ) seperti pada
gambar 3.9.
30pF
AT89S51
18
19
XTAL2
XTAL1
12MHz
30pF
Gambar 3.9. Rangkaian osilator
Rangkaian osilator ini menggunakan kristal 12 MHz dan dua buah
kapasitor 30 pF sehingga frekuensi detak pada CPU adalah 12 MHz.
3.1.7. Driver Motor DC
Driver motor DC yang digunakan yaitu L293D. Port-port mikrokontroler
AT89S51 yang digunakan yaitu port P2.0 – P2.2 untuk mengirim sinyal ke
L293D. Port P2.0 berfungsi untuk mengirim sinyal ke pin input 1 L293D dan port
21
P2.1 berfungsi untuk mengirim sinyal ke pin input 2 L293D. Port P2.2 sebagai
pengirim sinyal bagi enable 1 L293D. Hubungan L293D dengan mikrokontroler
dapat dilihat pada gambar 3.10.
M
AT89S51 L293D
Gambar 3.10. Hubungan L293D dengan mikrokontroler AT89S51
Untuk menggerakan motor dc, pin enable L293D harus berlogika tinggi
dengan demikian akan ada tegangan output jika ada input yang diberikan melalui
pin L293D. Sebaliknya jika pin enable berlogika rendah maka tegangan output
akan nol meskipun ada input yang diberikan.
Dari gambar 3.11, untuk mengatur arah putaran motor dapat dilakukan
dengan cara sebagai berikut:
1. Pin enable 1 dan input 1 berlogika tinggi,input 2 berlogika rendah, maka
output 1 berlogika tinggi dan output 2 berlogika rendah. Dengan
demikian motor dc akan berputar ccw.
2. Pin enable 1 dan input 2 berlogika tinggi,input 1 berlogika rendah, maka
output 2 berlogika tinggi dan output 1 berlogika rendah. Dengan
demikian motor dc akan berputar cw.
3. Jika pin enable berlogika tinggi dan kedua input berlogika rendah, maka
tegangan kedua outputnya nol, dan juga jika pin enable berlogika rendah,
maka tegangan kedua outputnya nol meskipun ada kedua input berlogika
tinggi.
P2.2 P2.1 P2.0
Out 2 EN1IN2IN1 Out 1
22
4. Jika pin enable berlogika tinggi dan kedua pin input berlogika tinggi,
maka kedua outputnya berlogika rendah.
Hubungan logika dari rangkaian yang dibuat dapat dilihat pada tabel 3.1.
Tabel 3.1. Logika pada L293D
Enable 1 Input 1 Input 2 Output1 Output 2 Motor dc
H H H L L Diam
H H L H L Putar kiri
H L H L H Putar
kanan
H L L L L Diam
L H H L L Diam
Keterangan:
H = Berlogika tinggi
L = Berlogika rendah
3.1.8. Unit Penampil
3.1.8.a. Dioda Pemancar cahaya
LED yang diberi pra-tegangan maju akan memancarkan cahaya, untuk
rangkaian seperti ditunjukkan pada gambar 3.11.
Vd
5Volt
330Ra
Gambar 3.11. Rangkaian indikator LED
Pada perancangan rangkaian ini, berdasarkan data sheet dV = 1,7 Volt dan
dI = 10mA serta Vcc yang digunakan adalah 5 Volt, maka nilai Ra adalah:
33010
7,15
mA
VVRa
Jadi resistor yang digunakan adalah 330 Ω sebagai hambatan penahan arus
yang melewati LED.
23
Untuk menampilkan datanya dengan metode scanning, yaitu pengiriman
data keluaran dari mikrokontroler ke seven segment secara bergantian dan dengan
cepat sehingga terlihat seakan-akan hidup secara bersamaan.
Transistor PNP A733 yang digunakan berfungsi sebagai saklar untuk
menghubungkan antara seven segment dengan tegangan Vcc seperti terlihat pada
gambar 3.12.
5Volt
18KA733
LED
Por
t P
0.7
Por
t P
0.6
Por
t P
0.0
LED
330
Por
t P
0.1
Por
t P
0.5
Por
t P
0.3
Port P1.0
LEDLED
Por
t P
0.4
Por
t P
0.2
LEDLEDLED LED
Gambar 3.12. Skema Dasar Konfigurasi Saklar Menggunakan Transistor
Agar transistor menjadi ON (kondisi jenuh) maka pada keluaran port P1.0
harus diberi logika 0 sehingga terdapat arus yang mengalir dari Vcc ke CA.
Transistor saat berada dalam kondisi saturasi seperti sebuah saklar yang
tertutup dari terminal emiter ke kolektor dan apabila transistor dalam kondisi cut
off maka transistor seperti sebuah saklar yang terbuka dari terminal emiter ke
kolektor. Resistor BR dan ER digunakan sebagai pembatas arus yang masuk ke
dalam transistor. Arus kolektor transistor adalah BEC III , karena nilai BI
sangat kecil maka nilai EC II . Dari data sheet transistor A733 dapat diperoleh
besar arus penguatan dc ( hfe ) adalah 60, arus kolektor ( CI ) maksimal 100mA
dan besarnya ECV adalah 0,18 Volt. Diketahui pula arus LED 10mA sampai
24
20mA, maka ditentukan nilai CI saturasi 10mA yang disesuaikan dengan arus
minimal LED.
Saat keluaran Port P1.0 bernilai 0, P1.0 = 0 maka transistor berada dalam
keadaan aktif, dan diperoleh persamaan sebagai berikut:
Dari data sheet A733, VVEB 7,0 , mAIC 10 , VVEC 18,0 , VVLED 7,1 .
Nilai ER di dapat dengan persamaan :
0 LEDECECC VVVV
LEDECCCE VVVV
VE = 5 - 0,18 - 1,7
VVE 12,3
Besarnya nilai ER berdasarkan persamaan di atas adalah :
EEE RIV
E
EE I
VR
31210.10
12,33ER
Besarnya nilai ER yang di dapat dari perhitungan adalah 312Ω, maka
digunakan resistor yang mendekati harga tersebut yaitu resistor sebesar 330Ω.
Saat transistor saturasi BI mencapai nilai jenuh sebesar :
mAHfe
II C
jenuhB 167,060
10.10
min
3
Maka besarnya nilai BR yang digunakan sebagai penahan muka arus yang masuk
ke transistor melalui kaki basis adalah :
6,1868210.167,0
12,33
B
BB I
VR
Dalam perhitungan di dapat nilai BR sebesar 18682,6Ω maka digunakan
resistor yang mudah di dapat di pasaran, yaitu resistor sebesar 18KΩ.
25
3.1.8.b. Rangkaian penampil dengan seven segment
Rangkaian penampil yang digunakan adalah seven segment empat digit
yang langsung dihubung dengan mikrokontroler AT89S51 pada port P0 sebagai
saluran data. Dan port P1.0, P1.1 serta P1.2 digunakan sebagai saklar yang
menghubungkan antara Vcc dan CA (Common Anoda) pada seven segment,
seperti ditunjukkan pada gambar 3.13.
P0.0/AD0
1 2 3 4 5678910
1 2 3 4 5678910
VCC
Q2
1 2 3 4 5678910
P0.4/AD4
P2.2
18K
330
1 2 3 4 5678910
P0.7/AD7
330
P0.6/AD6
Q1
P0.2/AD2
P2.1
18K
P2.3
18K
Q4
P0.3/AD3
Q3
P2.0
18K
330
P0.5/AD5
P0.1/AD1
330
Gambar 3.13. Rangkaian Penampil seven segment
3.2. PERANCANGAN PERANGKAT LUNAK
3.2.1. Algoritma Perangkat Lunak
Sistem kerja dari pengukur kedalaman sumur berbasis mikrokontroler
AT89S51 ini disusun menjadi suatu algoritma berdasarkan cara kerja perangkat
keras (hardware)nya. Algoritma ini disusun agar persoalan pengendalian
pengukur kedalaman sumur ini dapat diterjemahkan menjadi bentuk yang
sistematis sehingga dapat ditangani oleh mikrokontroler.
26
Algorima ini diuraikan menjadi Program Utama dan subrutin-subrutin,
seperti : subroutin program counter-up dan subroutine program counter-down.
3.2.2 Diagram Alir Program Utama
Diagram alir program utama ditunjukkan pada gambar 3.14.
Inisialisasi
Hidupkaninterupsi
Putar motorke bwah
(ccw)
Incrementhitung pulsa
Hentikan laluputar motor
cw
Matikaninterupsi
Tampil keseven
segmentSensor jarakoff ?
End
Mulai
A
Ya
A
Gambar 3.14. Diagram alir program utama
Program ini dimulai dengan prooses inisialisasi mengosongkan data di
alamat penyimpan data tampilan. Setelah proses inisialisasi selanjutnya di cek
apakah beban sudah berada pada posisi awal atau belum, apabila beban belum
pada posisi awal maka selanjutnya putaran motor akan menggerakan beban keatas
27
hingga mencapai posisi awal. Jika dari pengecekan beban sudah pada posisi awal
maka putaran motor akan dimatikan. Selanjutnya program akan melakukan
perintah untuk menghidupkan interupsi. Saat interupsi mulai dihidupkan lalu
putaran motor akan berputar menggerakan beban ke bawah. Selama putaran
motor berputar menggerakan beban ke bawah mikrokontroler juga akan memulai
proses increment penghitungan pulsa, setelah itu akan di cek kembali apakah
sensor jarak sudah pada posisi off atau belum, jika sensor jarak belum berada pada
posisi off maka motor akan terus berputar dan proses perhitungan juga terus
dijalankan. Jika sensor jarak sudah berada pada posisi off maka putaran motor
akan dimatikan dan proses interupsi juga akan dimatikan. Untuk seterusnya hasil
perhitungan akan di tampilkan ke seven segment lalu di transfer ke PC melalui
port serial.
3.2.3 Diagram Alir subrutin increment cacah pulsa
Proses increment cacah pulsa pada gambar 3.15, nilai awal akan dimulai
dengan nol untuk nilai satuan, puluhan dan dua digit dibelakang koma. Saat rotary
encoder mulai berputar maka program mulai melakukan proses increment cacah
pulsa hingga rotary encoder berhenti atau motor penggerak berhenti. Dalm
program ini angka dua digit dibelakang koma diinisialkan sebagai A dan B, untuk
A adalah sebagai satuan dan B sebagai puluhan.
Awal program akan dimulai dengan membandingkan apakah nilai A = 0
atau tidak, jika A = 0 maka nilai A akan ditambahkan dengan 5 lalu akan
langsung ditampilkan ke seven segment namun jika A tidak bernilai nol maka nilai
akan dinolkan terlebih dahulu, setelah itu program akan membandingkan apakah
B bernilai 9 atau tidak, jika B tidak sama dengan 9 maka selanjutnya nilai B akan
di jumlahkan dan langsung ditampilkan ke seven segment, jika B = 9 maka nilai B
akan dinolkan. Proses seperti ini akan dilakukan hingga mencapai angka puluhan
atau rotary encoder berhenti. Untuk lebih jelasnya dapat dilihat pada gambar 3.15.
28
START
A= 0 ?
Tambahkan 5 keA
Tidak
Nolkan A
B= 9 ?
Nolkan B
Satuan = 9 ?
Nolkan satuanIncrementpuluhan
Puluhan = 10 ?
Matikan motor
Tampilkan 7'S
RET
Tidak
Increment B
Incrementsatuan
Tidak
Tidak
Ya
Ya
Ya
Ya
Gambar 3.15. Diagram alir subrutin increment cacah pulsa
29
BAB IV
ANALISIS HASIL PENGUKURAN DAN PEMBAHASAN
Pada bab ini akan dibahas tentang hasil akhir dari alat yang dibuat.
Untuk mengetahui apakah alat yang sudah jadi sesuai dengan rancangan awal
atau tidak. Untuk mengetahui tegangan masukan dan tegangan keluaran
digunakan alat ukur multimeter digital, juga akan dibahas tentang cara kerja
alat apakah sudah sesuai dengan rancangan yang dibuat.
4.1. Pengamatan Cara Kerja Alat
Pertama kali alat dihidupkan tampilan pengukur kedalaman akan
menunjukkan angka 00.00, yang menandakan bahwa rotary encoder belum mulai
berputar. Selanjutnya tombol start ditekan, yang menandakan bahwa alat siap
digunakan. Dengan menekan tombol start akan memberi masukan pada
pengendali motor, sehingga motor akan mulai berputar berlawanan arah jarum
jam. Kemudian rotary encoder akan mulai berputar dan sensor optocoupler akan
mulai mendeteksi celah-celah pada piringan rotary. Jika sensor optocoupler
terhalang maka keluaran dari sensor berlogika rendah (0), sedangkan jika sensor
tidak terhalang maka keluaran dari sensor tersebut berlogika tinggi (1). Dari hasil
keluaran sensor yang berupa pulsa inilah yang akan digunakan oleh
mikrokontroler untuk melakukan proses perhitungan sampai saat limit switch 1
pada kondisi off. Hasil dari proses perhitungan yang dilakukan oleh
mikrokontroler akan ditampilkan oleh seven segment sebagai hasil pengukuran
dan kondisi berganti untuk mengembalikan ke posisi awal ( memutar balik arah
putaran motor ). Pada Gambar 4.1. dapat dilihat foto hasil akhir alat pengukur
kedalaman sumur berbasis mikrokontroler AT89S51.
.
30
A F
G B H C D I E J
Gambar 4.1. Foto alat secara keseluruhan
Keterangan gambar :
A. Tombol start
B. Seven segment
C. Piringan rotary encoder
D. Sensor optocoupler
E. Beban
F. Tombol ON/OFF
G. Limit switch 1
H. Motor
I. Penggulung tali
J. Limit switch 2
31
Gambar 4.2. Foto alat tampak depan
Gambar 4.3. Foto alat saat tampilan maksimal
32
Gambar 4.3. menunjukkan bahwa alat berada pada tampilan maksimal, ini dapat
dilihat dari hasil tampilan yang menunjukkan angka 99.95. Tampilan maksimal ini
diperoleh dengan cara memutar piringan rotary encoder menggunakan tali yang
ditarik.
4.2. Pengamatan pada sensor
Sensor ini menggunakan sensor optocoupler yang diletakan pada ujung
piringan rotary.
Cara kerja dari sensor ini adalah pada saat phototransistor mendapat sinar
dari LED inframerah dalam artian sensor tidak terhalang, maka phototransistor
on. Sehingga masukan ke schemitt triger SN74LS14 akan berlogika tinggi (1).
Keluaran dari schmitt triger SN74LS14 akan berlogika rendah (0).
Pada saat sinar inframerah terhalang maka phototransistor off, sehingga keluaran
dari sensor akan berlogika rendah (0) dan keluaran dari schmitt trigerr SN74LS14
akan berlogika tinggi (1).
Tegangan keluaran pada sensor phototransistor dapat dilihat pada tabel
4.1. berikut :
Tabel 4.1. Tegangan keluaran sensor
Kondisi sensor Tegangan masukan
schmitt triger SN74LS14
Tegangan keluaran
schmitt triger SN74LS14
Tidak terhalang 4.8V 0.2V
Terhalang 0.42V 5V
Dari tabel 4.1 dapat dilihat tegangan keluaran pada sensor optocopler
merupakan tegangan masukan pada schmitt triger SN74LS14. Pada saat kondisi
tidak terhalang keluaran pada schmitt trigerr SN74LS14 sebesar 0,2V, tegangan
keluaran ini sebagai logika ‘0’, dan pada saat kondisi terhalang tegangan
keluarannya sebesar 5V, tegangan keluaran ini sebagai logika ‘1’ pada masukan
mikrokontroler.
33
4.3. Pengamatan Pada Pengendali Motor DC
Pengendali motor dc mendapat masukan dari mikrokontroler melalui
logika yang diberikan oleh input 1 dan input 2. Dari hasil pengamatan masukan
yang diberikan oleh mikrokontroler ke pengendali motor ditunjukkan pada tabel
4.2 :
Tabel 4.2. Pengamatan tegangan pada pengendali motor dc
Kondisi Motor dc Enable Input 1 Input 2 Output1 Output2
Saat on Diam 5,01 5,01 5,01 0 0
Saat turun Putar kiri 5,01V 5,01V 0 5,01V 0
Saat naik Putar kanan 5,01V 0 5,01V 0 5,01V
Saat menyen-
tuh airDiam 0 0 0 0 0
Dari tabel 4.2 Tegangan keluaran pada mikrokontoler 5,01V dianggap
sebagai logika tinggi (1) dan 0 dianggap sebagai logika rendah (0). Tegangan ini
merupakan tegangan masukan pada rangkaian pengendali untuk menggerakkan
motor.
4.4. Proses pencacahan
Proses pengukuran pada tahap pencacahan dilakukan untuk menentukan
berapa jarak kedalaman sumur yang diukur. Kedalaman yang diperoleh dari
pencacahan satu putaran penuh pada rotary encoder adalah 19,8 cm.
Hasil ini diperoleh dari persamaan sebagai berikut :
1pulsa = 4,95 cm
1putaran penuh = 4 pulsa
Jadi jarak satu putaran = 4,95 cm x 4
= 19,8 cm
Pulsa sebagai masukan dihasilkan oleh rotary encoder yang berputar. Gambar
pulsa yang dihasilkan oleh rotary encoder dapat dilihat pada gambar 4.4 dibawah
ini :
34
Gambar 4.4. Pulsa keluaran dari rangkaian sensor
Gambar 4.4. merupakan gambar bentuk pulsa keluaran yang dihasilkan oleh
rangkaian sensor, dimana pada saat pulsa naik itu berarti sensor pada posisi
terhalang dan pada saat pulsa turun sensor berada pada posisi tidak terhalang.
4.5 Perhitungan jumlah pulsa
Untuk mengetahui jumlah pulsa dari jarak yang diperoleh dapat dihitung
dengan persamaan berikut :
∑ pulsa = resolusi
jarak …………………………..( persamaan 4.1 )
Dari perancangan telah diketehui bahwa satu pulsa terdiri dari dua celah yaitu
hitam dan putih. Jadi untuk satu pulsa adalah pergeseran dari celah warna hitam
35
hingga mencapai warna hitam lagi atau dari celah putih hingga mencapai putih
lagi. Untuk gambar satu pulsa dapat dilihat pada gambar 4.5.
v
t0 t
Gambar 4.5.a Satu pulsa dimulai celah hitam
v
5V
t0 t
Gambar 4.5.b Satu pulsa dimulai celah putih
4.6. Proses Pengukuran Kedalaman
4.6.a. Pengukuran dengan beban
Pada proses ini pengukuran dilakukan dengan cara meletakkan alat
pengukur pada pinggiran di atas meja untuk data 1 dan 2, di atas lemari untuk data
3 dan 4, dan di pinggiran atap rumah untuk data 5 dan 6 lalu alat dioperasikan.
Beban berfungsi sebagai pendeteksi kedalaman yang akan diukur. Proses
pengukuran ini dilakukan sebanyak 5 kali untuk setiap pengukuran, dari hasil
pengukuran ini diperoleh data seperti pada tabel 4.3.
36
Tabel 4.3. Hasil pengukuran dengan beban
NO Jarak sebenarnya
(cm )
Jarak terukur oleh
alat ( m )
Galat (%)
1 45 00.45 0
2 70 00.70 0
3 110 01.10 0
4 150 01.50 0
5 298 03.00 0.6
6 427 04.35 1.8
Kesalahan pengukuran ( galat / error ) diperoleh dari persamaan :
Galat = sebenarnyajarak
sebenarnyajarakterukurjarak x 100 %
Contoh :
a. Galat pada pengukuran 45 cm = 45
4545 x 100 % = 0 %
b. Galat pada pengukuran 427 cm = 427
427435 x 100 % = 1,8 %
4.6.b. Pengukuran dengan cara menarik tali
Proses pengukuran ini dilakukan dengan menarik tali secara manual untuk
memperoleh kedalaman maksimal yang dapat dihasilkan oleh alat pengukur. Pada
cara ini pengukuran dilakukan setiap kelipatan 5 meter, dari hasil pengukuran ini
diperoleh data seperti pada tabel 4.4.
37
Tabel 4.4. Hasil pengukuran dengan menarik tali
NO Jarak sebenarnya
(m )
Terukur oleh
alat ( m )
Galat (%)
1 5 05.15 3.00
2 10 10.35 3.50
3 15 15.60 4.00
4 20 20.90 4.50
5 25 26.15 4.60
6 30 31.50 5.00
7 35 36.90 5.42
8 40 42.25 5.62
9 45 47.80 6.22
10 50 53.30 6.60
11 55 58.90 7.09
12 60 64.40 7.33
13 65 70.10 7.84
14 70 75.60 8.00
15 75 81.15 8.20
16 80 86.60 8.25
17 85 92.25 8.52
18 90 98.05 8.94
Dari tabel 4.4 dapat diketahui bahwa tampilan pengukuran kedalaman
sejauh 90 m dengan tampilan 98.05 m. Hal ini disebabkan karena adanya error
pada saat pengukuran. Dari data yang diperoleh pada tabel 4.4 dapat dibuat grafik
error terhadap jarak seperti pada gambar 4.6
38
0
1
2
3
4
5
6
7
8
9
10
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
Jarak (m)
Gal
at (
%)
Gambar 4.6. Grafik error pada pengukuran
Dari gambar 4.6. dapat diketehui bahwa error yang diperoleh dari hasil
pengukuran selalu mengalami kenaikan sejalan dengan bertambahnya kedalaman
sumur. Jumlah error maksimal yang diperoleh dari hasil pengukuran sebesar
8,94%. Error maksimal ini terjadi pada saat pengukuran mencapai jarak 90 m.
39
BAB VKESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan dari pengamatan alat yang telah dilakukan, dapat
diperoleh beberapa kesimpulan antara lain :
1. Semakin dalam jarak pengukuran maka error yang dihasilkan
semakin besar.
2. Tampilan alat pengukur mulai dari 00.00 meter sampai 99.95 meter.
5.2 Saran
Hasil perancangan alat pengukur kedalaman sumur ini masih
memiliki beberapa kelemahan. Dengan mengacu pada kekurangan hasil
perancangan, maka disarankan:
1. Penambahan pembuatan mekanik untuk letak motor, penggulung tali,
letak dan beban yang digunakan agar alat dapat berfungsi secara
maksimal.
2. Peletakan sensor pada piringan rotary, limit switch agar lebih baik
lagi sehingga alat dapat bekerja dengan baik.
3. Untuk pengembangan alat, sumber tegangan dapat menggunakan
batere.
40
DAFTAR PUSTAKA
1. Budiharto, Widodo. Interfacing Komputer dan Mikrokontroler. Jakarta:
PT Elexmedia Komputindo Kelompok Gramedia. 2004
2. Malvino, Albert Paul, Electronics Principles, The McGraw-Hill
Companies, 1997
3. Putra, Afgianto Eko, Belajar Mikrokontroler AT89C51/52/55 Memori dan
Aplikasi,Edisi 2. Penerbit Gava Media, Yogyakarta 2002.
4. Schuler, Charle A. 2003. Electronics Principles and Applications Sixth
Edition. USA:McGraw-Hill Companies Inc.
LAMPIRAN
Listing Program
;Tugas Akhir;Pengukur Kedalaman Sumur
;Inisialisasi
satuan equ 30h ; alamat penyimpanan data satuan
Puluhan equ 31h ; alamat penyimpanan data puluhan
Ratusan equ 32h ; alamat penyimpanan data ratusan
Ribuan equ 33h ; alamat penyimpanan data ribuan
Data1 equ 34hData2 equ 35hJumlah equ 36hPutar equ 37hSimpan equ 38hSimpanPort equ 39h
org 00hawal:
setb p1.0 ; set p1.0 logika tinggi
setb p1.1 ; set p1.1 logika tinggi
setb p1.2 ; set p1.2 logika tinggi
On:acall Tampilan ; panggil subrutin tampilan
jb p1.2,On ; cek tombol start ditekan, jika tidak lompat ke on
mulai:mov tcon,#00 ; reset tcon
mov th0,#00 ; isi th0 dengan 00H
mov Tl0,#00 ; isi tl0 dengan 00H
mov Jumlah,#00 ; isi jumlah dengan data 00
mov satuan,#00 ; isi satuan dengan data 00
mov Puluhan,#00 ; isi puluhan dengan data 00
mov Ratusan,#00 ; isi ratusan dengan data 00
mov Ribuan,#00 ; isi ribuan dengan data 00
clr p2.0clr p2.1clr p2.2acall MotorTurun ; panggil subrutin motor turun
mov Tmod,#00011101b ; pindahkan Tmod dengan #1DH
setb tr0 ; hiduokan timer 0
acall Tampilan ; panggil subrutin tampilan
turun:acall Tampilan ; panggil subrutin tampilan
jnb p1.0,turun ; jika p1.0 = 0 lompat ke turun
acall MotorHenti ; panggil motor hentimov Tmod,#00010001b ; isi Tmod dengan mode 1clr tr0 ; matikan timer 0
acall Tunda ; panggil subrutin tunda
acall Tampilan ; panggil subrutin tampilan
acall MotorNaik ; panggil motor naik
naik:acall Tampilan ; panggil subrutin tampilan
jb p1.1,naik ; lompat ke naik jika p1.1 logika tinggi
acall MotorHentiajmp awal
MotorTurun:setb p2.0 ; enable dibuat high
setb p2.1 ; in 1 dibuat high
clr p2.2 ; in 2 dibuat low
ret
MotorNaik:setb p2.0 ; enable dibuat high
setb p2.2 ; in 2 dibuat high
clr p2.1 ; in 1 dibuat low
retMotorHenti:
clr p2.0clr p2.1clr p2.2ret
Tampilan:mov Data1,Th0 ; isi data 1 dengan data Th0
mov Data2,Tl0 ; isi data 2 dengan data Tl0
mov Jumlah,#00 ; isi jumlah dengan data #00H
mov r2,Data1 ; pindahkan isi data 1 ke r2
mov r3,Data2 ; pindahkan isi data 2 ke r3
mov Jumlah,#00 ; isi jumlah dengan data #00H
mov r1,#00 ; isi r1 dengan data #00Hmov a,r2 ; isi accumulator dengan data r2
cjne a,#0,Tinggi ; bandingkan acc dengan #0, jika tidak sama loncat ke tinggi
mov a,r3 ; jika sama pindahkan data r3 ke acc
acall Hitung1 ; panggil subrutin hitung 1
acall Tampil ; panggil subrutin tampil
retTinggi:
mov Simpan,r2 ; pindahkan data r2 ke alamat simpan
acall Hitung2 ; panggil subrutin hitung2
mov a,r3 ; pindahkan data r3 ke acc
mov r2,Simpan ; pindahkan data simpan ke r2
add a,r2 ; tambahkan data r2 dengan acc
acall Hitung1 ; panggil subrutin hitung1
acall Tampil ; panggil subrutin tampil
ret
Hitung2:cjne r1,#0ffh,Cek2 ; bandingkan r1 dengan #0FFH, jika tidak sama loncat ke cek2
mov r1,#00 ; jika sama isi r1 dengan data #00
djnz r2,Hitung2 ; cek r2, jika r2 tidak sama dengan 0 loncat ke hitung2
ret
Cek2:inc r1 ; naikan r1
mov r4,#00 ; isi r4 dengan #00H
inc satuan ; naikan alamat satuan
mov r4,satuan ; isi r4 dengan data satuan
cjne r4,#2,Hitung2 ; bandingkan r4 dengan data2, jika tidak sama loncat ke hitung2
mov satuan,#00 ; jika sama isi satuan dengan #00H
mov r4,#00 ; isi r4 dengan #00H
inc Puluhan ; naikan alamat puluhan
mov r4,Puluhan ; isi r4 dengan data puluhan
cjne r4,#10,Hitung2 ; bandingkan r4 dengan data10, jika tidak sama loncat ke hitung2
mov satuan,#00 ; jika sama isi satuan dengan #00H
mov Puluhan,#00 ; isi puluhan dengan #00H
mov r4,#00 ; isi r4 dengan #00H
inc Ratusan ; naikan alamat ratusanmov r4,Ratusan ; isi r4 dengan data ratusan
cjne r4,#10,Hitung2 ; bandingkan r4 dengan data10, jika tidak sama loncat hitung2
mov satuan,#00 ; jika sama isi satuan dengan #00H
mov Puluhan,#00 ; isi puluhan dengan #00H
mov Ratusan,#00 ; isi ratusan dengan #00H
mov r4,#00 ; isi r4 dengan #00H
inc Ribuan ; naikan alamat ribuan
mov r4,Ribuan ; isi r4 dengan data ribuan
cjne r4,#10,Hitung2 ; bandingkan r4 dengan data10, jika tidak sama loncat hitung2
ret
Hitung1:cjne a,Jumlah,Cek1; bandingkan acc dengan data jumlah, jika tidak sama loncat ke cek1
acall Tampil ; panggil subrutin tampilret
Cek1:inc Jumlah ; naikan alamat jumlah
mov r4,#00 ; isi r4 dengan data 0
inc satuan ; naikan alamat satuan
mov r4,satuan ; isi r4 dengan alamat satuan
cjne r4,#2,Hitung1 ; bandingkan r4 dengan data2, jika tidak sama loncat ke hitung1
mov satuan,#00 ; isi satuan dengan #00H
mov r4,#00 ; isi r4 dengan data #00H
inc Puluhan ; naiakan alamat puluhan
mov r4,Puluhan ; isi r4 dengan alamat puluhan
cjne r4,#10,Hitung1; bandingkan r4 dengan #10H, jika tidak sama loncat ke hitung1
mov satuan,#00 ; isi satuan dengan #00H
mov Puluhan,#00 ; isi puluhan dengan data #00H
mov r4,#00 ; isi r4 dengan data #00H
inc Ratusan ; naikan alamat ratusan
mov r4,Ratusan ; isi r4 dengan alamat ratusan
cjne r4,#10,Hitung1; bandingkan r4 dengan #10H, jika tidak sama loncat ke hitung1
mov satuan,#00 ; isi satuan dengan #00H
mov Puluhan,#00 ; isi puluhan dengan #00H
mov Ratusan,#00 ; isi ratusan dengan #00H
mov r4,#00 ; isi r4 dengan #00h
inc Ribuan ; naikan alamat ribuan
mov r4,Ribuan ; isi r4 dengan alamat ribuan
cjne r4,#10,Hitung1; bandingkan r4 dengan #10H, jika tidak sama loncat ke hitung1
ret
Tampil:mov SimpanPort,p2 ; pindahkan dat port2 ke simpan port
mov r6,#7fh ; isi r6 dengan #7FH
mov r1,satuan ; isi r1 dengan data satuan
mov r2,Puluhan ; isi r2 dengan data puluhan
mov r3,Ratusan ; isi r3 dengan data ratusan
mov r4,Ribuan ; isi r4 dengan data ribuan
mov dptr,#Angka5 ; isi dptr dengan data angka5cjne r1,#0,satu ; bandingkan r1 dengan 0, jika tidak sama loncat ke satu
acall 7s1 ; panggil 7s1
acall 7s2 ; panggil 7s2sjmp dua ; lompat ke dua
satu:inc dptr ; naikan dptr
acall 7s1 ; panggil 7s1
djnz r1,satu ; decrement r1, jika r1 tidak sama dengan nol loncat ke satu
acall 7s2 ; panggil 7s2
dua:mov dptr,#Angka ; isi dptr dengan data angka
cjne r2,#0,dua1 ; bandingkan r2 dengan 0, jika tidak sama loncat ke dua1
acall 7s1 ; panggil 7s1
acall 7s2 ; panggil 7s2
sjmp tiga ; lompat ke tiga
dua1:inc dptr ; naikan dptracall 7s1 ; panggil 7s1
djnz r2,dua1 ; decrement r2, jika tidak sama dengan 0, loncat ke dua1
acall 7s2 ; panggil 7s2
tiga:mov dptr,#AngkaK ; isi dptr dengan data angkaK
cjne r3,#0,tiga1 ; bandingkan r3 dengan 0, jika tidak sama dengan 0 loncat ke tiga1
acall 7s1 ; panggil 7s1
acall 7s2 ; panggil 7s2
sjmp empat ; lompat ke empattiga1:
inc dptr ; naikan dptr
acall 7s1 ; panggil 7s1
djnz r3,tiga1 ; decrement r3, jika tidak sama dengan 0 loncat ke tiga1
acall 7s2 ; panggil 7s2
empat:mov dptr,#Angka ; isi dptr dengan data angka
cjne r4,#0,empat1 ; bandingkan r4 dengan 0, jika tidak sama dengan 0 loncat ke empat1
acall 7s1 ; panggil 7s1acall 7s2 ; panggil 7s2
sjmp SlsKonv ; lompat ke Siskonvempat1:
inc dptr ; naikan dptr
acall 7s1 ; panggil 7s1djnz r4,empat1 ; decrement r4, jika tidak sama dengan 0 loncat ke empat1
acall 7s2 ; panggil 7s2
SlsKonv:mov p2,SimpanPort ; kirim data simpan port ke port2mov satuan,#00 ; isi satuan dengan #00mov Puluhan,#00 ; isi puluhan dengan #00
mov Ratusan,#00 ; isi ratusan dengan #00mov Ribuan,#00 ; isi ribuan dengan #00
ret
7s2:mov p0,a ; kirim dat acc ke port0
mov a,r6 ; pindahkan data r6 ke acc
anl a,SimpanPort ; and-kan acc dengan data simpan port
mov p2,a ; kirim data acc ke port2
orl a,#0fh ; or-kan acc dengan #oFFHrr a ; geser bit acc ke kanan
mov r6,a ; pindahkan data acc ke r6
mov Putar,#200 ; isi putar dengan data #200
djnz Putar,$ ; decrement putar sebanyak 200x
mov p0,#0ffh ; kirim data #0FFH ke port0
ret
7s1:clr a ; bersihkan acc
movc a,@a+dptr ; jumlahkan isi acc dengan dptr
ret
Subrutin delay
Tunda:mov r7,#10 ; isi r7 dengan dat #10
Tunda1:mov Th1,#high -50000 ; isi th1 dengan high(50000)
mov Tl1,#low -50000 ; isi tl1 dengan low (50000)
setb tr1 ; hidupkan timer 1
Tunda2:jnb tf1,$ ; tunggu hingga tf1=0
clr tf1 ; matikan tf1
clr tr1 ; matikan tr1
djnz r7,Tunda1 ; kurangi isi r7 dan lompat ke tunda1 jika tidak0
ret
Angka:db 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
AngkaK:db 40H, 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 10H
Angka5:db 0C0H, 92H
Gambar Rangkaian Alat Pengukur Kedalaman Sumur Berbasis
Mikrokontroler AT89S51
R26330
1 2 3 4 5678910
4K7
Vcc
1 2 3 4 5678910
Q2
1K
1 2 3 4 5678910
9V
30Pf
10uF
74LS14
12
9V
<Doc> <Rev Code>
<Title>
A
1 1Tuesday , August 14, 2007
Title
Size Document Number Rev
Date: Sheet of
R17
Q1
R15
R27330
R18
S2
SW
R2418K
PHOTO NPNBD677
L293D
12345678
161514131211109
R2218K
S1
SW
Q3
12MHz
CRYSTAL
R2118K
R16
5V
MMOTOR DC
Q4
Vcc
VCC
AT89S51
91819 29
30
31
12345678
2122232425262728
1011121314151617
3938373635343332
RSTXTAL2XTAL1 PSEN
ALE/PROG
EA/VPP
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P2.0/A8P2.1/A9
P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INTOP3.3/INT1
P3.4/TOP3.5/T1
P3.6/WRP3.7/RD
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
1 2 3 4 5678910
150
R14
30Pf
10K
start
R27330
R2318K
R25330
R20R19
R13
Tabel hasil 5 kali pengukuran untuk setiap data
Tabel hasil pengukuran kedaman 45 cm
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 45 00.45 02 45 00.45 03 45 00.45 04 45 00.45 05 45 00.45 0
Tabel hasil pengukuran kedalaman 70 cm
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 70 00.70 02 70 00.70 03 70 00.70 04 70 00.70 05 70 00.70 0
Tabel hasil pengukuran kedalaman 1.10 m
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 110 01.10 02 110 01.10 03 110 01.10 04 110 01.10 05 110 01.10 0
Tabel hasil pengukuran kedalaman 1.5 m
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 150 01.50 02 150 01.50 03 150 01.50 04 150 01.50 05 150 01.50 0
Tabel hasil pengukuran kedalaman 2.98 m
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 298 03.00 0.62 298 03.00 0.63 298 03.00 0.64 298 03.00 0.65 298 03.00 0.6
Tabel 4.8. Hasil pengukuran kedalaman 4.27 m
No Jarak sebenarnya (cm)
Terukur oleh Program
(m)
Galat (%)
1 427 04.35 1.82 427 04.35 1.83 427 04.35 1.84 427 04.35 1.85 427 04.35 1.8