BAB II LANDASAN TEORI 2.1 Pengertian Microcontroller Mikrokontroler adalah sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau keduanya), dan perlengkapan input output. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut “pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler, Mikrokontroler terdiri beberapa bagian seperti yang terlihat pada gambar di bawah ini : Gambar 2.1. Bagian Mikrokontroler 7 dari 8 Pada Gambar 2.1. tampak suatu mikrokontroler standar yang tersusun atas komponen-komponen sebagai berikut : A. Central Processing Unit (CPU) CPU merupakan bagian utama dalam suatu mikrokontroler. CPU pada mikrokontroler ada yang berukuran 8 bit ada pula yang berukuran 16 bit. CPU ini akan membaca program yang tersimpan di dalam ROM dan melaksanakannya. B. Read Only Memory (ROM) ROM merupakan suatu memori (alat untuk mengingat) yang sifatnya hanya dibaca saja. Dengan demikian ROM tidak dapat ditulisi. Dalam dunia mikrokontroler ROM digunakan untuk menyimpan program bagi mikrokontroler tersebut. Program tersimpan dalam format biner („0‟ atau „1‟). Susunan bilangan biner tersebut bila telah terbaca oleh mikrokontroler akan memiliki arti tersendiri. C. Random Acces Memory (RAM) Berbeda dengan ROM, RAM adalah jenis memori selain dapat dibaca juga dapat ditulis berulang kali. Tentunya dalam pemakaian mikrokontroler ada semacam data yang bisa berubah pada saat mikrokontroler tersebut bekerja. Perubahan data tersebut tentunya juga akan tersimpan ke dalam memori. Isi pada RAM akan hilang jika catu daya listrik hilang. D. Input / Output (I/O) Untuk berkomunikasi dengan dunia luar, maka mikrokontroler menggunakan terminal I/O (port I/O), yang digunakan untuk masukan atau keluaran. 9 E. Komponen lainnya Beberapa mikrokontroler memiliki timer/counter, ADC (Analog to Digital Converter), dan komponen lainnya. Pemilihan komponen tambahan yang sesuai dengan tugas mikrokontroler akan sangat membantu perancangan sehingga dapat mempertahankan ukuran yang kecil. Apabila komponen komponen tersebut belum ada pada suatu mikrokontroler, umumnya komponen tersebut masih dapat ditambahkan pada sistem mikrokontroler melalui port-portnya. 2.2 Kit Mikrokontroler Arduino Uno 2.2.1 Pengertian Arduino Arduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardware-nya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Arduino Uno kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino adalah sebuah board mikrokontroller yang berbasis ATmega328. Arduino memiliki 14 pin input/output yang mana 6 pin dapat digunakan sebagai output PWM, 6 analog input, crystal osilator 16 MHz, koneksi USB, jack power, kepala ICSP, dan tombol reset. Arduino mampu men-support mikrokontroller; dapat dikoneksikan dengan komputer menggunakan kabel USB. Berikut gambar 2.2 adalah pin-pin pada kit arduino uno. 10 Gambar 2.2. Board Arduino Uno ATmega328 Pada gambar 2.2 terdapat 14 pin output/input yang mana 6 pin dapat digunakan sebagai output PWM, 6 analog input, cristal osilator 16 MHZ dan tombol reset. Arduino tersebut menggunakan chip mikrokontroler ATmega328. 2.2.2 Fungsi Pada Kit Arduino uno PIN Power Arduino dapat diberikan power melalui koneksi USB atau power supply. Powernya diselek secara otomatis. PIN power terdapat pada kaki 1 sampai kaki 6, Power supply dapat menggunakan adaptor DC atau baterai. Adaptor dapat dikoneksikan dengan mencolok jack adaptor pada koneksi port input supply. Board arduino dapat dioperasikan menggunakan supply dari luar sebesar 6 - 20 volt. Jika supply kurang dari 7V, kadang kala pin 5V akan menyuplai kurang dari 5 volt dan board bisa menjadi tidak stabil. Jika menggunakan lebih dari 12 V, tegangan di regulator bisa menjadi sangat panas dan menyebabkan kerusakan pada board. Rekomendasi tegangan ada pada 7 sampai 12 volt. 11 Penjelasan pada pin power adalah sebagai berikut : Vin Tegangan input ke board arduino ketika menggunakan tegangan dari luar (seperti yang disebutkan 5 volt dari koneksi USB atau tegangan yang diregulasikan). Pengguna dapat memberikan tegangan melalui pin ini, atau jika tegangan suplai menggunakan power jack, aksesnya menggunakan pin ini. 5V Regulasi power supply digunakan untuk power mikrokontroller dan komponen lainnya pada board. 5V dapat melalui Vin menggunakan regulator pada board, atau supply oleh USB atau supply regulasi 5V lainnya. 3V3 Suplai 3.3 volt didapat oleh FTDI chip yang ada di board. Arus maximumnya adalah 50mA. Pin Ground berfungsi sebagai jalur ground pada arduino Memori ATmega328 memiliki 32 KB flash memori untuk menyimpan kode, juga 2 KB yang digunakan untuk bootloader. ATmega328 memiliki 2 KB untuk SRAM dan 1 KB untuk EEPROM. Input dan Output Setiap 14 pin digital pada arduino dapat digunakan sebagai input atau output, menggunakan fungsi pinMode(), digitalWrite(), dan digitalRead(). Input/output dioperasikan pada 5 volt. Setiap pin dapat menghasilkan atau menerima maximum 40 mA dan memiliki internal pullup resistor (disconnected oleh default) 20- 50 KOhms. Beberapa pin memiliki fungsi sebagai berikut : 12 Serial : 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan mengirim (TX) TTL data serial. Pin ini terhubung pada pin yang koresponding dari USB FTDI ke TTL chip serial. Interupt eksternal : 2 dan 3. Pin ini dapat dikonfigurasikan untuk trigger sebuah interap pada low value, rising atau falling edge, atau perubahan nilai. PWM : 3, 5, 6, 9, 10, dan 11. Mendukung 8-bit output PWM dengan fungsi analogWrite(). LED : 13. Ini adalah dibuat untuk koneksi LED ke digital pin 13. Ketika pin bernilai HIGH, LED hidup, ketika pin LOW, LED mati. Konektor USB Konektor USB adalah soket untuk kabel USB yang disambungkan ke komputer atau laptop. Berfungsi untuk mengirimkan program ke Arduino dan juga sebagai port komunikasi serial. Pin Input /Output Digital Input/Output Digital atau digital pin adalah pin-pin untuk menghubungkan Arduino dengan komponen atau rangkaian digital.Input/Output digital pada KIT arduino terdapat pada kaki 1 sampai kaki 13. Misalnya kalau ingin membuat LED berkedip, LED tersebut bisa dipasang pada salah satu pin I/O digital dan ground. Komponen lain yang menghasilkan output digital atau menerima input digital bisa disambungkan ke pin-pin ini. 13 Pin Input Analog Input Analog atau analog pin adalah pin-pin yang berfungsi untuk menerima sinyal dari komponen atau rangkaian analog. Misalnya dari potensiometer, sensor suhu, sensor cahaya, dsb. Baterai / Adaptor Soket baterai atau adaptor digunakan untuk menyuplai Arduino dengan tegangan dari baterai/adaptor 9V atau 12V, pada saat Arduino sedang tidak disambungkan ke komputer. Kalau Arduino sedang disambungkan ke komputer melalui USB, Arduino mendapatkan suplai tegangan dari USB, jadi tidak perlu memasang baterai/adaptor saat memprogram Arduino. 2.2.3 Mikrokontroler ATMega328 Mikrokontroller merupakan sebuah processor yang digunakan untuk kepentingan kontrol. Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan computerainframe, mikrokontroller dibangun dari elemen – elemen dasar yang sama. Seperti umumnya komputer, mikrokontroller adalah alat yang mengerjakan instruksi – instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program ini menginstruksikan komputer untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer. 14 Kontruksi Mikrokontroler ATmega328 ATMega328 adalah mikrokontroller keluaran dari atmel yang mempunyai arsitektur RISC (Reduce Instruction Set Computer) yang dimana setiap proses eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). Mikrokontroller ini memiliki beberapa fitur antara lain : 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock. 32 x 8-bit register serba guna. Kecepatan mencapai 16 MIPS dengan clock 16 MHz. 32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2 KB dari flash memori sebagai bootloader. Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 1KB sebagai tempat penyimpanan data semi permanent karena EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan. Memiliki pin I/O digital sebanyak 14 pin ,6 diantaranya PWM (Pulse Width Modulation) output. Mikrokontroller ATmega 328 memiliki arsitektur Hardware, yaitu memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan kerja dan parallelism. Instruksi – instruksi dalam memori program dieksekusi dalam satu alur tunggal, dimana pada saat satu instruksi dikerjakan instruksi berikutnya sudah diambil dari memori program. Konsep 15 inilah yang memungkinkan instruksi – instruksi dapat dieksekusi dalam setiap satu siklus clock. Ketiga register pointer 16-bit ini disebut dengan register X ( gabungan R26 dan R27 ), register Y ( gabungan R28 dan R29 ), dan register Z ( gabungan R30 dan R31 ). 2.3. Pemrograman Dasar Arduino Uno 2.3.1 Stuktur Dasar Pemrograman Arduino Struktur dasar arduino hanya terjadi dalam dua bagian: Void setup() { // Statement; di eksekusi satu kali} Void loop() { // Statement; di eksekusi terus menerus } Setup Fungsi setup() hanya dipanggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk mendifinisikan mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program ,walaupun tidak ada statement yang di jalankan. 16 Contoh pemrograman yang menggunakan fungsi setup sebagai berikut: Void setup () { pinMode(3,OUTPUT) ; // men-set “pin” 3 sebagai Output pinMode(6, INPUT); // men-set pin 6 sebagai Input Serial.begin(9600); } Keterangan: pinMode() = berfungsi untuk mengatur fungsi sebuah pin sebagai input atau output. Serial.begin(9600) = digunakan untuk mengaktifkan fitur UART dan menginisialisasinya. Loop Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop(). Contoh pemrograman yang menggunakan fungsi loop sebagai berikut: void loop() { If (digitalRead(6)==HIGH) // membaca input digital pin 6 { xstart = millis(); //aktifkan timer digitalWrite(3, HIGH); // nyalakan pin 3 delay(1000); // pause 1detik digitalWrite(3, LOW); // matikan pin 3 17 } } Keterangan: digitalWrite : Untuk memberikan nilai low dan high pada sebuah pin output. Delay : Untuk memberikan waktu tunda dalam satuan millisekon. digitalRead : Untuk membaca logika low dan high. 2.3.2 Struktur Pengaturan Program Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan program: if..else, dengan format seperti berikut ini: if (kondisi) { } else if (kondisi) { } else { } Dengan struktur seperti diatas program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya true, dan jika tidak (false) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya false maka kode pada else yang akan dijalankan. for, dengan format seperti berikut ini: for (int i = 0; i < #pengulangan; i++) { } Digunakan bila anda ingin melakukan pengulangan kode di dalam kurung kurawal beberapa kali, ganti #pengulangan dengan jumlah pengulangan yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i–. 18 Input/Output Digital a. pinMode(pin, mode) Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0-19 (pin analog 0-5 adalah 14-19). Mode yang bisa digunakan adalah input atau output. b. digitalWrite(pin, value) Ketika sebuah pin ditetapkan sebagai output , pin tersebut dapat dijadikan high (ditarik menjadi 5 volts) atau low (diturunkan menjadi ground). c. digitalRead(pin) Ketika sebuah pin ditetapkan sebagai INPUT maka anda dapat menggunakan kode ini untuk mendapatkan nilai pin tersebut apakah high (ditarik menjadi 5 volts) atau low (diturunkan menjadi ground). Input/Output Analog Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam alam analog (menggunakan trik). Berikut ini cara untuk menghadapi hal yang bukan digital. a) analogWrite(pin, value) Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini dapat merubah pin hidup (on)atau mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V). 19 b) analogRead(pin) Ketika pin analog ditetapkan sebagai input anda dapat membaca keluaran voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts). 2.4 Melakukan Penginstalan Arduino Ke Komputer Untuk melakukan pemrogaman pada papan Arduino, disarankan untuk men-download IDE Arduino terlebih dahulu yang dapat diperoleh dari situs: www.arduino.cc/en/Main/Software. Dan kemudian pilih versi yang tepat untuk sistem operasi komputer yang digunakan. Setelah melakukan download, lakukanlah proses uncompress dengan cara melakukan double-click pada file tersebut. Proses ini secara otomatis akan membuat suatu folder yang bernama arduino-[version], contohnya seperti arduino-0012. Setelah melakukan penginstalan IDE Arduino pada komputer, tahap selanjutnya adalah harus melakukan penginstalan untuk driver. Fungsi utama penginstalan driver ini adalah agar komputer dapat melakukan komunikasi dengan papan Arduino melalui USB port. 2.4.1 Melakukan Penginstalan Driver Untuk Windows Koneksikan papan Arduino dengan komputer dan ketika Found New Hardware Wizard pada layar muncul, Windows secara otomatis akan mencoba menemukan terlebih dahulu driver tersebut pada halaman Windows Update. 20 Windows XP akan meminta untuk memeriksa Windows Update, dan jika tidak ingin menggunakan Windows Update pilih menu “No,not at this time” dan tekan tombol Next. Dan pada layar selanjutnya, pilih menu “Install from a list or specific location” dan tekan tombol Next. Periksa layar berjudul “Include this location in the search” dan tekan tombol Browse. Kemudian pilih folder dimana Arduino sudah terinstal dan pilih folder Drivers\FTDIUSB Drivers untuk menetukan lokasinya dan tekan tombol OK dan Next pada layar tesebut. Windows Vista akan berusaha menemukan driver tersebut pada Windows Update, dan jika terjadi kegagalan dalam melakukan pencarian driver, maka lakukan pencarian secara manual pada folder Drivers\FTDIUSB Drivers. Proses pencarian driver secara manual memiliki dua prosedur yang harus dilewati, yang pertama komputer harus menginstal driver low-level terlebih dahulu dan yang kedua adalah menginstal bagian kode yang membuat papan Arduino terlihat seperti suatu serial port untuk komputer. Apabila driver telah terinstal, maka Arduino IDE dapat diaktifkan dan papan Arduino dapat digunakan pada komputer. Untuk tahap selanjutnya adalah harus selalu mengingat serial port komputer yang telah ditandai untuk papan Arduino. 2.4.2 Identifikasi Port Pada Windows Pada Windows, proses untuk melakukan identifikasi port sedikit lebih rumit dibandingkan dengan Machintosh. Pertama, buka layar Device Manager dengan cara memilih menu Start, lakukan right-clicking pada Computer (Vista) atau My Computer (XP), dan pilih Properties. 21 Pada Windows XP, pilih Hardware dan kemudian pilih Device Manager. Sedangkan untuk Windows Vista, pilih Device Manager yang telah ada didalam daftar pada sebelah kiri layar. Cari Arduino device yang berada dibawah daftar “Port (COM & LPT)”. Arduino akan muncul sebagai suatu USB serial port dan akan memiliki suatu nama seperti COM3, hal ini dapat dilihat pada Gambar 2.2. Gambar 2.3. Device Manager pada Windows menampilkan semua terminal serial. 22 2.4.3 Masalah Dengan IDE Pada beberapa kasus terutama pada Windows, mungkin memiliki masalah yang berhubungan dengan penggunaan IDE Arduino. Jika terdapat kesalahan saat membuka Arduino, gunakan metode alternatif dengan cara membuka file run.bat. Biasanya pemakai Windows juga sering mendapatkan masalah jika sistem operasi memberikan nomor COM10 atau yang benomor lebih untuk papan Arduino. Untuk mengatasi masalah ini, kita dapat menentukan nomor yang lebih rendah untuk Arduino dengan cara sebagai berikut: 1. Buka layar Device Manager pada Windows dengan membuka menu Start. Lakukan klik kanan (right-click) pada layar komputer untuk Vista atau My Computer dan pilih menu Properties untuk XP. Kemudian pilih menu Device Manager. 2. Cari serial device di dalam daftar “Ports (COM & LPT)”. Dan pilih serial device bernomor COM9 atau bernomor lebih rendah yang tidak digunakan dengan cara pilih menu Properties (right-click). Kemudian pada tab Port Setting, pilih menu Advanced dan lakukan pengaturan nomor pada COM10 atau yang bernomor lebih besar. 3. Lakukan hal yang sama pada serial terminal USB yang digunakan untuk mengoperasikan Arduino. Jika beberapa saran tersebut masih tidak dapat membantu, atau jika mengalami permasalahan yang belum dijelaskan pada laporan ini, untuk troubleshooting Arduino yang lebih lengkap dapat dilihat dari halaman situs: www.arduino.cc/en/Guide/Troubleshooting 23 2.4.4 Troubleshooting Arduino Dalam membuat suatu eksperimen atau percobaan dengan Arduino, memungkinkan sekali terjadinya kegagalan dalam melakukan pengoperasiannya. Sedangkan kita dituntut harus dapat memperbaiki kegagalan yang terjadi agar Arduino dapat beroperasi dengan benar. Troubleshooting dan debugging merupakan seni yang sudah ada dari dulu. Dan agar didapatkan suatu hasil yang diinginkan oleh kita, maka kita harus memenuhi peraturan yang dimiliknya terlebih dahulu. Semakin sering kita menggunakan komponen elektronik dan Arduino dalam membuat suatu percobaan, maka kita akan semakin banyak belajar dan semakin banyak mendapatkan pengalaman. Oleh karena itu, jangan putus asa dengan permasalahan yang akan muncul dalam melakukan suatu percobaan karena semuanya akan menjadi lebih mudah apabila sudah dihadapi. Seperti semua percobaan Arduino yang telah dibuat, jika terdapat kesalahan baik yang berasal dari hardware maupun software maka disana kemungkinan akan ada lebih dari satu hal yang perlu dicari penyebab dari kesalahan tersebut. Ketika mencari suatu bug atau akar dari suatu masalah yang muncul seharusnya kita mengoperasikan Arduino meliputi tiga langkah berikut: 1. Pemahaman (understanding) Mencoba untuk memahami sebanyak mungkin bagaimana cara kerja dari setiap bagian komponen yang digunakan dan bagaimana bagian dari komponen tersebut telah memberikan pengaruh terhadap percobaan yang dibuat. 24 2. Penyederhanaan dan pembagian (simplification and segmentation) Orang Romawi kuno mengatakan devide et impera: divide and rule, atau dalam bahasa Indonesia berarti pembagi dan peraturan. Oleh karena itu, untuk membuat percobaan Arduino cobalah lakukan perincian (break down) terhadap percobaan ke dalam setiap komponennya dengan pemahaman yang kita miliki dan memperhitungkan dimana tanggung jawab dari setiap komponen tersebut. 3. Pemisahan dan kepastian (exclusion and certainty) Ketika melakukan investigasi, melakukan pengujian secara terpisah pada setiap komponen sangat dibutuhkan untuk memastikan bahwa setiap komponen bekerja dengan benar. Dengan melakukan tahap ini akan membangun rasa keyakinan pada diri kita sendiri terhadap bagian percobaan mana yang bekerja dengan benar maupun yang tidak. Debugging adalah istilah yang telah digunakan software komputer untuk menggambarkan suatu proses tidak bekerja dengan benar. Konon dikatakan bahwa istilah tersebut dipakai untuk pertama kalinya oleh Garce Hopper pada sekitar tahun 1940-an. Dimana pada waktu itu, komputer yang sebagian besarnya merupakan peralatan elektromekanis, ada yang berhenti beroperasi karena ada serangga yang terjebak di dalam sistem mekaniknya. Tetapi pada saat ini, bug bukan berbentuk fisik lagi, melainkan suatu virtual yang tidak dapat dilihat. Oleh karena itu, terkadang dibutuhkannya suatu proses indentifikasi yang panjang dan membosankan dalam menemukan bug. Proses Debugging bukan merupakan pengujian, tetapi selalu terjadi sebagai bagian akibat dari pengujian. Proses debungging dimulai dengan eksekusi 25 terhadap suatu test case. Hasilnya dinilai, dan ditemukan kurangnya hubungan antara harapan dan yang sesungguhnya. Dalam banyak kasus, data yang tidak berkaitan merupakan gejala dari suatu penyebab pokok tetapi masih tersembunyi, sehingga perlu ada koreksi kesalahan. Proses debugging akan selalu memiliki salah satu dari dua hasil akhir berikut: Penyebab akan ditemukan, dikoreksi, dan dihilangkan, atau Penyebab tidak akan ditemukan Dalam kasus yang terakhir, orang yang melakukan debugging mungkin mencurigai suatu penyebab, mendesain suatu test case untuk membantu kecurigaannya, dan bekerja untuk koreksi kesalahan dengan gaya yang iterative. 2.5 Sensor InfraRed Sensor adalah alat yang mendeteksi suatu perubahan pada kondisi fisik yang mendorong dan mengubah aktivitas yang dideteksi menjadi sinyal yang bisa dicatat atau direkam. Sedangkan cahaya infra merah tergolong ke dalam cahaya yang tidak tampak. Mempunyai panjang gelombang mulai 750 nm sampai 25 µm. Cahaya infra merah tidak bisa terlihat oleh mata manusia, karena jarak pandang manusia antara 400 nm sampai dengan 750 nm, seperti terlihat pada gambar 2.4 26 Gambar 2.4. Beberapa spektrum gelombang cahaya IR Emiter Sensor IR emiter adalah LED (Light Emmiting Diode) yang terbuat dari bahan gallium arsenide, yang memancarkan cahaya infra-merah pada kisaran 880nm. (a) (b) Gambar 2.5. (a) Prinsip kerja IR Emiter (b) Contoh IR Emiter 2.5.1 Sensor Proximity Sensor proximity mempunyai pengertian sebagai sensor yang mampu mendeteksi ada atau tidaknya suatu obyek. Bila obyek berada di depan sensor dan dapat terjangkau oleh sensor maka output rangkaian sensor akan berlogika “1” atau “high” yang berarti obyek “ada”. Sebaliknya jika obyek berada pada posisi yang tidak terjangkau oleh sensor maka output rangkaian sensor akan bernilai “0” atau “low” yang berarti obyek “tidak ada”. 27 Dalam dunia robotika, sensor proximity seringkali digunakan untuk mendeteksi ada atau tidaknya suatu garis pembimbing gerak robot atau yang lebih dikenal dengan istilah “line following” atau “line tracking”, juga biasa digunakan untuk mendeteksi adanya benda-benda penghalang seperti dinding atau bendabenda lainnya sehingga robot dapat menghindari tabrakan dengan benda-benda tersebut. limit switch (saklar mekanik), ultrasonic proximity, infrared proximity (infra merah), kamera dan lain sebagainya masuk dalam jenis sensor proximity. Prinsip kerja Salah satu kegunaan sensor proximity yang sering dijumpai dalam dunia robottika sebagai deteksi garis. Sensor ini dapat dibuat dari pasangan LED dan fototransistor 1 dan 2. Bila cahaya LED memantul pada garis dan diterima oleh basis fototransistor maka fototransistor menjadi (on) sehingga tegangan output (Vout) menjadi sama dengan Vce saturasi atau mendekati 0 volt. Sebaliknya jika tidak terdapat pantulan, maka basis fototransistor tidak mendapat arus bias sehingga fototransistor menjadi cut-off (C-E open), dengan demikian nilai Vout sama dengan Vcc.. 28 Gambar 2.6. Prinsip kerja proximity tanpa halangan sinyal led atau infrared akan menyebar jika tak ada halangan. berbeda dengan jika diberi halangan seperti gambar 2.7 dibawah ini. Gambar 2.7. Prinsip kerja proximity jika ada halangan Saat ada halangan maka pacaran sinar cahaya dari LED atau Infrared akan memantul. berkas cahaya yang memantul tersebut akan tertangkap oleh proximity sensor. Banyaknya intesitas cahaya yang tertangkap akan menjadi acuan nilai untuk mengetahui warna line atau bidang pantulnya. 29 2.6 Photodioda Photodioda adalah dioda yang bekerja berdasarkan intensitas cahaya, jika photodioda terkena cahaya maka photodioda bekerja seperti dioda pada umumnya, tetapi jika tidak mendapat cahaya maka photodioda akan berperan seperti resistor dengan nilai tahanan yang besar sehingga arus listrik tidak dapat mengalir. Gambar 2.8. Photodioda Photodioda merupakan sensor cahaya semikonduktor yang dapat mengubah besaran cahaya menjadi besaran listrik. Photodioda merupakan sebuah dioda dengan sambungan p-n yang dipengaruhi cahaya dalam kerjanya. Cahaya yang dapat dideteksi oleh photodioda ini mulai dari cahaya infra merah, cahaya tampak, ultra ungu sampai dengan sinar-X. Prinsip kerja, karena photodioda terbuat dari semikonduktor p-n junction maka cahaya yang diserap oleh photodioda akan mengakibatkan terjadinya pergeseran foton yang akan menghasilkan pasangan electron-hole dikedua sisi dari sambungan. Ketika elektron-elektron yang dihasilkan itu masuk ke pita konduksi maka elektron-elektron itu akan mengalir ke arah positif sumber tegangan sedangkan hole yang dihasilkan mengalir ke arah negatif sumber tegangan sehingga arus akan mengalir di dalam rangkaian. Besarnya pasangan 30 elektron ataupun hole yang dihasilkan tergantung dari besarnya intensitas cahaya yang diserap oleh photodioda. Photodiodes dibuat dari semikonduktor dengan bahan yang populer adalah silicon ( Si) atau galium arsenida ( GaAs), dan yang lain meliputi InSb, InAs, PbSe. Material ini menyerap cahaya dengan karakteristik panjang gelombang mencakup: 2500 Å - 11000 Å untuk silicon, 8000 Å – 20,000 Å untuk GaAs. Ketika sebuah photon (satu satuan energi dalam cahaya) dari sumber cahaya diserap, hal tersebut membangkitkan suatu elektron dan menghasilkan sepasang pembawa muatan tunggal, sebuah elektron dan sebuah hole, di mana suatu hole adalah bagian dari kisi-kisi semikonduktor yang kehilangan elektron. Arah Arus yang melalui sebuah semikonduktor adalah kebalikan dengan gerak muatan pembawa. cara tersebut didalam sebuah photodiode digunakan untuk mengumpulkan photon - menyebabkan pembawa muatan (seperti arus atau tegangan) mengalir/terbentuk di bagian-bagian elektroda. Photodioda digunakan sebagai penangkap gelombang cahaya yang dipancarkan oleh Infrared. Besarnya tegangan atau arus listrik yang dihasilkan oleh photodioda tergantung besar kecilnya radiasi yang dipancarkan oleh infrared. 31 Gambar 2.9. panjang gelombang yang dihasilkan oleh bahan photodioda yang berbeda terhadap pengliatan mata Photo dioda digunakan sebagai komponen pendeteksi ada tidaknya cahaya maupun dapat digunakan untuk membentuk sebuah alat ukur akurat yang dapat mendeteksi intensitas cahaya dibawah 1pW/cm2 sampai intensitas diatas 10mW/cm2. Photo dioda mempunyai resistansi yang rendah pada kondisi forward bias, kita dapat memanfaatkan photo dioda ini pada kondisi reverse bias dimana resistansi dari photo dioda akan turun seiring dengan intensitas cahaya yang masuk. Dioda peka cahaya adalah jenis dioda yang berfungsi mendektesi cahaya. Berbeda dengan dioda biasa, komponen elektronika ini akan mengubah menjadi arus listrik. Cahaya yang dapat dideteksi oleh dioda peka cahaya ini mulai dari cahaya inframerah, cahaya tampak, ultra ungu sampai dengan sinar-X. Aplikasi dioda peka cahaya mulai dari penghitung kendaraan di jalan umum secara otomatis, pengukur cahaya pada kamera serta beberapa peralatan di bidang medis. 32 Alat yang mirip dengan dioda peka adalah transistor foto (phototransistor). Transistorfoto ini pada dasarnya adalah jenis transistor bipolar yang menggunakan kontak (junction) base-collector untuk menerima cahaya. Gambar 2.10. Phototransistor Komponen ini mempunyai sensitivitas yang lebih baik jika dibandingkan dengan diodapeka cahaya. Hal ini disebabkan karena electron yang ditimbulkan oleh foton cahaya pada junction ini diinjeksikan di bagian Base dan diperkuat di bagian kolektornya. Namun demikian,waktu respons dari transistor foto secara umum akan lebih lambat dari pada dioda peka cahaya. Jika photo dioda tidak terkena cahaya, maka tidak ada arus yang mengalir ke rangkaian pembanding, jika photo dioda terkena cahaya maka photodiode akan bersifat sebagai tegangan, sehingga Vcc dan photo dioda tersusun seri, akibatnya terdapat arus yang mengalir ke rangkaian pembanding. 33 Gambar 2.11. Stuktur photodioda Sifat dari Photodioda adalah : 1. Jika terkena cahaya maka resistansi nya berkurang 2. Jika tidak terkena cahaya maka resistansi nya meningkat Kenapa Photodioda dipasang reverse?? Berdasarkan teori mengenai dioda. Pada saat dioda dipasang reverse, maka arus tidak akan mengalir karena hambatan yg sangat besar sekali. Jadi bisa dikatakan ini dioda sebagai kondisi Open Circuit jika dianalogikan seperti sakelar. namun pada photodioda, hambatan yang besar tadi bisa menjadi kecil karena pengaruh cahaya yang masuk. Hal seperti ini bisa menyebabkan arus mengalir sehingga kondisi seperti ini bisa dikatakan sebagai Close Circuit jika dianalogikan seperti saklar. 2.7 Motor Dc Motor arus searah, sebagaimana namanya, menggunakan arus langsung yang tidak langsung/direct-unidirectional. Motor DC digunakan pada penggunaan khusus dimana diperlukan penyalaan torque yang tinggi atau percepatan yang tetap untuk kisaran kecepatan yang luas. 34 Gambar 2.12. Motor Dc 2.7.1 Motor DC Memiliki tiga komponen utama Kutub medan Secara sederhada digambarkan bahwa interaksi dua kutub magnet akan menyebabkan perputaran pada motor DC. Motor DC memiliki kutub medan yang stasioner dan dinamo yang menggerakan bearing pada ruang diantara kutub medan. Motor DC sederhana memiliki dua kutub medan: kutub utara dan kutub selatan. Garis magnetik energi membesar melintasi bukaan diantara kutub-kutub dari utara ke selatan. Untuk motor yang lebih besar atau lebih komplek terdapat satu atau lebih elektromagnet.Elektromagnet menerima listrik dari sumber daya dari luar sebagai penyedia struktur medan. Dinamo Bila arus masuk menuju dinamo, maka arus ini akan menjadi elektromagnet. Dinamo yang berbentuk silinder, dihubungkan ke as penggerak untuk menggerakan beban. Untuk kasus motor DC yang kecil, dinamo berputar dalam medan magnet yang dibentuk oleh kutub-kutub, sampai kutub utara dan selatan magnet berganti lokasi. Jika hal ini terjadi, arusnya berbalik untuk merubah kutub-kutub utara dan selatan dinamo. 35 Commutator adalah Komponen ini terutama ditemukan dalam motor DC. Kegunaannya adalah untuk membalikan arah arus listrik dalam dinamo. Commutator juga membantu dalam transmisi arus antara dinamo dan sumber daya. Keuntungan utama motor DC adalah sebagai pengendali kecepatan, yang tidak mempengaruhi kualitas pasokan daya. Motor ini dapat dikendalikan dengan mengatur: Tegangan dinamo – meningkatkan tegangan dinamo akan meningkatkan kecepatan. Arus medan – menurunkan arus medan akan meningkatkan kecepatan. 2.8 Relay Relay adalah Saklar (Switch) yang dioperasikan secara listrik dan merupakan komponen Electromechanical (Elektromekanikal) yang terdiri dari 2 bagian utama yakni Elektromagnet (Coil) dan Mekanikal (seperangkat Kontak Saklar/Switch). Relay menggunakan Prinsip Elektromagnetik untuk menggerakkan Kontak Saklar sehingga dengan arus listrik yang kecil (low power) dapat menghantarkan listrik yang bertegangan lebih tinggi. Sebagai contoh, dengan Relay yang menggunakan Elektromagnet 5V dan 50 mA mampu menggerakan Armature Relay (yang berfungsi sebagai saklarnya) untuk menghantarkan listrik 220V 2A. 36 Gambar 2.13. Relay dan Simbol Relay 2.8.1 Prinsip Kerja Relay Sebelum membahas lebih lanjut mengenai Prinsip Kerja atau Cara Kerja sebuah Relay, kita perlu mengetahui Komponen-komponen dasar pembentuk sebuah Relay. Pada dasarnya, Di sebuah Relay sederhana terdiri dari 4 komponen dasar yaitu : 1. Electromagnet (Coil) 2. Armature 3. Switch Contact Point (Saklar) 4. Spring 37 Gambar 2.14. Stuktur Sederhana Relay Kontak Poin (Contact Point) Relay terdiri dari 2 jenis yaitu: Normally Close (NC) yaitu kondisi awal sebelum diaktifkan akan selalu berada di posisi CLOSE (tertutup). Normally Open (NO) yaitu kondisi awal sebelum diaktifkan akan selalu berada di posisi OPEN (terbuka). Berdasarkan gambar diatas, sebuah Besi (Iron Core) yang dililit oleh kumparan Coil yang berfungsi untuk mengendalikan Besi tersebut. Apabila Kumparan Coil diberikan arus listrik, maka akan timbul gaya Elektromagnet yang kemudian menarik Armature untuk berpindah dari Posisi sebelumnya (NC) ke posisi baru (NO) sehingga menjadi Saklar yang dapat menghantarkan arus listrik di posisi barunya (NO). Posisi dimana Armature tersebut berada sebelumnya (NC) akan menjadi OPEN atau tidak terhubung. Pada saat tidak dialiri arus listrik, Armature akan kembali lagi ke posisi Awal (NC), Coil membutuhkan arus listrik 38 yang relatif kecil untuk mengaktifkan electromagnet dan menarik Contact Poin ke posisi Close. Fungsi Relay 2.8.2 Beberapa fungsi Relay yang telah umum diaplikasikan kedalam peralatan Elektronika diantaranya adalah : 1. Relay digunakan untuk menjalankan Fungsi Logika (Logic Function) 2. Relay digunakan untuk memberikan Fungsi penundaan waktu (Time Delay Function) 3. Relay digunakan untuk mengendalikan Sirkuit Tegangan tinggi dengan bantuan dari Signal Tegangan rendah. 4. Ada juga Relay yang berfungsi untuk melindungi Motor ataupun komponen lainnya dari kelebihan Tegangan ataupun hubung singkat (Short). 2.9 Microsoft Visual C# ( C Sharp) .Net C# (dibaca: C sharp) merupakan sebuah bahasa pemrograman yang berorientasi objek yang dikembangkan oleh Microsoft sebagai bagian dari inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti Java, Delphi, Visual Basic, dan lain-lain dengan beberapa penyederhanaan. Menurut standar ECMA-334 C# Language Specification, nama C# terdiri atas sebuah huruf Latin C (U+0043) yang diikuti oleh tanda pagar yang 39 menandakan angka # (U+0023). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam keyboard standar. Gambar 2.15. Microsoft visual C#.Net „ 2.9.1 Sejarah C# Pada akhir dekade 1990-an, Microsoft membuat program Microsoft Visual J++ sebagai sebuah langkah percobaan untuk menggunakan Java di dalam sistem operasi Windows untuk meningkatkan antarmuka dari Microsoft Component Object Model (COM). Akan tetapi, akibat masalah dengan pemegang hak cipta bahasa pemrograman Java, Sun Microsystems, Microsoft pun menghentikan pengembangan J++, dan beralih untuk membuat pengganti J++, kompilernya dan mesin virtualnya sendiri dengan menggunakan sebuah bahasa pemrograman yang bersifat general-purpose. Untuk menangani proyek ini, Microsoft merekrut 40 Anders Helsberg, yang merupakan mantan karyawan Borland yang membuat bahasa Turbo Pascal, dan Borland Delphi, yang juga mendesain Windows Foundation Classes (WFC) yang digunakan di dalam J++. Sebagai hasil dari usaha tersebut, C# pun pertama kali diperkenalkan pada bulan Juli 2000 sebagai sebuah bahasa pemrograman modern berorientasi objek yang menjadi sebuah bahasa pemrograman utama di dalam pengembangan di dalam platform Microsoft .NET Framework. Pengalaman Helsberg sebelumnya dalam pendesain bahasa pemrograman seperti Visual J++, Delphi, Turbo Pascal) dengan mudah dilihat dalam sintaksis bahasa C#, begitu pula halnya pada inti Common Language Runtime (CLR). Dari kutipan atas interview dan makalah-makalah teknisnya ia menyebutkan kelemahan-kelemahan yang terdapat pada bahasa pemrograman yang umum digunakan saat ini, misalnya C++, Java, Delphi, ataupun Smalltalk. Kelemahankelemahan yang dikemukakannya itu yang menjadi basis CLR sebagai bentukan baru yang menutupi kelemahan-kelemahan tersebut, dan pada akhirnya memengaruhi desain pada bahasa C# itu sendiri. Ada kritik yang menyatakan C# sebagai bahasa yang berbagi akar dari bahasa-bahasa pemrograman lain. [1] Fiturfitur yang diambilnya dari bahasa C++ dan Java adalah desain berorientasi objek, seperti garbage collection, reflection, akar kelas (root class), dan juga penyederhanaan terhadap pewarisan jamak (multiple inheritance). Fitur-fitur tersebut di dalam C# kini telah diaplikasikan terhadap iterasi, properti, kejadian (event), metadata, dan konversi antara tipe-tipe sederhana dan juga objek. 41 C# didisain untuk memenuhi kebutuhan akan sintaksis C++ yang lebih ringkas dan Rapid Application Development yang 'tanpa batas' (dibandingkan dengan RAD yang 'terbatas' seperti yang terdapat pada Delphi dan Visual Basic). Agar mampu mempromosikan penggunaan besar-besaran dari bahasa C#, Microsoft, dengan dukungan dari Intel Corporation dan Hewlett-Packard, mencoba mengajukan standardisasi terhadap bahasa C#. Akhirnya, pada bulan Desember 2001, standar pertama pun diterima oleh European Computer Manufacturers Association atau Ecma International (ECMA), dengan nomor standar ECMA-334. Pada Desember 2002, standar kedua pun diadopsi oleh ECMA, dan tiga bulan kemudian diterima oleh International Organization for Standardization (ISO), dengan nomor standar ISO/IEC 23270:2006. 2.9.2 Tujuan Desain Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut: 1. Bahasa pemrograman C# dibuat sebagai bahasa pemrograman yang bersifat bahasa pemrograman general-purpose (untuk tujuan jamak), berorientasi objek, modern, dan sederhana. 2. Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan terdistribusi. 3. Portabilitas programmer sangatlah penting, khususnya bagi programmer yang telah lama menggunakan bahasa pemrograman C dan C++. 42 4. Dukungan untuk internasionalisasi (multi-language) juga sangat penting. 5. C# ditujukan agar cocok digunakan untuk menulis program aplikasi baik dalam sistem klien-server (hosted system) maupun sistem embedded (embedded system), mulai dari perangkat lunak yang sangat besar yang menggunakan sistem operasi yang canggih hingga kepada perangkat lunak yang sangat kecil yang memiliki fungsi-fungsi terdedikasi. 6. Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan memori komputer, bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran perangkat lunak yang dibuat dengan menggunakan bahasa pemrograman C dan bahasa rakitan. Bahasa C# harus mencakup pengecekan jenis (type checking) yang kuat, pengecekan larik (array), pendeteksian terhadap percobaan terhadap penggunaan Variabel-variabel yang belum diinisialisasikan, portabilitas kode sumber, dan pengumpulan sampah (garbage collection) secara otomatis.