BAB II LANDASAN TEORI 2.1 Gambaran Umum Dalam merancang sebuah robot kita harus mengetahui bahwa robot itu terdiri dari 3 bagian utama , yaitu : mekanik , elektrik, dan program . Mekanik adalah hal yang paling terpenting di antara ketiganya karena walaupun kita memiliki elektrik dan program yang baik tetapi mekanik nya buruk maka yang dihasilkan adalah robot yang buruk tetapi dengan mekanik yang baik walaupun elektrik dan program nya buruk akan menghasilkan robot yang cukup baik. Sehingga urutan untuk merancang sebuah robot ialah mulai dari mendesign mekanik , kemudian bagian elektrik dan yang terakhir bagian programming tetapi untuk dapat merancang mekanik yang baik kita perlu mengetahui komponen-komponen apa saja yang akan dipasang di mekanik robot. 2.1.1 Mekanik Mendesign mekanik yang baik membutuhkan beberapa pertimbangan, yaitu : Dimensi robot yang akan dibuat Komponen-komponen apa saja yang terpasang di mekanik robot Bagaimana cara robot bergerak Bahan apa yang digunakan untuk mekanik Metode pembuatan mekanik (manual/mesin) Jalur pengkabelan Software perancangan mekanik Berat beban pada mekanik Estetika design Keefiseinan design 5 Page |6 Bahan pembuatan mekanik A. Plat Alumunium Gambar 2.1 Plat Alumunium Tersedia dalam ketebalan antara 0.15mm sampai 250mm, untuk pembuatan buatan base robot direkomendasikan menggunakan plat alumunium dengan ketebalan 5mm sedangkan untuk pembuatan mekanik yang memerlukan tekukan pada plat alumunium direkomendasikan menggunakan plat alumunium dengan ketebalan 2mm. Alamunium bersifat konduktif sehingga perlu hati-hati dalam penggunaannya. Rating bahan: Kekuatan : Berat : Pembentukan : Estetika : Harga : Page |7 B. Acrylic Gambar 2.2 Lembar Acrylic Acrylic bersifat isolator sehingga aman digunakan sebagai mekanik robot dan juga acrylic memiliki berbagai macam pilihan warna sehingga dalam menambah estetika robot. Tidak direkomendasikan menggunakan acrylic bening untuk bagian mekanik robot yang bertanggungjawab pada beban yang berat , karena acrylic berwarna lebih kuat dari acrylic bening. Rating bahan: Kekuatan : Berat : Pembentukan : Estetika : Harga : C. Untuk pemilihan bahan sebenarnya dapat menggunakan apa saja sesuai kreativitas anda, Acrylic dan Alumunium merupakan bahan yang umum digunakan untuk membuat mekanik sebuah robot. Page |8 2.1.2 Elektrik Komponen-komponen elektrik robot terdiri dari beberapa kategori , yaitu : Komponen elektronika Sensor Aktuator 1. Komponen elektronika A. Resistor Gambar 2.3 Resistor Resistor menentukan aliran arus dalam rangkaian listrik. Dimana ada resistansi yang besar di rangkaian aliran arus kecil, dan resistansi rendah aliran arus besar. B. Kapasitor Gambar 2.4 Kapasitor Page |9 Kapasitor adalah komponen yang digunakan untuk menyimpan muatan listrik dan digunakan dalam rangkaian timer. Sebuah kapasitor dapat digunakan dengan resistor untuk menghasilkan timer. Kadang-kadang kapasitor digunakan untuk memperhalus arus dalam sebuah rangkaian karena mereka dapat memotong spike dari komponen lain seperti relay. Bila daya dipasok ke sirkuit yang mengandung kapasitor – Kapasitor mengisi daya. Bila daya dimatikan kapasitor mulai pembuangan muatan listrik secara perlahan-lahan. C. Dioda Gambar 2.5 Dioda Sebuah dioda memungkinkan listrik mengalir dalam satu arah saja dan menghalangi aliran ke arah yang berlawanan. Mereka dapat dianggap sebagai katup satu arah dan mereka digunakan dalam berbagai sirkuit, biasanya sebagai bentuk perlindungan. Ada berbagai jenis dioda namun fungsi dasar mereka adalah sama. D. Transistor Gambar 2.6 Transistor P a g e | 10 Transistor dapat dianggap sebagai jenis switch. Transistor adalah pusat untuk elektronik dan ada dua jenis utama, NPN dan PNP. Kebanyakan sirkuit cenderung menggunakan NPN. Ada ratusan transistor yang bekerja pada tegangan yang berbeda, tetapi mereka semua jatuh ke dalam dua kategori tersebut. 2. Sensor A. Resistive bent sensor - Resistansi bertambah bila ditekuk Gambar 2.7 Resistive bent sensor Ini sensor sederhana mendeteksi tekukan. Kesederhanaan membuatnya serbaguna, bisa digunakan untuk mendeteksi getaran, kelembaban, gerak, dampak, dan aliran udara. Sensor tekukan terdiri dari substrat yang terlapisi, misalnya plastik, sensor ini mengalami perubahan konduktivitas listrik saat mengalami tekukan. Ini memberikan kehandalan non-mekanik dalam penginderaan elektronik dan teknologi aktuator. Sensor ini terdiri dari film plastik dicetak dengan tinta karbon khusus. Film ini tidak biasa, inovasi nyata pada sensor ini adalah tinta. Hambatan dari tinta ini menurun bila semakin ditekuk. Tinta dapat dicetak pada hampir semua bentuk dan ukuran film. P a g e | 11 B. Potentiometer - Resistansi bertambah bila diputar Gambar 2.8 Potentiometer Sebuah potensiometer adalah resistor tiga terminal dengan kontak geser yang membentuk pembagi tegangan yang dapat disesuaikan. Jika hanya dua terminal yang digunakan, satu ujung dan wiper, maka ia bertindak sebagai resistor variabel atau rheostat. C. Light Dependent Resistor (LDR) Gambar 2.9 LDR Sebuah light dependent resistor (LDR) adalah sebuah resistor yang resistansinya menurun dengan meningkatnya intensitas cahaya, dengan kata lain, hal itu menunjukkan fotokonduktivitas. LDR terbuat dari semikonduktor resistansi tinggi. Jika cahaya yang jatuh pada perangkat memiliki frekuensi yang cukup tinggi, foton diserap oleh semikonduktor memberikan elektron terikat energi yang cukup untuk melompat ke pita konduksi. menghasilkan elektron bebas menghantarkan listrik, sehingga menurunkan resistensi. P a g e | 12 D. Limit Switch Gambar 2.10 Limit Switch Dalam teknik elektro limit switch adalah perangkat elektromekanis yang terdiri dari aktuator mekanis terkait dengan satu set kontak. Ketika sebuah benda datang dan menekan aktuator, perangkat beroperasi untuk menghubungkan atau memutuskan sambungan listrik. Limit switch digunakan dalam berbagai aplikasi dan lingkungan karena kehandalannya, kemudahan instalasi, dan keandalan operasi. Mereka dapat mendeteksi keberadaan, passing, positioning, dan akhir perjalanan dari suatu obyek. Mereka pertama kali digunakan untuk menentukan batas perjalanan obyek; maka disebut "Limit Switch." E. Photodioda Gambar 2.11 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. P a g e | 13 F. Sensor Jarak Infrared Gambar 2.12 Sensor Jarak Infrared Sharp IR Range Finder bekerja dengan proses triangulasi. Sebuah pulsa cahaya (kisaran panjang gelombang 850nm + /-70nm) dipancarkan dan kemudian dipantulkan kembali (atau tidak tercermin sama sekali). Ketika cahaya pantulan datang kembali dengan sudut yang tergantung pada jarak objek refleksi. Triangulasi ini bekerja dengan mendeteksi sudut cahaya pantulan - dengan mengetahui sudut, jarak kemudian dapat ditentukan. G. Ultrasonic sensor Gambar 2.13 Ultrasonic sensor P a g e | 14 Mikrokontroler Anda memberi perintah Sensor Ultrasonik untuk memancarkan gelombang suara ultrasonik. Sensor Ultrasonik mengeluarkan suara yang sebagian besar tak terdengar, waktu berlalu, kemudian mendeteksi echo atau pantulan suara yang kembali ke sensor. Kemudian segera mengirim sinyal tegangan ke mikrokontroler, dengan melacak waktu kirim dan waktu kembali, dapat menghitung jarak dari objek yang terdeteksi. H. Accelerometer Gambar 2.14 Accelerometer Accelerometers sangat penting dalam dunia sensor karena mereka dapat merasakan seperti berbagai gerak. Accelerometer mengukur percepatan (perubahan kecepatan) P a g e | 15 I. Digital Compass Gambar 2.15 Digital Compass Digital Compass memberikan pengukuran berdasarkan medan magnet bumi untuk navigasi robot. Kompas digital murah biasanya memiliki resolusi sekitar + / - 5 derajat, tetapi yang lebih baru dan lebih baik dapat mendeteksi dengan akurasi yang lebih baik. 3. Aktuator A. Motor DC Gambat 2.16 Motor DC Motor DC memerlukan suplai tegangan yang searah pada kumparan medan untuk diubah menjadi energi mekanik. Bagian utama motor DC adalah stator dan rotor dimana P a g e | 16 kumparan medan pada motor dc disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Bentuk motor paling sederhana memiliki kumparan satu lilitan yang bisa berputar bebas di antara kutub-kutub magnet permanen. B. Servo Gambar 2.17 Servo Motor servo adalah sebuah motor DC yang dilengkapi rangkaian kendali dengan sistem closed feedback yang terintegrasi dalam motor tersebut. Pada motor servo posisi putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor servo disusun dari sebuah motor DC, gearbox, variabel resistor (VR) atau potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas maksimum putaran sumbu (axis) motor servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang pada pin kontrol motor servo. P a g e | 17 C. Motor Stepper Gambar 2.18 Motor stepper Motor Stepper adalah suatu motor listrik yang dapat mengubah pulsa listrik yang diberikan menjadi gerakan motor discret (terputus) yang disebut step (langkah). Satu putaran motor memerlukan 360° dengan jumlah langkah yang tertentu perderajatnya. Ukuran kerja dari motor stepper biasanya diberikan dalam jumlah langkah per-putaran per-detik. 2.1.3 Programming (Arduino) 1. Struktur Struktur dasar dari bahasa pemrograman Arduino cukup sederhana dan berjalan dalam setidaknya dua bagian. Dibawah ini merupakan dua bagian yang diperlukan, termasuk blok pernyataan. void setup() { statements; } void loop() { statements; } P a g e | 18 Dimana setup () adalah persiapan, loop() adalah eksekusi. Kedua fungsi yang dibutuhkan untuk program untuk bekerja. Fungsi setup() harus mengikuti deklarasi setiap variabel di awal program. Ini adalah fungsi pertama yang berjalan di program, dijalankan hanya sekali, dan digunakan untuk mengatur pinMode atau menginisialisasi komunikasi serial. Fungsi loop() yang dijalankan berikutnya dan termasuk kode yang akan dieksekusi berulang kali - membaca input, memicu output, dll. Fungsi ini adalah inti dari semua program Arduino dan melakukan sebagian besar pekerjaan. 2. Tipe Data A. byte byte menyimpan nilai numerik 8-bit tanpa bilangan desimal. Bernilai 0-255. B. int Integer adalah tipe data utama untuk penyimpanan nomor tanpa bilangan desimal dan menyimpan nilai 16-bit dengan kisaran 32.767 sampai -32.768. Note: Variabel integer akan direset jika melewati nilai maksimum atau nilai minimum dikarenakan program atau perbandingan. Sebagai contoh, jika x = 32767 dan pernyataan berikutnya menambahkan 1 x, x = x + 1 atau x + +, x kemudian akan direset dan setara -32.768. C. long Tipe data utama untuk penyimpanan nomor, tanpa bilangan desimal, disimpan dalam nilai 32-bit dengan kisaran 2147483647 untuk -2147483648. D. float Sebuah datatype untuk angka floating-point, atau angka yang memiliki titik desimal. Angka floating-point memiliki resolusi lebih besar dari bilangan bulat dan disimpan sebagai nilai 32-bit dengan kisaran 3.4028235E +38 ke-3.4028235E +38. Note: Angka floating-point tidak exact, dan dapat menghasilkan hasil yang aneh bila dibandingkan. floating-point juga jauh lebih lambat dibandingkan integer dalam melakukan perhitungan, sehingga harus dihindari jika mungkin. P a g e | 19 E. array Array adalah koleksi nilai yang diakses dengan nomor indeks. Setiap nilai dalam array dapat dipanggil dengan memanggil nama array dan nomor indeks nilai. Array harus dideklarasikan dan opsional ditugaskan nilai sebelum mereka dapat digunakan. int myArray[ ] = {value0, value1, value2...} Demikian juga dimungkinkan untuk mendeklarasikan array dengan mendeklarasikan tipe array dan ukuran dan kemudian memberikan nilai pada posisi indeks: int myArray[5]; // declares integer array w/ 6 positions myArray[3] = 10; // assigns the 4th index the value 10 Untuk mengambil nilai dari sebuah array, menetapkan variabel ke array dan posisi indeks: x = myArray[3]; // x now equals 10 Array sering digunakan dalam untuk loop, di mana counter kenaikan juga digunakan sebagai posisi indeks untuk setiap nilai array. 3. Aritmatika Operator aritmatika termasuk penambahan, pengurangan, perkalian, dan pembagian. Mereka mengembalikan jumlah, selisih, produk, atau quotient (masingmasing) dari dua operan. y = y + 3; x = x – 7; i = j * 6; r = r / 5; Operasi ini dilakukan dengan menggunakan tipe data dari operan, jadi, misalnya, 9/4 menghasilkan 2 bukannya 2,25 sejak 9 dan 4 ints dan tidak mampu menggunakan bilangan desimal. Ini juga berarti bahwa operasi bisa bertambah jika hasilnya lebih besar dari apa yang dapat disimpan dalam tipe data. P a g e | 20 Jika operan dari berbagai jenis, jenis yang lebih besar digunakan untuk perhitungan. Misalnya, jika salah satu nomor (operan) adalah dari tipe float dan lainnya bertipe integer, floating point akan digunakan untuk perhitungan. Pilih ukuran variabel yang cukup besar untuk menampung hasil terbesar dari perhitungan. Tahu pada titik apa variabel Anda akan rollover dan juga apa yang terjadi di arah lain misalnya (0 - 1) ATAU (0-32.768). Untuk matematika yang memerlukan pecahan, menggunakan variabel float, tetapi menyadari kekurangan mereka: ukuran besar dan kecepatan perhitungan lambat. Note: Gunakan cast operator misalnya (int) myFloat untuk mengkonversi satu jenis variabel yang lain dengan cepat. Misalnya, i = (int) 3,6 akan menetapkan i sama dengan 3. 4. Compound Assignments compound assignment menggabungkan operasi aritmatika dengan tugas variabel. Ini biasanya ditemukan dalam untuk loop seperti yang dijelaskan kemudian. compound assignment yang paling umum yaitu: x ++ // same as x = x + 1, or increments x by +1 x -- // same as x = x - 1, or decrements x by -1 x += y // same as x = x + y, or increments x by +y x -= y // same as x = x - y, or decrements x by -y x *= y // same as x = x * y, or multiplies x by y x /= y // same as x = x / y, or divides x by y Note: Misalnya, x * = 3 akan tiga kali lipat nilai lama x dan kembali menetapkan hasilnya sebagai x. 5. Operator Pembanding Perbandingan satu variabel atau konstan terhadap yang lain sering digunakan dalam jika pernyataan untuk menguji apakah kondisi tertentu adalah benar. x == y x != y x<y x>y x <= y x >= y // x is equal to y // x is not equal to y // x is less than y // x is greater than y // x is less than or equal to y // x is greater than or equal to y P a g e | 21 6. Operator Logika Logical operator biasanya cara untuk membandingkan dua ekspresi dan mengkategorikan TRUE atau FALSE, tergantung pada operator. Ada tiga operator logika, AND, OR, dan NOT, yang sering digunakan dalam pernyataan if: Logical AND: if (x > 0 && x < 5) // true only if both // expressions are true Logical OR: if (x > 0 || y > 0) // true if either // expression is true Logical NOT: if (!x > 0) // true only if // expression is false 7. Konstanta Bahasa Arduino memiliki nilai-nilai yang telah ditetapkan, yang disebut konstanta. Mereka digunakan untuk membuat program lebih mudah dibaca. Konstanta diklasifikasikan dalam kelompok. A. true/false Ini adalah konstanta Boolean yang mendefinisikan tingkat logika. FALSE mudah didefinisikan sebagai 0 (nol) sedangkan TRUE sering didefinisikan sebagai 1, tetapi juga bisa menjadi apa pun kecuali nol. Jadi dalam arti Boolean, -1, 2, dan -200 semua juga didefinisikan sebagai TRUE. if (b == TRUE); { doSomething; } B. high/low Konstanta ini mendefinisikan tingkat pin sebagai HIGH atau LOW dan digunakan ketika membaca atau menulis ke pin digital. HIGH didefinisikan sebagai tingkat logika 1, ON, atau 5 volt sementara LOW adalah tingkat logika 0, OFF, atau 0 volt. digitalWrite(13, HIGH); P a g e | 22 C. input/output Konstanta digunakan dengan fungsi pinMode () untuk menentukan mode pin digital baik sebagai INPUT atau OUTPUT. pinMode(13, OUTPUT); 8. Flow Control A. if if menguji apakah kondisi tertentu telah tercapai, seperti nilai analog berada di atas jumlah tertentu, dan mengeksekusi pernyataan di dalam kurung jika pernyataan tersebut benar. Jika program tidak sesuai maka pernyataan tersebut akan dilewati. Format untuk if : if (someVariable ?? value) { doSomething; } Contoh di atas membandingkan someVariable ke nilai lain, yang dapat berupa variabel atau konstanta. Jika perbandingan, atau kondisi dalam kurung adalah benar, pernyataan di dalam kurung kurawal dijalankan. Jika tidak, program akan dilewati dan melanjutkan ke program di bawahnya. Note: Waspadai menggunakan '=', seperti dalam if (x = 10), sedangkan secara teknis mendefinisikan variabel x dengan nilai 10 dan sebagai akibat selalu benar. Alih-alih menggunakan '==', seperti dalam if (x == 10), yang hanya menguji apakah x terjadi menyamai nilai 10 atau tidak. B. if… else if… else terbatas pada dua pilihan yang harus dibuat. Misalnya, jika Anda ingin menguji input digital, dan melakukan satu hal jika input HIGH atau sebaliknya melakukan hal lain jika input adalah LOW, Anda akan menulis dengan cara ini: P a g e | 23 if (inputPin == HIGH) { doThingA; } else { doThingB; } else juga dapat mendahului lain if tes, sehingga bisa lebih dari satu, tes saling eksklusif dapat dijalankan pada waktu yang sama. Hal ini bahkan dimungkinkan untuk memiliki jumlah yang tidak terbatas dari cabang tersebut. Ingat juga, hanya satu set pernyataan akan dijalankan tergantung pada tes kondisi: if (inputPin < 500) { doThingA; } else if (inputPin >= 1000) { doThingB; } else { doThingC; } Note: Sebuah pernyataan if hanya menguji apakah kondisi di dalam kurung adalah benar atau salah. Pernyataan ini bisa menjadi pernyataan C berlaku seperti dalam contoh pertama, jika (inputPin == HIGH). Dalam contoh ini, jika pernyataan hanya memeriksa untuk melihat apakah memang input yang ditetapkan bernilai HIGH, atau +5 v C. for pernyataan for digunakan untuk mengulang blok pernyataan diapit oleh kurung kurawal sejumlah tertentu kali. Counter increment sering digunakan untuk kenaikan dan mengakhiri loop. Ada tiga bagian, dipisahkan dengan titik koma (;), untuk for loop header: P a g e | 24 for (initialization; condition; expression) { doSomething; } Inisialisasi variabel lokal, atau counter kenaikan, terjadi pertama dan hanya sekali. Setiap kali melalui loop, kondisi berikut diuji. Jika kondisi tetap benar, pernyataan dan ekspresi berikut dijalankan dan kondisi diuji lagi. Ketika kondisi menjadi salah, loop berakhir. Contoh berikut mulai i bilangan bulat pada 0, tes untuk melihat apakah saya masih kurang dari 20 dan jika benar, kenaikan i oleh 1 dan mengeksekusi pernyataan yang didalam kurung kurawal: for (int i=0; i<20; i++) // declares i, tests if less { // than 20, increments i by 1 digitalWrite(13, HIGH); // turns pin 13 on delay(250); // pauses for 1/4 second digitalWrite(13, LOW); // turns pin 13 off delay(250); // pauses for 1/4 second } Note: bahasa C untuk loop jauh lebih fleksibel daripada loop ditemukan dalam beberapa bahasa komputer lainnya, termasuk BASIC. Salah satu atau semua dari tiga elemen header yang dapat diabaikan, meskipun titik koma diperlukan. Juga pernyataan untuk inisialisasi, kondisi, dan ekspresi dapat berupa pernyataan bahasa C berlaku dengan variabel terkait. Jenis yang tidak biasa untuk laporan dapat memberikan solusi untuk beberapa masalah pemrograman. D. while while loops akan dieksekusi terus menerus, dan tak terbatas, sampai ekspresi dalam kurung menjadi false. Sesuatu harus mengubah variabel diuji, atau loop while tidak akan pernah keluar. Hal ini bisa dalam kode Anda, seperti variabel bertambah, atau kondisi eksternal, seperti pengujian sensor. while (someVariable ?? value) { doSomething; } P a g e | 25 Contoh berikut tes apakah 'someVariable' kurang dari 200 dan jika benar mengeksekusi pernyataan di dalam kurung dan akan terus looping sampai 'someVariable' tidak lagi kurang dari 200. while (someVariable < 200) // tests if less than 200 { doSomething; // executes enclosed statements someVariable++; // increments variable by 1 } E. do… while do loop adalah didorong loop bawah yang bekerja dalam cara yang sama seperti loop while, dengan pengecualian bahwa kondisi ini diuji pada akhir loop, sehingga do loop akan selalu berjalan setidaknya sekali. do { doSomething; } while (someVariable ?? value); Contoh berikut memberikan readSensors () untuk variabel 'x', jeda selama 50 milidetik, kemudian loop tanpa batas waktu sampai 'x' tidak lagi kurang dari 100: do { x = readSensors(); // assigns the value of // readSensors() to x delay (50); // pauses 50 milliseconds } while (x < 100); // loops if x is less than 100 P a g e | 26 2.2 Teori Dasar Elektronika 2.2.1 Hukum Ohm Hukum Ohm adalah suatu pernyataan bahwa besar arus listrik yang mengalir melalui sebuah penghantar selalu kepadanya.Sebuah benda berbanding lurus penghantar denganbeda dikatakan mematuhi potensial yang hukum diterapkan Ohm apabila nilai resistansinyatidak bergantung terhadap besar dan polaritas beda potensial yang dikenakan kepadanya. Walaupun pernyataan ini tidak selalu berlaku untuk semua jenis penghantar, namun istilah "hukum" tetap digunakan dengan alasan sejarah. Secara matematis hukum Ohm diekspresikan dengan persamaan: Dimana : adalah arus listrik yang mengalir pada suatu penghantar dalam satuan Ampere. adalah tegangan listrik yang terdapat pada kedua ujung penghantar dalam satuan volt. adalah nilai hambatan listrik (resistansi) yang terdapat pada suatu penghantar dalam satuan ohm. Gambar 2.19 Diagram hukum Ohm P a g e | 27 Hukum ini dicetuskan oleh George Simon Ohm, seorang fisikawan dari Jerman pada tahun 1825 dan dipublikasikan pada sebuah paper yang berjudul The Galvanic Circuit Investigated Mathematically pada tahun 1827. 2.2.2 Hukum Arus Kirchhoff Hukum ini juga disebut Hukum I Kirchhoff, Hukum titik Kirchhoff, Hukum percabangan Kirchhoff, atau KCL (Kirchhoff's Current Law). Prinsip dari kekekalan muatan listrik mengatakan bahwa: Pada setiap titik percabangan dalam sirkuit listrik, jumlah dari arus yang masuk kedalam titik itu sama dengan jumlah arus yang keluar dari titik tersebut. atau Jumlah total arus pada sebuah titik adalah nol. Mengingat bahwa arus adalah besaran bertanda (positif atau negatif) yang menunjukan arah arus tersebut menuju atau keluar dari titik, maka prinsip ini bisa dirumuskan menjadi : =0 n adalah jumlah cabang dengan arus yang masuk atau keluar terhadap titik tersebut. Hukum ini berdasar pada kekekalan muatan, dengan muatan (dalam satuan coulomb) adalah hasil kali dari arus (ampere) dan waktu (detik). P a g e | 28 2.2.3 Hukum Tegangan Kirchhoff Hukum ini juga disebut sebagai Hukum kedua kirchhoff, Hukum loop (putaran) Kirchhoff, dan KVL (Kirchhoff's Voltage Law). Prinsip kekekalan energi mengatakan bahwa : Jumlah terarah (melihat orientasi tanda positif dan negatif) dari beda potensial listrik (tegangan) di sekitar sirkuit tertutup sama dengan nol. atau secara lebih sederhana, jumlah dari emf dalam lingkaran tertutup ekivalen dengan jumlah turunnya potensial pada lingkaran itu. atau Jumlah hasil kali resistansi konduktor dan arus pada konduktor dalam lingkaran tertutup sama dengan total emf yang ada dalam lingkaran (loop) itu. Mirip dengan hukum pertama Kirchhoff, dapat ditulis sebagai: =0 Disini, n adalah jumlah tegangan listrik yang diukur. Hukum ini berdasarkan kekekalan "energi yang diserap atau dikeluarkan medan potensial" (tidak termasuk energi yang hilang karena disipasi). Diberikan sebuah tegangan listrik, suatu muatan tidak mendapat atau kehilangan energi setelah berputar dalam satu lingkaran sirkuit karena telah kembali ke potensial awal. Hukum ini tetap berlaku walaupun resistansi (yang mengakibatkan disipasi energi) ada dalam sirkuit. Validitas hukum ini dalam kasus tadi dapat dimengerti dengan menyadari bahwa muatan tidak kembali ke tempat asalnya karena ada disipasi energi. Pada terminal negatif, muatan sudah hilang. Artinya energi yang diberikan oleh beda potensial sudah terpakai seluruhnya oleh resistansi yang mengubah energi tadi menjadi disipasi panas. P a g e | 29 2.3 Arduino Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang dimaksud dengan physical computing. Physical computing adalah membuat sebuah sistem atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya interaktif yaitu dapat menerima rangsangan dari lingkungan dan merespon balik. Physical computing adalah sebuah konsep untuk memahami hubungan yang manusiawi antara lingkungan yang sifat alaminya adalah analog dengan dunia digital. Pada prakteknya konsep ini diaplikasikan dalam desain-desain alat atau projek-projek yang menggunakan sensor dan microcontroller untuk menerjemahkan input analog ke dalam sistem software untuk mengontrol gerakan alat-alat elektro-mekanik seperti lampu, motor dan sebagainya. Pembuatan prototype atau prototyping adalah kegiatan yang sangat penting di dalam proses physical computing karena pada tahap inilah seorang perancang melakukan eksperimen dan uji coba dari berbagai jenis komponen, ukuran, parameter, program komputer dan sebagainya berulang-ulang kali sampai diperoleh kombinasi yang paling tepat. Dalam hal ini perhitungan angka-angka dan rumus yang akurat bukanlah satu-satunya faktor yang menjadi kunci sukses di dalam mendesain sebuah alat karena ada banyak faktor eksternal yang turut berperan, sehingga proses mencoba dan menemukan/mengoreksi kesalahan perlu melibatkan halhal yang sifatnya non-eksakta. Prototyping adalah gabungan antara akurasi perhitungan dan seni. Proses prototyping bisa menjadi sebuah kegiatan yang menyenangkan atau menyebalkan, itu tergantung bagaimana kita melakukannya. Misalnya jika untuk mengganti sebuah komponen, merubah ukurannya atau merombak kerja sebuah prototype dibutuhkan usaha yang besar dan waktu yang lama, mungkin prototyping akan sangat melelahkan karena pekerjaan ini dapat dilakukan berulang-ulang sampai puluhan kali – bayangkan betapa frustasinya perancang yang harus melakukan itu. Idealnya sebuah prototype adalah sebuah sistem yang fleksibel dimana perancang bisa dengan mudah dan cepat melakukan perubahan-perubahan dan mencobanya lagi sehingga tenaga dan waktu tidak menjadi kendala berarti. Dengan demikian harus ada sebuah alat pengembangan yang membuat proses prototyping menjadi mudah. Pada masa lalu (dan masih terjadi hingga hari ini) bekerja dengan hardware berarti membuat rangkaian menggunakan berbagai komponen elektronik seperti resistor, kapasitor, transistor dan sebagainya. Setiap komponen disambungkan secara fisik dengan kabel atau jalur tembaga yang disebut dengan istilah “hard wired” sehingga untuk merubah rangkaian maka P a g e | 30 sambungansambungan itu harus diputuskan dan disambung kembali. Dengan hadirnya teknologi digital dan microprocessor fungsi yang sebelumnya dilakukan dengan hired wired digantikan dengan program-program software. Ini adalah sebuah revolusi di dalam proses prototyping. Software lebih mudah diubah dibandingkan hardware, dengan beberapa penekanan tombol kita dapat merubah logika alat secara radikal dan mencoba versi ke-dua, ke-tiga dan seterusnya dengan cepat tanpa harus mengubah pengkabelan dari rangkaian. Secara umum Arduino terdiri dari dua bagian, yaitu: 1. Hardware papan input/output (I/O) 2. Software Software Arduino meliputi IDE untuk menulis program, driver untuk koneksi dengan komputer, contoh program dan library untuk pengembangan program. 2.3.1 Jenis-jenis Arduino 1. Arduino USB Gambar 2.20 Arduino Uno Menggunakan USB sebagai antar muka pemrograman atau komunikasi komputer. Contoh: Arduino Uno Arduino Duemilanove Arduino Diecimila Arduino NG Rev. C Arduino NG (Nuova Generazione) Arduino Extreme dan Arduino Extreme v2 Arduino USB dan Arduino USB v2.0 P a g e | 31 2. Arduino Serial Menggunakan RS232 sebagai antar muka pemrograman atau komunikasi komputer. Gambar 2.21 Arduino Serial Contoh: Arduino Serial dan Arduino Serial v2.0 3. Arduino Mega Gambar 2.22 Arduino Mega Papan Arduino dengan spesifikasi yang lebih tinggi, dilengkapi tambahan pin digital, pin analog, port serial dan sebagainya. Contoh: Arduino Mega Arduino Mega 2560 P a g e | 32 4. Arduino Fio Ditujukan untuk penggunaan nirkabel. Gambar 2.23 Arduino Fio 5. Arduino Lilypad Papan dengan bentuk yang melingkar. Contoh: LilyPad Arduino 00, LilyPad Arduino 01, LilyPad Arduino 02, LilyPad Arduino 03, LilyPad Arduino 04 Gambar 2.24 Arduino Lilypad P a g e | 33 6. Arduino BT Mengandung Bluetooth untuk komunikasi nirkabel Gambar 2.25 Arduino BT 7. Arduino Nano dan Arduino Mini Gambar 2.26 Arduino Nano Papan berbentuk kompak dan digunakan bersama breadboard. Contoh: Arduino Nano 3.0, Arduino Nano 2.x Arduino Mini 04, Arduino Mini 03, Arduino Stamp 02 P a g e | 34 2.3.2 Arduino Controller Komponen utama di dalam papan Arduino adalah sebuah microcontroller 8 bit dengan merk ATmega yang dibuat oleh perusahaan Atmel Corporation. Berbagai papan Arduino menggunakan tipe ATmega yang berbeda-beda tergantung dari spesifikasinya, sebagai contoh Arduino Uno menggunakan ATmega328 sedangkan Arduino Mega 2560 yang lebih canggih menggunakan ATmega2560. Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah microcontroller, pada gambar berikut ini diperlihatkan contoh diagram blok sederhana dari microcontroller ATmega328 (dipakai pada Arduino Uno). Gambar 2.27 Blok diagram atmega328 P a g e | 35 Blok-blok di atas dijelaskan sebagai berikut: Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485. 2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan oleh variable-variabel di dalam program. 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader. Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM akan dieksekusi. 1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak boleh hilang saat daya dimatikan. Tidak digunakan pada papan Arduino. Central Processing Unit (CPU), bagian dari microcontroller untuk menjalankan setiap instruksi dari program. Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan mengeluarkan data (output) digital atau analog. 2.4 UBEC UBEC " Universal Battery Elimination Circuit" adalah sebuah sirkuit elektronik eksternal yang berperan sebagai keran daya dari baterai Anda dan mengatur tegangan ke yang diperlukan 5 atau 6 volt. Maksimum tegangan input akan bervariasi sesuai dengan spesifikasi UBEC. Beberapa dapat menangani tegangan yang lebih tinggi daripada yang lain. Pilihan pengaturan tegangan output biasanya diatur pengguna. UBEC diperlukan dalam beberapa aplikasi di mana arus yang lebih tinggi diperlukan, Jika Anda menggunakan 3 sampai 4 servo, servo digital, servo ukuran standar, 4 lipo sel atau lebih besar, Anda perlu menggunakan Sirkuit UBEC . UBEC "" Universal Battery Elimination Circuit " Ini UBEC 3 amp adalah ‘switch mode’ DC regulator yang mengambil tegangan tinggi (hingga 28 volt) dari baterai utama dan mengkonversinya menjadi tegangan konsisten dan aman 5 atau 6 volt (diatur menggunakan saklar) untuk servo. UBEC diperlukan jika Electronic Speed P a g e | 36 Control (ESC) yang digunakan untuk motor tidak memiliki built in Battery Elimination Circuit (BEC), atau jika BEC dari ESC tidak memadai untuk daya jumlah dan / atau ukuran servos yang digunakan. Menggunakan UBEC 3A adalah cara yang aman karena alasan berikut: o Kebanyakan built-in sirkuit BEC adalah 1 sampai 2 amp ‘linear mode‘ sirkuit yang hanya berguna untuk 2 atau mungkin 3 standar servos ukuran ketika menggunakan 3 sel baterai Lipo. Jika Anda menggunakan servo lebih, atau tegangan baterai pack yang lebih tinggi, Anda akan hampir pasti membebani BEC, menyebabkan alat menjadi crash. o Dalam ESC dengan panas yang berlebihan built-in BEC, dihasilkan di ESC dengan menarik arus dari motor dan / atau BEC dapat menyebabkan kerugian total daya ke servos, sehingga robot mengalami kegagalan daya. Gambar 2.28 UBEC 3A