BAB II TEORI DASAR
Pada bab ini dibahas tentang mekatronika, robotika, beberapa komponen robotika, dan bahasa C. Komponen robotika yang dibahas meliputi: motor servo, sensor GP2D12 dan mikrokontroler ATMEGA 8535,.
2.1
Mekatronika Istilah Mechatronik (Mechanical Engineering-Electronic Engineering)
pertama kali dikenalkan pada tahun 1969 oleh perusahaan jepang Yaskawa Electric Cooperation. Mekatronik adalah merupakan gabungan antara Mekanika, ilmu Elektronika dan Informatika. Sekarang kita sering melihat di sekeliling kita barang-barang mekatronik seperti robot, mesin bubut NC, kamera digital, printer dan lain sebagainya. Persamaan dari barang-barang mekatronik ini adalah bahwa objek yang dikendalikan adalah gerakan mesin. Persamaan prinsip dari barang-barang mekatronik ini adalah bahwa objek yang dikendalikan adalah gerakan mesin. Jika dibandingkan dengan gerakan mesin konvensional maka gerakan mesin tersebut lebih bersifat fleksibel dan lebih memiliki kecerdasan. Hal ini dimungkinkan karena memanfaatkan kemajuan bidang micro-electronics. Yang berarti, dengan bantuan peralatan microelectronics mesin dapat bergerak dengan lebih cerdas. Jika seseorang memberikan sebuah perintah, lalu semua dapat dipasrahkan ke mesin yang dapat bergerak secara otomatis. Ini sangat membantu menciptakan mesin atau alat yang praktis dan mudah digunakan. Sehingga sumber daya pada manusia seperti waktu dan otak dapat dipakai untuk pekerjaan yang lain untuk lebih menciptakan nilai tambah.
4
5
Terdapat
beberapa
faktor
yang
menyebabkan
timbulnya
bidang
mekatronika. Faktor-faktor tersebut adalah: a. Kemajuan pada bidang semikonduktor dan fabrikasi IC, yang mengarahkan
perkembangan
pada
produk
baru
dengan
cara
mengintegrasikan sistem mekanik dan elektronik b. Perkembangan
teknologi
komputer
(microcomputer,
embedded
computer), teknologi informasi dan perancangan perangkat lunak sehinggga menjadikan mekatronika sebagai leading technology pada abad ke-21 ini. Secara sedehana pembentukan ilmu mekatronika terdiri atas dua lapisan ilmu dasar, yaitu: fisika dan logika serta tiga ilmu utama, yaitu: elektronika, informatika dan mekanika. Dengan melihat asal katanya dapat dengan mudah dipahami, bahwa ilmu ini menggabungkan atau mensinergikan disiplin ilmu Mekanika, ilmu Elektronika dan Informatika.
Gambar 2.1 Ilustrasi Asal Ilmu Mekatronika
2.1.1. Definisi Menurut IEEE (IEEE Mechatronics Transaction, 1996), definisi mekatronika adalah sebagai berikut: Mechatronics is the synergistic integration of mechanical engineering with electronics and intelligent computer control in the design and manufacturing of industrial products and processes. Definisi ini dilengkapi dengan ilustrasi perkembangan mekatronika dalam bentuk diagram, seperti yang dapat dilihat pada Gambar berikut.
6
Gambar 2.2 Definisi dan Keterkaitan Ilmu di Mekatronika
Sementara itu, berdasarkan hasil Musyawarah Nasional Mekatronika di Bandung 28 Juli 2006, Komunitas Mekatronika Indonesia merekomendasikan definisi Mekatronika sebagai berikut: Mekatronika adalah sinergis iptek teknik mesin, teknik elektronika, teknik informatika dan teknik pengaturan (atau teknik kendali) untuk merancang, membuat atau memproduksi, mengoperasikan dan memelihara sebuah sistem untuk mencapai tujuan yang diinginkan. Dari definisi-definisi di atas, dapat disimpulkan beberapa bidang ilmu yang menyumbangkan peranannya dalam perkembangan ilmu mekatronika, adalah: a. Sistem Mekanika b. Sistem Elektronika c. Sistem Kontrol, dan d. Sistem Komputer Penggabungan beberapa bidang di atas, menghasilkan beberapa ilmu baru, yaitu: Elektro-mekanika yang merupakan penggabungan ilmu mekanika dan elektronika, Kontrol Elektronika yang memadukan ilmu elektronika dengan sistem kontrol, Sistem Kontrol Digital yang mempertemukan ilmu sistem kontrol dengan sistem komputer dan Mekanika CAD (Computer Aided Design) yang merupakan perpaduan ilmu mekanika dengan sistem komputer. Kemudian, integrasi keseluruhan ilmu tersebutlah yang menjadi akar dari perkembangan bidang mekatronika. Sistem mekatronika terdiri dari beberap bagian sebagaimana digambarkan dalam blok diagram Sistem Mekatronik di Gambar 2.3. Dari gambar tersebut,
7
sistem mekatronika terdiri dari: Aktuator, Sensor, Pengkondisian Signal dan Antarmuka, Pengendalian serta Display. Pertama adalah blok Aktuator. Aktuarot merupakan unsur penggerak sistem mekanik dari keseluruhan sistem. Sistem ini terdiri dari motor-motor, solenoida, dan komponen-komponen penggerak lainnya, baik yang digerakkan oleh elektronik, hidrolik atau pneumatik.
Gambar 2.3 Blok Diagram Sistem Mekatronika
Setelah itu, terdapat blok Pengkondisian Signal dan Antarmuka. Blok ini terdapat pada bagian input dan juga output sebuah sistem. Setiap signal yang masuk akan dikondisikan sehingga dapat diproses oleh sistem dan akan dikondisikan kembali agar dapat ditampilkan kepada dalam bentuk output kepada pengguna. Dari blok satu ke blok yang lain, terjadi pengkondisian signal, sehingga seluruh sistem dapat berjalan dengan baik. Blok yang merupakan blok utama dalam sistem mekatronika adalah blok Pengendalian. Blok ini berintikan sebuah sistem pengendalian, yang pada umumnya menggunakan peralatan digital, seperti Personal Computer (PC), Programmable Logic Controller (PLC), mikroprosesor dan sejenisnya. Pengendali akan bekerja seperti otak manusia, dimana ia menerima hasil bacaan lingkungan dan perintah dari pengguna, mengolahnya dan menghasilkan respon dan keluaran yang sesuai dengan kehendak pengguna. Terakhir, blok yang amat dekat dengan pengguna adalah blok penampil (Display). Blok ini merupakan antarmuka antara pengguna dengan keseluruhan sistem mekatronika, sehingga pengguna dapat melihat apa yang terjadi di dalam sistem
8
dan menganalisa keluaran dari sistem tersebut. Blok Pengkondisian Signal dan Antarmuka, Blok Pengendali dan Blok Display merupakan blok-blok pembentuk sistem elektronika dari keseluruhan sistem mekatronika yang ada. Beberapa manfaat penerapan mekatronik adalah sebagai berikut: •
Meningkatkan fleksibilitas
•
Meningkatkan kehandalan
•
Meningkatkan presisi dan kecepatan
2.1.2 Aplikasi Mekatronika Begitu banyaknya penggunaan sistem mekatronika dalam kehidupan. Beberapa bidang yang merupakan perkembangan teknologi metaronika adalah: •
Otomotif
•
Aerospace
•
Medikal
•
Xerografi
•
Sistem Pertahanan
•
Produk-produk Konsumen
•
Manufaktur
•
Pemprosesan Material
Beberapa contoh dari aplikasi mekatronika adalah sebagai beriku. a. Teknik Otomotif Sebagai contoh sistem mekatronik pada kendaraan bermotor adalah sistem rem ABS ( Anti-lock Breaking system) atau sistem pengereman yang menghindari terkuncinya roda sehingga mobil tetap dapat dikendalikan dalam pengereman mendadak, b. Teknologi Penerbangan Dalam teknologi penerbangan modern digunakan Comfort-In-Turbulence System sehingga dapat meningkatkan kenyamanan penumpang walau ketika terjadi turbulensi. Gust Load Alleviation c. Teknik Produksi Teknik produksi adalah penggunaan sensor pada robot. Sistem kendali umpan balik pada elektromotor berkecepatan rotasi tinggi dengan tenaga magnet.
9
2.2
Robotika Robot adalah sebuah alat elektro-mekanik yang dapat melakukan tugas
fisik, baik menggunakan pengawasan dan kontrol manusia, ataupun menggunakan program yang telah didefinisikan terlebih dulu melalui kecerdasan buatan. Robot biasanya digunakan untuk tugas yang berat, berbahaya, pekerjaan yang berulang dan kotor. Biasanya kebanyakan robot industri digunakan dalam bidang produksi. Penggunaan robot lainnya termasuk untuk pembersihan limbah beracun, penjelajahan bawah air dan luar angkasa, pertambangan, pekerjaan "cari dan tolong" (search and rescue), dan untuk pencarian tambang. Belakangan ini robot mulai memasuki pasaran konsumen di bidang hiburan, dan alat pembantu rumah tangga, seperti penyedot debu, dan pemotong rumput. Kata robot berasal dari kata robota terdapat pada sebuah teater fiksi sains berjudul Rossum’s Universal Robots (RUR), karya Karel Capek dari Czech (1921) yang berarti bekerja atau pekerja. Kemudian, istilah robot berkembang dari waktu ke waktu sesuai dengan teknologi yang berkembang. Ada beberapa sifat dan karakteristik robot, adalah: •
bergerak tanpa harus dikendalikan langsung oleh manusia
•
bergerak secara multi-aksis (rotasi dan translasi)
•
dapat diprogram ulang
•
dapat mengambil keputusan tertentu secara otomatis
•
dapat berinteraksi, mengambil informasi dan memanipulasi lingkungannya
•
memiliki sistem kecerdarasan buatan
Untuk
menghindari
hal-hal
yang
dikhawatirkan
oleh
manusia
akibat
‘perkembangan’ yang pesat dari robot, maka sejak awal telah dibuat Tiga Hukum Robot. Tiga Hukum Robot dalam genre cerita fiksi ilmiah adalah tiga buah peraturan yang ditulis oleh Isaac Asimov, yang harus dipatuhi oleh hampir semua robot-robot positroniknya, yang terdapat dalam karya-karya cerita fiksinya. Tiga Hukum Robot pertama kali diperkenalkan secara lengkap pada tahun 1942 dalam cerita pendek "Runaround", yang menyatakan sebagai berikut: 1. Robot tidak boleh melukai manusia, atau dengan berdiam diri, membiarkan manusia menjadi celaka (A robot may not injure a human being or, through inaction, allow a human being to come to harm).
10
2. Robot harus mematuhi perintah yang diberikan oleh manusia kecuali bila perintah tersebut bertentangan dengan Hukum Pertama (A robot must obey orders given to it by human beings except where such orders would conflict with the First Law). 3. Robot harus melindungi keberadaan dirinya sendiri selama perlindungan tersebut tidak bertentangan dengan Hukum Pertama atau Hukum Kedua (A robot must protect its own existence as long as such protection does not conflict with the First or Second Law).
2.2.1 Konstruksi Robot Terdapat
berbagai
macam
jenis
robot.
Pada
umumnya,
robot
diklasifikasikan terdiri dari 2 (dua) jenis, yaitu: robot industri (industrial robot) dan robot bergerak (mobile robot). Klasifikasi ini dilihat dari sisi perkembangan dan struktur robot tersebut. Robot industri adalah robot yang awal-awal dibangun oleh para peneliti. Robot ini memiliki ciri khas sebagai berikut: •
Banyak didominasi oleh sistem mekanikal
•
Konstruksi dasar (base) robot tetap (stationary) berbentuk tangan manusia
•
Menggunakan sensor yang jumlah dan variasi terbatas
•
Menggunakan sistem mikroprosesor dan dapat diprogram ulang Sedangkan robot bergerak adalah kelanjutan dari proses pembangungan
robot. Robot bergerak ini memiliki ciri khas sebagai berikut: •
Banyak didominasi oleh sistem elektrik
•
Konstruksi dasar (base) robot yang bergerak dan beroda atau berkaki
•
Menggunakan sensor yang banyak jumlah dan variasinya
•
Menggunakan sistem mikroprosesor yang memiliki kecerdasan buatan
2.2.2
Robot Industri Robot industri merupakan robot yang pertama-tama dibangun oleh para
peneliti.Terdapat beberapa jenis robot industri berdasarkan areal kerjanya (envelope work), yaitu: rectangular coordinate robot, cylindrical coordinate
11
robot, sperical coordinaet robot, articulate arm robot, gantry robot dan scara robot, sebagaimana yang tampak pada Gambar berikut.
Gambar 2.4 Robot Industri 2.2.3
Robot Beroda Ketika para pencipta robot pertama kali mencoba meniru manusia dan
hewan, mereka menemukan bahwa hal tersebut sangatlah sulit; membutuhkan tenaga penghitungan yang jauh lebih banyak dari yang tersedia pada masa itu. Jadi, penekanan perkembangan diubah ke bidang riset lainnya. Robot sederhana beroda digunakan untuk melakukan eksperimen dalam tingkah laku, navigasi, dan perencanaan jalur. Teknik navigasi tersebut telah berkembang menjadi sistem kontrol robot otonom yang tersedia secara komersial. Robot Beroda atau Wheeled Mobile Robot adalah konstruksi robot yang ciri khasnya mempunyai aktuator berupa roda untuk menggerakkan keseluruhan badan robot tersebut, sehingga robot tersebut dapat melakukan perpindahan posisi dari satu titik ke titik yang lain. Robot beroda ini sangat disukai bagi orang yang mulai mempelajari robot. Hal ini karena membuat robot mobil tidak memerlukan kerja fisik yang berat. Untuk dapat membuat sebuah robot beroda minimal diperlukan pengetahuan tentang mikrokontroler dan sensor-sensor elektronik.
12
Gambar 2.5 Robot Beroda
2.2.4
Robot Berkaki Ketika para teknisi siap untuk mencoba robot berjalan kembali, mereka
mulai dengan heksapoda dan platform berkaki banyak lainnya, yang dikenal dengan istilah Legged Robot. Robot-robot tersebut meniru serangga dan arthropoda dalam bentuk dan fungsi. Tren menuju jenis badan tersebut menawarkan fleksibilitas yang besar dan terbukti dapat beradaptasi dengan berbagai macam lingkungan, tetapi biaya dari penambahan kerumitan mekanikal telah mencegah pengadopsian oleh para konsumer. Dengan lebih dari empat kaki, robot-robot ini stabil secara statis yang membuat mereka bekerja lebih mudah. Prinsip robot berkaki dapat dilihat pada Gambar 2.6 di bawah ini.
Gambar 2.6 Robot Berkaki
Kelebihan robot ini dibanding dengan robot beroda adalah kemampuannya berjalan di berbagai permukaan. Sehingga, untuk penggunaan di permukaan yang tidak datar, seperti berbatu, berumput, berpasir dan permukaan yang tidak terkirakan sebelumnya, digunakan robot berkaki.
2.2.5
Humanoid Robot bergerak yang kesulitannya tinggi adalah robot berkaki dua, atau
dikenal dengan istilah humanoid, karena mirip seperti manusia. Tujuan dari riset
13
robot berkaki dua adalah mencapai gerakan berjalan menggunakan gerakan pasifdinamik yang meniru gerakan manusia. Kesulitannya adalah disamping harus mengatur gerakan agar robot dapat berjalan dengan baik juga harus diperhitungkan keseimbangan dan kestabilan robot yang terus berubah, termasuk sumber daya yang harus disiapkan secara ringan untuk dapat dibawa oleh robot. Hingga saat ini telah terdapat beberapa humanoid yang ditampilkan oleh beberapa industri. Salah satu humanoid yang cukup terkenal adalah ASIMO yang telah memiliki beberapa versi. Contoh humanoid dapat dilihat pada Gambar 2. 9.
(a)
(b)
(c)
Gambar 2.7 Humanoid : (a) Prinsip, (b) dan (c) Versi-versi Humaniod
2.3
Komponen Robotika Komponen yang digunakan pada tugas akhir ini meliputi sensor sharp
GP2D12, motor servo dan mikrokontroller atmega 8535.
2.3.1
Motor Servo Motor Servo terdiri dari sebuah motor DC, serangkaian gear, sebuah
potensiometer, sebuah output shaft dan sebuah rangkaian kontrol elektronik. Biasanya, motor servo berbentuk kotak segi empat dengan sebuah output shaft motor dan konektor dengan 3 kabel yaitu power, kontrol dan ground. Gear motor servo ada yang terbuat dari plastic, metal atau titanium. Didalam motor servo terdapat potensiometer yang digunakan sebagai sensor posisi. Potensiometer tersebut dihubungkan dengan output shaft untuk mengetahui posisi aktual shaft.
14
Ketika motor dc berputar, maka output shaft juga berputar dan sekaligus memutar potensiometer. Rangkaian kontrol kemudian dapat membaca kondisi potensiometer tersebut untuk mengetahui posisi aktual shaft. Jika posisinya sesuai dengan yang diinginkan, maka motor dc akan berhenti. Sudut operasi motor servo (Operating Angle) bervariasi tergantung jenis motor servo. Ada 2 jenis motor servo yaitu : • Motor Servo Standard Yaitu motor servo yang mampu bergerak CW dan CCW dengan sudut operasi tertentu, misalnya 600, 900 atau 1800. • Motor Servo Continuous Yaitu motor servo yang mampu bergerak CW dan CCW tanpa batasan sudut operasi (berputar secara kontinyu).
Gambar 2.8 Motor Servo
Motor servo dikendalikan dengan cara mengirimkan sebuah pulsa yang lebar pulsanya bervariasi. Pulsa tersebut dimasukkan melalui kabel kontrol motor servo. Sudut atau posisi shaft motor servo akan diturunkan dari lebar pulsa. Biasanya lebar pulsanya antara 1.1 ms sampai 1.9 ms dengan periode pulsa sebesar 20 mS. Motor servo standar hanya menetap di posisi tertentu sesuai dengan lebar pulsa sinyal kendali yang diberikan padanya. Jangkauan gerak motor ini hanya 180 O. Contoh bentuk sinyal kendali motor servo adalah sebagai berikut :
15
P o s is i S u d u t p o ro s
2 0 . 0 0 0 M ik r o second
P o s is i S u d u t P o ro s
P o s is i s u d u t P o ro s
2 0 . 0 0 0 M ik r o second
Gambar 2.9 Contoh sinyal kendali dengan perioda 20 ms
Untuk mengetahui lamanya pemberian pulsa per siklus yang diperlukan untuk menggerakkan motor servo pada sudut tertentu maka perlu dilakukan beberapa tahapan. Tahapan yang pertama adalah mencari tahu berapa lama pemberian pulsa per siklus yang diperlukan untuk menggerakkan motor servo ke posisi 0O dan posisi 180O. Setelah lamanya pulsa per siklus untuk kedua sudut itu diketahui, langkah selanjutnya adalah mencari tahu lamanya pulsa per siklus yang dibutuhkan untuk menggerakkan motor servo ke posisi (sudut) lainnya. Untuk motor servo ini, tidak diperlukan rangkaian driver khusus, cukup catu daya 5 volt DC dan sebuah sinyal kendali dengan periode konstan dan beragam duty cycle.
2.3.2
Sensor Jarak GP2D12 GP2D12 adalah sensor pengukur jarak yang diproduksi oleh Sharp. Sensor
ini mengeluarkan sinyal analog dan mampu mengukur jarak pada rentang 10 – 80 cm. Prinsip kerja sensor inframerah ini dalam mengukur jarak berbeda dengan sensor ultrasonik yang menggunakan waktu pantul gelombang bunyi karena waktu pantul cahaya jelas terlalu singkat untuk dapat diukur. Cahaya inframerah dengan frekuensi 40 kHz dipancarkan dan hasil pantulannya diterima oleh susunan detektor inframerah. Sudut pantulan sinar inframerah akan berubah sesuai jarak sensor dan obyek.
Gambar 2.10 Sensor Jarak GP2D12
16
¾ Fetures / keistimewaan •
Tidak terpengaruh oleh warna
•
Jarak deteksi 1- sampai 80 cm
•
Tidak membutuhkan kendali / kontrol dari luar
•
Output analog
¾ Outline dimension / dimensi secara garis besar
Gambar 2.11 Outline Dimension
GPD2D12 merupakan salah satu sensor jarak dengan keluaran tegangan analog. Jarak yang bisa dideteksi GPD2D12 mulai dari 8cm sampai 80cm, sedangkan tegangan yang dikeluarkan adalah mulai dari 2,6 Vdc dan terus turun sampai sekitar 0,5 Vdc, sehingga jarak berbanding terbalik dengan tegangan, jadi tegangan akan semakin tinggi pada saat jarak semakin dekat. Setiap 32 ms pembacaan jarak pada sensor GPD2D12 ini akan selalu update.
17
Gambar 2.12 Grafik Perbandingan Jarak Dan Tegangan Penggunaan sensor GPD2D12 ini tidak ada perlakuan khusus dalam proses pembacaannya, sehingga apabila ada mikrokontroler yang sudah terdapat ADC (Seperti Atmega8535) di dalam maka sensor jarak ini tinggal dihubungkan dan dibaca tegangan keluarannya. ATmega8535 merupakan salah satu jenis dari mikrokontroler AVR buatan ATMEL yang mempunyai 8 channel ADC (Analog to Digital Converter) dengan resolusi 10bit. Maksudnya adalah mikrokontroler ini mampu untuk diberi masukan tegangan analog sampai 8 saluran secara bersamaan dengan ketelitian sampai 10 bit, sehingga pemakaian sensor jarak GPD2D12 pada mikrokontroler ini maksimal adalah 8 buah.
2.3.3
Mikrokontroler Atmega 8535 Telah berkembang satu rangkaian mikroprosessor yang sudah dilengkapi
dengan memory, baik RAM (Random Access Memory) maupun ROM (Read Only Memory), sarana until I/O secara pararel maupun seri, timer, dan lain-lain yang dikemas di dalam satu chip IC dengan tujuan untuk membangun peralatan berbasis mikroprosessor dengan mudah dan sederhana. Rangkaian mikroprosessor semacam ini disebut Singel Chip Mikrokomputer atau Mikrokontroller.
18
Sedangkan Mikroprosessor itu sendiri adalah CPU dari sebuah komputer, tanpa memory, I/O dan periferal yang dibutuhkan oleh suatu sistem lengkap. Mikrokomputer seperti IBM PC menggunakan disk sebagai media penyimpanan program, dan perangkat I/O yang banyak digunakan untuk komunikasi dengan pengguna namun dapat digunakan juga untuk memonitor dan mengendalikan mekanisme proses pada peralatan
yang dikontrol. Adapun
keterangan data mikrokontroller atmega 8535 adalah sebagai berikut.
1.
Gambaran Umum Mikrokontroller ATmega 8535 Perkembangan teknologi telah mendorong dengan pesat kemajuan
perkembangan dunia elektronika khususnya dunia mikroelektronika. Dengan adanya penemuan silikon maka bidang ini telah memberikan sumbangan yang amat berharga bagi perkembangan teknologi modern. Atmel sebagai salah satu vendor yang mengembangkan dan memasarkan produk mikroelektronika telah menjadi suatu teknologi standar bagi para desainer sistem elektronika masa sekarang. Dengan perkembangan terakhir yaitu generasi AVR (Alf and Vegard’s Risc processor) maka para desainer sistem elektronika telah diberikan suatu teknologi yang memiliki kapabilitas yang amat maju namun dengan biaya ekonomis yang cukup minimal. Mikrokontroler AVR memiliki arsitektur RISC 8 bit di mana semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. Dibandingkan dengan instruksi ASM51 yang membutuhkan 12 siklus clock. Tentu saja ini terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda, yang satu RISC sedangkan yang lain CISC. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya . Dari segi arsitektur dan instruksi yang digunakan, mereka hampir sama.
2.
Fitur Mikrokontroller ATmega 8535 Mikrokontroller ATmega 8535 memiliki fitur sebagai berikut.
19
A.
Frekuensi clock maksimum 16 MHz
B.
Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan Port D.
C.
Analog to Digital Converter 10 bit sebanyak 8 input
D.
Timer/Counter sebanyak 3 buah
E.
CPU 8 bit yang terdiri dari 32 register
F.
Watchdog Timer dengan osilator internal
G.
SRAM sebesar 512 byte
H.
Memori Flash sebesar 8 Kbyte dengan kemampuan read while Write.
I.
Interrupt internal maupun eksternal
J.
Port komunikasi SPI
K.
EEPROM sebesar 512 byte yang dapat diprogram saat operasi
L.
Analog Comparator
M.
Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps
3.
Konfigurasi Pin ATmega 8535 Mikrokontroller ATmega 8535 mempunyai 40 kaki (pin), 32 kaki
diantaranya digunakan untuk keperluan input-output, sedangkan 8 kaki lainnya digunakan untuk VCC, ground, reset, oscillator, dan tegangan referensi. 32 kaki tersebut membentuk 4 buah port, dimana setiap port terdiri dari 8 kaki. Masingmasing port biasa dikenal sebagai port A, port B, port C, dan port D. Seperti ditunjukkan pada gambar 2.13
20
Gambar 2.13 Konfigurasi Pin ATmega 8535
Deskripsi dari pin-pin ATmega 8535 adalah sebagai berikut : A. Vcc sebagai supply tegangan digital B. GND sebagai ground C. Port A sebagai input analog ke A/D konverter. Port A juga sebagai 8-bit directional port I/O, jika A/D konverter tidak digunakan. Pin-pin port dapat menyediakan resistor-resistor internal pull-up. Ketika port A digunakan sebagai input dan pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port A adalah tri-state ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.
Tabel 2.1 Fungsi Pin pada Port A
21
D. Port B adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port B mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port B yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port B adalah tri-state ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.
Tabel 2.2 Fungsi Pin pada Port B
E. Port C : Port C adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port C mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port C yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port C adalah tri-state ketika kondisi reset menjadi aktif seklipun clock tidak aktif. Jika antarmuka JTAG enable, resistor-resistor pull-up pada pin-pin PC5(TDI), PC3(TMS), PC2(TCK) akan diktifkan sekalipun terjadi reset.
Tabel 2.3 Fungsi Pin pada Port C
22
F. Port D : Port D adalah port I/O 8-bit bit-directional dengan resistor-resistor internal pull-up. Buffer output port D mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port D yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port D adalah tri-state ketika kondisi reset menjadi aktif seklipun clock tidak aktif.
Tabel 2.4 Fungsi Pin pada Port D
G. Reset : Sebuah low level pulsa yang lebih lama daripada lebar pulsa minimum pada pin ini akan menghasilkan reset meskipun clock tidak berjalan. H. XTAL1 : Input inverting penguat Oscilator dan input internal clock operasi rangkaian. I. XTAL2 : Output dari inverting penguat Oscilator. J. AVCC : Pin supply tegangan untuk PortA dan A/D converter. Sebaiknya eksternalnya dihubungkan ke VCC meskipun ADC tidak digunakan. Jika ADC digunakan seharusnya dihubungkan ke VCC melalui low pas filter. K. AREF : Pin referensi analog untuk A/D konverter.
4. Arsitektur Mikrokontroller ATmega8535 Untuk arsitektur mikrokontroller atmega 8535 dapat dilihat pada gambar blok diagram berikut.
23
]
Gambar 2.14 Blok Diagram ATmega 8535 Dari gambar tersebut dapat dilihat bahwa ATmega8535 memiliki bagian sebagai berikut : 1. Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C, dan Port D. 2. ADC 10 bit sebanyak 8 saluran. 3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register. 5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte. 7. Memori Flash sebesar 8 kB dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal. 9. Port antarmuka SPI.
24
10. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 11. Antarmuka komparator analog. 12. Port USART untuk komunikasi serial.
5.
Struktur Memori Mikrokontroller ATmega8535 AVR ATMega8535 memiliki ruang pengalamatan memori data dan
memori program yang terpisah. Sebagai tambahan, ATmega8535memiliki fitur suatu EEPROM Memori untuk penyimpanan data. Semuatiga ruang memori adalah reguler dan linier. Instruksi pada memori program dieksekusi dengan pipelining single level. Sewaktu sebuah instruksi sedang dikerjakan, instruksi berikutnya diambil dari memori program.
A. In-System Reprogrammable Flash Program Memory Mikrokontroler Atmega8535 memiliki 8 Kbytes On-chip In-System Reprogrammable Flash memory untuk meyimpan program. Karena semua instruksi AVR lebarnya 16 atau 32 bit, maka memory flash diorganisasi sebagai 4K x 16. Untuk keamanan software, Flash memory space dibagi dalam dua seksi, yaitu : Boot Program section dan Application Program section. Flash memory meiliki ketahanan paling sedikit 10,000 kali siklus write/erase. ATmega8535 Program Counter (PC) lebarnya adalah 12 bits yang dapat mengalamati program sebesar 4K lokasi memory.
Gambar 2.15 Peta Memory Program
25
B. SRAM Data Memory 608 lokasi alamat data memory adalah Register File, I/O Memory dan internal data SRAM. 96 lokasi alamat pertama adalah Register File dan I/O Memory. 512 lokasi alamat berikutnya adalah internal data SRAM.
Gambar 2.16 Peta Memory Data
Pengalamatan langsung dapat mencapai semua space memory data. Pengalamatan tidak langsung dengan mode displacement hanya dapat mencapai 63 lokasi memory dari alamat dasar yang diberikan oleh register Y atau Z. Ketika menggunakan register mode pengalamatan tidak langsung dengan pre-decrement dan post-increment automatis, isi register X, Y dan Z akan di-decrement atau diincrement. Dengan mode pengalamatan tersebut dapat mengakses 32 general purpose working registers, 64 I/O Registers dan the 512 bytes of internal data SRAM.
C. EEPROM Data Memory ATmega8535 memiliki 512 bytes memory data EEPROM yang tahan paling sedikit 100.000 kali siklus write/erase. Ketika EEPROM sedang dibaca, CPU akan berhenti bekerja selama empat siklus clock sebelum instruksi berikutnya diesksekusi. Dan pada saat EEPROM sedang ditulisi CPU akan berhententi selama dua siklus clock. Untuk menulis EEPROM diperlukan waktu
26
programming selama 8,4 ms Register yang berhubungan dengan EEPROM adalah sebagai berikut :
EEPROM Address Register – EEARH dan EEARL
EEPROM Data Register – EEDR
EEPROM Control Register – EECR
6.
Port Input/Output Digital ATmega8535 mempunyai empat buah port yang bernama PortA, PortB,
PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset.
27
Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi.
Tabel 2.5 Konfigurasi Pin Port
Bit 2 – PUD : Pull-up Disable Bila bit diset bernilai 1 maka pull-up pada port I/O akandimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
7.
Interupsi Interupsi atau interrupt adalah suatu kejadian atau peristiwa yang
menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut. Yang harus diperhatikan untuk menguanakan interupsi adalah, kita harus tau sumber-sumber interupsi, vektor layanan interupsi dan yang terpenting rutin lyanan interupsi, yaitu subrutin yang akan dikerjakan bila terjadi interupsi. Analoginya adalah sebagai berikut, seseorang sedang mengetik laporan,
28
mendadak telephone berdering dan menginterrupsi orang tersebut sehingga menghentikan
pekerjaan
mengetik
dan
mengangkat
telephone.
Setelah
pembicaraan telephone yang dalam hal ini adalah merupakan analogi dari Interrupt Service Routine selesai maka orang tersebut kembali meneruskan pekerjaanya mengetik. Demikian pula pada sistem mikrokontroler yang sedang menjalankan programnya, saat terjadi interrupt, program akan berhenti sesaat, melayani interrupt tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vektor dari interrupt yang terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interrupt tadi. Seperti yang terlihat Gambar di bawah, sebuah program yang seharusnya berjalan terus lurus, tiba-tiba terjadi interrupt dan harus melayani interrupt tersebut terlebih dahulu hingga selesai sebelum ia kembali meneruskan pekerjaannya.
Gambar 2.17 Analogi Interrupt
Pada AVR terdapat 3 pin interupsi eksternal, yaitu INT0,INT1,dan INT2. Interupsi eksternal dapat dibangkitkan apabila ada perubahan logika atau logika 0 pada pin interupsi Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi eksternal diatur oleh register MCUCR ( MCU Control Register), yang terlihat seperti gambar ini:
29
Untuk bit penyusunnya adalah. •
Bit ISC11 dan ISC10 bersama-sama menentukan kodisi yang dapat
menyebakan interupsi eksternal pada pin INT1. keadaan selengkapnya terlihat pada table berikut :
Tabel 2.6 Interrupt 1 Sense Control
•
Bit ISC01 dan ISC00 bersama-sama menentukan kodisi yang dapat
menyebakan interupsi eksternal pada pin INT0. keadaan selengkapnya terlihat pada table berikut :
Tabel 2.7 Interrupt 0 Sense Control
Pemilihan pengaktifan interupsi eksternal diatur oleh register GICR ( General Interrupt Control Register ) yang terlihat pada gambar berikut :
Bit penyusunnya dapat dijelaskan sebagai berikut: •
Bit INT1 adalah bit untuk mengaktifkan interupsi eksternal 1. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 1 akan aktif.
30
•
Bit INT0 adalah bit untuk mengaktifkan interupsi eksternal 0. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 0 akan aktif.
•
Bit INT2 adalah bit untuk mengaktifkan interupsi eksternal 2. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 2 akan aktif.
Tabel 2.8 Reset and Interrupt Vector
2.4
Bahasa C Dalam pemrograman komputer dikenal dua jenis tingkatan bahasa, jenis
yang pertama adalah bahasa pemrograman tingkat tinggi (high level language)
31
dan jenis yang kedua adalah bahasa pemrograman tingkat rendah (low level language). Bahasa pemrograman tingkat tinggi lebih berorientasi kepada manusia yaiu bagaimana agar pernyataan-pernyataan yang ada dalam program mudah dimengerti oleh manusia. Sedangkan bahasa tingkat rendah lebih berorientasi ke mesin, yaitu bagaimana agar komputer dapat langsung mengintepretasikan pertanyaan-pertanyaan program untuk mengerjakan suatu tugas tertentu. Program yang ditulis dalam bahasa tingkat rendah relatif lebih panjang dan lebih sulit untuk dipahami, namun kelebihannya lebih efisien dan lebih cepat untuk dieksekusi oleh mesin. Bahasa C merupakan salah satu bahasa pemrograman tingkat tinggi yang paling banya digunakan didunia komputer maupun didunia embedded system.
2.4.1
Struktur Penulisan Program Pada umumnya dalam penulisan struktur pemrograman bahasa C adalah
sebagai berikut:
2.4.2
# include
// optional
# include
// optional
# difine (nama1) (nilai);
// optional
# difine (nama2) (nilai);
// optional
(global variables)
// inisialisasi variable
(functions)
// program kecil
void main (void)
// program utama
Tipe Data ¾ char
: 1 byte ( -128 s/d 127)
¾ unsigned char
: 1 byte ( 0 s/d 255)
¾ int
: 2 byte ( -32768 s/d 32767)
¾ unsigned int
: 2 byte ( 0 s/d 65535)
¾ long
: 4 byte ( -2147483648 s/d 2147483647)
¾ unsigned long
: 4 byte ( -128 s/d 127)
32
2.4.3
¾ float
: bilangan desimal
¾ array
: data-data yang sama tipenya
¾ void
: tidak bernilai
Penyimpanan Data ¾ Variabel : memori penyimpanan data yang datanya dapat diubah nilainya. Deklarasi
: [tipe data] [nama] = [nilai];
¾ Konstanta : memori penyimpanan data yang datanya tidak dapat diubah nilainya. Deklarasi
: const [nama] = [nilai];
[nama] : hanya huruf, angka (bukan karakter pertama), underscore (_). ¾ Global : variabel/konstanta yang dapat diakses diselruh bagian program. ¾ Local : variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.
2.4.4
Operasi Pemrograman 1. Operasi logika dan biner Logika -
AND : &&
-
OR : ||
-
NOT : !
biner -
AND : &
-
OR : |
-
XOR : ^
-
Shift left : <<
-
Righ shift : >>
-
Komplemen : ~
2. Operasi relasional ( perbandingan)
33
Sama dengan
: ==
Tidak sama dengan
: !=
Lebih besar
:>
Lebih besar sama dengan
: >=
Lebih kecil
:<
Lebih kecil sama dengan
: <=
3. Operasi aritmatika Operator : [ +. -. *. /, %. +=. -=. *=. ++. --] +.-.*./ : tambah, kurang, kali, bagi +=, -=, *=, /= : nilai desebelah kiri operator di tambah, kurang, kali, bagi dengan nilai desebelah kanan operator % : sisa bagi ++, -- : tambah sati (increment), kurang satu (decrement)
2.4.5
Statement Statement adalah setiap operasi dalam pemrograman yang diakhiri dengan
[;] atau [}]. Statement tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris, untuk lebih dari satu baris gunakan pasangan [/*] dan [*/]. Statemen yang tidak dieksekusi desebut juga dengan comments / komentar.
2.4.6
Conditional Statement
¾ If….. = jika....maka....jika tidak.... If ( [persyaratan] ) { [statement 1] ; [satatement 2] ; … } ¾ for… for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) { [statement 1] ; [satatement 2] ; … } ¾ while… while ( [persyaratan] ) { [statement 1] ; [satatement 2] ; … } ¾ do…while… do { [statement 1] ; [satatement 2] ; … } while ( [persyaratan] ) ¾ switch…case…
34
switch ( [nama variabel] ) {case [nilai 1]; [statement]; break; case [nilai 2]; [statement]; break; …}
2.4.7
Function Function adalah program kecil yang dipanggil oleh program utama. Penulisan : [tipe data hasil] [nama function] ( [tipe data input 1], [tipe data input 2] ) { [statement] }