PERATURAN : Hak cipta dilindungi oleh undang – undang, “ Hal-hal yang menyangkut isi dan program pada buku ini tidak boleh disebar luaskan tanpa izin dari penulis, isi dan program dilindungi oleh undang-undang ”
Penulis, Yanuar Mukhammad
ELECTRONIC’S ART PANDUAN MEMBUAT ROBOT DAN ALAT ELEKTRONIK
ii
Kata Pengantar Alhamdulillah segala puji dan syukur kami panjatkan kepada Allah swt. yang telah memberikan kelancaran dan berkahnya sehingga buku ini dapat terbit dan beredar dimasyarakat secara baik dan teratur, tidak lupa kami haturkan terima kasih untuk seluruh donatur yang telah memberikan bantuan kepada kami baik itu dalam segi materi maupun non-materi, dan juga ucapan terima kasih yang mendalam kepada orang tua penulis yang telah memberikan bantuannya, baik itu dari sisi batin dan pendanaan yang membuat sisi psikologis penulis menjadi percaya diri dan tidak cepat patah semangat dalam proses pembuatan buku ini. Latar belakang dalam pembuatan buku ini adalah melihat banyaknya masyarakat indonesia yang masih mengandalkan teknologi konvensional didalam melakukan pekerjaan atau aktifitas sehari-hari, alangkah baiknya kondisi yang konvensional dapat berubah dengan adanya teknologi yang modern seperti halnya teknologi robotika, yang bisa digunakan untuk menggantikan peran serta pekerjaan manusia yang biasa dilakukan berulang-ulang kali atau bahkan bisa berdampingan dengan pekerjaan manusia yang mana bisa menguntungkan pihak dari manusia sendiri, seperti adanya alat detektor maling digital, yang dapat berdampingan dengan satpam atau penjaga dalam sebuah kantor atau rumah. Tujuan dibuatnya buku ini yaitu untuk memberikan panduan didalam membuat alat-alat elektronika dan robotika, yang mana dengan bisa membuat robot atau alat elektronika akan bisa menggeser teknologi konvensional secara perlahan, sehingga indonesia akan maju dalam hal teknologi dan inovasinya, dan bisa bersaing untuk urusan teknologi di asia, khususnya di asia tenggara. Buku ini membahas tentang bagaimana cara pembuatan suatu alat elektronika dan robotika, yang dijelaskan secara teperinci dari pembuatan skema rangkaian, skema program dan bagan kerjanya sehingga akan mudah dipahami secara logika. Semua alat dan robot yang dibuat menggunakan teknologi mikrokontroler yang bisa bertindak sebagai otak dalam setiap kondisi alat yang akan dibuat, dalam hal ini mikrokontroler ATMega, dan juga menggunakan bahasa basic yaitu Bascom-AVR, yang mana bahasa ini adalah bahasa dalam kategori bahasa tingkat tinggi, sehingga mudah untuk dipahami dan dimengerti, terutama untuk yang pemula dalam dunia elektronika. Kami menyadari akan adanya kekurangan dalam setiap penulisan atau pun penjelasan dari kami, maka dari itu dimohon untuk memberikan segenap kritik dan sarannya agar buku ini bisa benar-benar memudahkan pembaca dan kami bisa melakukan evaluasi terhadap buku ini. Untuk mengirimkan kritik dan saran ke E-mail berikut ini.
[email protected]
Penulis (Yanuar Mukhammad, ST)
iii
Daftar Isi 1. Cover........................................................................................................................ I 2. Kata Pengantar .................................................................................................. ..III 3. Daftar Isi ............................................................................................................... IV 4. BAB 1 : Perkenalan Komponen............................................................................. 1 1.1 Perkenalan dengan Komponen Elektronika ........................................................ 1 1.2 Perkenalan dengan mikrokontroler Atmega ...................................................... 12 1.3 Perkenalan Software Bascom-AVR ................................................................. 18 1.4 Karakteristik Bahasa Bascom-AVR ................................................................. 20 5. BAB 2 : Downloader............................................................................................. 29 2.1 Perkenalan dengan Downloader ....................................................................... 29 2.2 Pembuatan Rangkaian USB Downloader ......................................................... 31 2.3 Cara Men-download Program ......................................................................... 35 6. BAB 3 : Komunikasi Serial .................................................................................. 39 3.1 Perkenalan Komunikasi Serial ......................................................................... 39 3.2 Cara Menghubungkan Komputer dengan Mikrokontroler................................. 39 3.3 Pembuatan Rangkaian Komunikasi Serial ........................................................ 45 7. BAB 4 : Minimum System ................................................................................... 47 4.1 Perkenalan dengan Minimum System .............................................................. 47 4.2 Pembuatan Rangkaian Minimum System ......................................................... 48 8. BAB 5 : ROBOTIKA ........................................................................................... 53 5.1 Pengenalan Tentang Robotika .......................................................................... 53 5.2 Membuat Robot Line Follower ( Advance Grade )........................................... 57 5.3 Membuat Robot Keseimbangan (balance)........................................................ 97 5.4 Membuat Robot Remote Control dengan Remote TV .....................................107 5.5 Membuat Robot Remote Control dengan Bluetooth ........................................115 5.6 Membuat Robot Remote Control dengan Visual Basic dan APC220 ...............122 5.7 Membuat Robot Penerang Ruangan ................................................................130 9. BAB 6 : Alat Instrumentasi.................................................................................136 6.1 Perkenalan Tentang Alat Instrumentasi ...........................................................136 6.2 Membuat Termometer Digital dengan LM35 dan Interface Visual Basic.........137 6.3 Membuat Termometer Digital dengan DHT11 ................................................145 iv
6.4 Membuat Alat Pendeteksi Maling/Pencuri ......................................................150 6.5 Membuat Jam Digital......................................................................................155 6.6 Membuat RFID dengan RDM 630 dan Interface Visual Basic.........................162 6.7 Membuat RFID dengan Reader ID-12.............................................................169 6.8 Membuat Fusebit AVR Doctor .......................................................................177 6.9 Membuat Alat Pengukur Berat Badan .............................................................182 6.10. Membuat Alat Pengukur Jarak Benda Digital ...............................................190 6.11 Membuat Detektor Gas LPG (Liquified Petroleum Gas) ...............................198 6,12 Membuat Pengaman Pintu dengan Password .................................................214 6.13 Membuat Alat Monitoring ADC dan Kendali Led Berbasis TCP-IP ..............228 6.14 Membuat Bel Rumah Modern .......................................................................241 6.15 Cara Menghubungkan Camera Link Sprite ke Komputer...............................248 6.16 Membuat Tampilan Dotmatrik ......................................................................252 6.17 Membuat Modul Record Suara .....................................................................263 6.18 Membuat Speaker Active...............................................................................267 6.19 Membuat Rangkaian Pre-Mic........................................................................269 6.20 Membuat Power Supply / Adaptor 12v dan 5v dari sumber AC .....................272 6.21 Mengatur Kecepatan Motor DC ....................................................................276 6.22 Membuat Termometer Digital dengan LM35 dan Data Logger / SD Card .....283 6.23 Membuat SMS Gateway dengan Modem Wavecom dan Keypad Matrik.......293 6.24 Membuat Kalkulator Digital Dua Digit .........................................................303 6.25 Membuat Lampu Tidur .................................................................................310 6.26 Membuat Alat Berbasis RFID dengan Modul RDM630 ................................316 6.27 Membuat Alat Kendali Led dengan Joystick PS2 ..........................................323 6.28 Membuat Alat Kendali Led dengan Handphone J2ME..................................331 6.29 Membuat Alat Penunjuk Arah (Kompas) ......................................................345 6.30 Membuat Alat Pengendali Led dan Buzzer Menggunakan SMS Gateway .....352 6.31 Membuat Alat Pembaca Input ADC dengan Interface 7 Segment ..................360 10. BAB 7 : Macam-Macam Sensor........................................................................367 11. BAB 8 : Macam-Macam Modul / Starter Kit...................................................371 12. BAB 9 : Cara Membuat Rangkaian / Skematik di PCB ..................................375 13. BAB 10 : Penutup ..............................................................................................383 14. Bonus Article: Koneksi VB 6.0 ke Database MS. Access 2007 ..........................384 15. Bonus Article: Parsing Data Pada Visual Basic 6.0 ............................................395 v
16. Profil Penulis .....................................................................................................401 17. Kata-Kata Mutiara............................................................................................402 18. Daftar Pustaka...................................................................................................403 19. Lampiran ...........................................................................................................405
vi
BAB 1 Perkenalan Komponen 1.1 Perkenalan Dengan Komponen Elektronika Komponen elektronika adalah salah satu bagian dari elektronika yang sangat dibutuhkan, karena itu merupakan bahan-bahan penyusun dari suatu alat atau robot yang akan dibuat. Komponen elektronika memiliki bermacam-macam bentuk dan kegunaannya, setiap suatu bentuk misalnya transistor memiliki berbagai macam fungsi tergantung dari kegunaannya dan seri nomer pada transistor tersebut. Dapat dikatakan komponen elektronika merupakan bahan-bahan yang akan digunakan untuk membuat suatu alat atau robot yang berbasis elektronik. Berikut adalah penjelasan tentang macam-macam komponen elektronika tersebut. 1.1.1. Resistor Resistor memiliki simbol secara umum seperti pada gambar 1.1 dibawah ini, ada dua simbol, yang atas yaitu simbol untuk versi amerika dan yang bawah adalah simbol untuk versi eropa, biarpun berbeda namun fungsi dan bentuk resistornya sama.
Gambar 1.1 Simbol Resistor
1.1.1.1 Pengertian Sebuah resistor adalah terminal dua komponen elektronik yang menghasilkan tegangan pada terminal yang sebanding dengan arus listrik melewatinya sesuai dengan hukum Ohm: V=IxR
Resistor adalah elemen dari jaringan listrik dan sirkuit elektronik dan di mana-mana di sebagian besar peralatan elektronik. Praktis resistor dapat dibuat dari berbagai senyawa dan film, serta resistensi kawat (kawat terbuat dari paduan Resistivitas tinggi, seperti nikel / krom). Karakteristik utama dari sebuah resistor adalah resistensi, toleransi, tegangan kerja 1
maksimum dan power rating. Karakteristik lainnya meliputi koefisien temperatur, kebisingan, dan induktansi. Resistor dapat diintegrasikan kedalam sirkuit hibrida dan papan sirkuit cetak, bahkan sirkuit terpadu. Ukuran dan letak kaki bergantung pada desain sirkuit, kebutuhan daya resistor harus cukup dan disesuaikan dengan kebutuhan arus rangkaian agar tidak terbakar.
1.1.1.2 Fungsi Untuk fungsi utama dari resistor yaitu untuk membatasi arus yang yang melewatinya, misalkan untuk LED biasanya digunakan resistor sebesar 330 ohm yang mana bisa untuk membatasi arus sebesar 20mA-50mA, karena jika arus yang masuk ke sebuah komponen elektronika melebihi dari kapasitas arus maksismum komponen tersebut, maka komponen tersebut akan panas terlebih dahulu kemudian akan rusak, namun jika arus yang masuk ke komponen itu terlalu kecil atau kurang dari batas minimum, maka komponen tersebut tidak akan aktif. 1.1.1.3 Jenis-Jenis Resisitor A. Resistor Umum dan Resistor 1% Resistor memiliki jenis dan variasi yang berbeda-beda tergantung dari fungsi yang akan digunakan, jika menginginkan resistor yang bagus maka dapat menggunakan resistor berjenis 1% yang memiliki warna dasar berwarna biru, namun jika menggunakan resistor yang biasa juga tidak masalah karena akan sama hasilnya, yang berbeda Cuma keakuratan dalam resistansi 1% lebih akurat dibanding dengan resistor biasa, dan juga harganya lebih mahal yang 1%., berikut adalah gambar dari resistor biasa dan resistor 1%.
Gambar 1.3 Bentuk Resistor 1% Gambar 1,2 Bentuk Resistor Umum
2
B. Variabel Resisitor / Potensiometer Resistor tidak hanya memiliki bentuk-bentuk seperti gambar 1.1 dan 1.2, namun masih terdapat bentuk lain yang mana biasa disebut dengan variabel resistor / potensiometer, variabel resistor sejatinya fungsinya sama dengan fungsi resistor secara umum namun hanya berbeda pada bagian kapasitas, untuk resistor yang biasa atau yang 1 % hanya dapat memberikan resistansi hanya sebesar apa yang terlihat pada gelang resistor, misalkan resistor 2k2 maka hanya dapat memberikan batasan resistansi sebesar 2200 ohm dan tidak bisa lebih maupun kurang dari itu, namun jika variabel resisor dapat dirubah kapasitasnya yaitu dengan cara memutar pada bagian pengaturan kapasitas, jadi jika terdapat variabel resistor sebesar 10k maka sejatinya dia bisa dirubah dari resistasi minimum yaitu 0 ohm sampai resistansi maksimal yaitu 10000 ohm, jika disetting pada tengah maka dia akan bernilai 5k atau 5000 ohm, itulah perbedaannya.
Berikut adalah lambang dari variabel
resistor pada gambar 1.4 dan gambar bentuk fisik variabel resistor pada gambar 1.5.
Gambar 1.4 Simbol Variabel Resistor
Gambar 1.5 Bentuk Variabel Resistor / Potensiometer
C. Thermistor dan Fotoresistor / LDR Untuk jenis-jenis dari resistor yang lain yaitu Thermistor dan Fotoresistor. untuk Thermistor merupakan jenis resistor yang sensistif terhadap panas, biasanya setiap kenaikan temperatur akan menunjukan nilai resistansinya. Untuk Fotoresistor atau biasa disebut LDR ini dibuat dari material yang sensitif terhadap cahaya, seperti Cadmium Sulfida. Peningkatan intensitas cahaya yang diterima dapat menurunkan resistansi resistor. Berikut adalah lambang dan bentuk dari kedua jenis resistor tersebut.
Gambar 1.5 Simbol Thermistor
Gambar 1.6 Bentuk Thermistor-NTC
3
Gambar 1.7 Simbot Fotoresistor / LDR
Gambar 1.8 Bentuk Fotoresistor / LDR
1.1.1.4 Cara menghitung Nilai Resistansi Untuk menghitung nilai resistansi dari suatu resistor diperlukan sustu teknik khusus untuk menghitungnya, yaitu dengan cara melihat warna gelang dan posisi warna gelang tersebut berada, berikut adalah gambaran untuk menghitungnya.
1
2
3
4
Cara menghitungnya yaitu misalkan warna 1 adalah orange, warna 2 adalah orange, warna 3 adalah coklat, dan warna ke 4 adalah warna emas maka dapat dihitung dengan cara merumuskan seperti berikut : Orange = 3 Orange = 3 Coklat = 1 Emas = 5%
Orange orange coklat Emas 3 - 3 x 101 5% = 330 ohm toleransi 5%
330 ohm
Jadi untuk warna gelang pertama dan gelang kedua yaitu untuk memberikan nilai awal yang mana keduanya tidak dikali atau ditambahkan namun digabung, sehingga nampak pada contoh 33 yang terdiri dari dua gelang orange yang berjumlah dua buah, namun yang dikalikan yaitu pada posisi ketiga yang mana posisi ini yang bermain adalah nilai pangkatnya, pada contoh nilai pangkat warna coklat, yang mengartikan nilai pangkat adalah 1, untuk posisi ke 4 adalah untuk nilai toleransi, yang mana hanya ada dua jenis nilai toleransi yaitu warna emas dan warna perak untuk jenis resistor yang bukan 1%, untuk warna emas memberikan nilai toleransi 5% dan warna perak memberikan nilai toleransi 10%. Untuk pedoman didalam mengetahui nilai dari tiap-tiap warna dapat diperhatikan pada tabel berikut ini.
4
Tabel 1.1 Tabel Nilai Warna Gelang Resistor Warna
Posisi 1
Posisi 2
Posisi 3
Hitam Coklat Merah Jingga Kuning
0 1 2 3 4
0 1 2 3 4
0 10 100 1000 10000
Hijau
5
5
100000
Biru
6
6
1000000
Ungu
7
7
10000000
Abu-Abu
8
8
100000000
Putih
9
9
-
Toleransi 1% 2%
Perak
0,01
10%
Emas
0,1
5%
1.1.2 Kapasitor Kapasitor memiliki dua buah simbol dan dua buah karakteristik yaitu karakteristik untuk non-polar dan polar, perbedaan dari keduanya hanyalah pada bagian kaki kapasitor, untuk yang non-polar tidak terdapat kutub negative dan positive namun pada kutub kapasitor yang non-polar terdapat kutub negative dan positive-nya, sehingga perlu diperhatikan pada saat pemasangan kapasitor polar, jika terbalik maka kapasitor polar tersebut tidak akan berfungsi optimal. Berikut adalah simbol untuk kapasotor polar dan nonpolar.
Gambar 1.9 Simbol kapasitor Non-Polar
Gambar 1.10 Simbol Kapasitor Polar
Gambar 1.11 Simbol Variabel Kapasitor 5
1.1.2.1 Pengertian Kapasitor adalah dua konduktor yang tidak saling bersentuhan dan dipisahkan oleh suatu insulator (dielektrik). Bahan dari dielektrik dapat berupa kertas, kaca, plastik film, keramik, mika, dan yang lainnya. Ketika kapasitor dihubungkan pada suatu sumber tegangan seperti batterai, maka arus akan mengalir pada suatu plat kapasitor sehingga akan terjadi perpindahan muatan dari plat kapasitor yang lebih positif ke plat lainnya, ketika muatan (Q) telah ditransfer, antar plat kapasitor akan terbentuk beda tegangan (V), jika kapasitor tersebut adalah kapasitor fixed, artinya memiliki kapasitansi C tetap, akan diperoleh hubungan linear kapasitansi sebagai perbandingan dari Q / V. hubungan C, Q dan V dapat ditulis. Q = C x V
Q = Muatan (coulomb) V = Tegangan (Volt) C = Kapasitansi (Farad)
Kemampuan kapasitor untuk menyimpan energi dikenal sebagai kapasitansi. Kapasitor 1 Farad yang terhubung pada sumber tegangan 1 V dapat menyimpan 6,28 X 1016 elektron, namun biasanya kapasitor kapasitor memiliki kapasitansi yang jauh lebih rendah dari itu, biasanya dalam orde piko farad (10-12) hingga mikro farad (10-6). 1 Farad = 1 F 1 MikroFarad = 1 x 10 -6 = 0,000001 F 1 PikoFarad = 1 x 10 -12 = 0,000000000001 F
1.1.2.2 Fungsi Fungsi dari kapasitor baik itu polar maupun non polar adalah seperti yang disebutkan dibawah ini. a. Kapasitor sebagai penggeser fasa. b. Kapasitor sebagai pembangkit frekuensi pada rangkaian oscilator. c. Kapasitor digunakan juga untuk mencegah percikan bunga api pada sebuah saklar. d. Kapasitor sebagai kopling, dilihat dari sifat dasar kapasitor yaitu dapat dilalui arus ac dan tidak dapat dilalui arus dc dapat dimanfaatkan untuk memisahkan 2 buah rangkaian yang saling tidak berhubungan secara dc tetapi masih berhubungan secara ac(signal), artinya sebuah kapasitor berfungsi sebagai kopling atau penghubng antara 2 rangkaian yang berbeda. 6
e. Kapasitor berfungsi sebagai filter pada sebuah rangkaian power supply, yang saya maksud disini adalah kapasitor sebagai ripple filter, disini sifat dasar kapasitor yaitu dapat menyimpan muatan listrik yang berfungsi untuk memotong tegangan ripple.
1.1.2.3 Jenis-jenis Kapasitor Kapasitor sejatinya memiliki dua buah jenis, yaitu kapasitor fixed dan kapasitor variabel, untuk kapasitor fixed yaitu kapasitor yang tetap atau konstant dan tidak dapat berubah seperti halnya 100pF yang tertera pada kapasitor, untuk yang kapasitor variabel yaitu kapasitor yang dapat dirubah kapasitansinya tergantung setting-annya. a. Kapasitor Fixed kapasitor fixed terbagi menjadi tiga jenis yang biasa umum digunakan, yaitu kapasitor milar, kapasitor keramik dan elco. Untuk milar dan keramik termasuk kapasitor non-polar, dan kapasitor bentuk elco termasuk ke dalam kapasitor non-polar. Berikut adalah gambar dari ketiganya.
g Gambar 1.12 Kapasitor Milar
Gambar 1.13 Kapasitor Keramik
Gambar 1.14 Kapasitor elco
b. Kapasitor Variabel Seperti yang telah dijelaskan sebelumnya, kapasitor variabel memiliki kapasitansi yang dapat dirubah sesuai dengan keadaan yang diinginkan karena terdapat range yang ada pada produk tersebut, untuk menggunakannya hanya memutar pada bagian atas hingga batas kondisi yang kita inginkan. Untuk gambarnya seperti berikut ini.
Gambar 1.15 Kapasitor Variabel
7
1.1.3 Transistor Transistor merupakan suatu komponen dengan tiga kaki. Transistor muncul sebagai vaccum tube. Dengan komponen ini arus atau tegangan kecil yang diberikan pada satu kaki dapat mengatur arus yang lebih besar melalui dua kakinya. Transistor memiliki berbagai macam simbol, berikut adalah macam-macam simbol transistor.
Gambar 1.16 Simbol Kapasitor BJT
Gambar 1.17 Simbol Kapasitor JFET
1.1.3.1 Pengertian Transistor adalah alat semikonduktor yang dipakai sebagai penguat, sebagai sirkuit pemutus dan penyambung (switching), stabilisasi tegangan, modulasi sinyal atau sebagai fungsi lainnya. Transistor dapat berfungsi semacam kran listrik, dimana berdasarkan arus inputnya (BJT) atau tegangan inputnya (FET), memungkinkan pengaliran listrik yang sangat akurat dari sirkuit sumber listriknya. Pada umumnya, transistor memiliki 3 terminal, yaitu Basis (B), Emitor (E) dan Kolektor (C). Tegangan yang di satu terminalnya misalnya Emitor dapat dipakai untuk mengatur arus dan tegangan yang lebih besar daripada arus input Basis, yaitu pada keluaran tegangan dan arus output Kolektor. Transistor merupakan komponen yang sangat penting dalam dunia elektronik modern. Dalam rangkaian analog, transistor digunakan dalam amplifier (penguat). Rangkaian analog melingkupi pengeras suara, sumber listrik stabil (stabilisator) dan penguat sinyal radio. Dalam rangkaian-rangkaian digital, transistor digunakan sebagai saklar berkecepatan tinggi. Beberapa transistor juga dapat dirangkai sedemikian rupa sehingga berfungsi sebagai logic gate, memori dan fungsi rangkaian-rangkaian lainnya. Transistor memiliki berbagai macam bentuk, sehingga akan bingung jika tidak mengetahuinya, dan kakinya pun berbagai macam ada yang berbentuk kaki biasa (3 kaki) dan ada pula yang hanya ada 2 kaki, kaki yang 1 nya pada bagian body-nya. Berikut ini adalah gambar bentuk fisik dari transistor. 8
Gambar 1.18 Bentuk Fisik Transistor 1.1.3.2 Fungsi Fungsi dari transistor sangat banyak sekali tergantung pada seri transistornya, setiap seri transistor memiliki fungsi yang berbeda-beda, sehingga harus benar-benar mengetahui cara kerja dari transistor yang akan digunakan terlebih dahulu, sebelum menggunakannya. Berikut adalah beberapa fungsi dari transistor. 1. Transistor Sebagai Saklar Pada
gambar
terlihat
sebuah rangkaian saklar elektronik dengan menggunakan transistor NPN dan transistor PNP. Tampak TR3
(NPN) dan TR4 (PNP)
dipakai
menghidupkan
dan
mematikan LED. TR3 dipakai untuk memutus dan menyambung
hubungan
antara
katoda LED dengan ground. Jadi jika transistor OFF maka led akan mati dan jika transistor ON maka led akan hidup. Karena kaki emitor dihubungkan ke ground maka untuk menghidupkan transistor, posisi saklar SW1 harus ON jadi basis transistor TR3 mendapat bias dari tegangan positif dan akibatnya transistor menjadi jenuh (ON) lalu kaki kolektor dan kaki emitor tersambung. Untuk mematikan LED maka posisi SW1 harus OFF. TR4 dipakai untuk memutus dan menyambung hubungan antara anoda LED dengan tegangan positif. Jadi jika transistor OFF maka led akan mati dan jika transistor ON maka led akan hidup. Karena kaki emitor dihubungkan ke tegangan positif, maka untuk menghidupkan transistor, posisi saklar SW2 harus ON jadi basis transistor TR4 mendapat bias dari tegangan 9
negatif dan akibatnya transistor menjadi jenuh (ON) lalu kaki emitor dan kaki kolektor tersambung. Untuk mematikan LED maka posisi SW1 harus OFF.
2. Transistor Sebagai Penguat Arus Fungsi lain dari transistor adalah sebagai penguat arus. Karena fungsi ini maka transistor bisa dipakai untuk rangkaian power supply dengan tegangan yang di set. Untuk keperluan ini transistor harus dibias tegangan yang konstan pada basisnya, supaya pada emitor keluar tegangan yang tetap. Biasanya untuk mengatur tegangan basis supaya tetap digunakan sebuah dioda zener. Pada
gambar
tampak dua
buah
regulator dengan polaritas tegangan output yang berbeda. Transistor TR5 (NPN) dipakai untuk regulator tegangan positif dan transistor TR6 (PNP) digunakan untuk regulator tegangan negatif. Tegangan basis pada masing masing transistor dijaga agar nilainya tetap oleh dioda zener D3 dan D4. Dengan demikian tegangan yang keluar pada emitor mempunyai arus sebesar perkalian antara arus basis dan HFE transistor.
3. Transistor sebagai penguat Sinyal AC Selain sebagai penguat arus, transistor juga bisa digunakan sebagai penguat tegangan pada sinyal AC. Untuk pemakaian transistor sebagai penguat
sinyal digunakan
beberapa
macam teknik pembiasan basis transistor. Dalam bekerja sebagai penguat sinyal AC, transistor dikelompokkan menjadi beberapa jenis penguat, yaitu: penguat kelas A, penguat kelas B, penguat kelas AB, dan kelas C. Pada gambar tampak bahwa R15 dan R16 bekerjasama dalam mengatur tegangan bias pada basis transistor. Konfigurasi
10
ini termasuk jenis penguat kelas A. Sinyal input masuk ke penguat melalui kapasitor C8 ke basis transistor. Dan sinyal output diambil pada kaki kolektor dengan melewati kapasitor C7. 1.1.1.3.3 Jenis-Jenis transistor Secara umum, transistor dapat dibeda-bedakan berdasarkan banyak kategori:
Materi semikonduktor: Germanium, Silikon, Gallium Arsenide
Kemasan fisik: Through Hole Metal, Through Hole Plastic, Surface Mount, IC, dan lain-lain
Tipe: UJT, BJT, JFET, IGFET (MOSFET), IGBT, HBT, MISFET, VMOSFET, MESFET, HEMT, SCR serta pengembangan dari transistor yaitu IC (Integrated Circuit) dan lain-lain.
Polaritas: NPN atau N-channel, PNP atau P-channel
Maximum kapasitas daya: Low Power, Medium Power, High Power
Maximum frekuensi kerja: Low, Medium, atau High Frequency, RF transistor, Microwave, dan lain-lain
Aplikasi: Amplifier, Saklar, General Purpose, Audio, Tegangan Tinggi, dan lain-lain
A. Transistor Bertipe BJT BJT (Bipolar Junction Transistor) adalah salah satu dari dua jenis transistor. Cara kerja BJT dapat dibayangkan sebagai dua diode yang terminal positif atau negatifnya berdempet, sehingga ada tiga terminal. Ketiga terminal tersebut adalah emiter (E), kolektor (C), dan basis (B). Perubahan arus listrik dalam jumlah kecil pada terminal basis dapat menghasilkan perubahan arus listrik dalam jumlah besar pada terminal kolektor. Prinsip inilah yang mendasari penggunaan transistor sebagai penguat elektronik. Rasio antara arus pada koletor dengan arus pada basis biasanya dilambangkan dengan β atau
. β biasanya berkisar
sekitar 100 untuk transistor-transisor BJT. B. Transistor Bertipe FET FET dibagi menjadi dua keluarga: Junction FET (JFET) dan Insulated Gate FET (IGFET) atau juga dikenal sebagai Metal Oxide Silicon (atau Semiconductor) FET (MOSFET). Berbeda dengan IGFET, terminal gate dalam JFET membentuk sebuah diode dengan kanal (materi semikonduktor antara Source dan Drain). Secara fungsinya, ini membuat N-channel JFET menjadi sebuah versi solid-state dari tabung vakum, yang juga membentuk sebuah diode antara grid dan katode. Dan juga, keduanya (JFET dan tabung 11
vakum) bekerja di "depletion mode", keduanya memiliki impedansi input tinggi, dan keduanya menghantarkan arus listrik dibawah kontrol tegangan input. FET lebih jauh lagi dibagi menjadi tipe enhancement mode dan depletion mode. Mode menandakan polaritas dari tegangan gate dibandingkan dengan source saat FET menghantarkan listrik. Jika kita ambil N-channel FET sebagai contoh: dalam depletion mode, gate adalah negatif dibandingkan dengan source, sedangkan dalam enhancement mode, gate adalah positif. Untuk kedua mode, jika tegangan gate dibuat lebih positif, aliran arus di antara source dan drain akan meningkat. Untuk P-channel FET, polaritas-polaritas semua dibalik. Sebagian besar IGFET adalah tipe enhancement mode, dan hampir semua JFET adalah tipe depletion mode.
1.2 Perkenalan Dengan Mikrokontroler 1.2.1 Pengertian Sebelumnya pasti ada sebuah pertanyaan mengenai apa itu mikrokontroler? Apa itu ATMega?, pada bagian ini akan dijelaskan mengenai mikrokontroler yang mana ini adalah komponen yang sangat penting didalam pembuatan suatu alat, sehingga harus benarbenar dipelajari dan dikuasai terlebih dahulu mengenai bab mikrokontroler berikut. Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler yaitu membaca dan menulis data, pengertian membaca yaitu mikrokontroler membaca program yang dimasukkan kedalamnya, jadi untuk menjalankan mikrokontroler haruslah diisi terlebih dahulu program kedalamnya, setelah itu adalah pengertian menulis, menulis diartikan mikrokontroler melakukan apa yang ada didalam program yang dimasukkan, jadi program yang dibuat akan dilakukan oleh mikrokontroler seperti apa yang pembuat program inginkan.
1.2.2 Jenis-Jenis Mikrokontroler Teknologi mikroproesor telah mengalami perkembangan. Hal ini sama terjadi dengan teknologi mikrokontroler. Jika pada mikroprosesor terdahulu menggunakan teknologi CISC seperti prosesor Intel 386 / 486, maka pada mikrokontroler produksi ATMEL adalah MCS ( AT89C51, AT89S51 dan AT89S52 ). Setelah mengalami perkembangan, teknologi mikroprosesor dan mikrokonroler mengalami peningkatan yang terjadi pada kisaran tahun 1996 s/d 1998 ATMEL mengeluarkan teknologi mikrokontroler terbaru berjenis AVR (Alf and Vegard’s Risc processor) yang menggunakan teknologi RISC (Reduce Instruction Set Computer) dengan keunggulan yang lebih banyak dibanding pendahulunya yaitu MCS. 12
Mikrokontroler jenis MCS memiliki kecepatan frakuensi kerja 1/12 kali frekuensi osilator yang digunakan, sedangkan pada kecepatan frekuensi kerja AVR sama dengan kecepatan frekuensi kerja osilator yang digunakan. Jadi apabila menggunakan frekuensi osilator yang sama, maka AVR mempunyai kecepatan kerja 12 kali lebih cepat dibanding MCS. Berikut adalah bagan pembagian jenis dari mikrokontroler buatan ATMEL. ATMEL
MCS
AT89CXX
AVR
AT89SXX
ATtiny
ATMega
AT86RFXX
AT90SXX
Gambar 1.19 Bagan Pembagian JenisMikrokontroler ATMEL
1.2.3 Tentang Mikrokontroler ATMega Seperti yang telah dijelaskan diatas yaitu mengenai jenis-jenis mikrokontroler, ATMega berada pada posisi pembagian dari jenis AVR, bukan pada MCS, yang mana AVR dan MCS sebenarnya fungsinya sama dan bentuknya pun sama, namun perbedaan hanya pada cara penggunaan dan fitur-fitur yang ada pada mikrokonroler tersebut, seperti halnya MCS tidak memiliki fitur untuk ADC (Analog to Digital Converter) maka harus menggunakan IC tambahan untuk mendukung fitur ADC, namun jika menggunakan AVR seperti halnya ATMega yang mana telah memiliki fitur ADC, sehingga tidak perlu menggunakan IC tambahan untuk melakukannya. Mikrokontroler ATMega terbagi lagi menjadi beberapa jenis, yaitu ATMega8, ATMega16, ATMega32, ATMega128, ATMega8535 dll. Untuk pada pembuatan alat dan robot pada buku ini digunakan mikrokontroler ATMega32, ATMega16, ATMega8 dan ATMega8535, sehingga pembatasan penjelasan hanyalah pada keempat tipe ATMega tersebut. Berikut adalah gambar dari ATMega16 dan ATMega8
13
Gambar 1.21 Bentuk ATMega8
Gambar 1.20 Bentuk ATMega16
A. ATMega 8 ATMega8 memiliki bentuk yang lebih kecil dari ATMega16 atau ATMega8535 yang mana fungsinya sama, yaitu untuk mengeksekusi program yang telah didownload kedalamnya, sehingga dapat seperti apa yang diinginkan oleh pembuat program tersebut. Berikut adalah konfigurasi pin dari ATMega8.
Gambar 1.22 Konfigurasi Kaki ATMega8
A.1 Fitur-Fitu ATMega8 Advanced RISC Architecture :
130 Powerful Instructions – Most Single-clock Execution 32 x 8 General Purpose Working Registers Fully Static Operation 14
Up to 16 MIPS Throughput at 16MHz On-chip 2-cycle Multiplier High-Endurance Non-Volatile Memory segments o 8K Bytes In-System Self-programmable Flash Program Memory o 512 Bytes EEPROM o 1K Bytes of Internal SRAM o Write/Erase Cycles: 10,000 Flash / 100,000 EEPROM o Data Retention: 20 years at 85`C / 100 years at 25`C o Opitonal Boot Code Section with Independent Lock Bits o In-System Programming by On-chip Boot Program o True Read-While-Write Operation o Programming Lock for Software Security o Peripheral features Two 8-bit Timers/Counters with Separate Prescaler One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode Real Time Counter with Separate Oscillator Three PWM Channels 6-channel ADC with 10-bit Accuracy Byte-oriented Two-wire Serial Interface Programmable Serial USART Master/Slave SPI Serial Interface Programmable Watchdog Timer with Separate On-Chip Oscillator On-Chip Analog Comparator Special Microcontroller features Power-On Reset and Programmable Brown-out Detection Internal Calibrated RC Oscillator External and Internal Interrupt Sources Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and Standby I/O and Packages 23 Programmable I/O Lines 28-lead PDIP, 32-lead TQFP, and 32-pad QFN/MLF Operating Voltages 2.7 – 5.5V (ATmega8L) 4.5 – 5.5V (ATmega8) Speed Grades 0 – 8MHz (ATmega8L) 0 – 16MHz (ATmega8) Power Consumption at 4MHz, 3V, 25`C Active: 3.6 mA Idle Mode: 1.0 mA Power-Down Mode: 0.5 uA
15
B. ATMega16 / ATMega32 / ATMega8535 ATMega16 dan ATMega8535 sejatinya sama yaitu dari sisi bentuk dan konfigurasi pin kakinya. Perbedaan keduanya yaitu pada kapasitas memori flash, untuk ATMega8535 sebesar 8 KB, dan untuk ATMega16 sebesar 16 KB. Berikut adalah konfigurasi dari kaki ATMega8535 / ATMega16.
Gambar 1.23 Konfigurasi kaki ATMega8535 / ATMega16
B.1 Fitur-Fitur ATMega8535 / ATMega16 - 32 Saluran I/O yang terdiri dari 4 port (Port A, Port B, Port C, dan Port D) yang terdiri masing-masing 8 bit - ADC 10 bit (5 pin di PortA.0 s/d Port A.7). - 2 buah Timer/Counter (8bit) - 1 Buah Timer/Counter (16bit) - 4 channel PWM - 6 Sleep Modes : Idle, ADC Noise Reduction, Power-save, Power-down, Stanby and Extended Stanby. - Komparator analog - Watchdog timer dengan osilator internal 1MHZ - Memori 8 KB Flash, untuk ATMega16 memori 16 KB Flash - Memori 512 byte SRAM 16
- Memori 512 byte EEPROM - Kecepatan maksimal 16 MHZ - Tegangan Operasi 4,5 VDC s/d 5,5 VDC -32 jalur I/O yang dapat dirogram - Interupsi eksternal dan Internal - Komunikasi serial menggunakan port USART dengan kecepatan maksimal 2,5 Mbps
C. Fungsi Pin / Kaki Mikrokontroler Berikut adalah penjelasan secara singkat fungsi dari masing-masing pin / kaki pada Mikrokontroler AVR ATMega8 / ATMega16 1. Vcc Masukan tegangan catu daya 2. GND Ground/pentanahan 3. Port A (PA7..PA0) /* untuk ATMega16 dan ATMega8535 */ Port A berfungsi sebagai masukan analog ke ADC internal pada mikrokontroler ATmega16, selain itu juga berfungsi sebagai port I/O dwi-arah 8-bit, jika ADC-nya tidak digunakan. Masing-masing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. 4. Port B (PB7..PB0) Port B berfungsi sebagai sebagai port I/O dwi-arah 8-bit. Masing-masing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. 5. Port C (PC7..PC0) Port C berfungsi sebagai sebagai port I/O dwi-arah 8-bit. Masing-masing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. 6. Port D (PD7..PD0) Port D berfungsi sebagai sebagai port I/O dwi-arah 8bit. Masing-masing pin menyediakan resistor pull-up internal yang bisadiaktifkan untuk masing-masing bit. 7. RESET Masukan Reset. Level rendah pada pin ini selama lebih dari waktu minimum yang ditentukan akan menyebabkan reset, walaupun clock tidak dijalankan. 8. XTAL1 Masukan ke penguat osilator terbalik (inverting) dan masukan kerangkaian clock internal. 17
9. XTAL2 Luaran dari penguat osilator terbalik 10. AVCC Merupakan masukan tegangan catu daya untuk Port A sebagai ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak digunakan. Jika ADC digunakan sebaiknya dihubungkan ke Vcc melalui tapis lolos rendah (low-pass filter). 11. AREF Merupakan tegangan referensi untuk ADC Block Diagram ATmega16 / ATMega8.
1.3 Pengenalan Software Bascom AVR Pemrograman menggunakan bahasa BASCOM-AVR adalah salah satu dari sekian banyak bahasa basic untuk pemrograman mikrokontroler, misalnya bahasa Assembly, Bahasa C, dan lain-lain, disini dalam membuat robot dan membuat alat elektronika akan menggunakan bahasa BASIC yaitu menggunakan software BASCOM-AVR sehingga bagi yang masih pemula dalam pemrograman dapat memahami dengan mudah aturan main dari bahasa ini, karena bahasa BASIC merupakan bahasa tingkat tinggi yang sejajar dengan bahasa C, berbeda dengan bahasa Assembly yang merupakan bahasa tingkat rendah dan sukar untuk dipahami secara cepat dalam waktu singkat. Berikut adalah gambar serta penjelasan dari layar kerja software BASCOM-AVR.
3
1
4
Gambar 2.4 Tampilan Layar Kerja Bascom-AVR
2 18
Penjelasan: - No.1 Adalah Layar jerja dari BASCOM-AVR yang biasanya diisikan kode program - No.2 Adalah tampilan mikrokontroler yang digunakan melalui definisi program - No.3 Adalah Formating Tools yang biasa digunakan untuk mengedit kode program, open project, new file, copy-paste dan melakukan compile program setelah program tersebut jadi - No.4 Adalah Error Notification yang digunakan untuk memberitahukan bahwa program yang dibuat terdapat kesalahan pada suatu baris dan memberikan penjelasan tentang masalah errornya.
Untuk cara penggunaan software BASCOM-AVR sangatlah mudah, hanya memasukkan kode ke bagian layar kerja dengan cara mengetik kode-kode satu per satu, setelah program tersebut telah selesai diketik maka dilakukan pengecheck-an terebih dahulu sekalian dilakukan compiling, fungsi dari compiling yaitu untuk membuat program berekstensi (.hex ) yang mana ekstensi ini adalah yang akan siap dimasukkan ke mikrokontroler melelui downloader. Berikut adalah cara untuk melakukan compile setelah program telah selesai dibuat
1 2
Gambar 2.5 Tampilan Untuk melakukan Compile dan Check program
Penjelasan: - No.1 adalah Sub perintah yang digunakan untuk melakukan compile program sehingga sebelum dicompile terlebih dahulu disimpan file.bas disuatu folder, kemudian dicompile maka akan terdapat file.hex didalam folder tersebut - No.2 adalah sub perintah yang digunakan untuk melakukan pengecekan program, jika terdapat notify pada bagian layar notification, berarti program yang dibuat masih terdapat kesalahan, jika tidak ada maka program siap untuk dilakukan compiling. 19
1.4 Karakteristik Bahasa BASCOM-AVR Bahasa basic memiliki beberapa karakteristik yang harus diperhatikan sebelum membuat sebuah program, yaitu mengenai tipe data, variabel, konstanta, alias, pengolahan bilangan logika yang semuanya tercakup dalam operasional. Untuk bahasa basic sendiri memiliki berbagai macam perintah yang mana dapat dianalogikan secara mudah dan tidak butuh watu lama untuk mempelajarinya, sama seperti halnya bahasa C, bahasa basic juga terdapat pendeklarasian data, prosesing data dan input/output data. Berikut adalah penjelasan secara lengkap tentang bahasa yang digunakan BASCOM-AVR.
1.4.1 Operasional 1.4.1.1 Tipe Data Tipe data adalah jangkauan dari suatu variabel atau konstanta. Tipe data tersebut yaitu seperti pada tabel berikut Tabel 1.2 Tipe Data Pada Bahasa BASCOM-AVR Tipe data
Ukuran [byte]
Range
Bit Byte Integer Word Long Single String
1/8 1 2 2 4 4
0-225 -32.768 sampai 32.768 0-65535 -2147483648 sampai 2147483648 -
- 254 byte
Contoh penggunaan program : Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim
Gas_ref As Word Gas As Single Lpg As String * 5 Vol As String * 5 Tegangan As Single A As Single Vo As Single X As Single Y As Single Rs As Single D As Single E As Single Ppm As Single Ro As Single
20
1.4.1.2 Variabel Variabel ditulis pada text program untuk menyimpan suatu pemrosesan data, Variabel dideklarasikan jika akan digunakan dengan mengacu pada aturan variabel berikut. 1. Dimulai dengan huruf 2. Nama variabel tidak boleh lebih dari satu 3. Tidak menggunakan spasi 4. Maksimum 32 karakter 5. Tidak menggunakan karakter khusus yang digunakan oleh BASCOM-AVR
Variabel dideklarasikan dengan cara berikut : Dim
As <TipeData>
Contoh penggunaannya : Dim Dim Dim Dim
Gas_ref As Word Gas As Single Lpg As String * 5 Vol As String * 5
1.4.1.3 Konstanta Konstanta adalah pendeklarasian suatu nama dan memiliki nilai tetap, biasanya suatu konstanta telah dimasukkan suatu nilai yang digunakan untuk proses eksekusi data, biasanya untuk sebagai acuan dalam prosesing data, seperti halnya pembagian, perkalian, pengurangan dan penambahan data berikut adalah cara penulisan konstanta: Dim AS Const
Contoh penggunaannya : Dim Dim Dim Dim
Gas_ref As Const 100 Gas As Const 5 phi As const 3.14 Vol As Const 15
1.4.1.4 Alias Alias digunakan untuk mempermudah penulisan program. Sebenarnya tanpa menggunakan Alias juga bisa, namun supaya dapat dimengerti dan mudah untuk disebutkan
21
saat eksekusi perintah, maka digunakan Alias untuk memudahkan pengingatan perintah. Berikut adalah cara untuk mendefinisikan Alias. Alias
Contoh penggunaannya : Lampu_Merah Alias Portb.0 Lampu_Kuning Alias Portb.1 Lampu_Hijau Alias Portb.2
1.4.1.5 Aritmatik dan Rasional 1. Data Aritmatik Data Aritmatik digunakan untuk melakukan eksekusi data atau pengolahan data sebelum data tersebut ditampilkan, biasanya aritmatik ini difungsikan sebagai pengatur dan pengolah data pada suatu main program yang diposisikan untuk input dan output data. Berikut adalah data aritmatik. Tabel 1.3 Data Aritmatik Operasi + / * % ^
Keterangan Penjumlahan Pengurangan Pembagian Perkalian Hasil sisa pembagian Perpangkatan
Contoh Penggunaannya: X = 5.15 - 7 Y = X / 5 Z = Y * X A = X / Z B = A + 10 C = B ^ A
2. Data Rasional Data rasional merupakan data yang digunakan untuk proses logika, jadi fungsi utamanya adalah untuk memberikan suatu keadaan atau kondisi pada suatu program dimana keadaan tersebut yang digunakan sebagai patokan untuk mengeksekusi data. Berikut adalah tabel penjelasan data rasional. 22
Tabel 1.4 Simbol Data Rasional Operasi
Contoh
Keterangan
=
X=Y
Sama dengan
<>
X< >Y
Tidak sama dengan
>
X>Y
Lebih besar dari
<
X
Lebih kecil dari
>=
X>=Y
Lebih besar atau sama dengan
<=
X<=Y
Lebih kecil atau sama dengan
Contoh penggunaannya : If X >= 4.45 Then Portd = &B11110011 Portb.0 = 0 End If
1.4.1.6 Pengolahan bilangan logika Pengolahan bilangan logika pada BASCOM-AVR sama halnya dengan pengolahan bilangan logika pada bahasa C, yang mana hanya menggunakan analogi dan logika untuk didapatkan suatu kondisi tertentu, kondisi tersebut akan dijadikan patokan untuk mengeksekusi suatu data. Berkut adalah macam-macam pengolahan bilangan logika. Tabel 1.5 Pengolahan bilangan logika Operasi
Contoh
Keterangan
AND
&B10 AND &B01 = &B10
Operasi AND
OR
&B1000 OR &B0111 = &B1111
Operasi OR
NOT
NOT &B111 = &B000
Operasi NOT
Cara penggunaanya : If X > 4.45 AND X < 5 Then Portd = &B11110011 Portb.0 = 0 End If
23
1.4.2 Macam-Macam Perintah Pada program BASCOM-AVR terdapat perintah-perintah yang digunakan untuk melakukan eksekusi data, seperti halnya bahasa tingkat tinggi lainnya yang memerlukan kode perintah agar program dapat berjalan secara baik dan benar, dan sesuai harapat pembuatnya. Berikut beberapa macam perintah yang biasa digunakan. A. IF - THEN Perintah IF-Then digunakan untuk melakukan eksekusi data sesuai dengan keadaan, jadi jika suatu keadaan bernilai benar atau TRUE, maka perintah yang dibawah / disampingnya THEN akan dieksekusi, namun jika tidak, perintah tidak akan dieksekusi. Berikut adalah keterangannya. IFThen End IF IF Then End If
Contoh penggunaannya : If X >= 4.45 Then Portd = &B11110011 Portb.0 = 0 End If
A. IF – THEN – ELSE Perintah IF-THEN-ELSE sejatinya sama seperti perti perinta IF-THEN yaitu untuk memberikan suatu kondisi tertentu sebagai patokan untuk mengeksekusi data, jika bernikai benar maka perintah THEN dieksekusi namun jika salah maka yang akan dijalankan adalah perintah pada bagian ELSE. Berikut keterangannya. IFThen Else End IF
24
Contoh penggunaannya: If X >= 4.45 Then Portd = &B11110011 Else Portb.0 = 0 End If
C. SELECT-CASE Perintah SELECT-CASE digunakan untuk pengujian keadaan yang banyak, atau lebih dari satu keadaan, sehingga pada penulisan bisa menjadi lebih sederhana dan mudah dipahami. Berikut penjelasannya. Select case Case1 : Case2 : Case3 : End select Contoh penggunaanya : Select case Lampu Case1 : Lampu_menyala_1 Case2 : Lampu_menyala_2 Case3 : Lampu_menyala_3 End select
D. DO-LOOP Perintah DO-LOOP merupakan perintah untuk perulangan yang digunakan untuk melakukan perulangan program selama kondisi yang diinginkan masih bernilai bernar, dan akan berhenti jika kondisi salah. Berikut penjelasannya. Do
25
Contoh penggunaanya: do If X >= 4.45 Then Portd = &B11110011 Else Portb.0 = 0 End If loop
E. FOR-NEXT Perintah FOR-NEXT merupakan perintah untuk perulangan yang digunakan untuk melakukan perulangan program sesuai dengan jumlah dan tingkat perulangannya, jadi jika diinginkan perulangan sebanyak 10 kali, maka akan dilakukan perulangan sebanyak 10kali dan akan berhenti ketika telah mencapai perulangan yang ke 10 selesai. Berikut penjelasannya. For To <selisih_pertambahan> Next
Contoh penggunaannya: For X = 0 To 9 1 Led_menyala_1 Next
F. WHILE-WEND Perintah WHILE-WEND merupakan perintah untuk perulangan yang akan melakukan perulangan apabila keadaan yang diminta telah terpenuhi. Berikut penjelasannya. While Wend While Suhu > 30 Contoh penggunaannya:
PORTB.0 = &B11110000 Wend
26
G. GOSUB Perintah GOSUB merupakan perintah untuk melakukan lompatan yang akan melakukan lompatan ke label yang ditunjuk dan kembali ke tempat semulasetelah melakukan perintah pembacaan program dengan menambahkan “Return”. Berikut penjelasannya. Gosub Return
Contoh penggunaannya: Do IF Suhu > 30 Then Kipas = 1 ElseIf Suhu <30 Then Kipas = 0 End If Gosub Lampu Loop Lampu : Lampu1=0 Lampu2=1 Return
H. GOTO Perintah GOTO merupakan perintah untuk lompatan yang akan melakukan lompatan ke label yang ditunjuk tanpa kembali lagi ke tempat semula setelah melakukan perintah pembacaan program sehingga tidak menggunakan “return”. Berikut penjeasannya
Goto
27
Contoh Penggunaannya: Do IF Suhu > 30 Then Kipas = 1 ElseIf Suhu <30 Then Kipas = 0 End If Goto Lampu Loop Lampu : Lampu1=0 Lampu2=1
I. EXIT Perintah EXIT merupakan perintah untuk mengkhiri perulangan DO-LOOP, FOR-NEXT-WHILE-WEND. Berikut penjelasannya. EXIT.......
Contoh Penggunaanya: Do IF Suhu > 30 Then Kipas = 1 ElseIf Suhu <30 Then Kipas = 0 End If Goto Lampu Loop EXIT Do While Suhu > 30 PORTB.0 = &B11110000 Wend EXIT While
For X = 0 To 9 1 Led_menyala_1 Next EXIT FOR
28
BAB 2 Downloader 2.1 Perkenalan Dengan Downloader Apa itu Downloader?, disini akan dibahas mengenai lebih dalam tentang downloader, baik itu dari pengertian, fungsi, dan bagaimana cara membuatnya. Untuk yang pertama yang harus diperhatikan yaitu kegunaan dari downloader, apa fungsi dari downoader dan cara kerja dari downloader itu. Downloader adalah sebuah alat yang digunakan untuk memasukkan program ke dalam mikrokontroler, baik itu yang berjenis MCS ataupun AVR semuanya butuh downloader, sehingga posisi downloader sangatlah penting untuk dipahami. Downloader bisa juga diartikan sebagai jembatan penghubung antara komputer dengan mikrokontroler. Yang mana file.hex yang telah dibuat dari compile file.bas dari software BASCOM-AVR dimasukkan ke dalam mikrokontroler. Downloader yang umum digunakan untuk memasukkan data dari komputer ke mikrokontroler yaitu USB-ASP, namun ada pula yang tidak memakai USB-ASP yaitu menggunakan serial paralel port untuk melakukan download programnya. Di project buku ini semuanya menggunakan downloader USB-ASP, karena USBASP menggunakan port USB, sehingga dapat dilakukan pen-download-an dimanapun dan apapun komputernya, namun jika menggunakan paralel port hanya terdapat pada PC baik itu Intel maupun AMD, sehingga untuk download misal dari laptop sangatlah sulit harus menggunakan konverter usb to paralel terlebih dahulu. Berikut ini adalah gambar dari downloader USB-ASP dan downloader Paralel PORT.
Gambar 2.1 Downloader USB-ASP
Gambar 2.2 Downloader Paralel Port
29
Untuk sistem kerja dari downloader, terutama USB-ASP yaitu dengan cara memberikan pin MISO, MOSI, SCK, RESET, dan GROUND pada rangkaian downloader, dipasangkan ke mikrokontroler terutama ATMega yaitu pada pin yang sama MOSI, MISO, SCK, RESET, GROUND. Sehingga akan nampak seperti bagan gambar berikut ini.
Mikrokonroler ATMega32 / ATMega8 / ATMega16 / ATMega8535 Dsb.
MOSI MISO
USB-ASP
SCK RESET GND
Gambar 2.3 Pemasangan Pin Downloader ke Mikrokontroler Keterangan : NAMA
FUNGSI
MOSI
Jalur data masuk untuk protokol SPI
MISO
Jalur data keluar untuk protokol SPI
SCK
Jalur clock masuk untuk protokol SPI, frekuensi maksimum 20 MHz.
RESET GND
Pin untuk melakukan reset secara hardware, active low. Pin diberi pulsa berlogika 0 selama minimal 400 ns untuk melakukan reset. Jalur referensi ground
Untuk pemasangan downloader dengan paralel port sama dengan USB-ASP yaitu menggunakan MOSI, MISO, SCK, RESET dan GND, namun berbedanya yaitu pada konektornya yang menggunakan DB25, sehingga dari mikrokontroler langsung didownload ke komputer melalui kabel paralel. Berikut skemanya jika menggunakan downloader paralel.. MISO,MOSI,SCK,RST,GND Minimum System MCS /AVR
Downloader Paralel Port
Kabel Paralel Komputer Port Paralel
30
Untuk skema menggunakan USB-ASP sama seperti menggunakan downloader paralel port yang mana menggunakan media kabel sebagai media penghubunganya, namun perbedaannya jika pada paralel port menggunakan kabel paralel, pada USB-ASP menggunakan kabel USB male to male sehungga tinggal colok dari usb komputer ke kepala USB-ASP dan dari USB-ASP dihubungkan ke minimum system berikut skemanya. MISO,MOSI,SCK,RST,GND Minimum System MCS /AVR
Kabel USB Male to Male / kabel printer
Downloader USB-ASP
Komputer Port USB female
2.2 Pembuatan Rangkaian Downloader Membuat rangkaian downloader tidaklah sulit, karena menggunakan komponen yang banyak dijual di toko elekronika dan umum digunakan dalam project mikrokontroler, pada bagian ini akan dijelaskan mengenai cara membuat downloder menggunakan USB-ASP dan menggunakan port paralel.
2.2.1. Membuat Downloader Paralel Port Berikut adalah skematic dari rangkaian downloader dengan paralel port, yang mana menggunakan media penghubung DB25.
Gambar 2.4 Skematik Downloader Port Paralel
Ke Minimum System
31
Bahan-bahan : a. Pin Header tunggal 6 pin b. Resistor 330 ohm tiga buah c. Resistor 100 ohm satu buah d. DB25 Male / Female e. Kabel Konektor Paralel
Skematik downloader paralel port diatas dihubungkan ke port mosi, miso, sck, reset, dan ground dari minimum system melalui pin header, jadi memeerlukan kabel konektor 6 pin dari minimum system ke downloader, untuk dari DB25 ke port paralel menggunakan kabel paralel bisa male to male atau male to female tergantung kebutuhan dan kondisi port di komputer. Untuk downloader dengan paralel port harus diperhatikan mengenai program untuk melakukan downloadnya, biasanya untuk downloader dengan paralel port mengunakan program “Ponyprog” atau yang sejenisnya dan tidak bisa dengan sembarang software, karena untuk ponyprog terdapat setting-an untuk melakukan komunikasi dan pen-download-an secara langsung menggunakan paralel port.
2.2.2. Membuat Downloader USB-ASP Sebagai saran dari penulis, lebih baik menggunakan downloader USB-ASP, karena lebih mudah didalam proses aplikasinya, dan enak untuk pen-download-annya, dikarenakan setiap komputer / laptop terdapat port USB, sehingga lebih mudah didalam membuat alat dimanapun berada dan kapanpun waktunya, namun jika menggunakan downloader paralel hanya bisa pada PC yang terdapat port paralel dan itu sangat tidak enak karena harus ada spesifikasi khusus yang berupa port paralel DB25. Berikut adalah skematik dari downloader USB ASP dan gambar jadinya.
Gambar 2.5 Downloader USB-ASP
32
Ke Minimum System
Gambar 2.6 Skematik USB ASP Bahan-Bahan : a. Resistor 2k2ohm x 1 buah b. Resistor 68 ohm x 2 buah c. Resistor 10Kohm x 1 buah d. Resistor 1Kohm x 2 buah e. Led 3mm Merah x 1 buah dan hijau x 1 buah f. Crystal 12Mhz x 1 buah g. Kapasitor 22pF x 2 buah h. Kapasitor 100nF x 1 buah i. Kapasitor Polar 4,7 uF x 1 buah j. Dioda Zener 3v6 x 2 buah k. Pinheader tunggal 5 pin dan 2 pin l. ATMega8 x 1 buah m. USB konektor female on board x 1 buah 33
Untuk penjelasan dari skematik diatas mengenai port mosi, miso, sck, reset, dan ground dihubungkan ke port mosi, miso, sck, reset, gnd yang terdapat pada minimum system baik itu untuk ATMega8, ATMega32, ATMega8535 atau ATmega16. Pada JP3 terdapat port untuk slow sck, maksud dari port ini yaitu jika port ini dihubungkan antar keduanya menggunakan header jumper maka akan mengaktifkan SLOW SCK, hasilnya proses download program akan nampak lambat dan perlu menunggu waktu beberapa detik untuk selesai, namun jika kedua header ini tidak berhubungan maka SLOW SCK tidak akan aktif, artinya akan menghasilkan kecepatan yang normal didalam proses pen-download-an. SLOW SCK ini digunakan pada saat mikrokontroler yang akan dilakukan pendownload-an masih perawan atau bahasa lainnya masih baru dan belum pernah dilakukan pendownload-an sebelumnya, jadi jika masih baru mikrokontrolernya harus terlebih dahulu didownload pertama menggunakan SLOW SCK yang dipasang header jumper, untuk proses pendownload-an kedua, ketiga dan seterusnya tidak mengaktifkan SLOW SCK tidak mengapa, karena sistem sudah ready untuk dimasukan perintah. Berikut ilustrasinya.
A
header jumper
B
Pin Header
Penjelasan untuk ilustrasi A yaitu pinheader diberikan header jumper yang fungsinya untuk menghubungkan kedua header agar SLOW SCK bisa aktif untuk melakukan pendownload-an pertama kali ke mikrokontroler, untuk ilustrasi B yaitu pinheader SLOW SCK tidak diberi header jumper sehingga SLOW SCK tidak aktif, ini digunakan pada saat pendownload-an kedua, ketiga dan seterusnya ke mikrokontroler. Setelah sebuah downloader jadi, yang harus dilakukan yaitu mengisi file usbasp.hex ke dalam ATMega8 yang digunakan untuk downloader, file ini digunakan untuk melakukan inisialisasi ke komputer yang digunakan dan proses download program. Jadi perlu diperhatikan secara lebih mendalam tentang file ini. Bisa dikatakan downloader yang dibuat harus didownload terlebih dahulu menggunakan downloader lain yang sudah jadi. dan downloader yang baru, dijadikan sebagai minimum system ATMega8 terlebih dahulu untuk dilakukan pen-download-an program usbasp.hex dengan cara memberikan downloader tersebut VCC dan GND, untuk VCC sebesar 5 volt. seperti skema berikut.
34
MOSI
VCC
MISO
Komputer
USB Downloader lama
Port USB
SCK RESET
GND USB Downloader baru
GND USBasp.hex
Untuk mendapatkan file usbasp.hex yang digunakan untuk mendownload ke mikrokontroler, dapat dicari pada blog www.technocarp.co.cc pada bagian halaman elektronika yang menerangkan tentang USB-ASP, disana terdapat link untuk mendownload file usbasp.hex tersebut. 2.3 Cara Men-download Progam Sebelumnya kita sudah mempelajari tentang cara menjadikan file.hex dari software Bascom yang berekstensi file.bas, dan berikutnya yaitu belajar tentang apa itu downloader dan pembuatannya, setelah mengetahui itu semua langkah yang berikutnya yaitu bagaimana cara untuk memasukkan file.hex dari compile bascom-AVR ke mikrokontroler, untuk bascom-avr sendiri sebenarnya bisa melakukan download secara langsung ke dalam mikrokontroler, namun pada buku ini tidak membahas hal tersebut, yang akan dibahas yaitu cara mendownload program menggunakan software AVR-DUDE yang lebih simple / mudah. Untuk mendownload program file.hex ke dalam mikrokontroler salah satu cara yaitu menggunakan software AVR DUDE yang mana software ini sangatlah mudah untuk digunakan karena menggunakan interface yang sangat jelas, baik itu cara mendownload atau melakukan inisialisasi sistem. Jika file yang akan didownload tersebut berjenis MCS seperti AT89Sxx dan AT89Cxx maka lebih baik menggunakan software “ProgISP” untuk melakukan pendownload-an program, karena ProgISP lebih baik untuk mikrokontroler MCS, namun jika “ProgISP” tersebut digunakan untuk mikrokontroler AVR tidak masalah, hanya perlu mengganti inisial mikrokontroler yang digunakan saja, namun lebih baik mikrokontroler AVR menggunakan AVR DUDE karena setting-annya lebih diperuntukkan untuk AVR. Berikut adalah tampilan dari software AVR DUDE tersebut. 35
Gambar 2.7 Tampilan Software AVR DUDE
1
2
3
Keterangan: - No.1 adalah layar untuk menampilkan proses download, jika diakhiri dengan kata-kata avr done thank you, tidak ada pesan error, berarti program file.hex telah berhasil masuk kedalam mikrokontroler, namun jika ada pesan error berarti program gagal dimasukkan, munngkin ada masalah dengan downloadernya atau kabel konektornya - No.2 adalah tempat untuk memasukkan data file.hex yang kita inginkan, hanya perlu menekan tombol, setelah itu terdapat layar yang dimaksudkan untuk memasukkan data file.hex yang kita inginkan ke mikrokontroler - No.3 adalah tombol yang digunakan untuk memulai proses pen-download-an, hanya dengan click pada tombol execute, program diproses untuk masuk kedalam mikrokontroler
AVR DUDE memiliki setting-an khusus yang harus diperhatian, mengenai tombol check apa saja yang harus diaktifkan dan dinonaktifkan, jika sembarangan didalam melakukan check dan uncheck maka akan dikhawatirkan pada saat mendownload, mikrokonroler yang dituju akan ter-lock atau terkunci portnya untuk itu harus sangat diperhatikan mengenai setting-an ini. Berikut adalah settingan AVR-DUDE yang optimal digunakan untuk proses download.
36
a. Pada Menu File
b. Pada Menu Configuration
c. Pada Menu Fuses
d. Pada Menu Option
37
Untuk menggunakan software download lain seperti “ProgISP” terdapat beberapa setting-an khusus yang perlu diperhatikan, seperti gambar berikut.
0 1 2 3 4
Gambar 2.7 Tampilan ProgISP Keterangan: - No.0 adalah tombol untuk memasukkan file.hex yang akan kita masukkan ke mikrokontroler, akan nampak layar untuk media pemlihan file.hex yang dimaksud - No.1 adalah indikator untuk aktifnya downloader USB-ASP, jika pada indikator ini menyala, berarti downloader telah aktif dan siap melakukan pen-download-an - No.2 adalah tombol untuk inisialisasi mikrokontroler yang digunakan, jika menggunakan mikrokontroler MCS maka pilih yang MCS, jika AVR pilih yang sesuai dengan AVR - No.3 adalah tombol Erase untuk menghapus program yang berada pada mikrokontroler, jadi kelebihan software ini dibanding AVR DUDE yaitu terdapat tombol untuk mengahapus program, jika AVR DUDE tidak disediakan fitur Erase ini. - No.4 adalah tombol Auto yang digunakan untuk memulai eksekusi pen-download-an ke mikrokontroler yang terkait Untuk setting-annya yaitu hanya mengaktifkan (check) pada pilihan chip erase, program flash, data reload dan program fuse, yang lainnya tetap pada posisi uncheck. Itulah settingan yang optimal yang biasa digunakan untuk mendownlad program untuk software ProgISP seperti yang terlihat pada tampilan gambar 2.7. Untuk mendapatkan software AVR DUDE dan PROG ISP dapat di download di link berikut http://www.4shared.com/rar/FCUCEWWs/usbasp.html? (untuk AVR DUDE) http://www.4shared.com/rar/u4QKPj1j/progisp172.html? (untuk Prog ISP) 38
BAB 3 Komunikasi Serial
3.1 Perkenalan Komunikasi Serial Sebelumnya apa itu komunikasi serial?, komunikasi serial adalah komunikasi dimana pengiriman data dilakukan per bit, sehingga lebih lambat dibandingkan komunikasi parallel seperti pada port printer yang mampu mengirim 8 bit sekaligus dalam sekali detak. Beberapa contoh komunikasi serial adalah mouse, scanner dan system akuisisi data yang terhubung ke port COM1 / COM2 Dikenal 2 macam cara pengiriman (transmisi) data secara serial. Kedua cara tersebut dibedakan oleh sinyal detak (detak) yang dipakai untuk men-’dorong’ data serial, kalau sinyal detak dikirim bersama-sama dengan data serial, cara tersebut dikatakan sebagai transmisi data serial secara sinkron. Sedangkan dalam transmisi data serial secara asinkron, detak tidak dikirim bersama data serial, rangkaian penerima data harus membangkitkan sendiri detak pendorong data serial. Fungsi utama dari komunikasi serial pada mikrokontroler yaitu untuk menghubungan antara komputer dengan mikrokontroler, jadi kedua device tersebut dapat saling bekerjasama untuk melakukan perintah yang dibuat. Seperti halnya monitoring suhu menggunakan komputer, data suhu didapatkan oleh mikrokontroler, kemudian dari mikrokontroler dikirimkan datannya menggunakan komunikasi serial kepada komputer, sehingga pada tampilan hyperterminal computer terdapat data suhu yang dikirimkan oleh mikrokontroler. Tidak hanya itu saja, bisa juga komunikasi balik, dari komputer memerintahkan mikrokontroler untuk melakukan sesuatu tergantung pada program yang dimasukkan ke mikrokontroler, seperti contohnya membuat tampilan animasi led menggunakan control komputer. Jadi komputer berfungsi untuk mengendalikan kinerja dari mikrokontroler, dan banyak aplikasi lain yang berhubungan dengan komunikasi serial.
3.2 Cara Menghubungkan Komputer dengan Mikrokontroler Untuk komunikasi serial terdapat dua metode untuk melakukannya, metode yang pertama yaitu dengan menggunakan port USB. Metode ini yang disarankan oleh penulis,
39
dikarenakan port USB terdapat pada PC maupun laptop sehingga dapat digunakan dimana saja dan pada berbagai jenis komputer tersedia usb port. Metode kedua yaitu menggunakan port serial, jadi port serial yang terdapat pada PC digunakan sebagai penghubung antara mikrokontroler dengan komputer PC, kelemahannya yaitu jika untuk berhubungan dengan laptop harus menggunakan konverter serial to USB converter karena pada laptop tidak terdapat port serial seperti gambar berikut.
Gambar 3.1 Tampilan Db9 Port Serial pada PC Kabel konektor yang digunakan pada kedua metode tersebut berbeda, untuk metode menggunakan port USB menggunakan kabel DKU-5, yang mana kabel ini merupakan kabel data dari handphone Nokia yang bagian ujungnya dimodifikasi, didalam kabel data Nokia terdapat 5 buah kabel yang masing-masing berwarna biru, merah, hijau, putih, dan hitam, namun yang dipakai untuk melakukan komunikasi serial dengan port USB hanyalah tiga warna kabel yaitu seperti pada tabel berikut. Tabel 3.1 Fungsi pada kabel data Nokia Warna kabel
Fungsi
Merah
Tidak dipakai
Biru
Untuk pin RX
Hijau
Tidak dipakai
Putih
Untuk pin TX
Hitam
Ground
Dari keterangan pada tabel diatas kabel yang digunakan hanya tiga kabel yaitu kabel warna biru untuk pin RX, kabel putih untuk pin TX dan yang hitam untuk Ground yang mana masing-masing pin RX, TX GND pada kabel data tersebut dihubungkan ke pin RX, TX, dan GND pada rangkaian minimum system. Berikut adalah gambar kabel data Nokia yang telah dimodifikasi untuk komunikasi serial mikrokontroler.
40
Gambar 3.2 Kabel Serial DKU-5 Port USB
Pada gambar 3.2 kabel serial DKU-5 terdapat sebuah port usb male pada ujung, dan pada ujung yang lain terdapat 3 kabel yaitu biru, putih dan hitam. Port usb pada bagian ujung kabel di hubungkan ke komputer PC atau laptop melalui port usb female, kemudian ujung yang lain yang berupa 3 kabel tersebut dihubungkan ke minimum system melalui pin RX, TX dan GND, berikut bagannya.
RX, TX, GND Minimum System
USB port Computer
Kabel DKU-5
Metode kedua yaitu menggunakan serial port yang terdapat pada PC, dengan media kabel serial dan rangkaian RS232 sebagai media pengirim / penerima data. Metode ini memang membutuhkan media RS232 sebagai media pengirim / penerima data dari mikrokontroler. Jika tanpa rangkaian ini, data dari mikrokontroler tidak akan bisa diterima oleh komputer. Berikut adalah bentuk dari rangkaian RS232 tersebut.
Gambar 3.3 Rangkain RS232 41
Rangkaian RS232 membutuhkan sebuah DB9 yang berfungsi sebagai konektor dari rangkaian RS232 ke kabel serial, jadi untuk metode serial dengan port serial membutuhkan dua buah item utama yaitu kabel serial dan rangkaian RS232. Untuk kabel serial bentuknya seperti pada gambar berikut.
Gambar 3,4 Bentuk Kabel Serial
Kabel serial yang telah dihubungakan ke rangkaian RS232, dihubungkan ke port serial pada komputer PC, sehingga akan nampak seperti gambar berikut setelah rangkaian RS232 dihubungkan ke kabel serial.
Gambar 3.5 Rangkaian RS232 dihubungkan dengan Kabel serial Untuk penggunaan dari rangkaian RS232 tidaklah sulit, seperti halnya kabel DKU-5 yaitu hanya menghubungkan ke pin RX, TX dan GND pada minimum system, jadi pada IC MAX232 terdapat input dan output pin yaitu RX dan TX, dan ditambah dengan vcc dan ground rangkaian.
42
Untuk lebih jelas mengenai komunikasi data melalui port serial dapat diperhatikan pada bagan berikut ini.
RX, TX, GND, VCC Minimum System
DB9
Kabel Serial
RS232
Serial port Computer PC
Perbedaan dari kedua metode antara port serial dengan port USB hanyalah pada media penghubungnya, dimana port USB tidak menggunakan rangkaian RS232 sebagai media pengirim dan pernerima data, namun menggunakan kabel DKU-5 yang telah terdapat jalur RX, TX dan ground, untuk metode port serial memerlukan rangkaian tambahan yaitu rangkaian RS232 dan kabel serial sebagai media penghubungnya. Ada sebuah pertanyaan, bagaimana caranya agar komunikasi serial menggunakan port serial diubah menjadi port USB?. Caranya cukulah mudah yaitu hanya membutuhkan sebuah alat konverter yang dinamakan serial to USB converter dan kabel USB male to male, untuk bentuknya seperti pada gambar berikut ini.
Gambar 3.6 Bentuk dari Serial to USB Converter Metode penggabungan antara port serial dan port USB ini memang sering sekali digunakan didalam komunikasi serial, dikarenakan jika menggunakan port serial saja, hanya bisa untuk berkomunikasi dengan computer PC saja, sehingga digunakanlah konverter agar bisa digunakan pada laptop atau device lain yang menggunakan port USB sebagai media penghubungnya. Untuk lebih jelasnya dapat melihat pada bagan berikut ini.
43
RX, TX, GND Minimum System
Kabel Serial RS232
Kabel USB male to male / Printer Serial to USB converter
Computer Port USB female
Komunikasi antara mikrokontroler dengan komputer terdapat dua sistem yang harus diperhatikan agar tercipta komunikasi yang bagus, yaitu sistem hardware dan sistem software. Untuk yang dijelaskan diatas yaitu komunikasi antara mkrokontroler dengan komputer secara hardware, namun bagaimana secara software-nya?. Jika kedua sistem ini tidak saling mendukung maka tidak akan ada komunikasi antara mikrokontroler dengan komputer dikarenakan komputer belum siap untuk menerima data dari mikrokontroler. Mengaktifkan software serial pada komputer biasanya menggunakan software Hyperterminal, yang mana software ini bisa didownload diinternet. Namun penulis tidak menggunakan software Hyperterminal dikarenakan terdapat setting-an yang harus dilakukan sebelum membuka layar komunikasi serialnya dan juga jika untuk komunikasi secara wireless sering terjadi error. Untuk software komunikasi serial yang penulis pakai yaitu software
Hypoterminal
yang
sejatinya
mirip
dengan
Hyperterminal,
dan
untuk
penggunaannya lebih mudah Hypoterminal, karena hanya dengan mengaktifkan software, port yang aktif telah terdeteksi, dan settingannya telah terpasang pada settingan default, yaitu
Bits per second = 9600 Data bits = 8 Parity = None Stop Bits = 1 Flow Control = None
Bits per second nilai default pada Hypoterminal yaitu 9600, jika menginginkan boudrate yang lain dapat dirubah sesuai dengan baudrate dari mikrokontroler atau modul yang akan berkomunikasi dengan komputer. Tampilan dari Hypoterminal seperti gambar berikut ini
44
1 2 3 4 5 6 Gambar 3.7 Tampilan Hypoterminal
7
Keterangan: - No.1 adalah pengaturan untuk stop bits - No.2 adalah pengaturan untuk Parity - No.3 adalah pengaturan untuk data bits - No.4 adalah pengaturan untuk Bits per second - No.5 adalah COM Port yang aktif atau yang siap digunakan, untuk mengetahui COM Port yang digunakan oleh mikrokontroler, terlebih dahulu melihat pada bagian Device and printer pada computer windows, yang mana disana terdapat COM Port yang digunakan oleh mikrokontroler. Jika telah terdapat COM Port yang digunakan, maka ganti COM Port default dengan COM Port yang dituju - No.6 adalah tombol connect yang fungsinya untuk memulai hubungan antara komputer dengan mikrokontroler secara serial. - No.7 adalah tampilan layar atau tempat data yang akan diterima oleh komputer dari mikrokontroler atau juga bisa sebaliknya yaitu untuk mengirimkan data ke mikrokontroler
3.3 Pembuatan Rangkaian Komunikasi Serial Untuk melakukan komunikasi secara serial dengan metode port serial yang harus dibuat yaitu rangkaian RS232, yang telah dijelaskan fungsi dan kedudukannya pada penjelasan sebelumnya. Pembuatan rangkaian ini sangatlah mudah dan hanya membutuhkan beberapa kompunen, yang mana komponen tersebut dapat ditemukan di toko-toko elektronika, dan tergolong komponen yang umum digunakan untuk suatu project elektronika. Berikut adalah skematik dari rangkaian RS232 tersebut. 45
Ke RX, TX Minimum System
Gambar 3.8 Skematik Rangkaian RS232
Bahan-bahan: a. Capasitor Polar 1uF / 16v x 4 buah b. DB9 male / female x 1 buah c. IC MAX232 x 1 buah
Pada gambar 3.8 terdapat IC U1 yaitu IC MAX232, IC
tersebut umum
digunakan untuk project komunikasi serial dan bukan termasuk IC langka, jadi yang perlu diperhatikan yaitu letak dari RX in, RX out, TX in, TX out dan VCC, GND.
46
BAB 4 Minimum System
4.1 Perkenalan dengan Minimum System Minimum system adalah sebuah rangkaian utama yang digunakan untuk meletakkan mikrokontroler agar bisa berfungsi maksimal, jadi dengan kata lain mikrokontroler harus ditempatkan pada sebuah rangkaian untuk bisa berjalan secara optimal, jika tanpa rangkaian minimum system, mikrokontroler tidak dapat aktif, ambil contoh ATMega16, jika ATMega16 tidak dipasangkan ke minimum system, ATMega16 tersebut tidak dapat berfungsi. Maka dari itu minimum system ini harus diperhatikan benar mengenai fungsi dan cara pembuatannya. Jika tidak ingin membuat minimum system sendiri, bisa beli barang jadi di toko elektronika, namun cara ini tidak disarankan, karena itu mengakibatkan kita tidak kreatif dan hanya menggantungkan barang yang sudah jadi, harga dari kita buat sendiri dibanding beli sangat jauh, jika kita membuat sendiri uang yang dipakai kira-kira habis Rp. 60.000,00, namun jika membeli akan habis Rp. 125.000,00 sampai Rp. 200.000,00. Untuk tampilan minum system yang berada dipasaran yaitu seperti gambar berikut ini,
Gambar 4.1 Contoh Rangkaian Minimum System Pada bab ini akan dibahas mengenai bagaimana cara membuat minimum system dari mikrokontroler yang akan digunakan untuk membuat robot dan alat elektronika pada bab selanjutnya, yaitu rangkaian minimum system ATMega8, ATMega32, ATMega16 dan ATMega8535.
47
Fungsi rangkaian minimum system pada rangkaian elektronika yaitu sebagai otak dan pengendali segala aktifitas baik itu pada robot ataupun alat elektronika, karena posisi rangkaian minimum system sangat penting dan central sekali, jika terdapat gangguan pada rangkaian minsys ini maka suatu alat elektronika atau robot tidak akan bergerak / berjalan dan tidak akan berfungsi maksimal, seperti halnya manuasia yang tanpa ruh, maka tubuh manusia tersebut tidak berfungsi atau mati. Setiap mikrokontroler baik itu pada tipe AVR atau pun MCS memiliki konfigurasi rangkaian minimum system yang berbeda, sehingga untuk membuatnya tidak bisa sembarangan, misalnya rangkaian minimum system untuk ATMega16 dipasang dengan mikrokontroler ATMega8, itu sangat tidak mungkin karena konfigurasi antara keduanya berbeda, dan juga ukurannya pun berbeda. Namun jika rangkaian minimum system ATMega16 dipasang mikrokonroler ATMega8535 itu masih bisa, dikarenakan konfigurasi antara ATMega16 dan ATMega8535 relatif sama, tidak ada perbedaan.jadi kesimpulannya setiap ATMega memiliki rangkaian minimum system sensdiri yang berbeda dengan yang lainnya kecuali untuk konfigurasi pin / kaki mikrokonroler yang sama. Berikut adalah tampilan dari minimum system ATMega16 / ATMega8535 dan ATMega8.
Gambar 4.2 Rangkaian Minsys ATMega8
Gambar 4.3 Rangkaian Minsys ATMega16
4.2 Pembuatan Rangkaian Minimum System Untuk membuat rangkaian minimum system sangatlah mudah, dan tidak rumit didalam pembuatannya. Hanya membutuhkan waktu sekitar 30 menit untuk membuatnya jadi, dan juga komponen yang digunakan termasuk komponen yang umum, yang biasa digunakan didalam project elektronika. Pertama yang akan dibahas yaitu cara membuat rangkaian minimum system untuk ATMega8, dengan berpedoman pada konfigurasi kaki / pin dari ATMega itu sendiri, 48
untuk lebih jelasnya bisa melihat dari datasheet mikrokontroler yang terkait agar bisa lebih memahami karakteristik tiap pin / kaki mikrokontroler yang dipakai. Berikut adalah skematik dari rangkaian minimum system ATMega8 dengan port C digunakan untuk penampil LCD.
Gambar 4.4 Skematik Rangkaian ATMega8
Bahan-Bahan: a. ATMega8 x 1 buah b. Variabel Resistor 10K x 1 buah c. Kapasitor 22pF x 2 buah d. Crystal 12Mhz x 1 buah e. Pinheader Female 16 pin ( untuk LCD display ) f. Pinheader male tunggal Pada rangkaian minsys ATMega8 diatas tegangan masukan ke mikrokontroler (VCC) sebesar 5 volt, tidak bisa lebih karena tidak adanya rangkaian regulator 12v to 5v, jika ingin menggunakan battery sebagai tegangan masukan minsys, maka harus dibuat dahulu
49
regulator sebagai konverter tegangan, sehingga tegangan diatas 5v seperti 9v atau 15v bisa keluar dari regulator sebesar 5v, ini sangat aman untuk rangkaian minimum system. JP2 pada gambar 4.4 berfungsi untuk media memasukkan program kedalam mikrokontroler atau istilah lain sebagai port untuk ke Downloader, karena pada port itu terdiri dari pin MISO, MOSI, SCK, RESET, GND. seperti penjelasan pada bab downloader sebelumya, untuk JP1 digunakan untuk layar LCD 16 x 2, dan JP3 merupakan port untuk I/O, jadi pada contoh gambar hanya terdapat 3 port I/O yaitu pada portD.5, portD.6 dan PortD.7. jika menginginkan port I/O lebih banyak, bisa menggunakan port yang tidak dipakai seperti portD.0 – portD.4 dan portB.0 – portB.2 tergantung dari penggunaannya. Untuk penjelasan berikutnya yaitu cara membuat minimum system untuk ATMega16 atau ATMega8535 yang mana minimum sistem untuk ATMega16 ini berbeda dengan ATMega8, maka dari itu harus perlu dicermati pada bagian ini. Berkut adalah gambar skematik dari minimum system ATMega16 / 8535 / 32 tanpa tampilan layar LCD.
1
2
Gambar 4.5 Skematik minimum system ATMega16 / 8535 /32
3
4
50
Bahan-Bahan : a. ATMega16 / 8535 / 32 x 1 buah b. Crystal 12Mhz x 1 buah c. Kapasitor 22pF x 2 buah d. Kapasitor 104pF x 4 buah e. Kapasitor 103pF x 1 buah f. Resistor 4k7ohm x 1 buah g. Tombol Reset x 1 Buah h. Tomboh ON/OFF x 1 buah i. Pinheader tunggal j. Pinheader double k. IC7805 x 1 buak l. Kapasitor polar 100uF / 25v x 1 buah m. Kapasitor polar 10uF / 16v x 1 buah
Penjelasan untuk gambar 4.5. pada no.1 adalah rangkaian regulator yang digunakan untuk menghasilkan tegangan 5v karena menggunakan IC7805, sehingga tegangan lebih dari 6v seperti 9v atau 15v dapat diturunkan menjadi 5v pada tegangan keluarannya menggunakan IC7805, karena terjadi proses disipasi tegangan sehingga IC ini akan panas jika melakukan aktifitasnya. No.2 adalah tombol ON/OFF yang mana gunanya untuk sebagai saklar rangkaian, jika ingin menghidupkan rangkaian hanya perlu menekan tombol ON, dan untuk mematikan posisikan tombol pada posisi OFF . No.3 adalah port I/O, pada contoh port I/O semua diaktifkan sehingga jika ingin menggunakan hanya perlu memilih salah satu port dari sekian banyak port I/O yang disediakan. Untuk No.4 yaitu port yang diguanakan untuk melakukan download program yang dihubungkan ke downloader, karena port ini terdiri dari pin MOSI, MISO, SCK, RESET, dan GND. Minimum system juga termasuk alat yang serbaguna, karena bisa menerima data dari sensor, bisa memberikan / menerima data ke komputer melalui pin RX, TX, bisa mengaktifkan / me-non aktifkan port I/O, bisa mengatur jalannya output maupun input data melalui program yang dimasukkan kedalamnya. Minimum System merupakan rangkaian yang sangat vital, karena posisinya sebagai otak penggerak suatu rangkaian dan juga motor dalam jalannya suatu aktifitas suatu rangkaian.
51
Tombol RESET pada suatu rangkaian minimum system digunakan untuk melakukan setting ulang / kembali dari awal, seperti halnya rangkaian di OFF-kan kemudian di ON-kan kembali, pasti akan melakukan eksekusi perintah / program dari pertama, sama seperti itu kinerja dari tombol RESET.
Untuk mengetahui posisi minimum system pada suatu alat dapat dilihat pada bagan berikut.
SENSOR
MODULE
MINIMUM SYSTEM
LCD / LED / BUZZER dsb Komputer Laptop /PC
Penjelasan dari bagan diatas yaitu minimum system berposisi sebagai otak pergerakan suatu rangkaian. Sensor memberikan data kepada minimum system dimana disini mikrokontroler mengolah data yang dikirim oleh sensor bisa melalui port ADC atau yang lain, kemudian minimum system mengeluarkan output yang berupa tampilan LCD / LED / Buzzer dll. untuk module dapat mengirim atau menerima data dari minimum System sehingga minimum system dapat mengendalikan modul secara bersamaan. Komputer berposisi bisa sebagai pengirim atau penerima data dari minimum system, jadi komputer bisa menampilkan data dari sensor dan bisa pula komputer memerintahkan minimum system untuk melakukan sesuatu tergantung pada program yang terdapat pada mikrokontroler.
52
BAB 5 ROBOTIKA
5.1 Pengenalan Tentang Robotika Robotika merupakan suatu materi pembelajaran yang sangat menarik, dan juga sangat menantang bagi pecinta elektronika, karena disinilah tempat untuk berkarya dan mengasah kreatifitas. Robotika berhubungan erat sekali dengan yang namanya membuat robot atau sistematika robot, maka dari itu segala resiko yang akan dihadapi harus benarbenar dipersiapkan, terutama masalah dana. Membuat robot adalah suatu pencapaian tertinggi bagi pecinta elektronika, karena pada robotika mengandung unsur-unsur tingkat tinggi baik itu dari segi pemrograman maupun hardware, memang kalau dilihat sepintas, membuat robot adalah sesuatu yang tidak mungkin bagi pemula atau yang masih belajar elektronika, tapi itu semua tidak benar, disini akan dipaparkan secara teperinci mengenai bagaimana untuk membuat robot dari yang tingkatnya basic hingga yang advance dan bisa dilakukan dirumah secara mandiri. Klasifikasi robot ada 2 macam yaitu robot dengan tingkat basic, dan tingkat advance, untuk yang tingkat basic menggunakan pemrograman yang relatif sedikit, dan belum menggunakan PID control sebagai proses untuk memperhalus gerakan robot, untuk yang tingkat advance, pemrograman dan hardware akan sedikit lebih rumit, terutama pada program kendali, karena menggunakan PID control yang membuat robot bisa berjalan halus dan lancar. Untuk jenis-jenis robot ada berbagai macam jenis yaitu ada robot beroda, berkaki, beroda dan berkaki dan lain sebagainya. Namun pada buku ini hanya membahas mengenai robot yang mengunakan roda, tidak membahas robot berkaki, dikarenakan untuk biaya pembuatan robot berkaki akan lebih mahal dari robot beroda, dan memerlukan komponen yang tidak murah harganya untuk membuat satu robot berkaki, tidak hanya itu untuk robot berkaki memerlukan program PID yang sedikit panjang dan memerlukan beberapa rotary encoder yang digunakan untuk membaca tingkat pergerakan suatu putaran motor. Maka dari itu masalah mengenai robot berkaki tidak dibahas dibuku ini. Setiap robot yang beroda memerlukan komponen pendukung yang berupa sensor sebagai pendeteksi kondisi dan input data, kemudian motor driver yang digunakan sebagai penggerak roda, sehingga roda bisa berjalan maju atau mundur tergantung pulse masukan. 53
Guna memperjelas dari penjelasan macam-macam robot dan jenisnya, berikut adalah penjelasan menggunakan gambar tentang macam-macam robot yang sekarang berkembang terutama diindonesia, ada beberapa macam robot yang sekarang sedang tenar dan biasa dilombakan yaitu A. Kategori Robot Beroda: Maksud dari robot kategori beroda adalah robot yang dibuat berjalan dengan menggunakan roda, atau kata lainnya robot yang menggunakan kaki berupa roda atau sejenisnya, roda yang digunakan bisa bermacam-macam jenis dan bentuknya tergantung pada fungsi pemakaiannya, untuk robot beroda, yang sekarang popular ada 3 robot yaitu: 1. Robot Line Follower
Gambar 5.1 Tampilan Robot Line Follower
2. Robot Balancing
Gambar 5.2 Tampilan Robot Balancing 54
3. Robot Pemadam Api
Gambar 5.3 Robot Pemadam Api
4. Robot Avoider
Gambar 5. 4 Tampilan Robot Avoider
B. Kategori Robot Berkaki
Untuk kategori robot berkaki, disini maksudnya robot tersebut berjalan dan bergerak menggunakan kaki sebagai tumpuan geraknya, sehingga dikategorikan robot berkaki, untuk kaki robot ada bermacam-macam jenis dan bentuknya, ada yang seperti kaki manusia yaitu dua kaki, ada pula yang menggunakan kaki lebih dari dua kaki seperti halnya robot laba-laba yang menggunakan kaki laba-laba yang jumlahnya lebih dari dua buah,
55
berikut adalah penjelasan dari macam-macam robot berkaki yang sedang popular di masyarakat Indonesia.
1. Robot Humanoid
Gambar 5.4 Tampilan Robot Soccer
2. Robot Kaki Laba-Laba
Gambar 5.5 Tampilan Robot Hexapod
56
5.2 Membuat Robot Line Follower
Pada bagian ini akan dibahas secara mendetail mengenai cara pembuatan robot line follower dari rangkaian yang diperlukan hingga ke program, sebenarnya untuk robot line follower tidak-lah sulit, tidak serumit yang dibayangkan, mungkin sekilas jika dilihat robot line follower nampak rumit dengan sensor dan rangkaian motor driver, namun semuanya itu tidak demikian, malah robot ini adalah robot yang paling digemari oleh para elektro lovers dikarenakan biayanya yang murah dan unsur kreatifitasnya tinggi, untuk gambar robotnya adalah seperti dibawah ini.
Gambar 5.2a Tampilan Robot Line Follower
Robot line follower yang akan dibahas kali ini yaitu robot line follower yang tanpa menggunakan PID control dalam system pengaturannya, jadi hanya mengandalkan akurasi dari pembacaan sensor dan gerak dari motor yang dikendalikan oleh motor driver. Robot line follower memiliki tingkatan level, yaitu level basic dan level professional atau advance, untuk yang basic yaitu robot hanya mengandalkan sensor dan motor driver, namun jika level advance atau professional tidak hanya mengandalkan pembacaan sensor dan motor drive namun juga membutuhkan rumus agar robot dapat berjalan stabil dan mulus saat di lintasan, agar lebih jelas berikut adalah penjelasan prinsip kerja masing-masing level dalam robot line follower. 57
1. Robot Line Follower Basic Level Robot line follower pada tahap awal yaitu robot line follower yang tidak menggunakan control PID, jadi hanya menggunakan pembacaan sensor dan arah gerak motor driver, sehingga jika dibandingkan dengan robot line follower dengan PID berbedanya kalau basic, jalan dari robot pada track masih kasar, tidak mulus saat membelok atau menikung, namun jika yang menggunakan PID akan berjalan mulus seperti kereta api yang berjalan pada tracknya, saat menikung pun akan terlihat lebih halus dari pada yang tidak menggunakan PID, untuk prinsip kerja dari robot line follower basic level yaitu seperti gambar berikut.
Lurus
Belok Kanan
Belok Kiri LED
Photo Dioda Track / Lintasan
Gambar 5.2b Tampilan arah gerak motor berdasarkan tangkapan sensor
Seperti yang terlihat di gambar 5.2b, terdapat kata “belok kiri” maksudnya yaitu jika sensor mendeteksi track yang berwarna hitam atau putih pada sektor kiri dari sensor maka sensor akan memerintahkan motor driver untuk berbelok kearah kiri dikarenakan track yang dibaca berbelok kearah kiri yang ditandai dengan aktifnya tiga sensor yang berada di bagian kiri, begitu pula dengan kata “lurus” dan kata “belok kanan”, jika lurus artinya track yang terbaca oleh sensor adalah track lurus yang ditandai dengan aktifnya dua sensor yang berada dibagian tengah, dan juga untuk “belok kanan”, sensor akan
58
mengirimkan perintah belok kanan kepada motor driver jika sensor yang aktif adalah tiga sensor yang berada di bagian kanan. Seperti itu-lah prinsip kerjanya untuk robot line follower yang tidak menggunakan PID yang hanya mengandalkan pembacaan dari sensor yang kemudian mengirimkan perintah untuk belok kanan, belok kiri atau lurus, jika ke delapan sensor tersebut semuanya tidak aktif maka dapat diperkirakan robot tersebut berada di luar lintasan, dikarenakan tidak adanya satu sensorpun yang aktif, biasanya untuk permasalahan seperti ini, robot di program untuk berjalan mundur sampai salah satu sensor aktif, jadi robot dapat berada dalam lintasan terus menerus biarpun keluar lintasan.
2. Robot Line Follower Advance Level Robot line follower yang advance level yaitu robot line follower yang menggunakan PID control sebagai pengontrol untuk jalannya robot. Pertanyaan pertama yaitu apa itu PID ?, PID adalah Proportional, Integral dan Derivative, maksud dari Proportional yaitu untuk memperbaiki respon transien, Integral digunakan untuk menghilangkan error steady state, dan Derivative digunakan untuk memberikan efek redaman, ketiga factor tersebut sangatlah penting untuk terciptanya suatu system yang sempurna, baik untuk jalannya robot saat lurus, mundur atau berbelok. Kombinasi yang bisa digunakan untuk sebagai system control yaitu PI, PD dan PID, selain dari itu, tidak diperkenankan untuk digunakan karena akan menimbulkan efek yang tidak diinginkan. Berikut adalah penjelasan singkat mengenai PID control.
a. Kontroler Proportional Persamaan matematis = u(t) = KP . e(t) dimana KP : konstanta proporsional dalam Laplace U(s)/E(s) = KP
59
Diagram blok
Efek dari sistem proportional adalah sbb.
Tidak Stabil
Stabil
b. Kontroler Integral Persamaan Matematis = t
u (t ) K i e(t )dt 0
dimana Ki : konstanta integral dalam Laplace
U ( s) K i E ( s) s
60
Diagram blok
Efek dari sistem Integral dan Proportional adalah sbb.
Respon Sistem Tanpa Kontroler
Respon Sistem dengan Kontroler P
Respon Sistem dengan Kontroler I
61
Respon Sistem dengan Kontroler PI
c. Kontroler Derivative Fungsi dari kontroler derivative yaitu 1. Memberikan efek redaman pada sistem yang berosilasi 2. Memperbaiki respon transien, karena memberikan aksi saat ada perubahan error 3. D hanya berubah saat ada perubahan error, sehingga saat ada error statis D tidak beraksi
Efek dari system Derivative adalah sbb. Respon Sistem dengan Kontrol P saja, Respon Berosilasi
Respon Sistem dengan Kontrol PD Kp=1, Kd = 3
62
Kontroler PID Seri t 1 de(t ) u (t ) K p e(t ) e(t )dt Td T dt i 0
1 U ( s ) K p E ( s ) E ( s ) Td sE ( s ) Ti s K U ( s ) K p E ( s ) i E ( s ) K d sE ( s ) s
Kontroler PID Paralel t
1 de(t ) u (t ) K p e(t ) e(t ) dt Td Ti 0 dt U ( s ) K p E ( s)
1 E ( s ) Td sE ( s ) Ti s
U ( s ) K p E ( s)
Ki E ( s ) K d sE ( s ) s
Untuk aplikasi PID pada sensor robot line follower yaitu seperti yang di ilustrasikan pada gambar berikut, missal nilai awal adalah 30 atau pwm normal = 30 (tidak ada beban).
Nilai Awal = 30 Kiri
PWM B
-30 -20
Kanan
-10 -0
-0 -10 -20 -30 PWM A
Sensor Robot
Track / Lintasan
Maksud dari gambar diatas yaitu terdapat kecepatan awal sebesar 30 yang mana kecepatan penuh dari motor driver untuk memutarkan motor pada robot, terdapat nilai – 0 pada 63
dua sensor yang terdapat pada bagian tengah, artinya pada saat kedua sensor ini aktif, motor driver tidak mengurangi kecepatan pada pwm yang ada pada motor driver sehingga nilainya tetap 30 untuk pwm A dan pwm B, namun jika sensor yang kedua aktif pada bagian kanan, maka terdapat nilai -10 yang artinya untuk pwm A bernilai 20 dan pwm B tetap bernilai 30, ini mengakibatkan robot berbelok ke kanan sedikit karena kecepatan pwm A tidak sama dengan pwm B, selanjutnya jika sensor ke tiga kanan yang aktif maka akan dikurangi dengan nilai -20 sehingga menghasilkan pwm A bernilai 10 dan pwm B tetap 30, ini mengakibatkan robot berbelok ke kanan lebih dalam, jika yang terkena itu adalah sensor ke-empat kanan yang bernilai -30 maka nilai pwm A bernilai 0 dan pwm B bernilai 30, sehingga roda kanan akan berhenti karena pwm A = 0 dan roda kanan akan berjalan karena nilainya tetap 30, ini mengakibatkan robot berbelok tajam kearah kanan, begitu pula prinsip kerja untuk sensor pada bagian kiri. Itu-lah penjelasan singkat mengenai PID control yang biasa digunakan sebagai penyempurna dari sebuah output system, sehingga system dapat berjalan secara stabil dengan sedikit error dan kesalahan. Memang, jika dibanding dengan basic level, perbedaan yang mencolok atau yang dominan yaitu ada di program bascom-nya, jika tanpa PID, program bascom tidak-lah banyak, namun jika menggunakan PID akan menghasilkan program yang panjang, karena proses yang panjang dan rumit, tapi pada penjelasan di bagian ini akan diberikan program bascom untuk pembuatan robot line follower basic level dan advance level, sehingga akan menemukan perbedaan yang jelas antara keduanya, disarankan untuk pemula di fokuskan untuk pembuatan line follower yang basic level untuk menghindari kerumitan dan ketidakpahaman akan program PID dan alur eksekusinya.
5.2.1 Fungsi dan Tujuan Fungsi dibuatnya robot ini untuk mengetahui bagaimana cara membuat robot line follower dari yang basic hingga yang advance, mulai dari pembuatan hardware, pembuatan program hingga ke kalibrasi system, untuk tujuannya yaitu agar proses pembuatan robot line follower ini dapat dikembangkan ke permodelan yang lain yang lebih kompleks dan bermanfaat bagi masyarakat, sehingga tidak hanya sebagai robot hiburan atau robot untuk ajang kreatifitas saja namun juga dikembangkan untuk kearah membantu manusia didalam kehidupan sehari-hari.
64
5.2.1 Prinsip Kerja Robot
8 buah Sensor
Mikrokontroller ATMega32
Motor Driver
Motor DC
Prinsip kerja dari robot ini yaitu terdapat delapan buah sensor yang berupa photo diode dan led putih super bright yang mana sensor ini yang akan menjadi mata dari robot untuk petunjuk dari jalannya arah robot, dari sensor didapat kondisi-kondisi misal sensor membaca track hitam akan bernilai 1 jika sensor membaca track putih akan bernilai 0, dari kondisi tersebut dikirimkan ke port ADC mikrokontroller, mikrokontroller berposisi sebagai otak dari robot yang akan mengolah data yang diberikan oleh sensor, dari mikrokontroller, data-data kondisi dari sensor akan dikirimkan ke motor driver untuk menjalankan motor DC yang terpasang di motor driver, motor driver akan melakukan aksi sesuai dengan input yang diberikan oleh mikrokontroler sehingga motor driver hanyalah rangkaian penerima sinyal dari mikrokontroler yang kemudian diteruskan ke motor DC, motor DC pada robot diposisikan sebagai kaki untuk melakukan pergerakan maju, mundur dan pengereman. Robot akan berjalan sesuai jalur atau track yang terpasang, kalau di bagian ini dibahas untuk track berwarna hitam bukan putih, sehingga jika robot mendeteksi track hitam, dia akan mengikui lajur track tersebut, bagaimana jika tidak ada track atau keluar jalur?, jika keluar jalur maka robot akan otomatis mundur dan mencari track hitam untuk dilalui.
5.2.2 Rangkaian Hardware Rangkaian hardware yang diperlukan untuk membuat robot line follower tidaklah banyak yaitu hanya perlu rangkaian sensor, rangkaian minimum system, dan rangkaian motor driver dua arah
a. Rangkaian Sensor Rangkaian sensor yang digunakan untuk robot line follower menggunakan delapan buah led putih super bright atau bisa juga diganti dengan led infra merah, namun harga untuk led infra-merah dibanding led super bright agak jauh, maka untuk menghemat dipakai led putih 65
super bright, selain led komponen lainnya yaitu resistor 330 ohm sebanyak 8 buah dan resistor 4k8 ohm sebanyak 8 buah dan juga photo dioda sebanyak 8 buah, untuk skematiknya bisa dilihat pada Gambar 5.2c dan Gambar 5.2d
Gambar 5.2c Skematik rangkaian Led putih / Infrared Port ADC Mikrokontroller
Gambar 5.2d Skematik Rangkaian Sensor Photodioda 66
Bahan-Bahan : 1. 8 Buah Led Super Bright Putih / Led Infrared 3mm 2. 8 Buah Resistor 330 ohm 3. 8 Buah Resistor 4K7 ohm 4. 8 Buah Photodioda 3mm 5. 1 Buah Pinheader 8 Pin
Jadi untuk membuat bagian sensor robot diperlukan dua buah rangkaian yaitu rangkaian led putih / infrared dan rangkaian photodiode, yang perlu diperhatikan untuk pembuatan skematiknya harus pada satu project, maksudnya jika membuat rangkaian pada Gambar 5.2c dan Gambar 5.2d haruslah berada dalam satu project schematic, jika menggunakan software Cadsoft Eagle maka buatlah dua rangkaian tersebut dalam satu project / layar schematic, jangan terpisah-pisah karena kedua rangkaian tersebut sejatinya adalah satu rangkaian yang sengaja dibuat terpisah agar dapat dengan mudah dipahami. Proses peletakkan kedua rangkaian tersebut tidaklah sembarangan, memerlukan kejelian dan ke tepatan, karena jika peletakannya sembarangan maka rangkaian bisa tidak berfungsi optimal atau bahkan tidak berfungsi sama sekali, maka penempatan rangkaian dan komponen pada board haruslah diperhatikan, berikut adalah gambar 5.2e dari susunan komponen pada sebuah board, lihat baik-baik penempatan led dan photo diode.
Gambar 5.2e Susunan Peletakan Komponen Pada Board Sensor
67
Keterangan : Led Super Bright Putih / Infrared Photo Dioda Resistor 330 ohm
Resistor 4K7 ohm
Pinheader 8 Pin untuk ke port ADC mikrokontroler
Pinheader 2 pin untuk VCC 5v dan GND
b. Rangkaian Minimum System Bahan-Bahan : 1. Crystal 12Mhz x 1 buah 2. ATMega32 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. LCD Display x 1 buah 5. Resistor 4K7 x 1buah 6. Capasitor 104p x 4 buah 7. IC7805T x 1 buah 8. Capasitor polar 100uF x 1 buah 9. Capasitor polar 10uF x 1 buah 10. Capasitor 103p x 1 buah 11. Pinheader Male Secukupnya 12. Pinheader Female Secukupnya
68
Untuk rangkaian minimum system digunakan Minsys ATMega32, jika menggunakan ATMega16 juga bisa, tergantung pada selera pembuat.
Tombol Reset
ADC Port
Downloader Port Tombol
LCD
Regulator
Ke Motor Driver
Gambar 5.2f Skematik Rangkaian Minimum System ATMega32
Pada rangkaian minimum system dipakai 4 buah tombol yang terpasang pada port B.0 sampai port B.3, dan port ADC dipakai untuk disambungkan ke rangkaian sensor, untuk port yang terhubung ke motor driver dipakai port D dan port B.
69
c. Rangkaian Motor Driver Dua Arah
Motor Driver yang dipakai untuk robot line follower adalah motor driver dua arah, terdapat dua buah tipe motor driver yaitu satu arah dan dua arah, untuk motor driver dua arah, ada dua jenis yaitu motor driver dua arah menggunakan transistor MOSFET dan jenis lainnya yaitu menggunakan L298, pada pembahasan motor driver kali ini menggunakan motor driver dua arah dengan L298, berikut adalah gambar dari skematiknya.
5v
12v
12v
12v
Motor DC
Gambar 5.2g Skematik Rangkaian Motor Driver 2 arah dengan L298
Bahan-Bahan : 1. 2 Buah Capasitor 104p 2. 8 Buah Dioda 1N4004 3. 1 Buah L298
Untuk system pemasangan motor driver ke rangkaian minimum system dapat dilihat pada Gambar 5.2g, terdapat fungsi yang pada masing-masing port yang terdapat pada L298 maka dari itu perlunya ketelitian dan keterampilan dalam menyambungkannya 70
ke PortD.5 ke PortD.4 ke PortD.2 ke PortD.3 ke PortD.1 ke PortD.0
Gambar 5.2h Sistem Pemasangan Motor Driver ke Mikrokontroller
Perlu diperhatikan pada ENABLE_A dan ENABLE_B, pada port tersebut adalah port untuk PWM dari mikrokontroler yang masuk ke L298, apa fungsi dari PWM?, fungsi dari PWM disini yaitu untuk mengatur kecepatan putaran motor, sehingga jika ingin motor DC berjalan kencang maka isilah dengan nilai maksimal yaitu PWM = 255, jika ingin pelan isilah nilai PWM = 50 atau 10, untuk pada program terletak pada bagian berikut.
Pwm1a = 200 Pwm1b = 200
Artinya PWM A diberikan nilai 200 dan PWM B diberikan nilai 200 juga, untuk fungsi dari keempat input dari L298 yaitu untuk mengendalikan arah putaran motor (maju atau mundur), berikut adalah table konfigurasi dari motor driver.
Tabel 5.2.1 Konfigurasi Input Motor Driver PORT
Maju
Mudur
Belok Kiri
Belok Kanan
Enable_A
255
255
0
255
Enable_B
255
255
255
0
Input 1
0
1
0
0
Input 2
1
0
1
1
Input 3
1
0
1
1
Input 4
0
1
0
0 71
5.2.3 Program Bascom AVR Pada bagian program bascom avr akan dibahas mengenai dua macam program untuk robot line follower, yaitu program tanpa menggunakan PID Control dan program yang menggunakan PID Control, berikut adalah program keduanya. a. Program Robot Line Follower Tanpa PID Control $regfile = "m32def.dat" $crystal = 11059200 Dirkiri1 Alias Portd.2 Dirkiri2 Alias Portd.3 Dirkanan1 Alias Portd.6 Dirkanan2 Alias Portd.7 Config Portd.3 = Output Config Portd.2 = Output Config Portd.6 = Output Config Portd.7 = Output Config Portc.7 = Output Tombol1 Alias Pinb.3 Tombol2 Alias Pinb.2 Tombol3 Alias Pinb.1 Tombol4 Alias Pinb.0 Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Input Set Portb.0 Set Portb.1 Set Portb.2 Set Portb.3 Reset Portc.7 Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Adc = Single , Prescaler = 8 , Reference = Avcc Declare Declare Declare Declare Declare Declare Declare Declare Declare
Sub Sub Sub Sub Sub Sub Sub Sub Sub
Pwm(byval Kiri As Byte , Byval Kanan As Byte) Isibobot Bacaadc Kalibrasi Ceksensor Setting Aturpid Liatadc Cekregister 72
Declare Sub Maju_dikit Dim Sensor As Byte Dim Pilihan As Byte Dim Kecepatan As Byte Dim Regkan As Byte Dim Regkir As Byte Dim Pwm_ka_max As Integer , Pwm_ki_max As Integer , Pwm_ka As Integer , Pwm_ki As Integer Dim Kp As Byte , Kd As Byte , Ki As Byte , Sum_error As Integer , Diff As Integer , Bobot As Integer , Bobot_lalu As Integer Dim Kpeeprom As Eram Byte Dim Kdeeprom As Eram Byte Dim Kieeprom As Eram Byte Dim Keceeprom As Eram Byte Dim Prop As Integer , Deriv As Integer , Integ As Integer , Integral As Single , X As Byte Dim Vref0 As Word , Vref1 As Word , Vref2 As Word , Vref3 As Word , Vref4 As Word , Vref5 As Word , Vref6 As Word , Vref7 As Word Dim Dataadc0 As Word , Dataadc1 As Word , Dataadc2 As Word , Dataadc3 As Word , Dataadc4 As Word , Dataadc5 As Word , Dataadc6 As Word , Dataadc7 As Word Dim Eeprom0 As Eram Word , Eeprom1 As Eram Word , Eeprom2 As Eram Word , Eeprom3 As Eram Word , Eeprom4 As Eram Word , Eeprom5 As Eram Word , Eeprom6 As Eram Word , Eeprom7 As Eram Word Dim Href0 As Href4 As Word Dim Lref0 As Lref4 As Word
Word , Href1 As , Href5 As Word Word , Lref1 As , Lref5 As Word
Word , , Href6 Word , , Lref6
Href2 As As Word , Lref2 As As Word ,
Word , Href3 As Word , Href7 As Word Word , Lref3 As Word , Lref7 As Word
Dim A As Byte Sensor0 Alias Sensor.0 Sensor1 Alias Sensor.1 Sensor2 Alias Sensor.2 Sensor3 Alias Sensor.3 Sensor4 Alias Sensor.4 Sensor5 Alias Sensor.5 Sensor6 Alias Sensor.6 Sensor7 Alias Sensor.7 '===================================================================== Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Cursor Off 'Deflcdchar 0 , 32 , 10 , 21 , 17 , 17 , 17 , 10 , 4 '===================================================================== Inisialisasi: 73
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Eeprom0 Eeprom1 Eeprom2 Eeprom3 Eeprom4 Eeprom5 Eeprom6 Eeprom7
'======================== Atur: Cls Locate 1 , 1 Lcd " ROBOMAN " Locate 2 , 1 Lcd " set start" Do If Tombol1 = 0 Then Call Setting End If If Tombol4 = 0 Then Set Portc.7 Cls Goto Utama End If Waitms 50 Loop '================================== mulai ======================= Utama: Do Call Bacaadc Call Ceksensor Cls Locate 2 , 5 Lcd Bin(sensor) Select Case Locate 1 Case 1 : Case 2 : Case 3 : Case 4 : Case 5 : Case 6 : Case 7 : Case 8 : End Select
Pilihan , 1 Lcd "DATAADC0= Lcd "DATAADC1= Lcd "DATAADC2= Lcd "DATAADC3= Lcd "DATAADC4= Lcd "DATAADC5= Lcd "DATAADC6= Lcd "DATAADC7=
" " " " " " " "
; ; ; ; ; ; ; ;
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
Call Ceksensor 74
If Sensor = &B10000000 Or Sensor = &B01000000 Or Sensor = &B00100000 Or Sensor = &B11000000 Or Sensor = &B11100000 Or Sensor = &B11110000 Then Dirkiri1 = 0 ‘robot belok kiri Dirkiri2 = 1 Dirkanan1 = 1 Dirkanan2 = 0 Pwm1a = 200 Pwm1b = 0 Elseif Sensor = &B00000001 Or Sensor = &B00000010 Or Sensor = &B00000100 Or Sensor = &B00000011 Or Sensor = &B00000111 Or Sensor = &B00001111 Then Dirkiri1 = 0 ‘robot belok kanan Dirkiri2 = 1 Dirkanan1 = 1 Dirkanan2 = 0 Pwm1a = 0 Pwm1b = 200 Elseif Sensor = &B00011000 Or Sensor = &B00111100 Or &B00001000 Or Sensor = &B00010000 Then Dirkiri1 = 0 Dirkiri2 = 1 ‘robot jalan Lurus Dirkanan1 = 1 Dirkanan2 = 0 Pwm1a = 200 Pwm1b = 200 Elseif Sensor = &B00000000 Then Dirkiri1 = 1 Dirkiri2 = 0 Dirkanan1 = 0 Dirkanan2 = 1 Pwm1a = 100 Pwm1b = 100
Sensor
=
‘robot jalan mundur
End If Loop '=========================================== Sub Bacaadc: Start Adc Dataadc0 = Getadc(0) Dataadc1 = Getadc(1) Dataadc2 = Getadc(2) Dataadc3 = Getadc(3) Dataadc4 = Getadc(4) Dataadc5 = Getadc(5) Dataadc6 = Getadc(6) Dataadc7 = Getadc(7) Stop Adc 75
End Sub '============================================ Sub Kalibrasi Cls Lcd "proses kalibrasi" Do Call Bacaadc If If If If If If If If
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
< < < < < < < <
Href0 Href1 Href2 Href3 Href4 Href5 Href6 Href7
Then Then Then Then Then Then Then Then
Lref0 Lref1 Lref2 Lref3 Lref4 Lref5 Lref6 Lref7
= = = = = = = =
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
If If If If If If If If
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
> > > > > > > >
Lref0 Lref1 Lref2 Lref3 Lref4 Lref5 Lref6 Lref7
Then Then Then Then Then Then Then Then
Href0 Href1 Href2 Href3 Href4 Href5 Href6 Href7
= = = = = = = =
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
Waitms 50 Loop Until Tombol1 = 0 Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Lref0 Lref1 Lref2 Lref3 Lref4 Lref5 Lref6 Lref7
+ + + + + + + +
Href0 Href1 Href2 Href3 Href4 Href5 Href6 Href7
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
/ / / / / / / /
2 2 2 2 2 2 2 2
Eeprom0 Eeprom1 Eeprom2 Eeprom3
= = = =
Vref0 Vref1 Vref2 Vref3 76
Eeprom4 Eeprom5 Eeprom6 Eeprom7
= = = =
Vref4 Vref5 Vref6 Vref7
Kalibrasi_x: Cls Lcd "kalibrasi sukses" Wait 2 Do Call Ceksensor Cls Lcd Bin(sensor) Waitms 50 Loop Until Tombol1 = 0 Goto Setting End Sub Sub Ceksensor Call Bacaadc If Dataadc0 Sensor.0 End If If Dataadc0 Sensor.0 End If If Dataadc1 Sensor.1 End If If Dataadc1 Sensor.1 End If If Dataadc2 Sensor.2 End If If Dataadc2 Sensor.2 End If If Dataadc3 Sensor.3 End If If Dataadc3 Sensor.3 End If If Dataadc4 Sensor.4 End If If Dataadc4
> 922 Then = 1 < 922 Then = 0 > 900 Then = 1 < 900 Then = 0 > 890 Then = 1 < 890 Then = 0 > 989 Then = 1 < 989 Then = 0 > 960 Then = 1 < 960 Then 77
Sensor.4 End If If Dataadc5 Sensor.5 End If If Dataadc5 Sensor.5 End If If Dataadc6 Sensor.6 End If If Dataadc6 Sensor.6 End If If Dataadc7 Sensor.7 End If If Dataadc7 Sensor.7 End If
= 0 > 994 Then = 1 < 994 Then = 0 > 989 Then = 1 < 989 Then = 0 > 967 Then = 1 < 967 Then = 0
End Sub '======================================= Liatadc: Do Call Bacaadc Call Ceksensor Cls Locate 2 , 5 Lcd Bin(sensor) Select Case Locate 1 Case 1 : Case 2 : Case 3 : Case 4 : Case 5 : Case 6 : Case 7 : Case 8 : End Select
Pilihan , 1 Lcd "DATAADC0= Lcd "DATAADC1= Lcd "DATAADC2= Lcd "DATAADC3= Lcd "DATAADC4= Lcd "DATAADC5= Lcd "DATAADC6= Lcd "DATAADC7=
" " " " " " " "
; ; ; ; ; ; ; ;
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
If Tombol3 = 0 Then Waitms 200 Incr Pilihan If Pilihan > 8 Then Pilihan = 1 End If If Tombol2 = 0 Then Waitms 200 78
Decr Pilihan If Pilihan < 1 Then Pilihan = 8 End If If Tombol1 = 0 Or Tombol4 = 0 Then Goto Setting Waitms 100 Loop '======================================== Setting: Cls Locate 1 , 1 Lcd "ADC SENSOR PID" Do Waitms 200 If Tombol1 = 0 Then Waitms 200 Goto Liatadc End If If Tombol2 = 0 Then Waitms 200 Call Kalibrasi End If If Tombol4 = 0 Then Waitms 200 Goto Atur End If Waitms 50 Loop '================ selesai =====================
79
b. Program Robot Line Follower dengan PID Control $regfile = "m32def.dat" $crystal = 11059200 Dirkiri1 Alias Portd.3 Dirkiri2 Alias Portd.2 Dirkanan1 Alias Portd.6 Dirkanan2 Alias Portd.7 Config Config Config Config Config
Portd.3 Portd.2 Portd.6 Portd.7 Portc.7
Tombol1 Tombol2 Tombol3 Tombol4 Config Config Config Config
Alias Alias Alias Alias
Pinb.0 Pinb.1 Pinb.2 Pinb.3
= = = = =
Output Output Output Output Output
Pinb.3 Pinb.2 Pinb.1 Pinb.0 = = = =
Input Input Input Input
Set Portb.0 Set Portb.1 Set Portb.2 Set Portb.3 Reset Portc.7 Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Adc = Single , Prescaler = 8 , Reference = Avcc Declare Declare Declare Declare Declare Declare Declare Declare Declare Declare Dim Dim Dim Dim
Sub Sub Sub Sub Sub Sub Sub Sub Sub Sub
Pwm(byval Kiri As Byte , Byval Kanan As Byte) Isibobot Bacaadc Kalibrasi Ceksensor Setting Aturpid Liatadc Cekregister Maju_dikit
Sensor As Byte Pilihan As Byte Kecepatan As Byte Regkan As Byte 80
Dim Regkir As Byte Dim Pwm_ka_max As Integer , Pwm_ki_max As Integer , Pwm_ka As Integer , Pwm_ki As Integer Dim Kp As Byte , Kd As Byte , Ki As Byte , Sum_error As Integer , Diff As Integer , Bobot As Integer , Bobot_lalu As Integer Dim Kpeeprom As Eram Byte Dim Kdeeprom As Eram Byte Dim Kieeprom As Eram Byte Dim Keceeprom As Eram Byte Dim Prop As Integer , Deriv As Integer , Integ As Integer , Integral As Single , X As Byte Dim Vref0 As Word , Vref1 As Word , Vref2 As Word , Vref3 As Word , Vref4 As Word , Vref5 As Word , Vref6 As Word , Vref7 As Word Dim Dataadc0 As Word , Dataadc1 As Word , Dataadc2 As Word , Dataadc3 As Word , Dataadc4 As Word , Dataadc5 As Word , Dataadc6 As Word , Dataadc7 As Word Dim Eeprom0 As Eram Word , Eeprom1 As Eram Word , Eeprom2 As Eram Word , Eeprom3 As Eram Word , Eeprom4 As Eram Word , Eeprom5 As Eram Word , Eeprom6 As Eram Word , Eeprom7 As Eram Word Dim Href0 As Word , Href1 As Word , Href2 As Href4 As Word , Href5 As Word , Href6 As Word Dim Lref0 As Word , Lref1 As Word , Lref2 As Lref4 As Word , Lref5 As Word , Lref6 As Word
Word , Href3 As Word , , Href7 As Word Word , Lref3 As Word , , Lref7 As Word
Dim A As Byte Sensor0 Sensor1 Sensor2 Sensor3 Sensor4 Sensor5 Sensor6 Sensor7
Alias Alias Alias Alias Alias Alias Alias Alias
Sensor.0 Sensor.1 Sensor.2 Sensor.3 Sensor.4 Sensor.5 Sensor.6 Sensor.7
'================================================================ Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Cursor Off 'Deflcdchar 0 , 32 , 10 , 21 , 17 , 17 , 17 , 10 , 4 '================================================================ Inisialisasi: Kecepatan = Keceeprom Pwm_ka_max = Kecepatan Pwm_ki_max = Kecepatan Bobot = 0 Bobot_lalu = 0 81
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Eeprom0 Eeprom1 Eeprom2 Eeprom3 Eeprom4 Eeprom5 Eeprom6 Eeprom7
Kp = Kpeeprom Kd = Kdeeprom Ki = Kieeprom Call Pwm(0 , 0) '======================== Atur: Cls Locate 1 , 1 Lcd " KAIZEN " Locate 2 , 1 Lcd " set start" Do If Tombol1 = 0 Then Call Setting End If If Tombol4 = 0 Then Set Portc.7 Cls Goto Utama End If Waitms 50 Loop '==================<mulai>======================================== Utama: Call Ceksensor If Sensor = &B00000000 Then If Regkan > Regkir Then Call Maju_dikit Goto Belokkanan End If If Regkan < Regkir Then Call Maju_dikit Goto Belokkiri End If End If Call Isibobot If Bobot = 0 Then Sum_error = 0 82
Isi_pwm: ' kanan=max-(bobot*kp)-((bobot-bobot_lalu)*kd); ' kiri=max+(bobot*kp)+((bobot-bobot_lalu)*kd); ' bobot_lalu=bobot; Prop = Kp * Bobot Diff = Bobot - Bobot_lalu Deriv = Kd * Diff Sum_error = Sum_error + Bobot Integral = Ki * Sum_error Integral = Integral / 8 Integ = Integral Pwm_ka Pwm_ki Pwm_ka Pwm_ki Pwm_ka Pwm_ki
= = = = = =
Pwm_ka_max - Prop Pwm_ki_max + Prop Pwm_ka - Deriv Pwm_ki + Deriv Pwm_ka - Integ Pwm_ki + Integ
Bobot_lalu = Bobot If Pwm_ka >= 0 And Pwm_ki >= 0 Then Gosub Maju If Pwm_ka < 0 And Pwm_ki >= 0 Then Gosub Kanan If Pwm_ka >= 0 And Pwm_ki < 0 Then Gosub Kiri
' batasan PWM
If Pwm_ka < 0 Then Pwm_ka = 0 - Pwm_ka If Pwm_ki < 0 Then Pwm_ki = 0 - Pwm_ki If Pwm_ka > Pwm_ka_max Then Pwm_ka = Pwm_ka_max If Pwm_ki > Pwm_ki_max Then Pwm_ki = Pwm_ki_max Pwm1a = Pwm_ka Pwm1b = Pwm_ki
' isi PWMnya
X = 0 Response: Incr X Call Ceksensor If Sensor = &B10000000 Or Sensor = &B11111000 Or Sensor = &B11111100 Then Goto If Sensor = &B00000001 Or Sensor = &B00011111 Or Sensor = &B00111111 Then Goto If Sensor = &B00011000 Then Goto Lurus If Sensor = &B11100011 Or Sensor = &B11000001 Then Goto Belokkiri If Sensor = &B11000111 Or Sensor = &B10000011 Then Goto Belokkanan
&B11110000 Or Belokkiri &B00001111 Or Belokkanan
Sensor
=
Sensor
=
&B11100001
Or
Sensor
=
&B10000111
Or
Sensor
=
If Sensor = &B00000000 Then If Regkan > Regkir Then 83
Call Maju_dikit Goto Belokkanan End If If Regkan < Regkir Then Call Maju_dikit Goto Belokkiri End If Else 'Goto Utama End If Waitms 1 If X = 3 Then Goto Utama Goto Response '===========< sub movement >======================================= Lurus: Set Dirkanan1 Reset Dirkanan2 Set Dirkiri1 Reset Dirkiri2 Call Pwm(kecepatan , Kecepatan) Goto Utama
Belokkiri: Do Set Dirkanan1 Reset Dirkanan2 Reset Dirkiri1 Set Dirkiri2 Call Pwm(150 , 150) Call Ceksensor Loop Until Sensor <> 0 Reset Regkir Reset Regkan Goto Utama
Belokkanan: Do Reset Dirkanan1 Set Dirkanan2 Set Dirkiri1 Reset Dirkiri2 Call Pwm(150 , 150) Call Ceksensor Loop Until Sensor <> 0 Reset Regkan Reset Regkir Goto Utama 84
Sub Maju_dikit Do Set Dirkanan1 Reset Dirkanan2 Set Dirkiri1 Reset Dirkiri2 Call Pwm(180 , 180) Call Ceksensor Loop Until Sensor = 0 End Sub '================================================================= Maju: Set Dirkanan1 Reset Dirkanan2 Set Dirkiri1 Reset Dirkiri2 Return Kanan: Reset Dirkanan1 Set Dirkanan2 Set Dirkiri1 Reset Dirkiri2 Return Kiri: Set Dirkanan1 Reset Dirkanan2 Reset Dirkiri1 Set Dirkiri2 Return '==================< sub pwm >=================================== Sub Pwm(byval Kiri As Byte , Byval Kanan As Byte) Pwm1a = Kanan Pwm1b = Kiri End Sub '===============< sub isi bobot >================================ Sub Isibobot: Select Case Sensor 'Case &B00000001 : Bobot = 10 Case &B00000011 : Bobot = 9 Case &B00000111 : Bobot = 8 Case &B00000010 : Bobot = 7 Case &B00000110 : Bobot = 6 85
Case &B00001110 : Bobot = 5 Case &B00000100 : Bobot = 4 Case &B00001100 : Bobot = 3 Case &B00011100 : Bobot = 2 Case &B00001000 : Bobot = 1 Case &B00011000 : Bobot = 0 Case &B00010000 : Bobot = -1 Case &B00111000 : Bobot = -2 Case &B00110000 : Bobot = -3 Case &B00100000 : Bobot = -4 Case &B01110000 : Bobot = -5 Case &B01100000 : Bobot = -6 Case &B01000000 : Bobot = -7 Case &B11100000 : Bobot = -8 Case &B11000000 : Bobot = -9 'Case &B10000000 : Bobot = -10 End Select End Sub '=========================================== Sub Bacaadc: Start Adc Dataadc0 = Getadc(0) Dataadc1 = Getadc(1) Dataadc2 = Getadc(2) Dataadc3 = Getadc(3) Dataadc4 = Getadc(4) Dataadc5 = Getadc(5) Dataadc6 = Getadc(6) Dataadc7 = Getadc(7) Stop Adc End Sub '============================================ Sub Kalibrasi Cls Lcd "proses kalibrasi" Do Call Bacaadc If If If If If If If If
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
< < < < < < < <
Href0 Href1 Href2 Href3 Href4 Href5 Href6 Href7
Then Then Then Then Then Then Then Then
Lref0 Lref1 Lref2 Lref3 Lref4 Lref5 Lref6 Lref7
= = = = = = = =
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
If Dataadc0 > Lref0 Then Href0 = Dataadc0 If Dataadc1 > Lref1 Then Href1 = Dataadc1 If Dataadc2 > Lref2 Then Href2 = Dataadc2 86
If If If If If
Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
> > > > >
Lref3 Lref4 Lref5 Lref6 Lref7
Then Then Then Then Then
Href3 Href4 Href5 Href6 Href7
= = = = =
Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
Waitms 50 Loop Until Tombol1 = 0 Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Lref0 Lref1 Lref2 Lref3 Lref4 Lref5 Lref6 Lref7
+ + + + + + + +
Href0 Href1 Href2 Href3 Href4 Href5 Href6 Href7
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
= = = = = = = =
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
/ / / / / / / /
2 2 2 2 2 2 2 2
Eeprom0 Eeprom1 Eeprom2 Eeprom3 Eeprom4 Eeprom5 Eeprom6 Eeprom7
= = = = = = = =
Vref0 Vref1 Vref2 Vref3 Vref4 Vref5 Vref6 Vref7
Kalibrasi_x: Cls Lcd "kalibrasi sukses" Wait 2 Do Call Ceksensor Cls Lcd Bin(sensor) Waitms 50 Loop Until Tombol1 = 0 Goto Setting End Sub Sub Ceksensor 87
'Reset Regkan 'Reset Regkir Call Bacaadc If Dataadc0 > Vref0 Then Sensor.0 = 1 Set Regkan.3 End If If Dataadc0 < Vref0 Then Sensor.0 = 0 End If
If Dataadc1 > Vref1 Then Sensor.1 = 1 Set Regkan.2 End If If Dataadc1 < Vref1 Then Sensor.1 = 0 End If
If Dataadc2 > Vref2 Then Sensor.2 = 1 Set Regkan.1 End If If Dataadc2 < Vref2 Then Sensor.2 = 0 End If
If Dataadc3 > Vref3 Then Sensor.3 = 1 Set Regkan.0 End If If Dataadc3 < Vref3 Then Sensor.3 = 0 End If
If Dataadc4 > Vref4 Then Sensor.4 = 1 Set Regkir.0 End If If Dataadc4 < Vref4 Then Sensor.4 = 0 End If
If Dataadc5 > Vref5 Then Waitms 1 88
Sensor.5 = 1 Set Regkir.1 End If If Dataadc5 < Vref5 Then Waitms 1 Sensor.5 = 0 End If If Dataadc6 > Vref6 Then Waitms 1 Sensor.6 = 1 Set Regkir.2 End If If Dataadc6 < Vref6 Then Waitms 1 Sensor.6 = 0 End If
If Dataadc7 > Vref7 Then Waitms 1 Sensor.7 = 1 Set Regkir.3 End If If Dataadc7 < Vref7 Then Waitms 1 Sensor.7 = 0 End If End Sub '======================================= Liatadc: Do Call Bacaadc Call Ceksensor Cls Locate 2 , 5 Lcd Bin(sensor) Select Case Locate 1 Case 1 : Case 2 : Case 3 : Case 4 : Case 5 : Case 6 : Case 7 : Case 8 : End Select
Pilihan , 1 Lcd "DATAADC0= Lcd "DATAADC1= Lcd "DATAADC2= Lcd "DATAADC3= Lcd "DATAADC4= Lcd "DATAADC5= Lcd "DATAADC6= Lcd "DATAADC7=
" " " " " " " "
; ; ; ; ; ; ; ;
Dataadc0 Dataadc1 Dataadc2 Dataadc3 Dataadc4 Dataadc5 Dataadc6 Dataadc7
89
If Tombol3 = 0 Then Waitms 200 Incr Pilihan If Pilihan > 8 Then Pilihan = 1 End If If Tombol2 = 0 Then Waitms 200 Decr Pilihan If Pilihan < 1 Then Pilihan = 8 End If If Tombol1 = 0 Or Tombol4 = 0 Then Goto Setting Waitms 100 Loop '======================================== Setting: Cls Locate 1 , 1 Lcd "ADC SENSOR PID" Do Waitms 200 If Tombol1 = 0 Then Waitms 200 Goto Liatadc End If If Tombol2 = 0 Then Waitms 200 Call Kalibrasi End If If Tombol3 = 0 Then Waitms 200 Goto Aturpid End If If Tombol4 = 0 Then Waitms 200 Goto Atur End If Waitms 50 Loop '===================================== Aturpid: 90
Do Cls Lcd "KP= " ; Kp If Tombol3 = 0 Then Incr Kp Waitms 100 If Kp > 255 Then Kp = 0 End If End If If Tombol2 = 0 Then Decr Kp Waitms 100 If Kp < 0 Then Kp = 255 End If End If If Tombol1 = 0 Then Kpeeprom = Kp Exit Do End If Waitms 50 Loop Waitms 200 Do Cls Lcd "KI= " ; Ki If Tombol3 = 0 Then Incr Ki Waitms 100 If Ki > 255 Then Ki = 0 End If End If If Tombol2 = 0 Then Decr Ki Waitms 100 If Ki < 0 Then Ki = 255 End If End If If Tombol1 = 0 Then Kieeprom = Ki 91
Exit Do End If Waitms 50 Loop Waitms 200 Do Cls Lcd "KD= " ; Kd If Tombol3 = 0 Then Incr Kd Waitms 100 If Kd > 255 Then Kd = 0 End If End If If Tombol2 = 0 Then Decr Kd Waitms 100 If Kd < 0 Then Kd = 255 End If End If If Tombol1 = 0 Then Kdeeprom = Kd Exit Do End If Waitms 50 Loop Waitms 200 Do Cls Lcd "kec= " ; Kecepatan If Tombol3 = 0 Then Incr Kecepatan Waitms 100 If Kecepatan > 255 Then Kecepatan = 0 End If End If If Tombol2 = 0 Then Decr Kecepatan 92
Waitms 100 If Kecepatan < 5 Then Kecepatan = 255 End If End If If Tombol1 = 0 Then Keceeprom = Kecepatan Goto Setting End If Waitms 50 Loop '==================< selesai >============
5.2.4 System Kalibrasi Robot Perlu diperhatikan bahwa robot adalah suatu rangkaian pasif bukan-lah suatu alat yang otomatis bisa berjalan tanpa pengecekan terlebih dahulu, maka dari itu perlunya kalibrasi terhadap program di mikrokontroler untuk mengolah data masukan dari sensor, pada bagian program robot line follower tanpa PID control terdapat program berikut Sub Ceksensor Call Bacaadc If Dataadc0 Sensor.0 End If If Dataadc0 Sensor.0 End If If Dataadc1 Sensor.1 End If If Dataadc1 Sensor.1 End If If Dataadc2 Sensor.2 End If If Dataadc2 Sensor.2 End If If Dataadc3 Sensor.3 End If If Dataadc3
> 922 Then = 1 < 922 Then = 0 > 900 Then = 1 < 900 Then = 0 > 890 Then = 1 < 890 Then = 0 > 989 Then = 1 < 989 Then 93
Sensor.3 End If If Dataadc4 Sensor.4 End If If Dataadc4 Sensor.4 End If If Dataadc5 Sensor.5 End If If Dataadc5 Sensor.5 End If If Dataadc6 Sensor.6 End If If Dataadc6 Sensor.6 End If If Dataadc7 Sensor.7 End If If Dataadc7 Sensor.7 End If
= 0 > 960 Then = 1 < 960 Then = 0 > 994 Then = 1 < 994 Then = 0 > 989 Then = 1 < 989 Then = 0 > 967 Then = 1 < 967 Then = 0
End Sub
Penggalan program tersebut merupakan program utama atau program yang diambil dari port ADC mikrokontroler, jadi jika terdapat masalah pada saat berjalannya robot mungkin jadi penggalan program tersebut mengalami masalah, bagaimana cara untuk kalibrasinya?, diambil contoh program yang pertama If Dataadc0 Sensor.0 End If If Dataadc0 Sensor.0 End If
> 922 Then = 1 < 922 Then = 0
Pada program tersebut terdapat angka 922, dari mana angka ini? Angka ini berasal dari proses kalibrasi, program tersebut maksudnya adalah mengeksekusi nilai yang diambil oleh port ADC 0 atau portA.0 pada mikrokontroller.
94
Untuk cara kalibrasinya pertama hubungkan rangkaian sensor yang telah dibuat ke port ADC atau port A.0 sampai port A.7, dan juga hubungkan port VCC – GND pada rangkaian sensor sehingga Led putih Super Bright atau infrared dapat menyala, jika menggunakan Led infrared untuk melihat apakah dia menyala atau tidak bisa menggunakan kamera handphone yang diarahkan ke Led Infrared tersebut, jika Infrared tersebut normal maka ia akan menyala terang saat kamera handphone diarahkan padanya. Setelah rangkaian sensor dan minimum system aktif, maka pada tampilan LCD terdapat dua pilihan yaitu menu “start” dan “set”, pilihlah menu “set”, maka akan masuk ke bagian kalibrasi ADC, tekanlah tombol 1 yaitu tombol pada portB.3 maka akan Nampak listADC yang mana fungsinya untuk melihat nilai ADC yang diterima oleh mikrokontroller. Siapkanlah dua buah kertas, yaitu satu kertas berwarna putih polos, dan satu kertas berwarna hitam polos untuk digunakan untuk melihat nilai ADC yang diterima. Taruhlah rangkaian sensor pada kertas putih dan catat hasilnya untuk ADC.0, kemudian taruh rangkaian sensor pada kertas hitam, maka akan terlihat perbedaan nilai ADC yang diterima, begitupula dengan pengecekan ADC.1 sampai ADC.7, misal nilai ADC.0 yang didapat pada kertas putih adalah 822 dan pada kertas hitam adalah 1022, dari nilai ini dapat diklasifikasikan yaitu dengan mengambil nilai tengah dari keduanya, dari range 1022 sampai 822 diambil nilai tengah yaitu 922, sehingga jika nilai kurang dari 922 adalah untuk nilai putih dan nilai lebih dari 922 adalah untuk nilai hitam, begitu pula dengan kalibrasi port ADC yang lain. Pada program yang ditampilkan adalah program untuk nilsi kalibrasi ADC seperti yang tertera pada tabel berikut:
Tabel 5.2.2 Tabel Kalibrasi ADC Sensor Port ADC
Nilai ADC pada
Nilai ADC pada
Nilai tengah
Kertas Putih
Kertas Hitam
ADC.0
822
1022
922
ADC.1
800
1000
900
ADC.2
780
1020
890
ADC.3
800
1020
989
ADC.4
810
1021
960
95
ADC.5
812
1024
994
ADC.6
811
1023
989
ADC.7
811
1012
967
Sehingga dari data table diatas jika sensor mengenai medan berwarna hitam akan dihasilkan nilai 1 dan jika mengenai medan putih akan dihasilkan nilai 0, karena terkena eksekusi program yang di Bold berikut
If Dataadc0 > 922 Then
Sensor.0 = 1 End If If Dataadc0 < 922 Then
Sensor.0 = 0 End If
5.2.5 Cara Penggunaan Robot Cara penggunaan robot line follower ini pertama pilih tampilan pada menu “Set”, maka akan masuk ke menu kalibrasi, jika sensor sudah membaca dengan baik pada track, langkah kedua yaitu menyimpan nilai kalibrasi tersebut dengan menekan tombol 2, setelah itu kembali ke menu awal dengan menekan tombol 4, sehingga akan tampak tampilan awal “set” dan “start”, pilihlah menu “start” yang menandakan robot siap untuk dijalankan.
NOTE: Jika mengalami kesulitan dalam penulisan program robot line follower diatas karena terlalu panjang, Anda dapat meminta program tersebut pada penulis dengan mengirimkan ke E-mail = [email protected] dijamin gratis dan akan diberikan program tersebut secepatnya
96
5.3 Membuat Robot Balancing / Robot Keseimbangan Membuat robot keseimbangan, apa itu robot keseimbangan?, sebelum dijelaskan lebih lanjut mengenai pembuatannya, sebaiknya harus mengetahui terlebih dahulu definisi dan maksud dari robot keseimbangan itu sendiri, robot keseimbangan adalah robot yang dapat berdiri dengan seimbang menggunakan dua roda sebagai tumpuan, sehingga robot tidak akan jatuh tersungkur ke bawah melainkan robot akan berusaha untuk berdiri dan menyeimbangkan keadaan, itulah gambaran dari robot keseimbangan, untuk gambarnya seperti gambar 5.3a Komponen untuk pembuatan robot keseimbangan ini tidak lah banyak hanya memerlukan sedikit kreatifitas dalam penyusunan hardware agar bisa didapat keseimbangan yang tepat dan maksimal, komponennya antara lain sensor accelerometer MMA7361, roda mobil RC atau lainnya yang berdiameter besar, rangkaian minimum system ATMega16, dan motor driver dua arah. Sensor MMA7361 Motor Driver Minimum System Body
Body Motor Driver Minimum System
Roda Roda
Gambar 5.3a Tampilan Robot Balancing Tampak Depan dan Samping
5.3.1 Fungsi dan Tujuan Fungsi dari pembuatan robot balancing ini yaitu untuk dapat mengetahui bagaimana cara untuk membuat suatu robot balancing dari proses pembuatan hardware, pembuatan software, dan penyusunan hardware pada robot, untuk tujuan dari pembuatan robot yaitu agar robot ini dapat dikembangkan kearah yang lebih bermanfaat bagi manusia terutama untuk membantu keseharian hidup manusia. 97
5.3.2 Prinsip kerja Robot Prinsip kerja robot ini hanyalah sederhana, yaitu robot akan berusaha untuk menyeimbangkan keadaan akan sudut kemiringan yang diterima, dan juga robot akan bergerak maju dan mundur untuk mendapatkan titik keseimbangan. Robot ini menggunakan system minimum ATMega16 sebagai otak dan pusat kendali robot, memang kapasitas volume flash dari ATMega16 ini kecil dari pada ATmega32 namun cukup untuk menjalankan program robot balancing ini secara bagus dan tepat. Robot ini juga menggunakan sensor kemiringan yaitu sensor accelerometer MMA7361, yang mana sensor ini bisa mendeteksi kemiringan sumbu X, sumbu Y dan sumbu Z, dengan range atau panjang nilai setiap sumbu yaitu 1 sampai 5. Robot ini juga menggunakan motor driver dua arah atau bi-direction, yaitu motor driver yang dapat mengendalikan motor DC kearah depan dan belakang, sehingga akan membuat robot dapat berjalan ke depan dan mundur kebelakang guna memperoleh titik seimbang, untuk titik seimbang pada robot yaitu 3, dari range nilai 1 sampai 5 diambil nilai tengahnya yaitu 3, artinya jika mikrokonroler mendeteksi nilai 3 pada sensor maka robot telah menemukan titik keseimbangannya, maka robot akan diam sejenak dan berusaha untuk tidak jatuh, berikut ini adalah bagan dari prinsip kerja keseleluruhan kerja robot.
Sensor Accerometer lerometer
Motor Driver dua arah / bi-direction
MMA7361 Minimum System ATMega16
Motor DC 12 V
Jadi robot ini hanya mengandalkan sensor accelerometer MMA7361 sebagai mata dari robot, yang mana data dari sensor akan dikirimkan ke system minimum untuk diolah sehingga mendapatkan nilai dan kondisi-kondisi untuk mengendalikan motor DC melalui motor driver, sebenarnya cara kerja robot keseimbangan ini bisa dibilang sederhana, yaitu jika robot mengalami kemiringan sumbu x = 2 dengan kata lain robot akan jatuh ke depan, maka robot akan otomatis berjalan maju / kedepan supaya tidak jatuh begitu pula sebaliknya, dengan 98
pergerakan kedepan dan kebelakang itu lah cara robot untuk menyeimbangkan dirinya agar tidak jatuh tersungkur ke depan atau ke belakang.
X = 4 atau 5 X = 2 atau 1
X=3
maju
mundur
diam
5.3.3 Rangkaian Hardware Seperti yang telah dijelskan sebelumnya, robot ini hanya diperlukan beberapa komponen hardware dan rangkaian hardware, untuk komponen hardware yang diperlukan yaitu sensor accelerometer MMA7361, motor DC, system penyangga dan roda RC atau sejenisnya yang berdiameter besar, untuk rangkaian hardaware hanya diperlukan rangkaian minimum system dan rangkaian motor driver dua arah / bi-direction. Berikut adalah penjelasan masingmasing komponennya.
a. Sensor Accelerometer MMA7361 Sensor Accelerometer MMA7361 ini mudah untuk digunakan, karena dia hanya memerlukan catu daya VCC 5v dan GND untuk tiap-tiap sumbu yang akan digunakan, dan juga tiap-tiap sumbu telah tersedia port Vout yang akan digunakan untuk pengolahan ke mikrokontroller. Untuk gambar dan konfigurasinya seperti Gambar 5.3b
99
Gambar 5.3b Tampilan Sensor MMA7361 dan Konfigurasi Port-nya Untuk menghubungkan antara sensor MMA7361 dengan mikrokontroller seperti pada gambar 5.3c yang mana hanya port Xout, Yout dan Zout yang akan digunakan oleh mikrokontroller untuk pengambilan data, port yang lain hanya perlu dihubungkan ke VCC dan GND mikrokontroller. Xout ke Port A.0
Yout ke Port A.1
Zout ke Port A.2
Gambar 5.3c Konfigurasi Sensor ke Mikrokontroller
100
b. Rangkaian Minimum System ATMega16 Bahan-Bahan : 1. Crystal 12Mhz x 1 buah 2. ATMega16 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. LCD Display x 1 buah 5. Resistor 4K7 x 1buah 6. Capasitor 104p x 4 buah 7. IC7805T x 1 buah 8. Capasitor polar 100uF x 1 buah 9. Capasitor polar 10uF x 1 buah 10. Capasitor 103p x 1 buah 11. Pinheader Male Secukupnya 12. Pinheader Female Secukupnya
Ke sensor
Downloader
LCD
Regulator Ke Motor driver Gambar 5.3d Minimum System ATMega16 101
c. Rangkaian Motor Driver Dua arah / Bi-direction Motor Driver yang dipakai untuk robot balancing adalah motor driver dua arah, seperti yang telah dijelaskan sebelumnya, yaitu terdapat dua buah tipe motor driver yaitu satu arah dan dua arah, untuk motor driver dua arah ada dua jenis yaitu motor driver dua arah menggunakan transistor MOSFET dan jenis lainnya yaitu menggunakan L298, pada pembahasan motor driver kali ini menggunakan motor driver dua arah dengan L298, berikut adalah gambar dari skematiknya.
5v
12v
12v
12v
Motor DC
Gambar 5.3e Skematik Rangkaian Motor Driver 2 arah dengan L298
Bahan-Bahan : 1. 2 Buah Capasitor 104p 2. 8 Buah Dioda 1N4004 3. 1 Buah L298
102
Untuk system pemasangan motor driver ke rangkaian minimum system dapat dilihat pada Gambar 5.3f, terdapat fungsi yang pada masing-masing port yang terdapat pada L298 maka dari itu perlunya ketelitian dan keterampilan dalam menyambungkannya
ke PortD.5 ke PortD.4 ke PortD.2 ke PortD.3 ke PortD.1 ke PortD.0
Gambar 5.3f Sistem Pemasangan Motor Driver ke Mikrokontroller
Perlu diperhatikan pada ENABLE_A dan ENABLE_B, pada port tersebut adalah port untuk PWM dari mikrokontroler yang masuk ke L298, apa fungsi dari PWM?, fungsi dari PWM disini yaitu untuk mengatur kecepatan putaran motor, sehingga jika ingin motor DC berjalan kencang maka isilah dengan nilai maksimal yaitu PWM = 255, jika ingin pelan isilah nilai PWM = 50 atau 100, untuk pada program terletak pada bagian berikut.
Pwm1a = 100 Pwm1b = 100
Artinya PWM A diberikan nilai 100 dan PWM B diberikan nilai 200 juga, untuk fungsi dari keempat input dari L298 yaitu untuk mengendalikan arah putaran motor (maju atau mundur), berikut adalah table konfigurasi dari motor driver.
Tabel 5.3.1 Konfigurasi Input Motor Driver PORT
Maju
Mudur
Belok Kiri
Belok Kanan
Enable_A
255
255
0
255
Enable_B
255
255
255
0
Input 1
0
1
0
0 103
Input 2
1
0
1
1
Input 3
1
0
1
1
Input 4
0
1
0
0
5.3.4 Program Bascom AVR '-----------------'balancer Robot 'by yanuar mukhammad '-----------------$regfile = "m32def.dat" $crystal = 12000000 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Adc = Single , Prescaler = Auto , Reference = Avcc Dirkiri1 Alias Portd.0 Dirkiri2 Alias Portd.1 Dirkanan1 Alias Portd.2 Dirkanan2 Alias Portd.3 Config Config Config Config Dim Dim Dim Dim Dim Dim
Portd.0 Portd.1 Portd.2 Portd.3
= = = =
Output Output Output Output
Adcx As Word Adcy As Word Sumbux As Single Sumbuy As Single Adcz As Word Sumbuz As Single
'-----------------------Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 Cls Cursor Off Start Adc Do Adcx = Getadc(0) 'ambil nilai adc 0 Sumbux = Adcx / 100 Adcy = Getadc(1) 'ambil nilai adc 1 Sumbuy = Adcy / 100
104
Adcz = Getadc(2) Sumbuz = Adcz / 100
'ambil nilai adc 2
Locate 1 , 1 Lcd "x=" ; Fusing(sumbux , "#.#") Locate 2 , 1 Lcd "y=" ; Fusing(sumbuy , "#.#") Locate 2 , 8 Lcd "z=" ; Fusing(sumbuz , "#.#") If Sumbuy < 3.8 Then Dirkiri1 = 0 Dirkiri2 = 1 Dirkanan1 = 1 Dirkanan2 = 0 Pwm1a = 50 Pwm1b = 50 Elseif Sumbuy > 3.8 Then Dirkiri1 = 1 Dirkiri2 = 0 Dirkanan1 = 0 Dirkanan2 = 1 Pwm1a = 50 Pwm1b = 50 Elseif Sumbuy = 3.8 Then Dirkiri1 = 0 Dirkiri2 = 0 Dirkanan1 = 0 Dirkanan2 = 0 Pwm1a = 0 Pwm1b = 0 End If Loop '------------------------ end
105
5.3.5 Sistem Penggunaan Robot Perlu diperhatikan bahwa sebelum penggunaan robot ini harus dikalibrasi sedikit pada tampilan nilai sensor pada LCD display, jadi sebelum robot digunakan baiknya sensor dikalibrasi dengan cara memiringkan sensor kearah sumbu x dan y agar terlihat perbedaan antara kedua nilai sumbu tersebut, jika sudah tepat dan cocok seperti yang ada di program Bascom, maka robot siap digunakan. Cara penggunaan robot ini hanya perlu meletakkan robot pada suatu dataran yang tidak memiliki kemiringan seperti di lantai atau di atas meja yang datar, maka robot akan berfungsi sebagaimana mestinya.
106
5.4 Membuat Robot Remote Control Dengan Remote TV Disini akan dibahas mengenai pembuatan robot yang pergerakannya dikontrol menggunakan remote TV, yang mana robot ini menggunakan mikrokontroler ATMega16 sebagai otak pengolah data, seperti halnya mobil remote control yang menggunakan remote control sebagai alat pengendalinya. Untuk gambar jadinya seperti berikut ini
Gambar 5..4a Bentuk dari Robot Remote Control dengan Remote TV
5.4.1 Fungsi Dan Tujuan Tujuan dibuatnya robot ini adalah untuk mengetahui sistem kerja dari robot yang dikendalian oleh remote TV. yang mana remote TV yang sebenarnya digunakan untuk mengatur kondisi TV, sekarang diubah menjadi alat untuk mengendalikan jalannya robot. Untuk fungsinya yaitu untuk dikembangkan menjadi robot yang bermanfaat bagi manusia
5.4.2 Prinsip kerja Robot Prinsip kerja dari robot ini yaitu menggunakan sebuah remote TV sebagai transmitter data dari tombol yang ditekan pada remote, dan sebagai receivernya yaitu sebuah rangkaian TSOP yang dipasang pada rangkaian minimum system, sehingga data transmitter dari remote TV dapat dibaca oleh mikrokontroler ATMega16 melalui rangkaian TSOP. Sistem pembacaan dari mikrokontroler terlebih dahulu haruslah ditampilkan pada layar LCD, agar dapat diketahui angka / data dari setiap tombol dari remote TV yang ditekan. Maka dari itu rangkaian minimum system menggunakan layar LCD sebagai media penampil 107
data dari remote TV. Terdapat sebuah buzzer pada rangkaian minimum system yang mana untuk memberikan suatu sinyal atau bell untuk robot, sehingga robot makin terlihat lebih canggih dan bagus. Berikut adalah bagan dari system robot remote control berbasis remote TV ini.
Remote TV
Rangkaian TSOP
Minimum System ATMega16
LCD dan BUZZER
Motor Driver
MOTOR DC
Jadi data yang dikirimkan oleh Remote TV, ditangkap oleh rangkaian TSOP yang kemudian dikirimkan ke rangkaian minimum system ATMega16 sebagai media pengolah data. Data yang terbaca akan dilakukan eksekusi yaitu bisa dengan menampilkan data pada layar LCD, bisa menghidupkan buzzer dan juga bisa membuat motor driver menggerakkan motor DC. Sehimgga jika motor DC bergerak, akan membuat robot berjalan.
5.4.3 Rangkaian Hardware Untuk membuat rangkaian hardware pada robot ini, hanya memerlukan beberapa komponen alat yang digunakan yaitu remote TV, rangkaian TSOP, minimum system, motor driver, dan rangkaian buzzer. a. Remote TV Remote TV yang digunakan yaitu remote TV Sony, yang mana remote TV Sony telah diketahui mengenai data tiap-tiap tombolnya, dan sistem password datanya. Untuk menggunakan tipe remote TV yang lain juga bisa, namun terlebih dahulu dibaca mengenai data password yang terkandung di Timer 0 mikrokontroler, kemudian jika telah diketahui data password remote itu, tinggal menampilkan hasil decoder perintah tiap tombol dari mikrokontroler ke layar LCD. Berikut adalah tampilan dari remote Sony yang digunakan.
Gambar 5.4b Bentuk Dari Remote TV SONY 108
b. Rangkaian TSOP Seperti yang telah dijelaskan sebelumnya, ragkaian TSOP merupakan rangkaian yang berfungsi sebagai receiver data dari remote TV, sehingga data dari remote TV bisa diterima dan dibaca dengan baik oleh mikrokontroler. Berikut adalah bentuk dari TSOP dan konfigurasinya.
Gambar 5.4c Bentuk dari TSOP
Gambar 5.4d Konfigurasi dari TSOP
TSOP jika tanpa rangkaian pendukungnya tidak akan dapat berfungsi, dikarenakan TSOP memerlukan suatu sinyal yang outputnya bisa stabil yang berupa output pulsa, maka dari itu diperlukan suatu rangkaian agar output / pulse sehingga keluarannya dapat dibaca dengan baik oleh mikrokonroler. Berikut adalah skematik dari rangkaian TSOP.
Ke Minimum System Pada Pin INT0
Gambar 5.4e Skematik Rangkaian TSOP
Bahan-bahan: a. Kapasitor polar 10uF x 1 buah b. Resistor 470ohm x 1 buah
109
c Minimum System ATMega16 Membuat rangkaian minimum sistem sebenarnya tidaklah harus sama persis dengan yang ada di contoh ini, di contoh ini hanyalah contoh dari sustu minimum system ATMega16 seperti yang telah dijelaskan sebelumnya, untuk itu bisa dimodifikasi sendiri mengenai port I/O yang akan digunakan.
Daya Motor
Motor Driver Pulse
BUZZER
LCD
REGULATOR
Gambar 5.4f Skematik Minimum System ATMega16
TSOP Port
Minimum system yang digunakan sebenarnya sama dengan yang telah dijelaskan sebelumnya yaitu minimim sytem ATMega16 karena menggunakan ATMega16 sebagai sistem kendalinya. Untuk bahan-bahannya sama dengan yang telah dijelaskan pada bab minimum system, hanya dimodifikasi pada bagian port I/O untuk rangkaian buzzer dan rangkaian TSOP. Pada gambar 5.4f terdapat port LCD display yang digunakan untuk menampilkan data dari proses decoder mikrokontroler. Terdapat pula rangkaian regulator dimaksudkan agar robot bisa menggunakan battery 9v. untuk rangkaian TSOP dipasangkan pada pin16 yaitu pada PORT INT0 karena sistem keluaran TSOP yang berbentuk pulse sehingga harus dilakukan decoder terlebih dahulu melalui port INT0 dan pengaturan Timer. Port untuk buzzer terletak pada portB.0. untuk PortB.1 dan portB.2 untuk motor driver pulse. 110
d. Rangkaian Buzzer Rangkaian Buzzer berfungsi untuk memberikan suara pada saat port yang dipasang buzzer aktif atau bernilai 1 sehingga terdapat tegangan dari mikrokontroler yang bisa membangkitkan suara pada buzzer. Berikut adalah gambar dari buzzer dan skematiknya.
Ke portB.0
Gambar 5.4g Rangkaian buzzer
Gambar 5.4h Bentuk Buzzer
Bahan-bahan: a. Buzzer x 1 buah b. Resistor 2k2 ohm x 1 buah c. Transistor BC141 x 1 buah
Dari Gambar 5.4g terdapat transistor BC141 yang mana fungsinya pada rangkaian buzzer ini adalah sebagai saklar atau seperti tombol ON/OFF, jadi pada bagian collector dan emitter tidak terhubung jika pada bagian base tidak terdapat tegangan, maka buzzer tidak akan berbunyi, karena ground rangkaian terputus, namun jika terdapat tegangan pada bagian base, maka collector dan emitter akan terhubung, sehingga buzzer akan berbunyi karena buzzer mendapat ground rangkaian
e. Motor Driver Motor driver terdapat dua jenis yaitu motor driver yang bisa menjalankan motor DC dua atah dan satu arah. Jika dua arah berarti motor DC bisa menjalankan maju dan mundur, namun jika satu arah maka hanya bisa maju saja atau mundur saja. Pada robot ini menggunakan tipe driver motor yang satu arah. Seperti pada gambar 5.9.
111
Ke portB.1 dan ke portB.2 Gambar 5.4i Motor Driver Satu Arah
Bahan-Bahan a. motor DC 12v x 2 buah b. Transistor BC141 x 2 buah c. Resistor 2k2 ohm x 2 buah d. Pinheader tunggal e. Dioda 1N4001 x 2 buah
Tabel 5.4.1 Cara kerja Pulsa Motor Driver PortB.1
PortB.2
Keterangan
1
1
-----
0
0
Berhenti
1
0
Belok ke arah kanan
0
1
Belok ke arah kiri
5.4.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '========================================================================== $regfile = "m16def.dat" $crystal = 12000000 '-------------------------Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Timer0 = Timer , Prescale = 256 Stop Timer0
112
Config Pind.3 = Input Set Portd.3 Pin_ir Alias Pind.3 Config Int1 = Falling On Int1 Isr_int1 $baud = 9600 Ddrb.0 = 1 Ddrb.1 = 1 Ddrb.2 = 1 Dim Data_ir As Word Dim Cnt_ir As Byte Dim Flag_ir_start As Bit Dim Flag_ir_ok As Bit Dim Suhu_ref As Word Dim Suhu As Word Cls Cursor Off Locate 1 , 3 Lcd "SONY DECODER" Wait 1 Enable Interrupts Enable Int1 Do If Flag_ir_ok = 1 Then Reset Flag_ir_ok Disable Int1 Gosub Isr_int1 Print "Data= " ; Data_ir Cls Cursor Off Locate 1 , 3 Lcd "Data= " ; Data_ir If Data_ir = 128 Then Locate 1 , 1 Lcd "**BUZZER***" Portb.0 = 1 Else Portb.0 = 0 End If If Data_ir = 244 Then Cls Lcd "MOTOR MAJU" Portb.1 = 1 Portb.2 = 1 End If If Data_ir = 179 Then Cls Lcd "MOTOR KIRI" Portb.1 = 0 Portb.2 = 1 End If If Data_ir = 180 Then Cls Lcd "MOTOR KANAN" Portb.1 = 1 Portb.2 = 0 End If If Data_ir = 149 Then Cls Lcd "STOP" Portb.1 = 0
113
Portb.2 = 0 End If Reset Flag_ir_ok Enable Int1 End If Wait 1 Loop Isr_int1: Timer0 = 0 Start Timer0 Bitwait Pin_ir , Set Stop Timer0 If Cnt_ir = 0 Then If Timer0 > 110 And Timer0 < 120 Then Set Flag_ir_start Incr Cnt_ir End If End If If Flag_ir_start = 1 And Cnt_ir > 0 Then Decr Cnt_ir If Timer0 < 32 Then Data_ir.cnt_ir = 0 Else Data_ir.cnt_ir = 1 End If Cnt_ir = Cnt_ir + 2 If Cnt_ir > 11 Then Shift Data_ir , Right , 1 Reset Flag_ir_start Set Flag_ir_ok Cnt_ir = 0 End If End If Return
5.4.5 Sistem Penggunaan Robot Untuk penggunaan robot ini hanya menekan tombol pada remote SONY seperti gambar 5.4j, untuk robot maju hanya perlu menekan tombol maju, agar berjalan ke kiri tinggal tekan ke kiri begitu pula dengan ke arah kanan.
Maju
Belok ke kiri
Belok Ke kanan
Gambar 5.4j Sistem Kendali Remote TV 114
5.5 Membuat Robot Remote Control Dengan Bluetooth Pada bagian ini akan dibahas mengenai pembuatan dari robot yang jalannya dikendalikan oleh komputer melalui media bluetooth. Jadi sistemnya yaitu menggerakkan robot melalui komputer secara wireless. Robot ini menggunakan mikrokontroler ATMega8 sebagai otak dan pusat pengendali aktifitas dari robot tersebut. Berikut adalah gambar dari robot tersebut.
Gambar 5.5a Bentuk dari Robot Bluetooth Untuk robot ini menggunakan pengendali komputer, sehingga diperlukan komunikasi serial untuk dapat berkomunikasi antara mikrokontroler dengan komputer, jika yang dibahas sebelumnya yaitu komunikasi serial menggunakan kabel USB dan Kabel serial, namun pada robot ini menggunakan komunikasi serial secara wireless, dengan menggunakan dua buah bluetooth device sebagai transmitter / master dan receiver / slave. 5.5.1 Fungsi Dan Tujuan Tujuan dibuatnya robot ini yaitu untuk mengetahui komunikasi serial secara wireless antara komputer dengan mikrokontroler melalui perantara bluetooth. Untuk fungsi yaitu agar dapat dikembangkan menjadi suatu sistem alat canggih yang lain yang berbasis komunikasi bluetooth. 5.5.2 Prinsip kerja Robot Prinsip kerja dari robot ini yaitu menggunakan bluetooth device sebagai media komunikasi dari komputer dengan mikrokontroler ATMega8, yang mana komputer hanya menekan tombol angka 1 pada keyboard komputer untuk robot berjalan lurus, tombol angka 2 untuk robot berbelok ke kiri, tombol angka 3 untuk robot belok ke kanan, dan tomnol angka 4 untuk robot dapat berhenti. Sebagai master atau transmitter dari komputer menggunakan 115
bluetooth USB dongle, dan untuk slave / receiver-nya menggunakan modul bluetooth JYMCU v1.03. untuk lebih jelasnya perhatikan bagan berikut ini.
Wireless KOMPUTER USB BT DONGLE
MINIMUM SYSTEM
JY-MCU V.103
Kabel konektor USB male to female
Rx, Tx, Vcc, Gnd
MOTOR DRIVER
MOTOR DC
Pada bagan diatas dapat diperhatikan mengenai komunikasi serial secara wireless ini, karena ini merupakan titik terawan untuk adanya error saat komunikasi data. Komputer yang digunakan haruslah support dengan bluetooth hardware device, dan terdapat software yang biasa digunakan untuk komunikasi bluetooth yaitu Bluesoleil, yang mana software ini sudah banyak beredar di internet dan termasuk software yang umum digunakan untuk komunikasi serial secara wireless dengan bluatooth device. 5.5.3 Rangkaian Hardware Rangkaian hardware pada robot ini cukup simple dan mudah untuk pembuatannya, karena hanya menggunakan beberapa item penyusun, yaitu modul bluetooth JY-MCU v1.03, USB bluetooth dongle, rangkaian minimum system ATMega8 dan rangkaian motor driver. a. USB Bluetooth dongle Media komunikasi dari komputer menuju ke mikrokontroler memerlukan perantara yaitu menggunakan USB Bluetooth dongle. Device ini bisa melakukan pengiriman dan penerimaan data dari bluetooth yang dituju, sehingga untuk komunikasi bolak balik cukup mendukung. Beriku gambar dari device ini.
.
Gambar 5.5b Bentuk USB BT Dongle
116
Jarak maksimal dari bluetooth untuk device ini yaitu sekitar 10 meter, jadi jika robot lebih dari 10 meter maka akan tidak terkendali karena bluetooth tidak bisa menjangkau receiver / slave yang terdapat pada mikrokontroler. Perlu dipehatikan untuk pemasangan USB bluetooth dongle, pemasangan secara langsung ke laptop atau komputer PC melalui port USB tidak akan bisa, maksudnya USB Bluetooth dongle tidak akan bisa aktif, maka dari itu diperlukan adanya kabel penghubung yang berupa kabel USB male to female untuk dapat mengaktifkan device BT Dongle ini. b. Bluetooth JY-MCU Sebagai slave atau receiver dari USB bluetooth dongle, maka lebih tepat menggunakan modul slave yang bernama JY-MCU v1.03, untuk versi bisa apa saja, namun yang dipakai pada pembahasan kali ini yaitu JY-MCU yang versi 1.03. berikut adalah bentuk dari modulnya.
Gambar 5.5c Bentuk JY-MCU v1.03 Pemasangan dari modul ini ke mikrokontroler hanya memasangkan pin RX JYMCU ke TX pin mikrokontroler, begitula dengan TX masuk ke pin Rx mikrokontroller, VCC dan GND. yang digunakan hanyalah 4 buah jalur yaitu RX, TX, GND dan VCC. Berikut bagan dan konfigurasi koneksinya
JY-MCU Ver1.03
JY-MCU Bluetooth
Minimum System ATMega8
RX, TX, VCC, GND
RX TX VCC GND
TX RX VCC GND
Minimum System
117
c. Motor Driver Motor driver yang digunakan untuk robot ini yaitu motor driver berjenis satu arah, yang mana telah dibahas sebelumnya. Motor driver ini hanya dapat membuat motor DC bergerak maju, belok ke kanan dan kekiri tanpa bisa bergerak mundur / kebelakang.Berikut adalah gambar dari motor driver tersebut.
Ke portB.0 dan ke portB.1 Gambar 5.5d Motor Driver Satu Arah d. Minimum System ATMega8
Ke JY-MCU
Motor Driver
Downloader Gambar 5.5e Skematik Minimum System ATMega8
118
Pada gambar 5.5e terdapat pinheader yang digunakan untuk JY-MCU yaitu pada JP1, dan untuk JP3 digunakan untuk ke motor driver. JP2 digunakan untuk menghubungkan ke downloader. 5.5.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m8def.dat" $crystal = 12000000 $baud = 9600 Config Portb.0 = Output Config Portb.1 = Output Enable Interrupts Dim Perintah As String * Do Perintah = Waitkey() Select Case Perintah Case "1" : ‘untuk robot Portb.0 = 1 Portb.1 = 1 Case "2" : ‘untuk robot Portb.0 = 0 Portb.1 = 1 Case "3" : ‘untuk robot Portb.0 = 1 Portb.1 = 0 Case "4" : ‘untuk robot Portb.0 = 0 Portb.1 = 0 End Select Loop
1
berjalan maju
belok ke kiri
belok ke kanan
stop
5.5.5 Cara Penggunaan Robot Untuk penggunaan robot ini yaitu yang pertama yang harus dipersiapkan adalah software serial “Hypoterminal” yang mana penggunaannya telah dibahas pada bab sebelumnya. Setelah itu mengaktifkan software “Bluesoleil” yang digunakan untuk mengaktifkan USB Bluetooth Dongle agar bisa konek pada computer, karena Software “Bluesoleil” terdapat driver yang digunakan untuk mengidentifikasi keberadaan adanya USB Bluetooth Dongle. Aplikasi pada robot ini menggunakan software Bluesoleil versi
119
6.2.227.11. Penggunaan software Bluesoleil ini cukup mudah yaitu aktifkan softwarenya sehingga nampak seperti gambar berikut.
Port Serial
Gambar 5.5f Tampilan Software Bluesoleil Setelah mengaktifkan Software Bluesoleil akan nampak device dari JY-MCU yaitu bernama “linvor”, langkah berikutnya yaitu melakukan pairing kedua device, yaitu device JY-MCU dengan komputer, untuk password dari JY-MCU yaitu 1234. Indikator jika device JY-MCU telah aktif yaitu pada icon “linvor” di Bluesoleil akan berwarna hijau dan akan tertampil icon pairing pada icon Linvor. Kemudian aktifkan Port Serial Device Linvor di Software Bluesoleil yang menandakan bahwa Port Serial telah siap digunakan, jika Port Serial aktif akan terlihat nomor Port COMM yang digunakan dan juga Device Linvor dan icon Port Serial akan berwarna hijau jika telah terkoneksi, Jika software baru saja diinstall langkah pertama yang harus dilakukan yaitu menchek list semua fitur yang disediakan oleh software dengan cara klik kanan icon “linvor”, pilih properties, kemudian akan tampak seperti gambar 5.5g, setelah itu buka tab “autorizetion” dan lakukan check list pada semua fitur yang disediakan seperti Gambar 5.5h setelah itu tekan tombol “APPLY” lalu tekan“OK”. Pada bagian Hypoterminal, cek pada Port COMM yang digunakan, untuk mengeceknya pada bagian “device and printer” untuk windows. Jika sudah mengetahui port COMM yang digunakan seperti pada gambar 5.5i, maka tekan tombol Connect. Maka Hypoterminal akan Connect ke JY-MCU dan JY-MCU akan menghidupkan led yang tadinya berkedip (blink) menjadi nyala led yang menyala terus (continue). 120
Gambar 5.5g Tampilan Menu General
Gambar 5.5h Tampilan Menu Authorization
Gambar 5.5i Tampilan Layar Hypoterminal Jika telah connect, tekan tombol angka 1 pada keyboard untuk menjalankan robot, tombol angka 2 dan 3 untuk belok ke kanan dan kiri, tombol angka 4 untuk robot berhenti.
121
5.6 Membuat Robot Remote Control Dengan Visual Basic dan APC220 Membuat robot pada bagian ini membahas tentang bagaimana cara membuat robot secara wireless menggunakan komunikasi serial dengan mikrokontroler ATMega8535, jika sebelumnya dibahas tentang komunikasi serial menggunakan Hypoterminal, sekarang Hypoterminal dimodifikasi menggunakan software visual basic 6.0, sehingga control robot dari komputer menggunakan visual basic. Berikut adalah gambar robot tersebut.
Gambar 5.6a Bentuk dari Robot Control dengan VB Robot ini menggunakan APC220 sebagai media untuk komunikasi secara wireless, sehingga dibanding dengan komunikasi serial dengan bluetooth, menggunakan APC220 memiliki kelebihan, yaitu jarak maksimal yang dapat dikendalikan oleh APC220 adalah 1000 meter atau 1 kilometer, jika bluetooth hanya menjangkau jarak maksimal 10 meter. Tidak hanya itu, robot ini juga menggunakan komunikasi visual basic dari komputer PC / laptop dan tidak menggunakan Hypoterminal, inilah yang membedakan robot ini dengan pembahasan robot sebelumnya. Namun untuk sistematika dari penggunaan robot ini sama dengan robot yang menggunakan bluetooth yaitu komputer hanya mengirimkan data angka 1, angka 2, angka 3, dan angka 4 untuk kendali jalannya robot tersebut.
5.6.1 Fungsi Dan Tujuan Fungsi dari pembuatan robot ini adalah agar dapat dikembangkan untuk alat-alat canggih lainnya, yang menggunakan methode yang sama. Tujuannya dari pembuatan robot ini adalah untuk mengetahui kinerja APC220 pada komunikasi serial secara wireless dan mengetahui pembuatan dari visual basic untuk serial mikrokontroler.
122
5.6.2 Prinsip kerja Robot Prinsip kerja robot ini menggunakan dua buah item yaitu APC220 dan software visual basic 6.0 yang berada pada komputer. Untuk bagian komunikasi serial menggunakan sepasang APC220 yang berfungsi sebagai master / transmiter dan slave / receiver. Software visual basic pada komputer terdapat dua buah tombol interface, yang mana jika tombol maju ditekan, komputer akan mengirimkan angka 1 kepada APC220 transmiter yang berada pada USB port komputer, kemudian dari APC220 transmiter diterima oleh APC220 receiver yang berada pada rangkaian minimum system, sehingga dari APC220 receiver dikirimkan ke mikrokontroler untuk pemrosesan data, berikut bagan skemanya.
Wireless Komputer
USB to serial Converter
APC 220
Master
APC 220
Minimum System
Motor Driver
Motor DC
Slave
Data yang dikirimkan oleh komputer yang berupa angka 1, 2, 3 dan 4 ditangkap oleh APC220 slave yang kemudian dikirimkan ke minimum system, dari minimum system mengirimkan data ke motor driver, sehingga jika motor driver telah diberi logika maka akan menggerakkan motor, yang mana mengindikasikan jalannya robot.
5.6.3 Rangkaian Hardware Rangkaian penyusun dari robot ini tidaklah banyak hanya memerlukan beberapa rangkaian dan modul penyusun yaitu sepasang modul APC220, minimum system, motor driver, dan software Visusl Basic 6.0. a. APC220 Master / Slave Komponen yang utama dari komunikasi serial secara wireless pada bab ini adalah APC220, yang mana APC220 memiliki beberapa kelebihan yaitu jarak jangkau yang jauh sekitar 1 km dan juga kedua APC220 ini bisa digunakan baik itu sebagai master / transmiter ataupun slave / receiver. Untuk bagian master dari APC220 yang digunakan pada USB port komputer menggunakan serial to USB konverter yang disediakan saat pembelian, karena sistem output dari APC220 berbentuk serial, dan komputer port berbentuk USB, sehingga harus menggunakan konverter untuk bisa berhubungan dengan komputer. Berikut gambar dari APC220 ini. 123
Gambar 5.6b Bentuk dari APC220 Pada saat pembelian APC220 terdapat 2 buah modul ini, dan ditambah dengan serial to USB konverter, sehingga tidak perlu membeli 2 buah modul, seperti halnya Xbee yang harus membeli 2 buah untuk dapat melakukan komunikasi. Untuk menghubungkan modul ini ke komputer dan ke mikrokontroler adalah seperti bagan berikut.
APC220 master
Serial to USB converter
Komputer / Laptop
USB Port APC220 Slave
RX, TX, VCC, GND
Minimum System
Jadi untuk menghubungkan APC220 ke mikrokontroler hanya menggunakan port RX, TX, VCC, dan GND pada minimum system. Jika ingin menghubungkan ke komputer menggunakan serial to USB converter, agar bisa masuk ke USB port komputer.
b. Motor Driver Motor driver yang digunakan untuk robot ini yaitu motor driver berjenis satu arah, yang mana telah dibahas sebelumnya. Motor driver ini hanya dapat membuat motor DC bergerak maju, belok ke kanan dan kekiri tanpa bisa bergerak mundur / kebelakang.Berikut adalah gambar dari motor driver tersebut.
124
Ke portB.0 dan ke portB.1 Gambar 5.6c Motor Driver Satu Arah
d. Minimum System ATMega8535
Downloader
Motor driver LCD
Ke APC220 slave
Gambar 5.6d Skematik Minimum System ATMega8535
125
5.6.4 Membuat Tampilan Interface Dengan Visual Basic 6.0 Pada robot ini menggunakan tampilan interface yang menggunakan software visual basic 6.0, seperti yang terlihat pada gambar dibawah ini.
Gambar 5.6e Tampilan Interfae Control Robot Dengan VB 6.0
Keterangan : Item Tombol 1 Tombol 2 Tombol 3 Tombol 4 Tombol 5 Tombol 6 Tombol 7 MSCOMM Timer1
ComboBox
Setting Caption : Mulai Name : start Caption : Stop Name : berhenti Caption : Exit Name : Command2 Caption : Up Name : atas Caption : Left Name : kiri Caption : Right Name : kanan Caption : Down Name : bawah Name : MSComm2 Name Interval Enabled Text Name
: TimerBaca : 1000 : False : PilihCOM : ComboCOM 126
TextBox
Name : Text1 Text : None MultiLine : True
Program Visual Basic untuk tampilan diatas : Option Explicit Dim arrdata() Dim TotalBaca As Integer Dim BMI As Single Dim Keterangan As String Const MAKSBACA = 10 ‘----------------------------Private Sub atas_Click() MSComm2.Output = "1" + Chr(13) End Sub ‘----------------------------Private Sub bawah_Click() MSComm2.Output = "2" + Chr(13) End Sub ‘----------------------------Private Sub berhenti_Click() start.Enabled = True berhenti.Enabled = False TimerBaca.Enabled = False End Sub ‘-----------------------------
‘mengirimkan angka 1 ke serial
‘mengirimkan angka 2 ke serial
Private Sub Command1_Click() MSComm2.Output = "3" + Chr(13) ‘mengirimkan angka 3 ke serial End Sub ‘----------------------------Private Sub Command2_Click() Unload Me End Sub ‘----------------------------Private Sub Command3_Click() MSComm2.Output = "4" + Chr(13) ‘mengirimkan angka 4 ke serial End Sub ‘----------------------------Private Sub Form_Load() Dim i As Byte For i = 1 To 16 ComboCOM.AddItem (i) Next i End Sub ‘---------------------------Private Sub start_Click() Dim u As Integer On Error GoTo ada_eror MSComm2.CommPort = ComboCOM.Text MSComm2.Settings = "9600,N,8,1" MSComm2.RThreshold = 15 MSComm2.InputLen = 15 127
MSComm2.InputMode = comInputModeText MSComm2.PortOpen = True ReDim arrdata(1 To MAKSBACA + 1) For u = 1 To MAKSBACA arrdata(u) = 0 Next TotalBaca = 0 start.Enabled = False berhenti.Enabled = True TimerBaca.Enabled = True ada_eror: If ComboCOM.ListIndex < 1 Then MsgBox "COM berada di Nomor : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "ERROR" start.Enabled = True berhenti.Enabled = True ComboCOM.Text = "Pilih COM" End If End Sub ‘----------------------------------Private Sub TimerBaca_Timer() Dim strInput As String Dim strPotong As String Dim singleInput As Single Dim u As Integer strInput = MSComm2.Input strPotong = strInput Text1.Text = Text1.Text + strPotong + vbCrLf singleInput = Val(strPotong) If TotalBaca >= MAKSBACA Then TimerBaca.Enabled = False If MSComm2.PortOpen = True Then MSComm2.PortOpen = False Call berhenti_Click End If End Sub
5.6.5 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = " m8535.dat" $crystal = 12000000 $baud = 9600 Config Portb.0 = Output Config Portb.1 = Output Enable Interrupts Dim Perintah As String * 1 Do Perintah = Waitkey() Select Case Perintah Case "1" : ‘untuk robot berjalan maju Portb.0 = 1 Portb.1 = 1 Case "2" : ‘untuk robot belok ke kiri 128
Portb.0 = 0 Portb.1 = 1 Case "3" : ‘untuk robot belok ke kanan Portb.0 = 1 Portb.1 = 0 Case "4" : ‘untuk robot stop Portb.0 = 0 Portb.1 = 0 End Select Loop
5.6.6 Cara Penggunaan Robot Untuk penggunaan robot ini menggunakan interface dari visual basic 6.0 yang mana penggunaannya yaitu pertama memilih port COMM yang digunakan, setelah itu tekan tombol Mulai, sehingga port COMM akan aktif, seperti gambar 5.6f.
Gambar 5.6f Interface Start
Gambar 5.6g Interface Control Robot
Setelah port COMM aktif, langkah berikutnya yaitu mengendalikan arah gerak dari robot. Tombol “UP” agar robot berjalan maju, tombol “LEFT” untuk belok kiri, tombol “RIGHT” untuk belok kanan dan “DOWN” agar robot berhenti seperti gambar 5.6g. jika ingin mengakhiri program dapat menekan tombol exit.
129
5.7 Membuat Robot Penerang Ruangan Membuat robot penerang ruangan ini sangatlah simple dan mudah untuk dibuat, karena menggunakan mikro servo dan ATMega8 sebagai otak untuk kendali robot. Robot ini berbeda dengan robot yang pernah dibuat sebelumnya, karena pada robot ini tidak menggunakan motor driver dan roda untuk berjalan, namun hanya menggunakan sebuah mikro servo sebagai pengendali arah gerakan dari muka robot, dimana pada muka robot terdapat sebuah led putih super bright yang terang jika menyala.
Gambar 5.7a Bentuk Robot Penerang Ruangan Sistem kendali robot ini menggunakan komunikasi serial secara nirkabel yaitu menggunakan kabel DKU-5 sebagai penghubung dari mikrokontroler menuju ke komputer. Dibagian bawah dari kepala robot terdapat sebuah mikro servo yang digunakan agar robot bisa berputar ke arah yang dituju melalui komputer. Berikut adalah rancangan yang lebih detail mengenai robot ini. Lampu LED Super Bright Putih Mikro Servo Kepala Robot Badan Robot Tampak Depan
Tampak Atas 130
5.7.1 Fungsi Dan Tujuan Tujuan dari pembuatan robot ini adalah untuk mengetahui cara kerja dari mikro servo dan sistem kerja dari komunikasi serial secara nirkabel dengan DKU-5, untuk fungsinya agar dapat dipelajari dan dikembangkan menjadi teknologi canggih yang terpadu lainnya. 5.7.2 Prinsip kerja Robot Prinsip kerja robot ini hanya memutarkan kepala robot ke suatu sudut tertentu yang mana besar sudutnya telah ditentukan melalui program pada BASCOM-AVR. Masalah pencahayan ruangan, terdapat satu buah led super bright putih 5 mm yang cukup untuk menerangkan ruangan biarpun tidak begitu terang sekali untuk ukuran ruangan tipe sedang. Sebagai kendali dari robot ini yaitu menggunakan sebuah komputer, yang mana sebagai media untuk penghubung dari komputer ke mikrokontroler menggunakan perantara kabel serial DKU-5 seperti yang telah dijelaskan pada bab sebelumnya. Berikut bagan dari sistem kerjanya.
Komputer
Kabel DKU-5
USB Port
Minimum System
Mikro servo LED SB 5mm
RX, TX, GND
Sebagai program serial dari komputer menggunakan Hypoterminal, prinsip kerjanya sama dengan konsep penggerak robot yang sebelumnya dibahas, yaitu komputer melalui port serial memberikan angka 1, angka 2, angka3 dan angka 4 yang masing-masing angka tersebut akan diolah dan dilakukan eksekusi. 5.7.3 Rangkaian Hardware Robot ini hanya menggunakan beberapa komponen penyususn yang berupa kabel DKU-5, led super bright 5mm, minimum system ATMega8 dan mikro servo. a. Kabel DKU-5 Nokia kabel DKU-5 disini digunakan sebagai media penghubung untuk komunikasi secara serial dari komputer ke mikrokontroler ATMega8, yang mana sebenarnya kabel ini adalah kabel data dari handphone Nokia yang dimodifikasi sehingga bisa untuk melakukan
131
komunikasi serial antara komputer dengan mikrokontroler. Seperti yang telah dijelaskan sebelumnya pada bab komunikasi serial. b. Led Super Bright 5 mm Posisi led 5mm super bright disini sebagai alat untuk menerangi ruangan, led ini bisa dimatikan dan dihidupkan melalui Hyperterminal pada komputer, sehingga bisa dikendalikan secara bersamaan dengan arah putar mikro servo, berikut konfigurasi led dan bentuk dari led ini.
Gambar 5.7b Tampilan Led 5 mm dan konfigurasinya
Led super bright 5 mm memerlukan rangkaian yang digunakan untuk menghidupkannya, yang mana hanya memerlukan VCC, GND dan satu buah resistor 330 ohm, skematiknya seperti gambar berikut,
Ke PortC.0
Gambar 5.7c Skematik Rangkaian Led Bahan-Bahan: a. Led 5 mm Super Bright Putih x 1 buah b. Resistor 330 ohm x 1 buah c. Pinheader 1 pin Terdapat JP1 yang digunakan untuk masuk ke port minimum system pada portC.0. VCC adalah tegangan masukan sebesar 5 volt, fungsi resistor agar mencegah terjadinya panas pada area led saat aktif dalam waktu yang lama karena terkena arus langsung
132
c. Mikro Servo Mikro Servo pada robot ini digunakan sebagai penggerak dari kepala robot, sehingga kepala robot dapat bergerak sesuai arah dan sudut yang telah ditentukan dari program yang telah dibuat. Cara kerja mikro servo adalah dengan memberikan sinyal yang berupa sudut misalnya 50, 100, 150, 90 dalam derajat. Berkut tampilan dari mikro servo.
Gambar 5.7d Mikro servo dan Horn Servo Untuk menghubungkan mikro servo dengan mikrokontroler hanya menggunakan tiga jalur yaitu jalur VCC, GND dan Data, untuk kabel merah adalah untuk VCC, hitam untuk GND, dan data pada kabel warna Orange. Setiap pabrikan akan memiliki konfigurasi warna jalur yang berbeda maka harus didefinisikan mengenai 3 jalur tersebut sebelum memasangnya. Berikut bagan pemasangannya pada minimum system. VCC Mikro servo
GND
Minimum system
PORTD.7
Konfigurasi mikro servo yang masuk ke minimum system yaitu hanya satu jalur yaitu jalur data, pada robot ini digunakan portD.7 untuk kendali mikro servo dari mikrokontroler ATMega8. d. Minimum System ATMega8 Minimum system ATMega8 digunakan sebagai otak robot dan pengendali rangkaian, sehingga minimum system berperan penting dan vital pada robot ini. Berikut adalah gambar dari minimum system yang digunakan.
133
Ke Rangkaian LED
Ke kabel DKU-5
Ke Mikro servo
Downloader
Gambar 5,7e Skematik Minimum System ATMega8
5.7.4. Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = " m8def.dat" $crystal = 12000000 $baud = 9600 Config Servos = 1 , Servo1 = Portd.7 , Reload = 10 Config Portc.0 = Output Config Portd.7 = Output Enable Interrupts Dim Perintah As String * 1 Do Perintah = Waitkey() Select Case Perintah Case "1" : ‘hidupkan led Portc.0 = 0 Case "2" : ‘matikan led Portc.0 = 1 Case "3" : ‘menggerakkan servo Servo(1) = 100 Case "4" : ‘menggerakkan servo Servo(1) = 50 Case "5" : ‘menggerakkan servo 134
Servo(1) = 220 Case "6" : ‘menggerakkan servo Servo(1) = 10 End Select Loop
5.7.5 Cara Penggunaan Robot Cara penggunaan robot ini pertama mengaktifkan dahulu program Hypoterminal dengan memastikan bahwa kabel DKU-5 sudah terpasang dan terdeteksi oleh komputer dengan baik, kedua, pada Hypoterminal dipilih port COMM yang merupakan serial dari DKU-5, jika telah terpilih maka tekan tombol connect. Seperti pada gambar berikut.
Gambar 5.7f Tampilan Hypoterminal saat aktif
Tekan tombol angka 1 pada keyboard komputer untuk menghidupkan led dan tombol angka 2 untuk mematikan led. Untuk menggerakkan mikro servo tekan tombol angka 3, 4, 5 dan 6 yang masing-masing memiliki arah hadap tersendiri.
135
BAB 6 Alat Instrumentasi
6.1 Pengenalan Tentang Alat Instrumentasi Apa itu alat instrumentasi?, pertanyaan yang pertama kali muncul. Alat instrumentasi adalah alat yang menggunakan rangkaian elektronika yang dibuat untuk suatu tujuan tertentu. Pada bab ini akan dibahas mengenai bagaimana cara membuat suatu alat elektronika yang menggunakan pengendali mikrokontroler ATMega sebagai otak rangkaian. Dalam kehidupan sehari-hari, alat instrumentasi yang berbasis elektronika sangat diperlukan untuk kebutuhan, baik itu untuk lingkungan kerja maupun lingkungan pelajar, seperrti halnya adanya alat pengukur suhu ruangan, sms gateway, detektor gas lpg, dan lainlain, sehingga sangat bermanfaat sekali jika bisa membuatnya sendiri, karena harga dari kita buat sendiri suatu alat harganya akan jauh berbeda dengan kita beli, jika termometer digital harga kita beli Rp. 125.000,00 namun jika kita buat hanya mencapai Rp. 60.000,00, sangat jauh berbeda. Komponen utama penyususn dari suatu alat elektronika biasanya yaitu mikrokontroler, sensor, modul, dan device yang dikontrol seperti led, LCD, buzzer, motor dc, motor servo dan lain-lain. Tujuan dari pembahasan pembuatan alat elektronika ini agar kita bisa membuat secara mandiri dalam membuat sustu alat yang berbasis elektronika, agar kita tidak selalu mengandalkan sifat konsumerisme, jika semua yang kita inginkan terbuat dari tangan kita sendiri rasanya akan berbeda dengan kita beli, karena alat yang kita buat itu adalah hasil karya dari buah tangan kita, sehingga akan lebih bernilai. Membuat suatu rangkaian instrument yang berbasis elektronika sebenarnya tidaklah sulit, karena hanya memerlukan beberapa komponen utama, seperti bagian proses, bagian input dan output, halnya manusia yang mengalami input data yaitu belajar, bagian proses artinya berfikir dan menguasai, dan bagian output adalah kita bertindak seperti apa yang dipelajari. Yang diharapkan dari pembahasan pada bab ini adalah dapat digunakan sebagai bahan acuan dalam membuat peralatan elektronika canggih lainnya, baik itu yang bermetode sama ataupun berbeda, sehingga akan tercipta teknologi yang baru.
136
6.2 Membuat Termometer Digital Dengan LM35 Dan Interface Visual Basic Membuat alat instrumentasi berbasis elektronika kali ini membahas mengenai pembuatan termometer digital yang dilengkapi dengan interface dari software visual basic 6.0, sehingga dapat dilakukan monitoring suhu ruangan maupun suhu keadaan di luar ruangan dengan menggunakan komputer. Alat ini menggunakan ATmega16 yang bertindak sebagai otak dan pengendali rangkaian. Untuk sensor suhu sendiri menggunakan sensor suhu LM35 yang terbukti keakuratannya dalam hal pengukuran suhu. Berikut adalah gambar rangkaiannya
Gambar 6.2a Tampilan Alat Monitoring Suhu Sebagai tampilan dari suhu terdapat dua buah interface yaitu pada LCD display dan pada interface di visual basic, sehingga akan lebih memudahkan dalam melakukan pengambilan data dan pemantauan data. 6.2.1 Fungsi dan Tujuan Fungsi dan tujuan dibuatnya alat ini adalah untuk mengetahui kinerja dari sensor LM35 sebagai sensor suhu. Fungsinya untuk mengetahui tingkat suhu disuatu tempat atau ruangan secara teratur dan terus menerus. 6.2.2 Prinsip Kerja Alat Prinsip kerja alat ini yaitu sensor suhu LM35 sebagai input data utama dari keadaan suhu yang terdeteksi, karena sensor LM35 termasuk dalam karakteristik sensor yang mengeluarkan tegangan yang kecil paling besar sekitar 0,5 volt tiap kenaikannya, kondisi ini akan sulit dibaca oleh mikrokontroler karena kecil sekali tegangan keluaran dari LM35, maka dari itu dibuatlah rangkaian penguat tegangan yang menggunakan IC LM358 sebagai pengkondisi sinyal. Dari pengkondisi sinyal dibaca oleh mikrokontroler pada bagian port 137
ADC, setelah itu Mikrokontroler akan menampilkannya ke LCD dan ke komputer melalui komunikasi serial. Untuk komunikasi serial menggunakan rangkaian RS232 sebagai media untuk melakukan komunikasi data seperti yang telah dijelaskan pada bab komunikasi serial, namun disini komunikasi tidak menggunakan port serial sehingga harus terdapat konverter serial to USB converter saat menghubungkan ke komputer. Berikut bagan alurnya.
LM35
Pengkondisi sinyal
Minimum System
ADC Port
RS232
Serial to usb konverter
Komputer
RX, TX GND Kabel Serial
LCD Display
Kabel USB / Printer
Mikrokontroler hanya bertugas untuk menmpilkan data yang ditangkap oleh sensor kemudian ditampilkan ke layar LCD dan pada interface visual basic. 6.2.3 Rangkaian Hardware Rangkaian penyusun dari alat ini tidak banyak, hanya memerlukan beberapa rangkaian penyusun yaitu rangkaian sensor LM35, rangkaian pengkondisi sinyal, dan rangkaian minimum system. a. Sensor LM35 Sensor LM35 hanya menggunakan vcc, gnd dan data, seperti gambar 6.2b yang mana hanya perlu disambungkan port data output ke input data rangkaian pengkondisi sinyal.
GND Data VCC
Gambar 6.2b Bentuk dan konfigurasi LM35
138
b. Rangkaian Pengkondisi Sinyal Rangkaian pengkondisi sinyal digunakan untuk memperbesar output tegangan dari sensor yang memiliki tegangan output yang kecil, sehingga perlu diperbesar agar mikrokontroler dapat dengan jelas membaca data tersebut.
Ke output LM35
Ke ADC port GND
Gambar 6.2c Rangkaian Pengkondisi Sinyal Bahan-Bahan : a. IC LM358 x 1 buah b. Resistor 4,85k x 1 buah c. Resistor 1,21 M x 1 buah d. Resistor 100k x 1 buah e. Variabel Resistor 100k x 1 buah f. Pinheader tunggal Pengkondisi sinyal terdapat dua buah input yaitu input + dan -, yang digunakan untuk input dari sensor LM35 adalah input + dan input – dihubungkan dengan GND. pada output tegangan dari pengkondisi sinyal masuk ke ADC port dari mikrokontroler.
c. Rangkaian Minimum System ATMega16 Rangkaian minimum system yang digunakan untuk alat ini adalah rangkaia minimum system ATMega16 yang hanya memerlukan beberapa port yaitu portC untuk LCD, portA untuk input dari sensor, dan pin RX, TX untuk komunikasi serial. Berikut gambar skematiknya
139
Ke pengkondisi sinyal
Downloader
Lcd
Komunikasi Serial Gambar 6.2d Skematik Minimum System ATMega16 6.2.4 Program Interface Visual Basic Program yang digunakan untuk interface pada alat ini menggunakan software Visual Basic 6.0 yang mana software ini sangat cocok sekali untuk berbagai macam proyek komnikasi serial dalam mikrokontroler. Berikut adalah gambar interfacenya.
SAVE
Gambar 6.2e Tampilan Output Interface
140
Keterangan : Item Tombol 1 Tombol 2 Tombol 3 MSCOMM Timer1
ComboBox TextBox
Label Tombol 4
Setting Caption : Mulai Name : start Caption : Stop Name : berhenti Caption : Exit Name : Command2 Name : MSComm2 Name : TimerBaca Interval : 1000 Enabled : False Text : PilihCOM Name : ComboCOM Name : Text1 Text : None MultiLine : True Name : Label1 Caption : None Caption : SAVE Name : simpan
Program Visual Basic untuk tampilan diatas : Option Explicit Dim arrdata() Dim TotalBaca As Integer Dim BMI As Single Dim Keterangan As String Const MAKSBACA = 10 ‘----------------------------Private Sub simpan_Click() Open "C:\Users\asus\Desktop" & "\project.txt" For Append As #1 Print #1, "======================" Print #1, “Data Suhu dengan LM35” Print #1, Label1.Caption Print #1, "======================" Print #1, Print #1, Close #1 End Sub ‘----------------------------Private Sub berhenti_Click() start.Enabled = True berhenti.Enabled = False TimerBaca.Enabled = False End Sub ‘----------------------------Private Sub Command2_Click() 141
Unload Me End Sub ‘----------------------------Private Sub Form_Load() Dim i As Byte For i = 1 To 16 ComboCOM.AddItem (i) Next i End Sub ‘---------------------------Private Sub start_Click() Dim u As Integer On Error GoTo ada_eror MSComm2.CommPort = ComboCOM.Text MSComm2.Settings = "9600,N,8,1" MSComm2.RThreshold = 15 MSComm2.InputLen = 15 MSComm2.InputMode = comInputModeText MSComm2.PortOpen = True ReDim arrdata(1 To MAKSBACA + 1) For u = 1 To MAKSBACA arrdata(u) = 0 Next TotalBaca = 0 start.Enabled = False berhenti.Enabled = True TimerBaca.Enabled = True ada_eror: If ComboCOM.ListIndex < 1 Then MsgBox "COM berada di Nomor : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "ERROR" start.Enabled = True berhenti.Enabled = True ComboCOM.Text = "Pilih COM" End If End Sub ‘----------------------------------Private Sub TimerBaca_Timer() Dim strInput As String Dim strPotong As String Dim singleInput As Single Dim u As Integer strInput = MSComm2.Input strPotong = strInput Text1.Text = Text1.Text + strPotong + vbCrLf Label1.Caption = Text1.text singleInput = Val(strPotong) If TotalBaca >= MAKSBACA Then TimerBaca.Enabled = False If MSComm2.PortOpen = True Then MSComm2.PortOpen = False Call berhenti_Click End If End Sub
142
NOTE: Pada potongan program: "C:\Users\asus\Desktop" & "\project.txt" Ubahlahlah program tersebut sesuai dengan keadaan komputer Saudara, jika pada contoh program, penulis menyimpannya pada desktop komputer, sehingga muncul alamat folder seperti yang tertera diatas, "\project.txt" adalah nama file yang akan dibuat pada saat tombol “SAVE” pada program interface visual basic ditekan, ubahlah nama file sesuai dengan nama project yang Saudara buat.
6.2.5 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m16def.dat" $crystal = 12000000 '========================== Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0 , Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc '-------------------------Dim Suhu_ref As Word Dim Suhu As Word '-------------------------Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 '-------------------------Cls Cursor Off '-------------------------Do Suhu_ref = Getadc(7) ‘ambil data ADC portA.7 Suhu = Suhu_ref * 5 ‘kalibrasi dari LM35 Suhu = Suhu / 10 ‘jika kurang tepat disesuaikan dengan termometer digital Suhu = Suhu – 225 ‘yang dijual dipasaran Locate 1 , 1 Lcd "**THERMOMETER***" Locate 2 , 1 Lcd "Suhu=" Locate 2 , 6 Lcd " " Locate 2 , 6 Lcd Suhu Locate 2 , 9 143
Lcd Chr(0) Locate 2 , 10 Lcd "C" Locate 2 , 11 Lcd " " Print Suhu Wait 1 Loop
6.2.6 Cara Penggunaan Alat Cara penggunaan alat ini pertama aktifkan interface visual basic, setelah itu konekkan melalui serial port. Pada layar LCD minimum system akan nampak data yang dibaca oleh mikrokontroler dari sensor. Data yang masuk ke interface visual basic haruslah sama dengan data tampilan pada layar LCD. Jika ingin menyimpan data tersebut pada komputer maka tekan tombol “SAVE” pada program interface visual basic. Untuk kalibrasi LM35 disesuaikan dengan alat yang sebenarnya, yaitu termometer digital yang dijual dipasaran, untuk membandingkan ke-valid-an data yang diperoleh.
144
6.3 Membuat Termometer Digital Dengan DHT11 Pada bagian ini akan dibahas mengenai pembuatan termometer digital menggunakan sensor DHT11 sebagai pendeteksi kondisi suhu. Alat ini tidaklah jauh berbeda dengan pembahasan alat yang dibuat sebelumnya, perbedaannya hanya pada sensor, jika sebelumnya membahas tentang sensor LM35 namun kali ini membahas tentang sensor DHT11 sebagai detektor suhu. Kelebihan dari sensor DHT11 ini dibanding dengan LM35 yaitu jika DHT11 ini bisa mengukur dua data sekaligus yaitu suhu dan kelembaban, jika LM35 hanya fokus pada suhu saja. Berikut adalah gambar dari alat pendeteksi suhu dengan DHT11.
Gambar 6.3a Tampilan Alat Monitoring Suhu Alat Monitoring suhu ini menggunakan mikrokontroler ATMega16 sebagai pengendali utama rangkaian, dan sensor DHT11, dilengkapi dengan layar LCD yang digunakan untuk menampilkan kadar suhu dan kadar kelembaban. 6.3.1 Fungsi dan Tujuan Tujuan dibuatnya alat ini adalah untuk mengetahui kinerja dari sensor DHT11 sebagai sensor pendeteksi suhu dan kelembaban. Fungsi dibuatnya alat ini untuk mengukur kadar / tingkat suhu disuatu tempat atau ruangan agar dapat mengetahui kondisi suhu setiap waktu. 6.3.2 Prinsip Kerja Alat Prinsip kerja alat ini adalah sensor suhu DHT11 mendeteksi tingkat / kadar suhu dan kelembaban diudara, kemudian sensor tersebut mengirimkan ke mikrokontroler berupa tegangan outputnya, pada mikrokontroler data tersebut dipecah menjadi dua yaitu data untuk
145
suhu dan data untuk kelembaban, setelah diketahui data untuk suhu dan kelembabannya, mikrokontroler menampilkan kedua data tersebut ke layar LCD. Berikut bagan alirnya. Sensor DHT11
Minimum System
LCD display
PORTB.2 Terlihat pada bagan bahwa tugas dari mikrokontroler hanya menampilkan data dari sensor DHT11 yang berupa suhu dan kelembaban ke layar LCD, yang perlu diperhatikan adalah dari sensor DHT11 ke mikrokontroler melalui portB.2 bukan port ADC. 6.3.3 Rangkaian Hardware Rangkaian hardware untuk alat ini hanyalah rangkaian hardware untuk sensor DHT11 dan minimum system ATMega16. a. Rangkaian Sensor DHT11 DHT11 merupakan sensor yang telah teruji keakuratannya dalam pengukuran suu dan kelembaban suatu udara. DHT11 memiliki perbedaan dari sensor-sensor yang lain antara lain dapat mengukur dua faktor sekaligus dalam satu sensor yaitu suhu dan kelembaban, serta harganya yang terjangkau. Untuk gambar dari sensor DHT11 seperti Gambar 6.3b
Gambar 6.3b Bentuk fisik Sensor DHT11 Sensor DHT11 terdapat empat buah kaki, yaitu VCC, Data, NC dan GND, namun yang digunakan untuk dihubungkan ke mikrokontroler hanyalah 3 kaki yaitu VCC, Data dan GND, untuk kaki NC tidak digunakan, berikut skemanya. GND VCC
DHT11
Data
PortB2 Minimum system
146
Sensor DHT11 memerlukan resistor 10K pada kaki VCC dan Data untuk menghindari arus langsung yang masuk ke sensor sebelum masuk ke mikrokontroler. Rangkaiannya seperti berikut
Data
Gambar 6.3c Rangkaian DHT11
b. Minimum System ATMega16
Ke DHT11 Downloader
LCD
Gambar 6.3d Skematik Minimum System ATMega16 JP2 pada rangkaian minimum system digunakan untuk input data dari sensor DHT11 yang mana melalui portB.2. untuk LCD tetap pada portC dan downloader pada JP1.
147
6.3.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m16def.dat" $crystal = 12000000 '-------------------------Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Cursor Off Cls Declare Sub Get_th(t As Byte , H As Byte) Config Serialin = Buffered , Size = 128 Config Serialout = Buffered , Size = 128 Dht_put Alias Portb.2 Dht_get Alias Pinb.2 Dht_io_set Alias Ddrb.2 Dim T As Byte Dim H As Byte Dim Crc As Byte Dim Mybyte As Byte Dim Sensor_data As String * 40 Dim Tmp_str8 As String * 8 Dim Count As Byte Enable Interrupts Set Dht_io_set Set Dht_put Lcd "Yanuar M." Lowerline Lcd "DHT11 sensor" Do Waitms 1500 Call Get_th(t , H) Cls Lcd "TMP: " ; T ; "C" Lowerline Lcd "PHP: " ; H ; "%" Loop Sub Get_th(t As Byte , H As Byte) Count = 0 Sensor_data = "" Set Dht_io_set Reset Dht_put Waitms 25 Set Dht_put 148
Waitus 40 Reset Dht_io_set Waitus 40 If Dht_get = 1 Then H = 1 Exit Sub End If Waitus 80 If Dht_get = 0 Then H = 2 Exit Sub End If While Dht_get = 1 : Wend Do While Dht_get = 0 : Wend Waitus 30 If Dht_get = 1 Then Sensor_data = Sensor_data + "1" While Dht_get = 1 : Wend Else Sensor_data = Sensor_data + "0" End If Incr Count Loop Until Count = 40 Set Dht_io_set Set Dht_put Tmp_str8 = Left(sensor_data , 8) H = Binval(tmp_str8) Tmp_str8 = Mid(sensor_data , 17 , 8) T = Binval(tmp_str8) Tmp_str8 = Right(sensor_data , 8) Crc = Binval(tmp_str8) Mybyte = T + H If Mybyte <> Crc Then H = 3 End If End Sub
6.3.5 Cara Penggunaan Alat Alat diberi tegangan 12v atau 9v jika terdapat rangkaian regulator, jika tidak maka menggunakan vcc sebesar 5v untuk mengaktifkan alat. Pada saat diaktifkan, LCD akan otomatis menampilkan data Suhu dan kelembaban
149
6.4 Membuat Alat Pendeteksi Maling/Pencuri Setiap orang yang memiliki rumah pasti menginginkan agar rumahnya aman dan terhindar dari yang namanya maling/pencuri, maka dari itu diperlukan suatu alat pengaman yang berfungsi untuk mengamankan kondisi rumah saat malam hari, karena pada malam hari biasanya penghuni rumah terlelap tidur, dari kondisi seperti itu maka pada bagian ini sengaja membahas mengenai pembuatan alat yang berfungsi untuk mengamankan rumah pada saat kondisi malam hari, berikut gambar alatnya.
Gambar 6.4a Tampilan Alat Pendeteksi Maling Alat ini menggunakan sensor PIR Motion Detector yang digunakan untuk mendeteksi adanya panas tubuh manusia dan gerakan pada jarak 1 meter, sehingga jika terdeteksi oleh sensor maka buzzer akan hidup dan berdering. 6.4.1 Fungsi dan Tujuan Tujuan dari pembuatan alat ini dimaksudkan untuk mengetahui cara kerja dari sensor PIR Motion Detector dan dapat membuat sendiri suatu sistem pengaman rumah. Fungsinya yaitu untuk mengamankan rumah dari maling dan bahaya yang lain pada saat rumah dalam kondisi malam hari. 6.4.2 Prinsip Kerja Alat Prinsip kerja alat ini yaitu sensor mendeteksi adanya orang di suatu titik, sensor PIR ini mendeteksi orang melalui sumber panas yang dihasilkan oleh makhluk hidup dan juga mendeteksi adanya gerakan, jadi selain manusia, hewan pun bisa terdeteksi, setelah sensor aktif maka akan mengirimkan tegangan output yang akan ditangkap oleh mikrontroler, oleh mikrokontroler memberikan perintah kepada buzzer untuk berbunyi. Untuk lebih jelasnya dapat melihat bagan berikut ini 150
Sensor PIR
Minimum System
Buzzer
Alat ini menggunakan ATMega16 sebagai pengendali dan pengatur perintah, data dari PIR sensor dibaca oleh port ADC mikrokontroler, jika terdeteksi ada orang yang lewat suatu titik maka Sensor PIR akan bernilai >1 maka akan menghidupkan buzzer, jika tidak PIR akan bernilai 0 yang artinya kondisi aman. 6.4.3 Rangkaian Hardware Rangkaian hardware untuk penyusunan alat ini terdiri dari tiga item yaitu sensor PIR Motion Detector, Minimum System ATMega16 dan rangkaian buzzer. a. PIR Motion Detector PIR (Passive Infra Red) Motion Detektor adalah sensor yang digunakan untuk mendeteksi suatu makhluk hidup yang memiliki panas tubuh dan juga mendeteksi adanya gerakan, sensor ini optimal pada jarak kurang dari 1 meter, namun tergantung jenis dari sensor PIR itu sendiri, ada yang bisa optimal kurang dari satu meter, ada yang lebih dari satu meter dan bahkan sampat 3 meter pun ada, tergantung merk dan kualitas sensor PIR itu. berikut gambarnya
Gambar 6.4b Bentuk Fisik sensor PIR Motion Detektor Sensor PIR ini hanya memiliki tiga buah kaki yaitu kaki VCC, Data Dan GND, sehingga mudah untuk digunakan untuk komunikasi dengan mikrokontroler melalui port ADC, untuk tegangan keluaran dari PIR ini dideteksi oleh portA.0, sehingga jika nilai dari portA.0 / ADC 0 lebih dari 1 maka akan menghidupkan rangkaian buzzer. b. Rangkaian Buzzer Rangkaian Buzzer digunakan sebagai rangkaian output dari mikrokontroler, agar terdapat perbedaan antara saat sensor bernilai 0 dan saat sensor bernilai >1. Buzzer yang 151
digunakan untuk alat ini adalah buzzer 5 Volt yang suaranya sangalah nyaring, jadi jika ada maling akan terdegar hingga membangunkan yang sedang tidur di kamar. Berikut gambar dari rangkaian buzzer tersebut.
PortB.0
Gambar 6.4c Rangkaian Buzzer
c. Rangkaian Minimum System ATMega16
Ke Sensor PIR
Downloader Ke BUZZER
LCD
Gambar 6.4d Rangkaian Minimum System ATMega16 152
6.4.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m16def.dat" $crystal = 12000000 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 $baud = 9600 $hwstack = 32 $swstack = 10 $framesize = 50 Dim Dummy As Integer Dim Potvalue As Integer
Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 Cls Cursor Off Config Pinb.0 = Output Config Timer1 = Pwm , Prescale = 64 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Ddrb.0 = 1 Enable Interrupts Enable Timer1 Config Adc = Single , Prescaler = 64 Start Adc Ocr1ah = 0 Ocr1ah = 0 Do Potvalue = Getadc(0) Dummy = Potvalue / 2 Dummy = Dummy / 2 Ocr1bl = Dummy Locate 2 , 2 Lcd "PIR=" Locate 2 , 8 Lcd " Locate 2 , 8 Lcd Dummy
"
'---- Buzzer If Dummy >= 0 Then Portb.0 = 1 End If
153
If Dummy = 0 Then Portb.0 = 0 End If Loop End
6.4.5 Cara Penggunaan Alat Cara penggunaan alat ini pertama letakkan alat ini di tempat yang dimungkinkan ada orang atau maling yang masuk, setelah itu letakkan alat itu didekat titik deteksi, jika semua telah selesai aktifkan alat tersebut dikala malam, supaya lebih aman letakkan buzzer dikamar tidur penghuni, agar saat buzzer berbunyi penghuni rumah dapat bangun dari tidurnya.
154
6.5 Membuat Jam Digital Pada bagian ini akan dibahas bagaimana cara membuat jam digital sederhana menggunakan mikrokontroler ATMega16 sebagai kendali utama rangkaian. Pada alat ini hanya menampilkan tanggal dan waktu tanpa bisa disetting, jadi kalau mau disetting tanggal dan waktunya harus melalui program utama. Berikut adalah tampilan dari alat tersebut.
Gambar 6.5a Bentuk dari jam digital Sederhana Alat ini dilengkapi dengan layar LCD yang difungsikan untuk menampilkan tanggal dan jam sekarang, tidak hanya itu, alat ini juga terdapat sebuah buzzer yang digunakan sebagai alarm, jadi jika telah mencapai waktu tertentu buzzer akan berbunyi. 6.5.1 Fungsi dan Tujuan Fungsi dari dibuatnya alat ini adalah untuk menampilkan waktu / jam secara terus menerus, dan menampilkan tanggal yang ter-update, dan tujuan dari pembuatan alat ini adalah untuk mengetahui bagaimana cara kerja dari rangkaian RTC (Real Time Clock) pada suatu system. 6.5.2 Prinsip Kerja Alat Prinsip kerja dari alat ini yaitu rangkaian RTC mengeluarkan clock pulse untuk mengaktifkan detik pada mikrokontroler sehingga mikrokontroler dapat melakukan pencacah secara terus menerus biarpun saat alat ini dimatikan. Mikrokontroler ATMega16 berfungsi untuk mengatur pencacah dari RTC dan menampilkannya pada layar LCD, dan juga untuk mengaktifkan rangkaian buzzer pada waktu tertentu, berikut adalah bagannya. Rangkaian RTC
Minimum System
LCD
BUZZER
155
6.5.3 Rangkaian Hardware Alat jam digital ini tersusun dari beberapa item utama yaitu minimum system, rangkaian RTC dan Rangkaian buzzer. a. Minimum System ATMega16
Downloader
LCD
RTC
Buzzer Gambar 6.5b Skematik Minimum System ATMega16 Pada Port SCL dan SDA pada mikrokontroler ATMega16 digunakan sebagai input dari rangkaian RTC untuk mengaktifkan pencacah pada mikrokontroler, dan untuk buzzer berada pada portD.0.
b. Rangkaian RTC Rangkaian RTC adalah rangkaian yang sangat penting didalam pembuatan jam digital, fungsi dari rangkaian RTC ini adalah untuk melakukan pencacahan detik pada jam saat alat tidak dalam kondisi aktif atau mati, jadi biarpun alat mati, saat dihidupkan jam dan tanggal masih update. Berkut adalah skematik dari RTC.
156
Ke pin SCL Ke pin SDA
Gambar 6.5c Skemarik Real Time Clock Bahan-bahan: a. Crystal 32.768KHz x 1 buah b. Battery 3v x 1 buah c. IC DS1307 x 1 buah d. Resistor 10kohm x 2 buah Untuk dapat berkomunikasi dengan minimum system, rangkaian RTC menggunakan dua buah pin yaitu pin SCL dan SDA, tepatnya pada portC.0 dan portC.1 untuk melakukan pencacahan. Berikut adalah konfigurasi rangkaian RTC ke mikrokontroler. VCC
SCL Rangkaian RTC
Battery
SDA
Minimum System
Daya yang digunakan oleh RTC untuk mengaktifkan clock pulse yaitu berasal dari battery 3V yang terpasang pada IC DS1307. VCC digunakan hanya untuk memberikan tegangan saat alat aktif, jika alat dalam kondisi off maka yang melakukan suplay tegangan adalah battery 3v, agar terus melakukan pencacahan walaupun alat dalam keadaan mati.
b. Rangkaian Buzzer Rangkaian buzzer yang digunakan adalah rangkain buzzer 12v atau 5v yang suaranya dapat membangunkan orang yang sedang tidur, ini dimaksudkan agar alarm dapat berfungsi sebagai alat untuk membangunkan orang tidur pada jam tertentu. Berikut adalah rangkaian buzzer tersebut. 157
Ke PortD,0
Gambar 6.5d Skematik Rangkaian Buzzer 6.5.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m16def.dat" $crystal = 12000000 $baud = 9600 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config Lcd = 16 * 2 $lib "ds1307clock.lib" Config Sda = Portc.1 Config Scl = Portc.0 Const Ds1307w = &HD0 Const Ds1307r = &HD1 Config Clock = User Dim Weekday As Byte Dim Char As String * 10 , Tanda As String * 1 Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10 Dim Hari As String * 10 , Bulan As String * 10 , Tahun As String * 10 Dim A As Byte , B As Byte , C As Byte Dim X As Byte , Y As Byte , Z As Byte Dim Waktu As String * 10 Dim Tanggal As String * 10 Time$ = "13:30:00" Date$ = "02-20-12"
‘setting waktu awal ‘setting tanggal awal
158
Ddrd.0 = 1 Print "Tanggal: " ; Date$ Print "Waktu:" ; Time$ Cls Cursor Off Locate 1 , 1 Lcd "Tanggal: " ; _day ; "-" ; _month ; "-" ; _year Locate 2 , 1 Lcd "Waktu : " ; _hour ; ":" ; _min ; ":" ; _sec Wait 1 Mulai: Do Print "Tanggal: " ; Date$ Print "Waktu:" ; Time$ Cls Cursor Off Locate 1 , 1 Lcd "Tanggal: " ; _day ; "-" ; _month ; "-" ; _year Locate 2 , 1 Lcd "Waktu : " ; _hour ; ":" ; _min ; ":" ; _sec Wait 1 If _hour = 4 Then Portd.0 = 1 Else Portd.0 = 0 End If
‘setting waktu alarm
Loop End 'Pengambilan data RTC DS1307 Getdatetime: I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cstart I2cwbyte Ds1307r I2crbyte _sec , Ack I2crbyte _min , Ack I2crbyte _hour , Ack I2crbyte Weekday , Ack I2crbyte _day , Ack I2crbyte _month , Ack I2crbyte _year , Nack I2cstop _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) Return Setdate: 159
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year) I2cstart I2cwbyte Ds1307w I2cwbyte 4 I2cwbyte _day I2cwbyte _month I2cwbyte _year I2cstop Return Settime: _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cwbyte _sec I2cwbyte _min I2cwbyte _hour I2cstop Return
Perlu diperhatikan bahwa saat melakukan download program ke mikrokontroler, terlebih dahulu setting waktu awal dan setting tanggal awal, diedit sesuai dengan tanggal dan waktu sekarang, setelah didownload, maka lakukanlah download yang kedua dengan menghilangkan kode berikut. Time$ = "13:30:00" Date$ = "02-20-12"
‘setting waktu awal ‘setting tanggal awal
Karena jika kode tersebut tidak dihilangkan akan melakukan looping ke tanggal dan waktu awal ketika alat dimatikan, sehingga akan membuat program dan alat tidak berfungsi maksimal. Kode program yang digunakan untuk membunyikan alarm yang berupa buzzer yaitu pada : If _hour = 4 Then Portd.0 = 1 Else Portd.0 = 0 End If
Program tersebut maksudnya yaitu menghidupkan buzzer saat jam menunjukkan 4 pagi, maka alarm akan berfungsi dan aktif. Jika menginginkan rangkaian buzzer aktif pada jam / waktu yang lain maka dapat dirubah sesuai kebutuhan.
160
6.5.5 Cara Penggunaan Alat Cara penggunaan dari alat ini hanya menghidupkan alat dengan tegangan 12 v atau 9 v jika terdapat regulator, namun jika tidak ada rangkaian regulator dapat menggunakan 5v. pada saat alat ini diaktifkan , akan tertera waktu awal dan tanggal awal pada layar LCD seperti yang telah disetting sebelumnya pada program BASCOM-AVR.
161
6.6 Membuat RFID dengan RDM 630 dan Interface Visual Basic Sudah tahu apa itu RFID?, RFID adalah sebuah alat yang diguanakan untuk mendeteksi kode yang terdapat pada tag card, bisa dikatakan Alat pembaca kode kartu tag. Biasanya RFID digunakan untuk pengaman rumah atau penghitung barang. RFID tanpa tag card tidak akan berfungsi, karena tag card tersebut difungsikan untuk dibaca oleh RFID, kartu tag ini bukan kartu sembarangan, kartu tag adalah kartu khusus yang dibuat untuk dideteksi oleh RFID yang mana kartu tag ini telah didefinisikan suatu kode didalamnya. Kartu tag yang satu dengan yang lainnya jika dilihat dari bentuk akan sama namun kode yang terdapat didalamnya akan berbeda. RFID yang akan dibahas pada bab ini menggunakan RDM630, modul ini sangat cocok untuk proyek RFID tanpa mikrokontroler, karena modul ini memang disetting untuk berhubungan secara langsung dengan komputer atau device lain, namun jika ingin menghubungkan modul ini dengan mikrokontroler atau arduino juga bisa. Modul RDM630 membutuhkan tag card yang digunakan sebagai object yang akan dibaca. Modul ini berfungsi hanya membaca kode yang terdapat pada tag card. Pada bab ini akan dibahas mengenai koneksi modul RDM630 ke komputer, yang mana dikomputer telah terdapat interface yang terbuat dari visual basic 6.0 yang dimaksudkan untuk menampilkan pembacaan dari modul RDM630 pada tag card. Berikut adalah gambar dari alat RFID berbasis modul RDM630.
Gambar 6.6aBentuk dari alat RFID berbasis RDM630 6.6.1 Fungsi dan Tujuan Fungsi dibuatnya alat ini adalah untuk mengetahui suatu nilai yang terdapat pada tag card / kartu, dan tujuannya adalah untuk mengetahui bagaimana cara komunikasi antara dua device yaitu modul RFID RDM630 dengan komputer.
162
6.6.2 Prinsip Kerja Alat Prinsip kerja dari alat ini menampilkan hasil pembacaan dari modul RDM630 terhadap tag card. Hasil pembacaan ditampilkan ke interface visual basic 6.0 melalui komunikasi serial, bisa menggunakan serial secara nirkabel atau wireless. alat ini tidak menggunakan mikrokontroler untuk mengolah data, jadi yang bertindak sebagai pengatur alat dan otak adalah modul RDM630 itu sendiri. Berikut adalah bagan dari prinsip kerja alat ini.
Tag Card
Modul RDM630
Komputer Kabel DKU-5
RX, TX , GND
USB port
Dari modul RDM630 menggunakan 3 jalur data yaitu RX, TX dan GND. fitur yang disediakan oleh modul RDM630 ke komputer hanyalah port RX dan TX, sehingga modul hanya bisa berkomunikasi dengan device lain menggunakan 2 port ini.
6.6.3 Rangkaian Hardware Rangkaian hardware untuk membuat alat ini hanyalah 3 item yaitu modul RDM6300, Tag card dan sebuah kabel untuk komunikasi serial. a. Modul RDM630 Modul RDM630 adalah modul yang digunakan untuk membaca kode dari tag card. Modul ini tidak bisa menampilkan secara mandiri mengenai kode yang dibacanya sehingga memerlukan device lain sebagai penampil. Terdapat 2 port yang digunakan untuk komunikasi ke device lain yaitu port Rx dan TX. Berikut adalah gambar dari modul RDM630 dan konfigurasinya.
GND
VCC
Led
RX TX
Reader
Gambar 6.6b Bentuk dari modul RDM630 dan konfigurasinya 163
Port 1 dan 2 pada P2 digunakan untuk menghubungkan modul RDM630 ke reader, untuk readernya telah disediakan pada saat pembelian modul ini yang mana reader berupa lilitan kawat tembaga yang telah didesain khusus untuk membaca tag card. Modul ini membutuhkan tegangan input VCC sebesar 5v untuk mengaktifkan readernya. Pada baris port P3 terdapat satu pin yang digunakan sebagai led, maksudnya yaitu untuk sebagai indikator kalau modul telah siap untuk membaca tag card. b. Tag Card Tag card adalah sebuah instrument yang didalamnya berisi kode-kode tertentu yang bisa dibaca oleh suatu alat tertentu, Tag card biasanya memiliki 2 bentuk yaitu berbentuk kartu dan berbentuk gantungan kunci, namun pada alat ini menggunakan tag card yang bentuk kartu.
Gambar 6.6c bentuk dari Tag card yang berupa kartu
Setiap tag card memiliki konfigurasi kode yang berbeda-beda, variabel kodenya yaitu melingkupi huruf A - Z dan dicampur angka 1 – 9 sehingga kemungkinan untuk kode tersebut ada yang sama pada satu kartu dengan kartu lainnya sedikit sekali.
6.6.4 Interface Visual Basic Interface visual basic digunakan untuk menampilkan hasil pembacaan dari reader modul RDM630, karena modul RDM630 tidak memiliki device yang digunakan untuk menampilkan data pembacaannya, maka dari itu membutuhkan device lain untuk menampilkan datanya melalui port RX dan TX.
164
Interface visual basic ini menggunakan 2 buah form, form pertama digunakan untuk melakukan koneksi dengan port serial, dan form kedua digunakan untuk menampilkan dara dari data reader modul RDM630, berikut tampilannya fom1 dan form2nya.
Gambar 6.6d Tampilan Interface Form 1
Keterangan: Item ComboBox
Keterangan Name = Combo1 Text = Com
ComboBox
Name = Combo2 Text = Setting
Tombol1
Name = cmdConnect Caption = Connect
Tombol2
Name = cmdDisconnect Caption = Disconnect
Tombol3
Name = Command1 Caption = Close
Tombol4
Name = Command2 Caption = Monitor
Timer
Name = Timer1 Interval = 1000
MSCOMM
Name = MSComm1
165
Kode Program : Private Sub cmdConnect_Click() Dim port As Integer On Error GoTo errcode
If MSComm1.PortOpen = False Then MSComm1.CommPort = Combo1.ListIndex + 1 MSComm1.RThreshold = 1 MSComm1.InputLen = 0 MSComm1.Settings = Combo2.List(Combo2.ListIndex) & ",N,8,1" MSComm1.PortOpen = True cmdConnect.Enabled = False cmdDisconnect.Enabled = True End If Exit Sub errcode: MsgBox "Port Salah !", vbOKOnly, "Peringatan" Combo1.SetFocus End Sub Private Sub cmdDisconnect_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If cmdConnect.Enabled = True cmdDisconnect.Enabled = False End Sub Private Sub Command1_Click() Unload Me Unload Form2 End Sub Private Sub Command2_Click() Form2.Show End Sub
Private Sub Form_Load() Dim i As Byte For i = 1 To 16 Combo1.AddItem (i) Next i With Combo2 .AddItem "2400" .AddItem "4800" .AddItem "9600" .AddItem "19200" .AddItem "38400" .AddItem "56600" 166
End With Timer1.Enabled = False cmdConnect.Enabled = True cmdDisconnect.Enabled = False End Sub Private Sub Timer1_Timer() MSComm1_OnComm End Sub
Gambar 6.6e Tampilan Interface Form2
Keterangan: Item TextBox
Keterangan Name = Text1 Text = none
Timer
Name = Timer2 Interval = 1000
Kode Program: Private Sub Form_Load() Form2.Timer2.Enabled = True End Sub Private Sub Text1_Change() 'Timer1.Enabled = False ' MSComm1.InBufferCount = 0 'FGerbang_Keluar.Focus() 'Timer2.Enabled = False End Sub Private Sub Timer2_Timer() Dim data As String Dim buffer As String If Form1.MSComm1.InBufferCount > 0 Then 167
buffer = Form1.MSComm1.Input data = Mid$(buffer, 2, 12) 'If data <= 12 Then 'MSComm1.InBufferCount = 0 ' My.Computer.Audio.Play(My.Resources.try_again, AudioPlayMode.Background) 'MsgBox("Ulangi") 'Else 'With Text1 '.SelStart = Len(.Text) '.SelText = data 'End With 'Else Form2.Text1.Text = data Form1.MSComm1.Output = "A" & Chr$(13) 'MSComm1.InBufferCount = 0 End If 'End If End Sub
6.6.5 Cara Penggunaan Alat Cara penggunaan alat ini pertama hubungkan port RX, TX dan GND ke kabel DKU-5 atau yang lain, setelah itu nyalakan modul RDM630 dengan diberi tegangan 5v. pada layar komputer tampilkan program interface dari VB 6.0 yang telah dibuat. Konekkan dengan port serial yang terkait, jika berhasil konek maka tekan tombol monitor untuk membuka form2, pada form 2 terdapat textbox yang digunakan untuk menampilkan hasil pembacaan dari modul RDM630. Dekatkan Tag card pada reader modul RDM630 yang berupa lilitan kawat, setelah itu akan terlihat kode yang tersimpan pada kartu tag tersebut pada textbox form2.
168
6.7 Membuat RFID Dengan Reader ID-12 Seperti yang telah dijelaskan sebelumnya, bahwa fungsi dari RFID adalah untuk membaca rangkaian kode-kode yang terdapat pada tag card. Variasi kode dari tag card mencakup nilai 1-9 dan huruf A-Z sehingga setiap tag card kecil kemungkinan berkode sama. Pembahan RFID pada bab ini mengunakan ID-12 yang dikomunikasikan ke mikrokontroler, kemudian mikrokontroler akan mengeksekusi data tersebut dengan menghidupkan led merah atau hijau, jika kartu tersebut telah terdaftar maka akan bernilai hijau jika didekatkan ke ID-12, jika belum terdaftar maka akan menghidupkan lampu merah. Berkut adalah tampilan dari alat RFID menggunakan ID-12.
Gambar 6.7a Bentuk Dari RFID menggunakan ID-12 ID-12 pada alat ini berfungsi sebagai reader untuk membaca kode-kode yang terdapat pada suatu tag card, kemudian dari hasil pembacaan ID-12 dikirimkan ke mikrokontroler untuk pemrosesan data. Perbedaan RFID menggunakan ID-12 dengan RDM630 yaitu jika ID-12 membutuhkan suatu rangkaian untuk bisa mengaktifkannya, rangkaian tersebut telah didesain khusus untuk ID-12, jadi jika hanya ID-12 saja tanpa rangkainnya tidak akan bisa aktif, berbeda dengan RDM630, yang mana modul ini langsung bisa digunakan tanpa memerlukan rangkaian tambahan dan readernya pun telah ada pada saat pembelian modul ini.
6.7.1 Tujuan dan Fungsi Tujuan dari pembuatan alat ini adalah untuk mengetahui cara kerja dari ID-12 yang berkoordinasi dengan mikrokontroler ATMega8535. Fungsinya adalah untuk bisa sebagai bahan pembelajaran dan pengembangan mengenai teknologi RFID lebih lanjut.
169
6.7.2 Prinsip Kerja Alat Prinsip kerja dari alat ini adalah mengeksekusi data yang dibaca oleh reader ID12 ke 3 buah led, jika tampilan default yaitu lampu putih menyala sebagai tanda bahwa alat siap membaca tag card yang didekatkan. Terdapat led hijau dan merah untuk sebagai indikator bahwa tag card tersebut telah terdaftar atau belum, jika belum terdaftar maka akan menghidupkan lampu merah, sebaliknya jika terdaftar akan menghidupkan lampu hijau. Berikut skema kerjanya. Tag Card
Reader ID-12
3 buah LED
MinSys ATMega8535
Tag card dibaca oleh reader ID-12, dari ID-12 dikirmkan data ke mikrokontroler ATMega8535, disini data diproses dan dipilah sesuai dengan program, dari mikrokontroler dikeluarkan ke dua buah indikator led yaitu led merah dan led hijau.
6.7.3 Rangkaian Hardware Rangkaian hardware penyusun alat ini adalah rangkaian reader ID-12, minimum system ATMega8535 dan 3 buah led sebagai output. a. Rangkaian Reader ID-12 Reader ID-12 bertugas untuk membaca kode-kode yang terdapat pada tag card, yang mana jika reader ID-12 ini berdiri sendiri dia tidak akan bisa aktif, karena reaer ID-12 ini bukanlah sebuah modul melainkan komponen yang memerlukan rangkaian untuk mengaktifkannya. Berikut adalah bentuk dan skematiknya.
TX ke Minsys
S3
RX ke komputer Ke RS232
S1
S2
Gambar 6.7b Bentuk ID-12 dan Skematik Rangkaiannya 170
Bahan-bahan: a. ID-12 x 1 buah b. push button x 3 buah c. Resistor 100 ohm x 2 buah d. Resistor 1Kohm x 2 buah e. Led biru 3 mm x 1 buah f. Buzzer 5v x 1 buah g. Transistor BC337 x 1 buah h. DB9 x 1 buah (opsional) Perlu diperhatikan untuk konfigurasi dari rangkaian ID-12, pada skematik rangkaian terdapat tiga buah saklar, yang mana tiap saklar tersebut memiliki fungsi yang berbeda-beda yaitu saklar 1 (S1) untuk kode ASCII, saklar 2 (S2) untuk kode Wiegand26 dan yang satu lagi saklar 3 (S3) untuk Magnet Emulation, pada penjelasan dibagian ini menggunakan saklar ASCII yang terhubung ke GND, atau dengan kata lain output reader ID-12 berjenis ASCII, biasanya pengguna reader ID-12 menggunakan fungsi saklar ASCII sebagai output keluaran dari ID-12 ini, lalu bagaimana caranya agar rangkaian reader ID-12 berformat output kode ASCII? Berikut table penjelasannya.
Terlihat dengan jelas bahwa output dari rangkaian reader ID-12 dapat berupa ASCII, Magnet Emulation dan Wiegand, maka dari perlunya memahami konfigurasi ini terlebih dahulu agar hasil output ID-12 tidak error, untuk menghasilkan output kode ASCII pada rangkaian reader ID-12 dapat menghubungkan saklar 1 ke GND, dan saklar yang lain dibiarkan terbuka, hanya saklar 1 saja yang dihubungkan ke GND, seperti yang terlihat pada table diatas, berikut adalah penjelasan lengkapnya. 1. ASCII = Saklar 1 terhubung ke GND, saklar 2 dan 3 terbuka / tidak terhubung ke GND 2. Magnet Emulation = Saklar 3 terhubung ke GND, saklar 1 dan 2 terbuka / tidak terhubung ke GND / 0 V 171
3. Wiegand26 = Saklar 2 terhubung ke GND, saklar 1 dan 3 terbuka / tidak terhubung ke GND / 0 V
Selain ID-12 ini dapat mengeluarkan tiga buah jenis output, RFID dengan reader ID-12 ini juga dapat melakukan dua buah komunikasi data yaitu komunikasi dari rangkaian ID-12 ke mikrokonroler menggunakan port D0, dan komunikasi data dari ID-12 ke komputer menggunakan port D1. Berikut ilustrasinya.
Minimum System
Rangkaian Reader ID-12
D0
RX
RX Komputer
Rangkaian Reader ID-12
Kabel DKU-5
D1
Port USB
Seperti pada ilustrasi bahwa yang berperan untuk berkomunikasi dari rangkaian ID-12 ke device lain adalah port D0 dan D1 yang mana port ini sebenarnya adalah port RX dan TX sehingga port ini memang di fungsikan untuk berhubungan device lain. Saat rangkaian ID-12 ini membaca suatu kode dari tag card, rangkaian ID-12 ini akan menghidupkan led yang terpasang pada rangkaian, saat led menyala, saat itu pula buzzer akan berbunyi untuk menandakan bahwa ID-12 mendapatkan suatu data yang siap dikirimkan ke device lain.
b. Minimum System ATMega8535 Seperti biasa minimum system ATMega8535 ini berfungsi sebagai otak dan pemrosesan data dari reader ID-12 untuk dikeluarkan dalam bentuk nyala led. Pada minimum sistem ini disambungkan ke tiga buah led yang berwarna putih, hijau dan merah. Berikut adalah skematik minimim sistemnya yang terhubung ke rangkaian ID-12.
172
Downloader
LED
Regulator LCD
Gambar 6.7c Tampilan Skematik ATMega16 / 8535 / 32
Bahan-Bahan : 1. Crystal 12Mhz x 1 buah 2. ATMega16 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. LCD Display x 1 buah 5. Resistor 4K7 x 1buah 6. Capasitor 104p x 4 buah 7. IC7805T x 1 buah 8. Capasitor polar 100uF x 1 buah 9. Capasitor polar 10uF x 1 buah 10. Capasitor 103p x 1 buah 11. Pinheader Male Secukupnya 12. Pinheader Female Secukupnya
173
Untuk menghubungkan antara rangkaian RFID dengan minimum system ATMega16 dapat dilihat pada Gambar 6.7d, yang diperlukan hanyalah kabel penghubung antara D0 pada ID-12 dengan port RX pada mikrokontroller
Led Output
Gnd
LCD
Buzzer
S3
S1
Serial untuk ke komputer
S2
Gambar 6.7d Skematik Minimum System yang Terhubung ke Rangkaian ID-12
Port yang digunakan untuk komunikasi ke rangkaian reader ID-12 adalah port RX, karena port ini adalah port untuk input, yang mana dapat menerima data dari device lain. Pada portB.0, portB.1 dan portB.2 disambungkan rangkaian led yang difungsikan untuk sebagai indikator dari pembacaan reader ID-12.
174
6.7.4 Program BASCOM-AVR $regfile = "m16def.dat" $crystal = 12000000 $baud = 9600 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Portb = Output Portb = 0 Led1 Alias Portb.0 ‘led hijau Led2 Alias Portb.1 ‘led merah Led3 Alias Portb.2 ‘led putih Dim Y As String * 20 , Id As String * 10 Dim X As Integer Locate 1 , 1 Lcd “Tutorial RFID” For X = 1 To 20 Shiftlcd Left Waitms 100 Next Cls Portb.2 = 1 ‘untuk menyalakan lampu putih sebagai default Do Y = Inkey() Input Y Noecho Id = Mid(y , 8 , 7) ‘mengambil data ke 8 sampai tujuh data selanjutnya ‘Id = Right(y , 7) Cls Cursor Off Locate 1 , 1 Lcd “Dekatkan Kartu” Locate 2 , 5 Lcd Id Wait 2 Select Case Id Case “AED523D” : ‘jika yang terdeteksi kode AED523D Led1 = 1 ‘ led hijau menyala Led2 = 0 Led3 = 0 Cls Cursor Off Locate 1 , 3 Lcd “Terdaftar” Wait 2 Case Led1 Led2 Led3
“AF13F4C” : ‘jika yang terdeteksi kode AF13F4C = 0 = 1 ‘led merah menyala = 0
175
Cls Cursor Off Locate 1 , 3 Lcd “Belum terdaftar” Wait 2 End Select Loop
6.7.5 Cara Penggunaan Alat Untuk cara penggunaan alat ini sangatlah mudah, hanya perlu mendekatkan tag card bisa berupa kartu atau gantungan kunci ke reader ID-12, maka reader akan membaca kode yang tersimpan didalam tag card tersebut dan akan mengirimkannya ke mikrokontroler untuk diolah datanya, jika kode kartu ” AED523D “ maka led hijau akan menyala, jika “AF13F4C” maka led merah yang akan menyala.
176
6.8 Membuat Fusebit AVR Doctor Pernah mengalami mikrokontroler error? atau mikrokontroler tidak mau berjalan semestinya?, komponen elektronika yang berhubungan dengan listrik pasti akan sering sekali mengalami error dan biasanya komponen tersebut relatif sudah lama tidak dipakai atau dipakai terus-terusan, nah kejadian ini-lah yang akan diantisipasi pada pembahasan kali ini, yang mana pada pembahasan kali ini membahas tentang bagaimana membuat AVR Doctor yang digunakan untuk memperbaiki mikrokontroler yang error saat beroperasi. Error dari mikrokontroler sangat bervariasi untuk kejadian yang sering sekali dialami yaitu masalah terkuncinya port atau bahasa lainnya terkena “lock”, jadi saat mikrokontroler didownload sebuah program dia masih bisa menerima, namun saat proses outputnya atau eksekusi data ke suatu port dia tidak mau melakukannya, hasilnya port tersebut seperti tidak berfungsi, nah disinilah fungsi dari AVR Doctor dibutuhkan. AVR Doctor ini bisa membuka kembali port mikrokontroler yang ter-lock oleh suatu system internal mikrokontroler dan juga bisa menyembuhkan ketika suatu mikrokontroler tidak mau didownload sebuah program, itu artinya port MISO, MOSI, SCK ada yang mengalami “lock” sehingga tidak bisa difungsikan port-nya. Berikut ini adalah gambar dari sebuah Fusebit AVR Doctor.
Gambar 6.8a Bentuk dari AVR Fusebit Doctor
177
AVR Fusebit Doctor ini bisa menyembuhkan berbagai tipe mikrokontroler, terutama yang bertipe AVR, berikut adalah tipe-tipe mikrokontroler yang bisa disembuhkan oleh alat ini. 1kB: AT90s1200, Attiny11, Attiny12, Attiny13, Attiny15 2kB: Attiny2313, Attiny26, Attiny261, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2323, AT90s2343 4kB: Atmega48, Atmega48P, Attiny461, Attiny43U, Attiny4313, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45 8kB: Atmega8515, Atmega8535, Atmega8, Atmega88, Atmega88P, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny861, Attiny88, Attiny85 16kB: Atmega16, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164, Atmega164P, Atmega165, Atmega168, Atmega168P, Atmega169, AT90pwm216, AT90pwm316, AT90usb162 32kB: Atmega32, Atmega32U4, Atmega32M1, Atmega324, Atmega324P, Atmega325, Atmega3250, Atmega325P, Atmega3250P, Atmega328, Atmega328P, Atmega329, Atmega3290, AT90can32 64kB: Atmega64, Atmega64M1, Atmega649, Atmega6490, Atmega640, Atmega644, Atmega644P, Atmega645, Atmega6450, AT90usb646, AT90usb647, AT90can64 128kB: Atmega103, Atmega128, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128 256kB: Atmega2560, Atmega2561
6.8.1 Fungsi Dan Tujuan Fungsi dibuatnya alat ini adalah untuk menyembuhkan mikrokontroler terutama yang bertipe AVR dari terkuncinya suatu port mikrokontroler atau kata lainnya terkena “lock”, dengan begitu mikrokontroler diharapkan bisa digunakan kembali tanpa harus membeli baru. Untuk tujuannya agar mengetahui bagaimana cara penyembuhan dari keadaan port mikrokontroler yang mengalami “lock”.
6.8.2 Prinsip Kerja Alat Prinsip kerja dari alat ini yaitu merepair fusebit atau internal clock yang membuat suatu port mengalami lock. Untuk penggunaannya hanyalah menekan tombol start yang diikuti dengan nyala-nya led berwarna hijau, yang mengindikasikan bahwa fusebit telah
178
disembuhkan dan bisa kembali digunakan, jika led tidak menyala berarti mikrokontroler tersebut tidak error pada fusebitnya namun komponen internalnya ada yang rusak sehingga tidak bisa diperbaiki dengan alat ini. Alat ini dilengkapi dengan sebuah led merah sebagai indikator bahwa alat ini siap digunakan.
6.8.3 Rangkaian Hardware Rangkaian penyusun untuk membuat alat ini tidaklah banyak hanya memerlukan beberapa komponen yang biasa digunakan seperti kapasitor, resistor, led dan lainnya. Berikut adalah skematiknya.
Gambar 6.8b Skematik AVR Fusebit Doctor
Gambar skematik untuk lebih jelas dan detailnya diatas dapat diperoleh di web sumbernya langsung yaitu http://www.instructables.com/id/How-to-fix-dead-atmega-andattiny-avr-chips/#step1. Alat ini terdapat satu buah ATMega8 yang digunakan sebagai dokter untuk menyembuhkan mikrokontroler yang terkena “lock” pada sistem internalnya. ATMega8 ini tidak berjalan sendiri melainkan harus dimasukkan sebuah program untuk bisa melakukan penyembuhan atau perbaikan, program ini sudah tersedia satu paket dengan skematik dan gambar rangkaianya saat paket ini didownload, nama dari program ini adalah atmega_fusebit_doctor_2.01_BETA.HEX. untuk skematik yang ada di paket dalam bentuk 179
rar ini menggunakan software EAGLE, yang mana software ini biasa digunakan untuk pembuatan PCB, untuk lebih jelas tentang software EAGLE ini dibahas pada bab pembuatan PCB.
Bahan – bahan: a. Socket IC 28pin x 2 buah b. Socket IC 40pin x 1 buah c. Socket IC 20pin x 1 buah d. ATMega8 x 1 buah e. IC Regulator 7805 x 1 buah f. Led 3mm merah x 1 buah g. Led 3mm hijau x 1 buah h. Transistor BC557 x 2 buah i. Transistor BC547 x 1 buah j. Resistor 1Kohm x 19 buah k. Resistor 4K7ohm x 2 buah l. Resistor 330ohm x 1 buah m. Resistor 10Kohm x 1 buah n. Resistor 100ohm x 1 buah o. Push button x 1 buah p. Kapasitor 10uF/16v x 1 buah q. Kapasitor 100uF/25v x 1 buah r. Kapasitor 10nF x 1 buah s. Pinheader tunggal x 1 buah Perlu diperhatikan bahwa pada JP1 terdapat dua buah pin yang mana biasanya port ini tidak disambungkan jadi masih tetap dalam posisi terpisah dan terbuka untuk melindungi program yang ada didalamnya saat dilakukan repairing fusebit. Untuk JP2 digunakan untuk menampilkan proses repairing fusebit pada komputer, sehingga dapat diketahui mengenai sistem dan data pemrosesan yang dilakukan oleh AVR Fusebit Doctor ini.
180
6.8.4 Cara Penggunaan Alat Cara penggunaan alat ini pertama masukkan mikrokontroler yang ter-lock kedalam socket yang tepat misalnya ATMega8 ke socket 28pin, ATMega16 ke socket 40pin dst, kemudian aktifkan alat ini dengan memberikan tegangan 12 v atau 9 v ke port input yang berupa T-Blok sehingga akan nampak led merah menyala sebagai tanda bahwa alat ini sudah siap untuk digunakan, langkah berikutnya yaitu menekan tombol start untuk memulai repairing fusebit, saat tombol ditekan maka akan menyala blink atau berkedip sesaat yang artinya proses repairing telah selesai dilakukan dan fusebit berhasil diperbaiki atau disembuhkan, namun jika tombol start ditekan tanpa menghidupkan led hijau berarti mikrokonroler tersebut mengalami kerusakan tidak pada fusebitnya namun sistem internal yang lain.
181
6.9 Membuat Alat Pengukur Berat Badan Pernah mengalami masalah berat badan? Atau tidak tahu tentang bagaimana cara menetukan berat badan yang ideal?, nah disinilah jawabannya. Pada bagian ini akan dibahas mengenai bagaimana cara membuat alat yang dapat mengukur apakah berat badan kita sudah ideal atau belum, dengan alat ini juga didapatkan klasifikasi tentang berat badan seseorang, misalnya orang tersebut kekurangan berat badan, ideal ataukah mengalami obesitas. Berikut adalah gambar dari alat tersebut.
Gambar 6.9a Bentuk dari Alat Pengukur Berat Badan Alat ini dilengkapi dengan dua buah tombol yang digunakan untuk melakukan input data yang berupa tinggi badan dan berat badan, sehingga data tersebut akan dikalkulasi dan akan didefinisikan apakah orang tersebut mengalami kekurangan berat badan, ideal atau obesitas. Terdapat sebuah LCD yang digunakan untuk menampilkan deskripsi tentang kriteria berat badan yang dialami seseorang. 6.9.1 Fungsi dan Tujuan Tujuan dibuat alat ini adalah untuk mengetahui cara kerja dari penyimpanan data yang terdapat pada mikrokontroler melalui eram byte. Fungsinya untuk mengetahui berat ideal seseorang, dan memberikan klasifikasi tentang berat badan yang diderita. 6.9.2 Prinsip Kerja Alat Prinsip kerja alat ini hanyalah mengolah input, data yang dimasukkan berupa tinggi badan dan berat badan, kemudian melakukan klasifikasi tentang data tersebut apakah dikategoriakn berat badan ideal atau tidak. Berikut skemanya. Data berat badan dan tiinggi badan
Data disimpan dan diproses
Deskripsi hasil proses
182
Alat ini menggunakan ATMega8 sebagai media pemrosesan data dan tempat penyimpanan, sehingga data yang telah disimpan tersebut dilakukan pemrosesan data. Data yang telah diproses dilakukan klasifikasi mengenai 4 kriteria yaitu kekeurangan berat badan jika nilai perpaduan antara tinggi badan dan berat badan kurang dari 18 maka akan dikatakan kekurangan berat badan, untuk nilai diantara 18 dan 23 dapat dikatakan orang tersebut memiliki berat ideal, apabila nilainya 23 sampai 27 dikatakan obesitas ringan dan lebih dari 27 dikatakan obesitas berat.
Data-data klasifikasi tersebut didapat dari data tentang
pengukuran berat badan ideal yang menggunakan rumus berikut
Rumus BMI
= berat badan (kilo gram) dibagi dengan kuadrat tinggi badan (meter) = satuannya kg/ m2.
Pemrosesan data menggunakan kalkulasi rumus BMI, setelah didapat nilai hasilnya, akan dilakukan klasifikasi terhadap nilai yang terbaca. Berikut tabel klasifikasinya.
Tabel 5.12 Tabel Klasifikasi Nilai NILAI X < 18
KLASIFIKASI Kekurangan Berat Badan
18 < X < 23
Berat Badan Ideal
23 < X < 27
Obesitas Ringan
X > 27
Obesitas berat
6.9.3 Rangkaian Hardware Rangkaian hardware untuk alat ini hanyalah menggunakan 2 buah item yaitu minimum system ATMega8, layar LCD dan dua buah tombol push button. a. Tombol Tekan (push button) Tombol yang dipakai untuk alat ini adalah tombol tekan, yang mana jika ditekan dia akan hidup dan dilepas akan mati, seperti halnya tombol reset pada minimum system. Tombol tekan ini diletakkan pada PortD.5 dan PortD.6 pada minimum system ATMega8, yang mana tombol ini digunakan untuk memberikan nilai input yang diperlukan untuk melakukan pemrosesan data. Perlu diperhatikan bahwa pada alat ini tombol akan aktif jika diberikan GND sehingga nilai aktifnya adalah 0. 183
Untuk bentuk dan tampilan push button adalah seperti Gambar 6.9b dan untuk konfigurasi ke mikrokontroller seperti Gambar 6.9c
Ke PortD.5
GND
Gambar 6.9b Bentuk dari Push Button Ke Port D.6
GND
Gambar 6.9c Konfigurasi ke Mikrokontroller
b. Minimum System.
LCD
TOMBOL
VCC 5 volt
Downloader
Gambar 6.9d Skematik Minimum System ATMega8
184
6.9.4 Program BASCOM-AVR '========================================================================== 'Programmer: Yanuar Mukhammad 'E-mail : [email protected] '==========================================================================
$regfile = "m8def.dat" $crystal = 12000000 Config Lcdpin = Pin , Rs = Portc.4 , E = Portc.5 , Db4 = Portc.0 Config Lcdpin = Pin , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 Config Lcd = 16 * 2 Config Pind.5 = Input Config Pind.6 = Input Dim Jam As Byte , Men As Byte , Tinggi As Single , X As Single , N As Single Dim Datajam As Eram Byte , Datamenit As Eram Byte Declare Declare Declare Declare
Sub Sub Sub Sub
Setting Main Lanjut Mulai
Tombol1 Alias Pind.5 Tombol2 Alias Pind.6 Set Portd.5 Set Portd.6 Cls Cursor Off Portd.5 = 1 Portd.6 = 1 Upperline Lcd "Cari berat ideal" Locate 2 , 1 Lcd " Setting " ; " " ; " Mulai " Do If Tombol1 = 0 Then Bitwait Tombol1 , Set Call Setting End If If Tombol2 = 0 Then Cls Upperline Lcd "Mulai Hitung" Wait 1 Cls Lowerline Lcd "Setting dulu" Wait 1 Bitwait Tombol1 , Set 185
Call Setting End If Loop Sub Setting Cls Upperline Lcd "Setting centre" Locate 2 , 2 Lcd " Atur " ; " " ; " Back " Do If Tombol1 = 0 Then Bitwait Tombol1 , Set Goto Aturjam End If If Tombol2 = 0 Then Bitwait Tombol2 , Set Call Main End If Loop End Sub Sub Main Cls Upperline Lcd "Cari berat ideal" Locate 2 , 1 Lcd " Setting " ; " " ; " Mulai " Do Tinggi = Men / 100 X = Tinggi * Tinggi N = Jam / X If Tombol1 = 0 Then Bitwait Tombol1 , Set Call Setting End If If Tombol2 = 0 Then Bitwait Tombol2 , Set Call Mulai End If Loop End Sub Sub Mulai Upperline Lcd "berat :" ; Jam Locate 2 , 1 Lcd "tinggi :" ; Men Locate 2 , 12 Lcd "Next" Cls Do If Tombol1 = 0 Then Bitwait Tombol1 , Set 186
Call Setting End If If Tombol2 = 0 Then Bitwait Tombol2 , Set Goto Lanjut End If Loop End Sub Lanjut: Tinggi = Men / 100 X = Tinggi * Tinggi N = Jam / X Upperline Lcd "sdang menghitung" Wait 1 Cls Lowerline Lcd "berat ideal" Wait 1 Cls Upperline Lcd "berat idealmu" Lowerline Lcd "adalah :" ; N Wait 1 Cls If N < 18 Then Cls Upperline Lcd "Anda Kekurangan" Lowerline Lcd "berat badan" End If If N >= 18 And N < 23 Then Cls Upperline Lcd "berat Anda" Lowerline Lcd "IDEAL" End If If N >= 23 And N < 25 Then Cls Upperline Lcd "Anda terkena" Lowerline Lcd "Kegemukan" End If If N >= 25 And N < 27 Then 187
Cls Upperline Lcd "Anda terkena" Lowerline Lcd "Obesitas ringan" End If If N >= 27 And N < 30 Then Cls Upperline Lcd "Anda terkena" Lowerline Lcd "Obesitas sedang" End If If N > 30 Then Cls Upperline Lcd "Anda terkena" Lowerline Lcd "Obesitas Berat" End If If Tombol1 = 0 Then Bitwait Tombol1 , Set Call Setting End If If Tombol2 = 0 Then Bitwait Tombol2 , Set Call Setting End If Return Aturjam: Jam = Datajam Cls Jam = 30 Do Upperline Lcd "masukkan Berat" Lowerline Lcd "Berat= " ; Jam ; "
"
If Tombol1 = 0 Then Incr Jam Waitms 50 If Jam > 80 Then Jam = 0 End If End If If Tombol2 = 0 Then Datajam = Jam Bitwait Tombol2 , Set Exit Do 188
End If Waitms 50 Loop Waitms 100 Cls Cls Men = Datamenit Tinggi = Men / 100 Men = 140 Do Upperline Lcd "masukkan tinggi" Lowerline Lcd "Tinggi= " ; Men ; "
"
If Tombol1 = 0 Then Incr Men Waitms 50 If Men > 200 Then Men = 0 End If End If If Tombol2 = 0 Then Datamenit = Men Tinggi = Men / 100 Bitwait Tombol2 , Set Exit Do End If Waitms 50 Loop Return
6.9.5 Cara Penggunaan Alat Cara penggunaan alat ini sangatlah mudah, karena terdapat petunjuk untuk memilihnya, pertama masukkan nilai tinggi badan seseorang, setelah itu tekan tombol next, maka akan nampak pertanyaan untuk memasukkan nilai berat badan, jika sudah tekan tombol next, maka akan dilakukan proses perhitungan, dengan hasil akhir adalah berupa pernyataan, yang menyebutkan mengenai klasifikasi nilai yang didapat.
189
6.10. Membuat Alat Pengukur Jarak Benda Digital Pada kesempatan kali ini akan dibahas mengenai cara membuat alat yang menyerupai penggaris, bedanya kalau penggaris bersifat analog, sedangkan alat yang akan dibuat adalah bersifat digital, teknologi digital sebenarnya lebih memudahkan manusia dalam kehidupan sehari-hari dari pada teknologi analog, seperti halnya penggaris analog dengan penggaris digital, jika penggaris analog kita harus melihat secara detail nilai pada penggaris, namun untuk penggaris digital yang akan dibuat tidaklah perlu untuk melihat detail mengenai hasil pengukuran karena telah tertera dengan jelas hasil pengukurannya pada layar LCD display. Untuk gambar ilustrasinya seperti pada Gambar 6.10a
LCD Display
HC-SR04
Gambar 6.10a Ilustrasi Tampilan Pengukur Jarak Digital Pada alat ini menggunakan sensor jarak HC-SR04 yang mana menurut datasheet jarak ukur minimal adalah 3 cm dan jarak ukur maksimal adalah 3m, tapi pada alat ini disetting agar jarak maksimal hanya 99cm dan jarak minimal adalah 1 cm, sehingga jika alat ini digunakan melebihi dari range tersebut, alat ini tidak akan berfungsi maksimal, karena range jaraknya hanya dari 1 cm sampai 99cm tidak bisa lebih, karena keterbatasan itulah mengapa alat ini juga bisa disamakan dengan penggaris analog yang panjangnya 1 meter. Mikrokontroler pada pembuatan alat ini menggunakan mikrokontroller ATMega16 dan system kerja keseluruhan alat yaitu mengukur jarak benda yang kurang dari 1 meter.
6.10.1 Fungsi dan Tujuan Fungsi dibuatnya alat ini adalah untuk mengembangkan teknologi penggaris 1 meter, yang bersifat analog, sehingga dapat dikonversikan menjadi penggaris digital, karena teknologi digital lebih memudahkan manusia dari pada teknologi analog. Untuk tujuannya yaitu untuk 190
mengetahui bagaimana sensor HC-SR04 bekerja dan berkolaborasi dengan mikrokontroller ATMega16
6.10.2 Prinsip Kerja Alat Prinsip kerja alat ini menyerupai penggaris analog 1 meter, yang mana untuk mengukur jarak benda yang pada range kurang dari atau sama dengan 1 meter. Alat ini menggunakan sensor HC-SR04 yang diposisikan sebagai mata atau detector untuk mengukur jarak suatu benda, setelah sensor mendeteksi jarak suatu benda, maka sensor akan mengirimkan data ke mikrokontroller ATMega16, kemudian dari ATMega16 data tersebut diolah dan dikonversikan sehingga menjadi nilai-nilai yang bisa dipahami oleh pengguna, terdapat LCD display yang difungsikan untuk menampilkan jarak ukur yang ditangkap oleh sensor. Bagan prinsip kerjanya adalah seperti berikut
Sensor
HC-SR04
Mikrokonroller ATMega16
LCD Display
Seperti itulah prinsip kerja dari alat ini, yang tidak lain sama seperti penggaris dengan panjang 1 meter, untuk kinerja dari sensor HC-SR04 yaitu terdapat trigger dan echo yang mana keduanya adalah system yang digunakan untuk pengukuran jarak, trigger mengeluarkan gelombang ultrasonic sehingga jika terdapat benda yang kurang dari 1 meter, gelombang ultrasonik tersebut akan memantul dari benda ke bagian echo sensor, pengukuran jarak diambil dari saat trigger mengeluarkan gelombang ultrasonik sampai echo menerima sinyal pantulan dari gelombang ultrasonik tersebut, terdapat timer yang diaktifkan pada mikrokonroller yang mana timer tersebut difungsikan untuk mengambil lama waktu antara trigger mengeluarkan gelombang ultrasonik dan echo menerima gelombang ultrasonik, tugas mikrokonroller adalah mengolah data dari timer kemudian di konversikan menjadi nilai-nilai yang mudah dipahami oleh pengguna.
191
6.10.3 Rangkaian Hardware Rangkaian hardware yang diperlukan dalam pembuatan alat ini tidaklah banyak, hanya memerlukan rangkaian minimum system dengan tampilan LCD, dan hardware sensor jarak HC-SR04. a. Sensor HC-SRF04 Prinsip kerja HC-SR04 adalah transmitter memancarkan seberkas sinyal ultrasonic (40KHz) yang bebentuk pulsatic, kemudian jika di depan HC-SR04 ada objek padat maka receiver akan menerima pantulan sinyal ultrasonic tersebut. Receiver akan membaca lebar pulsa (dalam bentuk PWM) yang dipantulkan objek dan selisih waktu pemancaran, dengan pengukuran tersebut, jarak objek di depan sensor dapat diketahui. Untuk lebih jelasnya, perhatikan Gambar 6.10b di bawah ini :
Gambar 6.10b HC-SR04 Timing Diagram Untuk mengaktifkan HC-SR04, mikrokontroler harus mengirimkan pulsa positif minimal 10us melalui pin trigger, maka HC-SR04 akan mengeluarkan sinyal ultrasonic sebesar 8 cycle dan selanjutnya HC-SR04 akan memberikan pulsa 100us-18ms pada outputnya tergantung pada informasi jarak pantulan objek yang diterima. Berikut ini adalah data perbandingan antara sudut pantulan dan jarak, untuk mengaktifkan HC-SR04, mikrokontroler harus mengirimkan pulsa positif minimal 10us melalui pin trigger, maka HC-SR04 akan mengeluarkan sinyal
192
ultrasonic sebesar 8 cycle dan selanjutnya HC-SR04 akan memberikan pulsa 100us-18ms pada outputnya tergantung pada informasi jarak pantulan objek yang diterima. Bagaimana konfigurasi sensor HC-SR04 ke mikrokontroller?, sensor HC-SR04 memiliki empat buah kaki yaitu VCC, GND, Trigger dan Echo, tampilannya seperti Gambar 6.10c
Gambar 6.10c Bentuk dan Konfigurasi Sensor HC-SR04 Konfigurasi dari empat kaki sensor HC-SR04 (Trigger, Echo, Vcc dan Gnd) ke mikrokontroller ATMega16 adalah seperti berikut ini 5 V ke VCC Minimum System GND ke GND Minimum System Trigger ( T ) ke PortD.4 Mikrokontroller Echo( R ) ke PortD.5 Mikrokontroller
Deskripsi sensor : Module main technical parameters: 1.Working Voltage : 5V(DC) 2.Static current: Less than 2mA. 3.Output signal: Electric frequency signal, high level 5V, low level 0V. 4.Sensor angle: Not more than 15 degrees. 5.Detection distance: 2cm-450cm. 6.High precision: Up to 0.3cm 7.Input trigger signal: 10us TTL impulse 8.Echo signal : output TTL PWL signal
193
b. Rangkaian Minimum System ATMega16 Bahan-Bahan : 1. Crystal 12Mhz x 1 buah 2. ATMega16 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. LCD Display x 1 buah 5. Resistor 4K7 x 1buah 6. Capasitor 104p x 4 buah 7. IC7805T x 1 buah 8. Capasitor polar 100uF x 1 buah 9. Capasitor polar 10uF x 1 buah 10. Capasitor 103p x 1 buah 11. Pinheader Male Secukupnya 12. Pinheader Female Secukupnya
Reset Button
5v
LCD
Regulator
ke Sensor HC-SR04 Gambar 6.10d Skematik Minimum System ATMega16
194
6.10.4 Program Bascom AVR $regfile = "m16def.dat" $baud = 9600 $crystal = 12000000 Config Timer0 = Timer , Prescale = 256 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Portd.4 = Output Config Pind.5 = Input Declare Sub Cek_jarak Dim Data_jarak As Word Dim Data_jarak_olah As Word Dim Data_jarak_fix As Word Triger1 Alias Portd.4 Pecho1 Alias Pind.5 Mulai: Cls Cursor Off Locate 1 , 4 Lcd "Pendeteksi" Locate 2 , 2 Lcd "Jarak Benda" Wait 1 Do Call Cek_jarak Data_jarak = Data_jarak Data_jarak_olah = Data_jarak * 100 Data_jarak_fix = Data_jarak_olah / 256 Cls Cursor Off 195
Upperline Lcd "Jarak Benda=" Lowerline Lcd Data_jarak_fix ; " cm " Waitms 1
Loop Sub Cek_jarak: Reset Triger1 Waitus 10 Set Triger1 Waitus 20 Reset Triger1 Tcnt0 = 0 Bitwait Pecho1 , Set Start Timer0 Do If Pecho1 = 0 Then Data_jarak = Tcnt0 Stop Timer0 Exit Do End If If Tifr.0 = 1 Then Stop Timer0 Tifr.0 = 1 Data_jarak = &HFF Exit Do End If Loop Stop Timer0 Waitms 15 End Sub
196
6.10.5 Cara Penggunaan Alat Cara menggunakan alat ini sangatlah mudah, hanya perlu memberikan input daya 12 volt ke bagian power, kemudian akan nyala LCD display, yang menandakan bahwa alat telah siap digunakan untuk pengukuran jarak. Hadapkan sensor HC-SR04 ke suatu benda yang jaraknya kurang dari 1 meter, maka di tampilan LCD display akan nampak hasil pengukurannya, buktikan jarak yang tertera di dalam tampilan LCD dengan penggaris analog, apakah hasil pengukurannya sama atau tidak, jika sama berarti alat yang dibuat telah akurat dan bisa digunakan untuk suatu project pengukuran.
197
6.11 Membuat Detektor Gas LPG (Liquified Petroleum Gas) Gas LPG (Liquefied Petroleum Gas) dalam kehidupan sehari-hari merupakan suatu kebutuhan yang sangat penting dan sangat dibutuhkan sebagai pengganti dari kompor minyak yang bersumber dari minyak tanah. Gas LPG juga sebagai prioritas yang utama dalam urusan memasak karena tidak adanya pengganti lain dari metode minyak tanah selain gas LPG. Kebijakan pemerintah dalam melakukan konversi penggunaan energi dari minyak tanah ke gas LPG (Liquefied Petroleum Gas) telah banyak mendorong orang untuk memakai kompor gas LPG sebagai bahan bakar kompor yang digunakan. Seiring kebijakan pemerintah tersebut ternyata banyak menimbulkan masalah. Meskipun kompor gas LPG memiliki kelebihan lebih praktis penggunaannya dari kompor minyak tanah, tetapi masih memiliki kekurangan yaitu bahaya yang ditimbulkannya jika terjadi kebocoran gas yang berakibat pada ledakan dan menimbulkan kebakaran bahkan korban jiwa Menurut data BPKN juni 2010 tercatat bahwa tahun 2009 terdapat 30 kasus ledakan gas LPG yang mana diantara 30 kasus tersebut terdapat 12 orang meninggal dan 48 orang luka-luka. Untuk periode tahun 2010 tercatat ada 33 kasus ledakan yang diantaranya terdapat 8 korban meninggal dan 44 orang luka-luka. Kebanyakan kasus disebabkan akibat bocornya gas LPG yang mengakibatkan ledakan dan kebakaran pada tabung. Untuk itu perlu adanya alat pengaman yang dapat melakukan pengamanan secara berulang dan terus menerus untuk mencegah terjadinya kebakaran dan kebocoran gas, dikarenakan waktu orang melakukan aktifitas dengan menggunakan gas LPG tidak tentu, baik itu dari segi waktu atau pun tempat, maka dari itu perlu adanya sistem yang dapat melindungi manusia dari bahaya dimanapun berada dan kapanpun waktunya.
6.11.1 Tujuan dan Fungsi Tujuan dan fungsi yang ingin dicapai pada pembahasan kali ini adalah untuk membuat suatu alat yang dapat memberikan indikasi akan adanya potensi ledakan dan kebakaran pada suatu tabung gas LPG, sehingga dimaksudkan untuk bisa mengurangi kasus ledakan dan kebakaran yang ditimbulkan oleh tabung gas LPG.
6.11.2 Prinsip Kerja Alat Alat detektor gas LPG ini mendeteksi adanya kadar gas propana dan butana diudara, kadar minimal yang bisa dideteksi oleh alat ini adalah 500ppm, sehingga jika kadar 198
gas diudara kurang dari 500ppm maka alat ini tidak bisa mendeteksi adanya gas propana dan butana diudara, ini didapat dari range sensor TGS2610 yaitu 500ppm -10.000ppm. kadar ppm yang maksimal dan valid untuk alat ini hanyalah sampai 10.000ppm, selebihnya dapat dikatakan kurang valid. Alat ini menggunakan sebuah buzzer, 8 buah led sebagai indikator akan adanya bahaya atau tidaknya suatu ruangan / dapur, buzzer akan berbunyi jika keadaan didalam ruangan pada kadar lebih dari 10% atau lebih dari 100.000ppm, tepatnya yaitu jika sensor TGS2610 telah mengeluarkan tegangan output sebesar 4,45 volt. Berikut adalah gambar detektor gas LPG tersebut.
Gambar 6.11a Bentuk Fisik Dari Detektor Gas LPG
Terdapat 8 buah led yang bervariasi warnanya, ada 2 warna putih, 2 warna biru, 2 warna hijau dan 2 warna merah. Tiap-tiap led mewakili suatu keadaan yang berbeda, jika led putih akan menyala saat proses heater pada 90 detik yang pertama, kemudian led warna biru menyala pada heater 90 detik kedua. Led merah menyala pada saat kondisi berbahaya yaitu tegangan output dari sensor TGS2610 lebih dari atau sama dengan 4,45 volt, sebaliknya led hijau menyala pada kondisi aman yaitu tegangan output sensor kurang dari 4,45 volt. Mengapa parameter yang dipakai adalah 4,45volt? Karena angka ini berasal dari detektor gas LPG yang berada di pasaran yang menggunakan MQ5 sebagai sensor gas LPG. Buzzer dan led merah pada alat detektor gas LPG dipasaran akan berbunyi saat tegangan output dari sensor MQ5 lebih dari atau sama dengan 4,45 volt, itulah mengapa menggunakan 199
parameter ini untuk tidak berbeda dengan yang terdapat dipasaran berikut adalah tabel hasil penelitian alat yang menggunakan TGS2610 dengan MQ5.
Tabel 6.11.1 Tabel Pengujian TGS2610 dengan MQ5 Faktor
TGS2610
MQ5
Waktu Tenggang Heater
179 detik
176 detik
Tegangan Bahaya
> = 4,45 volt
> = 4,45 volt
Tegangan Aman
< 4,45 volt
< 4,45 volt
Tegangan Minimal
0,08 volt
0,05 volt
Tegangan Maksimal
4,96 volt
4,51 volt
Data itu yang dipakai sebagai acuan dalam pembuatan alat ini yang mana parameter tegangan aman dan tegangan bahaya telah didapat melalui hasil pengukuran tegangan output pada MQ5 dengan menggunakan multimeter digital. Skema kerja alat ini yaitu sensor membaca kadar gas LPG yang terdapat diudara, kemudian mengeluarkan tegangan output yang diterima oleh mikrokontroler ATMega16 melalui port ADC-nya, setelah data diterima oleh mikrokontroler, data tersebut diolah menjadi tegangan output dan nilai dalam ppm. Mikrokontroler akan mengaktifkan rangkaian buzzer jika tegangan output yang terdeteksi yaitu >= 4,45 volt, selain itu rangkaian buzzer ini akan padam, begitu pula dengan rangkaian led, led merah menandakan tegangan output sensor >=4,45, dan led hijau menandakan tegangan output sensor < 4,45 v. berikut adalah skema dari prinsip kerja alat ini.
200
Jadi mikrokontroler ATMega16 menjadi otak dan pengendali dari alat ini yang mengatur mengenai tampilan LCD dan aktif atau tidak rangkaian led dan buzzer. Berikut adalah flowchart dari alat ini.
MULAI
Inisialisasi port LCD dan ADC
Tampil LCD
Heater Led putih dan biru menyala Baca sensor gas TGS2610
Tegangan = VADC / 1023 Tegangan = Tegangan *5,15 Rs = 5,15 – Tegangan Y = X / Tegangan Rs = Y * 10000 D = Rs / Ro E = 112,1 / D Ppm = E * 1,58
Tampilan Tegangan dan PPM pada LCD
Ya
Tegangan < 4,45 volt
Led Hijau menyala
Tidak
Tidak
Tegangan >=4,45 volt
Ya Led merah menyala dan Buzzer berbunyi
Gambar 6.11b Diagram Alir Detektor Gas LPG
201
6.11.3 Rangkaian Hardware Rangkaian hardware penyusun alat ini tidaklah banyak hanya memutuhkan minimum system, rangkaian sensor TGS2610, rangkaian buzzer dan rangkaian led. Semuanya menggunakan komponen yang mudah didapat dipasaran.
a. Minimum System ATMega16
Ke Rangkaian Led
Gambar 6.11c Skematik Minimum System ATMega16
b. Rangkaian TGS2610 komponen yang dibutuhkan untuk membuat sensor TGS2610 ini bisa berfungsi optimal hanyalah variabel resistor 10Kohm, yang mana variabel resistor ini digunakan untuk RL (Resistansi Load) untuk sensor TGS2610. Menurut datasheet dari sensor TGS2610, RL yang digunakan yaitu minimal 0,45Kohm, sehingga jika diberikan 10K sudah termasuk dalam batas minimal rangkaian. Berikut adalah gambar skematik dari rangkaian TGS2610.
202
PortA.0
Gambar 6.11d Skematik Rangkaian Sensor TGS2610 Sensor TGS2610 memiliki 4 buah kaki, yaitu 2 kaki untuk mengaktifkan heater di kaki 3 dan 4, pada kaki 1 diberikan GND untuk heater, untuk output tegangan dari sensor ini ada pada kaki 2 yang langsung dihubungkan ke RL yang berupa variabel resistor 10K.
c. Rangkaian Buzzer Rangkaian buzzer pada alat ini menggunakan rangakaian buzzer seperti pada alat yang sebelumnya telah dibahas, yaitu menggunakan resistor 2K2ohm dan transistor BC141 sebagai saklar untuk on/off-kan buzzer. Berikut skematiknya.
Gambar 6.11e Skematik Buzzer Perancangan rangkaian buzzer ini berfungsi sebagai indikator yang mengunakan media suara untuk menghasilkan bunyi pada saat data masukan dari sensor TGS2610 mencapai kadar / nilai tertentu.
d. Rangkaian Led Perancangan rangkaian Led ini berfungsi indikator yang menggunakan media cahaya untuk mengindikasikan suatu kadar / nilai tertentu yang dicapai oleh sensor TGS2610. Berjumlah 8 buah dan berbagai macam warna untuk memudahkan didalam pembagian kadar
203
/ nilai yang dibaca oleh sensor TGS2610. gambar dari rangkaian Led ditunjukkan pada Gambar 6.11f.
Ke PortD.0 - 7 VCC 5 volt
Gambar 6.11f Skematik Rangkaian Led terdapat 8 buah led dan 8 buah resistor 330 ohm, fungsi dari 8 buah led tersebut yaitu sebagai indikator dengan 4 variasi warna yaitu putih, hijau, kuning dan merah, untuk putih dan biru menandakan kondisi awal pemanasan TGS2610, untuk led hijau untuk menandakan kondisi gas diruangan stabil atau aman, dan untuk led merah artinya kondisi ruangan sudah dipenuhi oleh gas Propana dan Butana yang sangat berbahaya kalau ada percikan api statis menyala.
6.11.4 Program Bascom-AVR '-----------------'Alat Ukur Gas LPG 'by yanuar mukhammad '-----------------$regfile = "m16def.dat" $crystal = 12000000 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Adc = Single , Prescaler = Auto , Reference = Avcc '------------------------ Konfigurasi Ddrb.0 = 1 ‘portB.0 sebagai output Ddrd = &B11111111 ‘ portD sebagai output '------------------------ Type Dim Gas_ref As Word Dim Gas As Single Dim Lpg As String * 5 Dim Vol As String * 5 Dim Tegangan As Single Dim Teganganx As Single Dim A As Single Dim Vo As Single 204
Dim X As Single Dim Y As Single Dim Rs As Single Dim D As Single Dim E As Single Dim Ppm As Single Dim Ro As Single '-----------------------Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 Cls Cursor Off Start Adc '-----------------------Upperline Lcd "Detektor Gas Lpg" Portd = &B11111100 ‘led putih aktif Wait 90 Cls Upperline Lcd "Range Detektor " Lowerline Lcd "500 - 10,000 ppm" Portd = &B11001111 ‘led biru aktif Wait 90 Cls Do Gas_ref = Getadc(0) Gas = Gas_ref Ro = 633750
'Nilai tegangan ADC dr out sensor 'kadar Rs dalam udara bersih (ADC minimal)
Teganganx = Gas_ref / 1023 Tegangan = Teganganx * 5.15
‘untuk nilai menampilkan tegangan
X = 5.15 - Tegangan Y = X / Tegangan Rs = Y * 10000 ‘untuk menemukan nilai Rs D = Rs / Ro E = 112.1 / D 'dari grafik excel ditemukan 112,1x^-0,68 Ppm = E ^ 1.58 '1/0.63 Vol = Fusing(tegangan , "#.##") Locate 1 , 1 Lcd "(Vol)=" Locate 1 , 8 Lcd Vol Locate 2 , 1 Lcd Chr(0) Locate 2 , 2 Lcd "(PPM)=" ; Fusing(ppm , "#.##") If Tegangan < 4.45 Then Portd = &B11110011 ‘led hijau aktif Portb.0 = 0 205
End If If Tegangan >= 4.45 Then Portd = &B00111111 ‘led merah aktif Portb.0 = 1 ‘buzzer aktif End If Loop '------------------------ end
6.11.5 Penjelasan Program dan Kalibrasi Pejelasan program dan kalibrasi ini akan membahas bagaimana cara untuk menampilkan tegangan output sensor dan cara kalibrasi sensor TGS2610. a. Cara Menampilkan Tegangan Keluaran Pada LCD Untuk mengetahui bagaimana cara agar didapat kadar PPM dalam udara, yang harus dilakukan adalah mengetahui tegangan output sensor TGS2610 terlebih dahulu, sehingga akan didapat nilai Rs dan Ro nya yang kemudian akan diolah ke dalam bentuk PPM. cara agar bisa menampilkan tegangan output sensor TGS2610 pada LCD yaitu dengan menggunakan rumus berikut pada program Bascom-AVR Teganganx = Gas_ref / 1023 Tegangan = Teganganx * 5.15
Jadi tegangan output dari port ADC dibagi dengan nilai 1023 karena mikrokontroler sebelum menampilkan data ke layar LCD dari port ADC, dia mengalikan cacahan dengan 1024, cacahan yang dilakukan mokrokontroler lebih detailnya dari 0 sampai 1023, maka dari harus dibagi dengan nilai 1023 agar diketahui nilai yang sebenarnya dari ADC tanpa dikali dengan pencacah. Data yang telah dibagi kemudian dikalikan tegangan ADC yaitu tegangan AVCC, biasanya tegangan VCC ini berkisar antara 4,9 v sampai 5,20 v tergantung dari regulator yang dipakai, jadi akan didapat nilai tegangan output dari suatu sensor, namun perlu dilakukan kalibrasi terlebih dahulu terhadap data tegangan ini dengan membandingkan antara tampilan tegangan output pada LCD dengan multimeter, berikut tabel perbandingan data yang telah diambil dengan menggunakan rumus tegangan diatas.
206
Tabel 6.11.2 Tabel Pengujian Keakuratan Data ADC Kalibrasi ADC (Volt) Tegangan ADC
Tegangan Multimeter
0,11
0,11
0,14
0,14
0,34
0,33
1,20
1,20
2,37
2,36
4,26
4,26
Dari tabel diatas jelas sekali persamaan yang didapat antara menggunakan rumus dengan pengukuran secara langsung dengan multimeter, hanya berbeda 0,01 yang artinya telah layak dipakai untuk suatu pengukuran.
b. Konversi dari Tegangan ke PPM Konversi dari nilai tegangan yang telah didapat ke PPM memang agak panjang namun semuanya masih dalam kotegori mudah. Pertama mengambil data dari grafik datasheet sensor mengenai Rs / Ro terhadap kadar gas PPM seperti grafik berikut ini.
Gambar 6.11g Grafik Sensitivitas Rs/Ro terhadap PPM 207
Dari grafik tersebut jika diambil data per kenaikannya maka akan menghasilkan seperti data pada tabel berikut.
Tabel 6.11.3 Tabel Sensitivitas Rs/Ro dengan PPM Melalui Grafik Rs/Ro 2,8 2,7 2 1,9 1,8 1,7 1,6 1,5 0,9 0,75 0,6 0,5 0,49 0,4 0,39 0,35 0,3
PPM 300 400 500 600 700 800 900 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Dari data tersebut dapat diketahui senstvitas yang sebenarnya dari sensor TGS2610 untuk melakukan konversi ADC ke PPM dengan menghitung tiap kenaikan dari Rs/Ro terhadap PPM, Data yang telah didapat dikalkulasi menggunakan microsoft excel dan tampilan grafik sehingga akan menghasilkan tampilan seperti berikut.
Gambar 6.11h Grafik sensitivitas Rs/Ro dengan PPM
208
Dari grafik 5,36 dapat dilihat bahwa terdapat nilai R2= 0,994, yang artinya tingkat keakuratannya 99,4 % dan selisih antara data kesatu, kedua dan seterusnya tidaklah berbeda jauh. Nilai y = 112,1 x-0,63 adalah nilai yang akan digunakan untuk konversi tegangan ke PPM, X mewakili kadar gas dalam PPM dan Y mewakili nilai Rs/Ro, bagaimana cara menampilkan nilai tersebut pada ms.Excel? berikut caranya. Pilih Scatter
Gambar 6.11i Tampilan Grafik pada ms.Excel Setelah dipilih pada menu scatter, maka ms.Excel akan menampilkan grafik yang telah dipih sebelumnya. Kemudian pada tampilan grafik klik kanan tepat di garis grafiknya, hingga muncul pilihan seperti berikut.
Gambar 6.11j Tampilan Menu Saat Diklik Kanan Pada Garis Grafik
209
Pilih menu Add trendline.... sehingga akan menampilkan suatu layar setting untuk menampilkan option trendline. Setelah itu pilih pilihlah option Power pada trendline option, centang / check pada check list display equation on chart dan display R-squared on chart. Seperti yang ditunjukkan pada gambar berikut.
Gambar 6.11k Tampilan Format Trendline Jika langkah-langkah diatas telah dilakukan dengan benar maka akan nampak nilai persamaan antara faktor Rs/Ro dengan kadar gas PPM dan juga akan nampak tingkat keakuratan mengenai selisih data yang didapat dari data pertama hingga terakhir. Langkah kedua setelah tampilan grafik didapat adalah menghitung nilai Ro untuk mendapatkan nilai Rs/Ro. Nilai Ro dan Rs didapat memalui rumus berikut
Ro adalah nilai resistansi sensor saat kondisi Rs bernilai 1800 ppm, saat kondisi 1800ppm disini diartikan saat kondisi udara normal, tanpa tercampur oleh gas propana dan butana, karena keadaan 1800ppm adalah keadaan awal atau minimal dari Rs sebelum 210
mendeteksi kadar gas, sehingga jika kondisi awal maka VRl yang dihasilkan adalah 0,08 volt, nilai tegangan 0,08 volt diambil dari nilai minimal yang dikeluarkan oleh sensor saat Rs bernilai 1800ppm, sehingga jika dimasukkan ke rumus hasilnya. Vc pada rumus adalah tegangan AVCC yang digunakan untuk mengaktifkan rangkaian. RL pada rumus adalah Variabel resistor yang digunakan, untuk alat ini menggunakan RL sebesar 10K.
Ro = 5,15 - 0,08 = 5,07 Ro = 5,07 / 0,08 = 63,375 Ro = 63,375 * 10000 Ro = 633750
Nilai Ro telah didapat yaitu 633750, sehingga dari nilai Ro tersebut bisa digunakan untuk mencari nilai Rs/Ro, dengan Rs adalah kondisi sensor mendeteksi berbagai variasi kadar gas diudara, maka dari itu pada program bascom dinyatakan sbb. Ro = 633750 Teganganx = Gas_ref / 1023 Tegangan = Teganganx * 5.15 X = 5.15 - Tegangan Y = X / Tegangan Rs = Y * 10000 D = Rs / Ro
D adalah nilai dari Rs / Ro yang mana nilai D ini yang akan dikonversikan kedalam PPM melalui rumus konversi yang didapat dari grafik yaitu y = 112,1 x -0,63 berikut penjelasan dari rumus konversi. Yang perlu diingat yaitu Y mewakili kadar gas dalam PPm dan X mewakili nilai Rs / Ro. y = 112,1 x-0,63 y = 112,1 / x 0,63 x 0,63 = 112,1 / y x 0,63 = (112,1 / y) 1 x 0,63/0,63 = (112,1 / y) 1/0,63 X = (112,1 / y) 1,58 211
Dari proses konversi diatas didapatlah rumus untuk mengubah nilai tegangan yang telah dirubah kedalam Rs dan Ro menjadi PPM. rumusnya sbb. PPM = (112,1 / (Rs/Ro) ) 1,58
Diprogram bascom AVR Rs/Ro didefinisikan sebagai variabel D dan hasil dari pembagian antara 112,1 dengan Rs/Ro didefinisakan dalam variabel E. Berikut program bascom yang menjelaskan tentang rumus tersebut. D = Rs / Ro E = 112.1 / D Ppm = E ^ 1.58
Kadar PPM yang telah didapat menggunakan rumus yang tertampil pada layar LCD harus dikalibrasi lagi dengan cara menyesuaikan dengan grafik datasheet apakah benar atau tidak nilai tampilan dari Rs/Ro berbanding dengan kadar gas PPM. hasil dari kalibrasi ini seperti berikut. Tabel 6.11.4 Tabel Pengujian Rs/Ro terhadap PPM Menggunakan Rumus Rs/Ro
PPM
0,83
2307
0,79
2505
0,88
2115
0,93
1929
6.11.6 Cara Penggunaan Alat Cara penggunaan alat detektor gas LPG ini tidaklah sulit, hanya perlu memberikan catu daya 12 v atau 9 v jika terdapat rangkaian regulator sehingga lampu led hijau akan menyala untuk mengindikasikan bahwa kadar ruangan akan gas LPG masih aman. Saat pengaktifan alat, led putih akan menyala terlebih dahulu selama 90 detik dan led biru akan menyusul 90 detik juga, sehingga total 180 menit yang mana telah memenuhi standart untuk heater pada sensor TGS2610.
212
Setelah itu letakkan alat ini didekat tabung gas LPG dengan jarak kurang dari 50 cm, jika terdeteksi ada kadar gas LPG yang bocor maka tampilan nilai tegangan dan nilai PPM akan naik sesuai dengan kadar gas LPG diruangan tersebut. Buzzer dan led merah akan aktif jika tegangan keluaran dari sensor > = 4,45 volt sesuai dengan alat yang terdapat dilapangan yang menggunakan sensor MQ5.
213
6.12 Membuat Alat Pengaman Pintu Dengan Password Pembahasan kali ini mengenai bagaimana membuat alat sejenis alarm pintu, yang mana sistem validasinya menggunakan password, sehingga akan tampak seperti pintu berpassword, alarm pintu berpassword ini menggunakan sebuah keypad matrik, tiga buah led (led merah, hijau dan biru), sebuah buzzer 5v, dan mikrokontroller ATMega16. Sistem kerja dari alat ini yaitu user akan men-setting terlebih dahulu mengenai password yang akan digunakan pada main menu “set”, sehingga mikrokontroller akan menyimpan password tersebut dalam “eeprom” yang sifatnya non volatile. Untuk proses input data menggunakan keypad matrik yang memiliki fitur input angka 1 sampai 9. Untuk bentuk dari alatnya adalah seperti gambar 6.12a
Gambar 6.12a Bentuk dari Alat Alarm Pintu Berpassword
Jadi terdapat LCD display yang fungsinya untuk menampilkan input angka yang dilakukan oleh user, dan juga untuk menampilkan bahwa password yang dimasukkan benar atau salah, jika password benar maka pada lcd display akan memunculkan tulisan “PASSWORD BENAR” dan led hijau akan menyala, namun jika input password salah akan menampilkan tulisan “PASSWORD SALAH” disertai dengan nyala led merah dan bunyi buzzer. 214
6.12.1 Fungsi dan Tujuan Fungsi dibuatnya alat ini adalah untuk membantu pengamanan rumah terutama untuk pintu, yang mana jika orang yang masuk adalah penghuni rumah dia akan bisa membuka pintu dengan password yang di misalkan dengan nyala led warna hijau, namun jika salah maka buzzer akan berbunyi dan led merah menyala. Tujuan dibuatnya alat ini adalah untuk mengetahui bagaimana proses input angka dari keypad matrik dan proses penyimpanan ke eeprom mikrokontroller. 6.12.2 Prinsip Kerja Alat Prinsip kerja alat ini yaitu input dari keypad matrik ditampilkan ke lcd display guna melihat kombinasi angka yang dimasukkan, setelah itu mikrokontroller menyimpan data input tersebut setelah menekan tombol save (tombol2), kemudian user masuk ke bagian input, dibagian input ini user diharuskan untuk memasukkan kombinasi angka yang tepat seperti angka yang sebelumnya telah disimpan, jika kombinasi angka tersebut benar maka led hijau menyala, led hijau disini hanyalah simbol untuk membuka kunci pintu, jika salah maka led merah akan menyala dan buzzer berbunyi. Untuk bagan penjelasannya adalah sebagai berikut. Keypad Matrix 4x4
Microcontroller ATMega16
Buzzer dan led
LCD Display
Led hijau bisa diganti dengan motor servo atau kunci elektronik yang mana jika lampu hijau menyala artinya kunci elektronik atau motor sevo bergerak untuk membuka kunci pintu, jika merah maka kunci tetap pada posisi terkunci dan buzzer menyala untuk pertanda bahwa ada bahaya.
215
6.12.3 Rangkaian Hardware Rangkaian hardware yang dibutuhkan untuk membuat alat ini tidaklah banyak, hanya memerlukan rangkaian buzzer, rangkaian led untuk led merah, biru dan hijau, dan rangkaian minum system ATMega16 ditambah LCD display a.Rangkaian Buzzer Rangkaian Buzzer ini menggunakan buzzer 5v dan transistor BC141 sebagai saklar on/off, fungsi buzzer di alat ini adalah sebagai pertanda bahaya, dimaksudkan agar penghuni rumah atau tetangga rumah bisa melihat siapa yang sedang ada di pintu rumah.
Ke PortA.0
Gambar 6.12b Skematik Rangkaian Buzzer b. Rangkaian Led Rangkaian led disini hanya menggunakan 3 buah led yaitu led biru, led hijau dan led merah, kegunaan led biru adalah sebagai penanda bahwa alat sedang dalam kondisi on, untuk led hijau artinya kunci pintu terbuka dan boleh masuk, untuk led merah artinya orang tersebut tidak boleh masuk dan pintu tetap dalam kondisi terkunci. Berikut gambar skematiknya
Ke PortA.7 - 5
Gambar 6.12c Skematik Rangkaian Led
216
c. Rangkaian Minimum System ATMega16 R. = Rangkaian
R. Buzzer
R. Led
R. Tombol
R. Regulator
LCD
Ke Keypad matrik 4x4 Gambar 6.12d Skematik Minimum System ATMega16 Bahan-Bahan : 1. Crystal 12Mhz x 1 buah 2. ATMega16 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. LCD Display x 1 buah 5. Resistor 4K7 x 1buah 6. Capasitor 104p x 4 buah 7. IC7805T x 1 buah 8. Capasitor polar 100uF x 1 buah 9. Capasitor polar 10uF x 1 buah 10. Capasitor 103p x 1 buah 217
11. Pinheader Male Secukupnya 12. Pinheader Female Secukupnya
d. Rangkaian Push Button Rangkaian push button disini hanyalah untuk media pemilihan mode, terdapat dua mode di alat ini yaitu mode input password, mode simpan password, jika user masuk ke mode input password maka user harus memasukkan kombinasi password yang telah terseimpan di mode simpan password. Rangkaian Push button ini dihubungkan ke PortB.0 sampai PortB.3 mikrokontroller ATMega16. Berikut adalah skematik dari push button
Ke PortB.0 - 3
Gambar 6.12e Skematik Push Button
e. Keypad Matrik 4x4 Keypad matrik yang digunakan adalah keypad matrik 4x4 jika menggunakan keypad jenis lain juga bisa, hanya perlu penyesuaian pada program bascom AVR-nya, sebenarnya yang digunakan untuk alat ini adalah fitur angka 1 sampai 9 dan fitur lain seperti huruf A, B, C, D tidak digunakan, berkut adalah konfigurasi dan bentuk dari keypad matrik 4x4
218
Ke mikrokontroller PortD.0-D.7
Gambar 2.24c Bentuk dan skematik dari keypad matrik 4x4
6.12.4 Program Bascom AVR $regfile = "m16def.dat" $crystal = 12000000 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Declare Sub Keypad Declare Sub Entri_data Dim Dim Dim Dim Dim Dim Dim Dim
Urut As Byte Kode As Byte Flag As Bit I As Word Nilai As Long Angka As Integer Pass As Integer Simpan_pass As Eram Integer
'variabel untuk EEPROM
Declare Sub Keypad1 Declare Sub Entri_data1 Dim Dim Dim Dim Dim Dim Dim
Urut1 As Byte Kode1 As Byte Flag1 As Bit I1 As Word Nilai1 As Long Angka1 As Integer Pass1 As Integer
Ddra = &B11111111 Porta.5 = 1 Ddrd = &B11110000 Portd = &HFF Config Pinb.0 = Input
219
Config Pinb.1 Config Pinb.2 Config Pinb.3 Tombol1 Alias Tombol2 Alias Tombol3 Alias Tombol4 Alias Set Portb.0 Set Portb.1 Set Portb.2 Set Portb.3
= Input = Input = Input Pinb.0 Pinb.1 Pinb.2 Pinb.3
Utama: Porta.7 = 0 Porta.6 = 0 Cls Cursor Off Cls Cursor Off Locate 1 , 4 Lcd "shinigami" Locate 2 , 1 Lcd " set " ; " " ; " input " Do If Tombol1 = 0 Then Bitwait Tombol1 , Set Goto Inputdata: End If If Tombol2 = 0 Then Bitwait Tombol2 , Set Goto Setting End If Loop
Inputdata: Porta.7 = 0 Porta.6 = 0 Porta.0 = 0 Cls Upperline Lcd "tombol 1 input" Lowerline Lcd "tombol 2 mulai" Gosub Keypad 'Baca Keypad Sub Keypad() Kode = 0 Urut = 0 Flag = 0 I = 0 Do For I = 0 To 20000
220
'KOLOM 1 Portd = &B11101111 If Pind.0 = 0 Then Waitms 200 Elseif Pind.1 = 0 Then Angka = 4 Gosub Entri_data Waitms 200 Elseif Pind.2 = 0 Then Angka = 7 Gosub Entri_data Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 End If 'KOLOM 2 Portd = &B11011111 If Pind.0 = 0 Then Angka = 1 Gosub Entri_data Waitms 200 Elseif Pind.1 = 0 Then Angka = 5 Gosub Entri_data Waitms 200 Elseif Pind.2 = 0 Then Angka = 8 Gosub Entri_data Waitms 200 Elseif Pind.3 = 0 Then Angka = 0 Gosub Entri_data Waitms 200 End If 'KOLOM 3 Portd = &B10111111 If Pind.0 = 0 Then Angka = 2 Gosub Entri_data Waitms 200 Elseif Pind.1 = 0 Then Angka = 6 Gosub Entri_data Waitms 200 Elseif Pind.2 = 0 Then
221
Angka = 9 Gosub Entri_data Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 End If 'KOLOM 4 Portd = &B01111111 If Pind.0 = 0 Then Angka = 3 Gosub Entri_data Waitms 200
Elseif Pind.1 = 0 Then Waitms 200
Elseif Pind.2 = 0 Then Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 Elseif Tombol3 = 0 Then Goto Utama Elseif Tombol1 = 0 Then Goto Datain End If Next Loop Until Tombol2 = 0 Goto Mulai End Sub
'Entri Data Sub Entri_data() Incr Urut Select Case Urut Case 1 : Nilai = Angka Lcd Angka Case 2 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Pass = Nilai Case 3 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka
222
Pass = Nilai Case 4 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Pass = Nilai Case 5 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Urut = 0 Locate 2 , 1 Pass = Nilai End Select End Sub Mulai: Cls Do If Pass = Simpan_pass Then Lowerline Lcd "password benar" Upperline Lcd Pass Porta.7 = 1 Else Lowerline Lcd "password salah" Upperline Lcd Pass Porta.6 = 1 Porta.0 = 1 End If Wait 3 Goto Inputdata Loop Datain: Cls Cursor Blink Cursor On Locate 1 , 1 Lcd "Tnput Password:" Locate 2 , 1 Cursor Blink Cursor On Waitms 200 Return '===================================================================== Setting: Porta.7 = 0 Porta.6 = 0 Pass1 = 0 Cls Upperline
223
Lcd "tombol 1 input" Lowerline Lcd "tombol 2 save" Gosub Keypad1 'Baca Keypad Sub Keypad1() Kode1 = 0 Urut1 = 0 Flag1 = 0 I1 = 0 Do For I1 = 0 To 20000 'KOLOM 1 Portd = &B11101111 If Pind.0 = 0 Then Waitms 200 Elseif Pind.1 = 0 Then Angka = 4 Gosub Entri_data1 Waitms 200 Elseif Pind.2 = 0 Then Angka = 7 Gosub Entri_data1 Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 End If 'KOLOM 2 Portd = &B11011111 If Pind.0 = 0 Then Angka = 1 Gosub Entri_data1 Waitms 200 Elseif Pind.1 = 0 Then Angka = 5 Gosub Entri_data1 Waitms 200 Elseif Pind.2 = 0 Then Angka = 8 Gosub Entri_data1 Waitms 200 Elseif Pind.3 = 0 Then Angka = 0 Gosub Entri_data1
224
Waitms 200 End If 'KOLOM 3 Portd = &B10111111 If Pind.0 = 0 Then Angka = 2 Gosub Entri_data1 Waitms 200 Elseif Pind.1 = 0 Then Angka = 6 Gosub Entri_data1 Waitms 200 Elseif Pind.2 = 0 Then Angka = 9 Gosub Entri_data1 Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 End If 'KOLOM 4 Portd = &B01111111 If Pind.0 = 0 Then Angka = 3 Gosub Entri_data1 Waitms 200
Elseif Pind.1 = 0 Then Waitms 200
Elseif Pind.2 = 0 Then Waitms 200 Elseif Pind.3 = 0 Then Waitms 200 Elseif Tombol3 = 0 Then Goto Utama Elseif Tombol1 = 0 Then Goto Datain1 End If Next Loop Until Tombol2 = 0 Simpan_pass = Pass1 Bitwait Tombol2 , Set Cls Do
225
Lowerline Lcd "simpan password" Upperline Lcd Pass1 Porta.7 = 1 Porta.6 = 1 Wait 3 Goto Utama Loop End Sub
'Entri Data Sub Entri_data1() Incr Urut1 Select Case Urut1 Case 1 : Nilai = Angka Lcd Angka Case 2 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Pass1 = Nilai Case 3 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Pass1 = Nilai Case 4 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Pass1 = Nilai Case 5 : Nilai = Nilai * 10 Nilai = Nilai + Angka Lcd Angka Urut1 = 0 Locate 2 , 1 Pass1 = Nilai End Select End Sub
Datain1: Cls Cursor Blink Cursor On Locate 1 , 1 Lcd "Input Password:" Locate 2 , 1 Cursor Blink Cursor On Waitms 200 Return
226
6.12.5 Cara Penggunaan Alat Cara penggunaan alat ini pertama terdapat tampilan pilihan di LCD display yaitu menu “set” dan “input”, user diminta untuk memilih salah satu pilihan tersebut dengan tombol1 untuk “input” dan tombol2 untuk “set”, langkah pertama user harus masuk ke bagian “set” untuk memasukkan password awal, masukkan kombinasi angka sebagai password dengan keypad matrik, setelah berhasil memasukkan password, langkah kedua yaitu kembali ke menu awal dengan menekan tombol3, setelah itu masuk ke bagian menu “input” dengan menekan tombol1, dibagian menu input, user akan dimintai kombinasi password yang sesuai dengan apa yang telah disimpan sebelumnya dengan menggunakan keypad matrik, jika input password bernilai benar maka led hijau akan menyala, namun jika salah maka led merah akan menyala diikuti dengan bunyi buzzer.
227
6.13 Membuat Alat Kendali Led dan Monitoring ADC Berbasis TCP-IP Membuat alat kendali led dan monitoring ADC dengan menggunakan web server merupakan salah satu project yang tidak murah untuk pembuatannya, dikarenakan modul webserver yang dipakai adalah modul web server NM7010A-LF yang mana modul tersebut sangat cocok untuk komunikasi dengan mikrokontroller dengan basis TCP-IP. Alat yang akan dibuat adalah alat yang digunakan untuk menghidupkan atau mematikan led yang berjumlah satu buah pada Portb.0 dan monitoring nilai ADC pada PortA.7 menggunakan komunikasi TCP-IP, jadi alat ini bisa dikendalikan oleh satu komputer maupun banyak komputer dalam satu jaringan, untuk gambar alatnya seperti Gambar 6.13a
Gambar 6.13a Tampilan Alat Kendali Led Berbasis TCP-IP
Alat yang akan dibuat ini menggunakan mikrokontroller ATMega32 dengan kristal eksternal 4 MHz, sehingga perlu diperhatikan dengan penggunaan kristal pada bab ini, karena pada bab lain mengunakan 12 MHz, sebenarnya jika menggunakan kristal eksternal 12MHz atau 11.0592 Hz juga tidak masalah yang penting program pada Bascom AVR harus sesuai dengan kristal eksternal pada minimum system yang digunakan. Alat yang akan dibuat dilengkapi dengan satu buah led sebagai output dari mikrokontroller dan juga sebagai object yang akan dikendalikan menggunakan media TCP-IP.
228
6.13.1 Fungsi dan Tujuan Fungsi dibuatnya alat ini adalah sebagai alat untuk mengendalikan peralatan elektronika melalui media jaringan TCP-IP sehingga dapat diakses oleh banyak orang dalam satu jaringan, untuk tujuannya yaitu agar mengetahui bagaimana cara kerja dari modul web server NM7010A-LF jika berkoordinasi dengan minimum system ATMega32.
6.13.2 Prinsip Kerja Alat Prinsip kerja dari alat ini yaitu terdapat sensor yang dimasukkan ke PortA.7 pada minimum system, sensor ini sengaja tidak dijelaskan karena sensor ini bisa menggunakan berbagai mcam sensor, misal jika ingin monitoriang getaran maka pakai sensor getaran dengan output tegangan masuk ke PortA.7, begitu juga dengan sensor yang lainnya, hanya perlu memasukkan tegangan output sensor ke PortA.7 pada minimum System, dari sensor nilai ADC akan diolah oleh mikrokontroller ATMega32 sehingga data analog sensor akan diubah menjadi data digital, dari mikrokontroller data digital dikeluarkan melalui modul ethernet NM7010A-LF yang mana modul ini akan menghubungkan minimum system dengan komputer melalui media jaringan TCP-IP. Jika berhasil terkoneksi maka nilai data sensor akan tertera pada web browser bisa menggunakan mozilla firefox, google chrome atau internet explorer. Pada PortB.0 terdapat sebuah led yang akan dikendalikan oleh komputer, sebenarnya komputer tidaklah mengendalikan nyala lampu led, melainkan yang mengendalikan adalah mikrokontroller, komputer hanya berposisi sebagai pemberi perintah kepada mikrokonroller, dan mikrokontroller yang akan mengeksekusi nyala led tersebut, untuk lebih jelasnya dapat melihat bagan berikut. Sensor
Modul NM7010A-LF
Minimum System ATMega32
kabel UTP
Vcc, gnd, int0, sda, scl, reset
PortA.7 PortB.0 Led
Komputer
229
6.13.3 Rangkaian Hardware Rangkaian hardware yang digunakan untuk membuat alat ini adalah modul NM7010A-LF, rangkaian led, dan rangkaian minimum system ATMega32 , berikut penjelasan per bagiannya
a. Modul TCP-IP Starter Kit Modul NM7010A-LF yang dipakai untuk membuat alat ini yaitu modul TCP-IP Starter Kit dari innovative electronics, yang mana telah terdapat board pendukung dan modul NM7010A-LF sehingga memudahkan untuk koneksi ke mikrokonroller dikarenakan telah terdapat port dan dip switch pada board pendukungnya, Gambar 6.13b adalah Gambar tampilan modul tersebut.
230
Gambar 6.13b Rangkaian Skematik TCP-IP Starter Kit dan Bentuk Modul NM7010A-LF 231
Untuk koneksi dari modul TCP-IP Starter Kit ke mikrokontroller menggunakan 6 buah port pada minimum system yaitu VCC, GND, SCL, SDA, INT0 dan Reset, seperti pada Gambar 6.13c berikut Modul TCP-IP Starter Kit SCL
Minimum System ATMega32 PortC.0
SDA
PortC.1
INT0
PortD.2
RST (Reset)
Port Reset
VCC
VCC
GND
GND
Gambar 6.13c Konfigurasi Modul TCP-IP Starter Kit ke Mikrokontroller Perlu diperhatikan pada masalah setting dip switch, yang dipakai untuk membuat alat ini yaitu settingan seperti Gambar 6.13d yang mana nomer 1 dan 2 pada posisi Off dan nomer 3 sampai 8 diposisikan ON sehingga akan bernilai 26 +25+24+23+22+21 = 64 + 32 + 16 + 8 + 4 + 2 = 126
Gambar 6.13d Setting Dip switch
232
b. Minimum System ATMega32
ke Sensor
led
Ke SDA dan SCL
Gambar 6.13e Skematik ATMega32 Bahan-bahan : 1. Crystal 4Mhz x 1 buah 2. ATMega32 + Socket 40 pin x 1 buah 3. Capasitor 22p x 2 buah 4. Resistor 4K7 x 3 buah 5. Capasitor 104p x 4 buah 6. IC7805T x 1 buah 7. Capasitor polar 100uF x 1 buah 8. Capasitor polar 10uF x 1 buah 9. Capasitor 103p x 1 buah 10. Pinheader Male Secukupnya 11. Pinheader Female Secukupnya
233
c. Rangkaian Led Led yang digunakan pada alat ini adalah led hijau 5mm super bright, led ini hanyalah untuk contoh output, untuk pengembangan lebih lanjut bisa diganti dengan output lain seperti relay, motor, servo dan lain-lain
Gambar 6.13f Skematik :Led
d. Kabel UTP Kabel UTP berfungsi untuk menghubungkan antara modul TCP-IP Starter Kit menuju ke komputer, jika pada komputer akan kabel UTP dipasang pada Port Ethernet. Tipe untuk kabel UTP ada 2 yaitu “Straight” dan “Cross Over”, pada alat ini dipakai kabel UTP bertipe “Cross Over” dengan konfigurasi warna seperti gambar 6.13g berikut
Gambar 6.13g Bentuk dan Konfigurasi Kabel UTP Bertipe “Cross Over” 234
6.13.4 Program Bascom AVR $regfile = "m32def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 32 $framesize = 100 'used Const Const Const Const Const Const Const
constants Sock_stream = $01 Sock_dgram = $02 Sock_ipl_raw = $03 Sock_macl_raw = $04 Sel_control = 0 Sel_send = 1 Sel_recv = 2
'socket status Const Sock_closed = $00 Const Sock_arp = $01 Const Sock_listen = $02 Const Sock_synsent = $03 Const Sock_synsent_ack = $04 Const Sock_synrecv = $05 Const Sock_established = $06 Const Sock_close_wait = $07 Const Sock_last_ack = $08 Const Sock_fin_wait1 = $09 Const Sock_fin_wait2 = $0a Const Sock_closing = $0b Const Sock_time_wait = $0c Const Sock_reset = $0d Const Sock_init = $0e Const Sock_udp = $0f Const Sock_raw = $10 Enable Interrupts Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.121 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 1000 , Tx = $55 , Rx = $55 , Twi = &H80 , Clock = 100000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Dim Dim Dim Dim
Shtml As String * 15 Tempw As Word I As Byte , P As Byte S As String * 200 Test(2) As String * 10
Config Portb = Output Portb = 0 Led1 Alias Portb.0 Do Tempw = Socketstat(0 , 0)
235
If Tempw = Sock_established Then Tempw = Socketstat(0 , Sel_recv) If Tempw > 0 Then Do Tempw = Tcpread(0 , S) P = Split(s , Test(1) , " ") If Test(1) = "GET" Then Gosub Webpage End If Loop Until S = "" Tempw = Tcpwrite(0 , " ") Gosub Kirim_data Closesocket 0 End If Elseif Tempw = Sock_close_wait Then Closesocket 0 Elseif Tempw = Sock_closed Then I = Getsocket(0 , Sock_stream , 80 , 0) Socketlisten 0 End If Loop End Webpage: P = Split(s , Test(1) , " ") Shtml = Test(2) Return Kirim_data: Dim Wsize As Word , Icount As Integer Dim Data_adc As Word Dim Adc_teg As Single Dim Teg As String * 5 Dim Y As Byte , X As Byte Start Adc Data_adc = Getadc(7) Adc_teg = Data_adc / 1023 Adc_teg = Adc_teg * 5 Teg = Fusing(adc_teg , "#.###") If Shtml = "/main.htm" Then S = "ADC Monitor<meta http-equiv='refresh' content='1'>Menampilkan Data Tegangan
Tegangan= " + Teg + " volt" + "
Led ON/OFF " Elseif Shtml = "/Led.htm" Then S = "LED ON/OFFON/OFF LEDONOFF