5 BAB II TINJAUAN PUSTAKA 2.1 Mikrokontroller 2.1.1 Pengertian Mikrokontroller

BAB II TINJAUAN PUSTAKA

2.1 Mikrokontroller

2.1.1 Pengertian Mikrokontroller

  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. Dengan kata lain, mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis data. Sekedar contoh, bayangkan diri Anda saat mulai belajar membaca dan menulis, ketika Anda sudah bisa melakukan hal itu Anda bisa membaca tulisan apapun baik buku, cerpen, artikel dan sebagainya, dan Andapun bisa pula menulis hal-hal sebaliknya. Begitu pula jika Anda sudah mahir membaca dan menulis data maka Anda dapat membuat program untuk membuat suatu sistem pengaturan otomatik menggunakan mikrokontroler sesuai keinginan Anda. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatanelektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut “pengendali kecil” dimana sebuah sistem elektronik yangsebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini.

  Mikrokonktroler digunakan dalam produk dan alat yang dikendalikan secara automatis, seperti sistem kontrol mesin, remote controls, mesin kantor, peralatan rumah tangga, alat berat, dan mainan. Dengan mengurangi ukuran, Dengan penggunaan mikrokontroler ini maka :  Sistem elektronik akan menjadi lebih ringkas  Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi  Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

  Agar sebuah mikrokontroler dapat berfungsi, maka mikrokontroler tersebut memerlukan komponen eksternal yang kemudian disebut dengan sistem minimum. Untuk membuat sistem minimal paling tidak dibutuhkan sistem clock dan reset, walaupun pada beberapa mikrokontroler sudah menyediakan sistem clock internal, sehingga tanpa rangkaian eksternal pun mikrokontroler sudah beroperasi. Yang dimaksud dengan sistem minimal adalah sebuah rangkaian mikrokontroler yang sudah dapat digunakan untuk menjalankan sebuah aplikasi. Sebuah IC mikrokontroler tidakakan berarti bila hanya berdiri sendiri. Pada dasarnya sebuah sistem minimal mikrokontroler AVR memiliki prinsip yang sama.

2.1.2 Fitur AVR 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 pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width Modulation) output.  Master / Slave SPI Serial interface.

  Mikrokontroller ATmega 328 memiliki arsitektur Harvard, 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 inilah yang memungkinkan instruksi
  • – instruksi dapat dieksekusi dalam setiap satu siklus clock. 32 x 8-bit register serba guna digunakan untuk mendukung operasi pada ALU ( Arithmatic Logic unit ) yang dapat dilakukan dalam satu siklus. 6 dari register serbaguna ini dapat digunakan sebagai 3 buah register pointer 16-bit pada mode pengalamatan tidak langsung untuk mengambil data pada ruang memori data. 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 ). Hampir semua instruksi AVR memiliki format 16-bit.

  Setiap alamat memori program terdiri dari instruksi 16-bit atau 32-bit. Selain register serba guna di atas, terdapat register lain yang terpetakan dengan teknik memory mapped I/O selebar 64 byte. Beberapa register ini digunakan untuk fungsi khusus antara lain sebagai register control Timer/ Counter, Interupsi, ADC, USART, SPI, EEPROM, dan fungsi I/O lainnya. Register – register ini menempati memori pada alamat 0x20h – 0x5Fh.

2.1.3 Arsitektur dan Konfigurasi Pin ATMega 328

  Gambar 2.1(a) berikut ini adalah gambar arsitektur dari ATMega 328 dan Gambar 2.1(b) adalah gambar konfigurasi Pin ATMega328

  (a)

2.1.4 Fungsi tiap Pin pada ATMega328

  ATMega 328 memiliki 3 buah Port I/O dan fungsinya dapat dilihat pada tabel 2.1

  • – 2.3 . (Universitas Sumatera Utara,2013:1-7)

Tabel 2.1 Fungsi Pin Port B

  Port Pin Alternate Functions

  PB7

  XTAL2 (Chip Clock Oscilator pin 2) TOSC2 (Timer Oscilator pin 2) PCINT7 (Pin Chane Interrupt 7)

  PB6

  

XTAL1 (Chip Clock Oscilator pin 1 or External Clock Input)

TOSC1 (Timer Oscilator pin 1) PCINT7 (Pin Chane Interrupt 6)

  PB5 SCK (SPI Bus Master Clock Input)

  PCINT5 (Pin Change Interrupt 5)

  PB4 MISO (SPI Bus Master Input/Slave Output)

  PCINT4 (Pin Change Interrupt 4)

  PB3 MOSI (SPI Bus Master Input/Slave Output)

  

OC2A (Timer/Counter2 Output Compare Match A Output)

PCINT3 (Pin Change Interrupt 3)

  PB2 ̅̅̅ (SPI Bus Master Slave select)

  

OC1B ( Timer/Counter1 Output Compare Match B Output)

PCINT2 (Pin Change Interrupt 2)

  PB1 OC1A (Timer/Counter2 Output Compare Match A Output)

  PCINT1 (Pin Change Interrupt 1)

  ICP1 (Timer/Counter1 Input Capture Input)

  PB0

  CLKO(Divided System Clock Output) PCINT1 (Pin Change Interrupt 0)

Tabel 2.2 Fungsi Pin Port C

  Port Pin Alternate Functions

  PC6 ̅̅̅̅̅̅̅̅̅ (Reset Point)

  PCINT14 (Pin Change Interrupt 14)

  PC5 ADC5 ( ADC Input Channel 5)

  SCL (2-Wire Serial Bus Clock Line) PCINT13(Pin Change Interrupt13)

  PC4 ADC4 ( ADC Input Channel 4)

  SCL (2-Wire Serial Bus Data Input/Output Line) PCINT13(Pin Change Interrupt12)

Tabel 2.3 Fungsi Pin Port D

  Port Pin Alternate Functions

  PD7 AIN1 ( Analog Comparator Negative Input)

  PCINT23 (Pin Change Interrupt23)

  PD6 AIN0 ( Analog Comparator Negative Input)

  

OC0A (Timer/Counter0 Output Compare Match A Output)

PCINT22 (Pin Change Interrupt22)

  PD5 T1 (Timer/Counter 1 External Counter Input)

  

OC0B (Timer/Counter0 Output Compare Match B Output)

PCINT21 (Pin Change Interrupt21)

  PD4

  XCK (USART External Clock Input/Output) T0(Timer/Counter 0 External Counter Input)

  PD3

  INT1 (External Interrupt 1 Input)

OC2B(Timer/Counter2 Output Compare Match B Output)

PCINT19 (Pin Change Interrupt 19)

  P2

  INT0 (External Interrupt 0 Input) PCINT18 (Pin Change Interrupt 18)

  PD1 TXD (USART Output Pin)

  PCINT17 (Pin Change Interrupt 17)

  PD0 RXD (USART Input Pin)

  PCINT16 (Pin Change Interrupt 16)

2.2 Arduino Uno

2.2.1 Pengertian Arduino Uno 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. Gambar 2.2 berikut adalah gambar mikrokontroller Arduino Uno.

  Apakah arduino? Arduino adalah merupakan sebuah board minimum system mikrokontroler yang bersifat open source. Didalam rangkaian board arduino terdapat mikrokontroler AVR seri ATMega 328 yang merupakan produk dari Atmel.

  Arduino memiliki kelebihan tersendiri disbanding board mikrokontroler yang lain selain bersifat open source, arduino juga mempunyai bahasa pemrogramanya sendiri yang berupa bahasa C. Selain itu dalam board arduino sendiri sudah terdapat loader yang berupa USB sehingga memudahkan kita ketika kita memprogram mikrokontroler didalam arduino.

  Sedangkan pada kebanyakan board mikrokontroler yang lain yang masih membutuhkan rangkaian loader terpisah untuk memasukkan program ketika kita memprogram mikrokontroler. Port USB tersebut selain untuk loader ketika memprogram, bisa juga difungsikan sebagai port komunikasi serial. Arduino menyediakan 20 pin I/O, yang terdiri dari 6 pin input analog dan 14 pin digital input/output. Untuk 6 pin analog sendiri bisa juga difungsikan sebagai output digital jika diperlukan output digital tambahan selain 14 pin yang sudah tersedia.

  Untuk mengubah pin analog menjadi digital cukup mengubah konfigurasi pin pada program. Dalam board kita bisa lihat pin digital diberi keterangan 0-13, jadi untuk menggunakan pin analog menjadi output digital, pin analog yang pada keterangan board 0-5 kita ubah menjadi pin 14-19. dengan kata lain pin analog 0- 5 berfungsi juga sebagi pin output digital 14-16. Sifat open source arduino juga banyak memberikan keuntungan tersendiri untuk kita dalam menggunakan board ini, karena dengan sifat open source komponen yang kita pakai tidak hanya tergantung pada satumerek, namun memungkinkan kita bisa memakai semua komponen yang ada dipasaran. Bahasa pemrograman arduino merupakan bahasa C yang sudah disederhanakan syntax bahasa pemrogramannya sehingga mempermudah kita dalam mempelajari dan mendalami mikrokontroler.

  AVR yang beroperasi pada tegangan kerja 5V dan Arduino Due tegangan operasi 3.3V

   Rangkaian RESET yang lebih mantap.  Penerapan ATmega 16U2 pengganti 8U2.

  Bahasa "UNO" berasal dari bahasa Italia yang artinya SATU, ditandai dengan peluncuran pertama Arduino 1.0, Uno pada versi 1.0 sebagai referensi untuk Arduino yang selanjutnya, seri Uno versi terbaru dilengkapi USB. Berikut spesifikasi Arduino Uno

   Mikrokontroller : ATmega328

   Tegangan Kerja : 5V

   Tegangan Masukan(saran) : 7-12V  Tegangan Masukan(batas) : 6-20V  Pin-Pin Digital I/O

  : 14 Pin (6 Pin output PWM)  Pin Input Analog

  : 6 Pin  Arus DC per pin I/O

  : 40mA  Arus DC per pin I/O : 50mA Untuk pin 3.3 V  Flash Memory

  : 32KB,0,5 KB untuk Bootloader  SRAM : 2KB (ATmega328)  EEPROM

  : 1KB (ATmega328)  Clock Speed

  : 16 MHz  Panjang

  : 68,6 mm  Lebar

  : 54,4 mm

Gambar 2.3 berikut adalah gambar print out diagram Pin Arduino Uno R3 dengan menggunakan mikrokontroller ATMega328 beserta keterangannya

2.2.3 Power Arduino dapat diberikan power melalui koneksi USB atau power supply.

  

Powernya diselek secara otomatis. 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, kadangkala 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. Gambar 2.4 berikut adalah gambar port power supply dari

  Arduino Uno.

  Gambar 2.4

  Port Power Supply Arduino Penjelasan pada pin power adalah sebagai berikut :

  2.2.3.1 Pin 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.

  2.2.3.2 Pin 5V

  Regulasi power supply digunakan untuk power mikrokontroller dan

2.2.3.4 Pin Ground

  Berfungsi sebagai jalur ground pada arduino IOREF. Pin ini penyedia referensi tengangan agar mikrokontrol beroperasi dengan baik. Memilih sumber daya yang tepat atau mengaktifkan penerjemah tegangan pada output untuk bekerja dengan 5V atau 3.3V.

  2.2.4 Memory

  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

  2.2.5 Input dan Output

  Masing-masing dari 14 pin UNO dapat digunakan sebagai input atau output, menggunakan perintah fungsi pinMode(), digitalWrite(), dan digitalRead() yang menggunakan tegangan operasi 5 volt. Tiap pin dapat menerima arus maksimal hingga 40mA dan resistor internal pull-up antara 20-50kohm, beberapa pin memiliki fungsi kekhususan antara lain:

  2.2.5.1 Serial: Pin 0 (RX) dan Pin 1 (TX)

  Sebagai penerima (RX) dan pemancar (TX) TTL serial data. Pin ini terkoneksi untuk pin korespondensi chip ATmega8U2 USB-toTTL Serial.

  2.2.5.2 External Interrupts: Pin 2 dan Pin 3

  Pin ini berfungsi sebagai konfigurasi trigger saat interupsi value low, naik, dan tepi, atau nilai value yang berubah-ubah.

  2.2.5.3 PWM: Pin 3, 5, 6, 9, 10, dan Pin 11 Melayani output 8-bit PWM dengan fungsi analogWrite().

  2.2.5.4 SPI: Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).

  Pin yang support komunikasi SPI menggunakan SPI library.

  2.2.5.5 LED: Pin 13

  Terdapat LED indikator bawaan (built-in) dihubungkan ke digital pin 13, dari jarak yang digunakan oleh pin AREF dengan fungsi analog

  Reference (). (Maulana, 2014:16)

2.3 Motor DC

2.3.1 Pengertian Motor DC

  Motor DC adalah motor listrik yang memerlukan suplai tegangan arus searah pada kumparan medan untuk diubah menjadi energy gerak mekanik. Kumparan medan pada motor DC disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Motor arus searah, sebagai namanya, menggunakan arus langsung dan tidak langsung (direct-

  

undirectional ). Motor DC memiliki 3 bagian atau komponen utama untuk dapat

berputar. Gambar 2.5 berikut adalah gambar simbol motor DC.

Gambar 2.5 Simbol Motor DC

  Adapun ketiga komponen-komponen yang terdapat pada motor DC adalah sebagai berikut: Kutub medan

   Motor DC sederhana memiliki dua kutub medan: kutub utara dan kutub selatan. Garis magnetik energi membesar melintasi ruang terbuka diantara kutub- kutub dari utara ke selatan. Untuk motor yang lebih besar atau lebih komplek terdapat satu atau lebih elektromagnet.

  Current Elektromagnet atau Dinamo

  

  Commutator

   Komponen ini terutama ditemukan dalam motor DC. Kegunaannya adalah untuk 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 dynamo : meningkatkan tegangan dinamo akan meningkatkan kecepatan  Arus medan : menurunkan arus medan akan meningkatkan kecepatan.(Irawan,Wanda,2014:5-7)

2.3.2 Jenis-jenis Motor DC

2.3.2.1 Motor DC Lilitan Seri

  Pada motor lilitan seri (seri-wound motor), lilitan armatur dan lilitan medan dibuat seri sehingga torsi awal motor menjadi sangat besar contohnya adalah motor starter mobil. Torsi terbesar terjadi pada saat beban sangat besar dan motor tidak dapat bergerak. Torsi maksimum ini disebut Torsi diam (Stall

  

Torque ). Beberapa sistem pengaturan dirancang untuk menggerakkan motor pada

kondisi stall torsi misal untuk membuat penggerak lengan robot dari posisi diam.

  Karena posisi diam membutuhkan torsi yang sangat besar. Gambar 2.6 berikut ini adalah gambar rangkaian dari motor DC lilitan Seri.

  (a) (b)

  Gambar 2.6

  a. Motor DC Lilitan Seri Dipasang normal

  Gambar 2.7

  Grafik Arus Motor DC Terhadap Torsi

  2.3.2.2 Motor DC Lilitan Shunt

  Pada Motor lilitan shunt (shunt-wound motor), lilitan armatur dan lilitan medan dihubungkan secara paralel akibatnya arus medan tidak berpengaruh pada perubahan arus suplai dan hanya terpengaruh oleh tegangan suplai. Shunt-wound

  

motor digunakan untuk keperluan dengan laju yang relatif konstan misalnya pada

kipas angin, blower, ban berjalan (conveyer belt).

  Motor lilitan shunt memiliki stall torque dan no-load speed yang rendah dibandingkan motor lilitan seri. Gambar 2.8 berikut adalah gambar rangkaian motor DC lilitan Shunt

  (a) (b)

  Gambar 2.8

  a. Rangkaian Motor DC Lilitan Shunt normal

  b. Rangkaian Motor DC lilitan Shunt Dipasang Terbalik

  2.3.2.3 Motor lilitan gabungan

  Motor lilitan gabungan menggabungkan kelebihan dari seri dan shunt

  (a) (b)

  Gambar 2.9

  a. Rangkaian Motor DC Lilitan Gabungan Shunt Pendek

  b. Rangkaian Motor DC Lilitan Gabungan Shunt Panjang

2.4 Driver Motor DC

  Terdapat beberapa rangkaian untuk mengatur laju putar motor. Sebenarnya penggunaan istilah pengaturan laju kurang tepat karena yang diubah adalah energi listrik menjadi torsi, sedangkan laju ditentukan oleh torsi dan bebannya.

  Terdapat dua teknik untuk menggerakan (drive) motor yang pertama disebut analog drive yaitu suatu rangkaian interfacing yang digunakan untuk memperkuat sinyal dari pengatur (controller) agar cukup untuk menggerakkan motor. Biasanya berupa Linear Power Amplifier. Sedangkan teknik kedua adalah untuk menggerakan motor adalah Pulse-width modulation (PWM). Pada teknik ini daya disuplai ke motor dalam bentuk pulsa DC dengan tegangan yang tetap. Lebar pulsa divariasikan untuk mengatur laju motor, semakin besar lebar pulsa maka semakin besar laju rata-rata motor. Frekuensi pulsa sangat besar sehingga membuat motor berputar secara halus.

2.4.1 Pengaturan Motor Dc Menggunakan Penggerak Analog

  Sistem penggerak analog berupa linier power amplifier yang ditempatkan diantara pengatur dan motor. Biasanya berupa penguat arus sedangkan tegangan keluaran boleh lebih kecil atau lebih besar dari tegangan input motor.

  Rangkaian penggerak analog yang sederhana adalah Amplifier Kelas A yaitu amplifier yang menggunakan sebuah transistor saja. Rangkaiannya bisa

  Gambar 2.10

  a. Driver Motor DC Common Emitter

  b. Driver Motor DC Common Collector Cara kerja kedua rangkaian penggerak ini adalah sama, saat tegangan basis

  (VB) naik melampau tegangan maka forward-bias ransistor akan on dan membiarkan arus collector mengalir. Arus collector 30 – 100 kali lebih besar dari arus basis tergantung dari gain transistor (hfe). Saat transistor on arus collector ditentukan oleh VB. Tetapi amplifier kelas A sangat tidak efisien saat transistor

  

on penuh arus collector mengalir sepenuhnya tetapi saat transistor setengah

  menyala (half-on) menyebabkan arus collector yang mengalir menjadi setengah juga. Half-on terjadi karena panas yang ditimbulkan oleh transistor menyebabkan dayanya berkurang.

  Penggerak analog lainnya adalah Power IC, Darlington Power Transistor dan Mosfet Power. Power IC Driver berupa paket amplifier DC dengan arus

  output yang relatif besar, misalnya LM12.

2.4.2 Pengaturan Motor DC Menggunakan Pulse-Width Modulation

  Pulse-Width Modulation

  (PWM) memiliki cara yang sangat berbeda dalam mengatur torsi dan laju motor. Daya disuplai dalam bentuk gelombang pulsa kotak dengan magnituda yang tetap dengan lebar pulsa kotak atau duty cycle yang bervariasi. Duty cycle mengacu pada persentase waktu saat pulsa pada kondisi

Gambar 2.11 Gelombang PWM Pada laju terendah daya mensuplai ¼ dari waktu siklus (cycle time).

  Frekuensi dari pulsa diatur untuk mengatasi inersia (kelembaban) motor sehingga motor berputar dengan laju yang konstan. Pada 50% duty cycle motor berputar dengan laju setengah penuh. Rangkaian PWM bisa juga berupa rangkaian penggerak analog seperti rangkaian power transistor, power Darlington, Power

  MOSFET

  dan POWER IC. IC Allegro A3952 sangat cocok untuk digunakan sebagai PWM Driver Motor. Tetapi agar tidak menyulitkan prosesor untuk menghasilkan sinyal perulangan ini biasanya digunakan IC khusus atau dengan Rangkaian pengatur waktu yang telah dipasang di dalam mikroprosesor .

  Salah satu contoh IC yang bisa langsung menghasilkan gelombang PWM adalah jenis LM3524 (National Semiconductor). Duty Cycle dapat dibuat dari 0%

  • 100% dengan memberikan tegangan DC pada pin 9 (Gambar 2.12(a)). Osilator di dalam IC ini bisa menghasilkan frekuensi PWM dalam bentuk gelombang gigi gergaji. Gelombang gigi gergaji ini dibandingkan oleh komparator dengan tegangan kompensasi yang diinputkan. Hasilnya berupa gelombang pulsa kotak berbentuk PWM. Transistor akan off saat gelombang gigi gergaji melampaui tegangan kompensasi. Gambar 2.12 berikut ini adalah driver motor DC dengan IC LM3524.(Hand,Yeffry,2010:56-63)

  (a) (b)

  Gambar 2.12

  a. Rangkaian pengatur PWM

  b. Gelombang yang dihasilkan rangkaian gambar (a)

2.5 Motor Servo

2.5.1 Pengetian Motor Servo

  Motor servo adalah sebuah motor dengan sistem closed feedback di mana posisi dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor ini terdiri dari sebuah motor, serangkaian gear, potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor.

  Motor servo biasanya hanya bergerak mencapai sudut tertentu saja dan tidak kontinyu seperti motor DC maupun motor stepper. Walau demikian, untuk beberapa keperluan tertentu, motor servo dapat dimodifikasi agar bergerak kontinyu. Pada robot, motor ini sering digunakan untuk bagian kaki, lengan atau bagianbagian lain yang mempunyai gerakan terbatas dan membutuhkan torsi cukup besar.

Gambar 2.13 dibawah ini adalah gambar motor servo yang umum dipakai.

  2.5.2 Keunggulan Motor Servo

  Keunggulan daridalah :  Tidak bergetar dan tidak ber-resonansi saat beroperasi.  Daya yang dihasilkan sebanding dengan ukuran dan berat motor.  Penggunaan arus listik sebanding dengan beban yang diberikan.  Resolusi dan akurasi dapat diubah dengan hanya mengganti encoder yang dipakai.

  2.5.3 Kegunaan Motor Servo

  Kebanyakan motor servo digunakan sebagai  Manipulators  Penggerak Kamera  Tangan Robot

  2.5.4 Jenis-Jenis Motor Servo

  2.5.4.1 Motor Servo Standar 180°

  Motor servo jenis ini hanya mampu bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut dari kanan

  • – tengah – kiri adalah 180°. Gambar 2.14 merupakan gambar contoh

  o

  motor servo yang bergerak 180

  2.5.4.2 Motor Servo Continuous

  Motor servo jenis ini mampu bergerak dua arah (CW dan CCW) tanpa batasan defleksi sudut putar (dapat berputar secara kontinyu).

  o

Gambar 2.14 Motor Servo Standar 180

2.5.5 Pensinyalan Motor Servo

  Gambar 2.15

  Contoh Posisi dan Waktu Pemberian Pulsa Motor Servo akan bekerja secara baik jika pada bagian pin kontrolnya

   diberikan sinyal PWM dengan frekuensi 50Hz.

  Dimana pada saat sinyal dengan frekuensi 50Hz tersebut dicapai pada  kondisi Ton duty cycle 1.5ms, maka rotor dari motor akan berhenti tepat di tengah-tengah (sudut 0° / netral).

  Pada saat Ton duty cycle dari sinyal yang diberikan kurang dari 1.5ms,  maka rotor akan berputar ke arah kiri dengan membentuk sudut yang besarnya linier terhadap besarnya Ton duty cycle, dan akan bertahan diposisi tersebut.

  Dan sebaliknya, jika Ton duty cycle dari sinyal yang diberikan lebih dari 

  1.5ms, maka rotor akan berputar ke arah kanan dengan membentuk sudut yang linier pula terhadap besarnya Ton duty cycle, dan bertahan diposisi tersebut.(Iswanto,2008:297-299) Terlihat pada gambar, bahwa sinyal PWM adalah sinyal digital yang amplitudonya tetap, namun lebar pulsa yang aktif (duty cycle) per periodenya dapat diubah-ubah. Dimana periodenya adalah waktu pulsa high (1) Ton ditambah waktu pulsa low (0) Toff. Atau dapat dijabarkan dengan rumus : Sehingga PWM = 255 x D

  ………………………(3)

  2.6 Kontroller (Gctrl)

  Gctrl ini adalah sebuah program open source pada PC yang berfungsi sebagai pengendali kerja Arduino Uno. Gctrl ini memberikan perintah langsung ke

  Arduino Uno

  . Perintah tersebut dapat berupa memilih serial port, menambahkan kecepatan motor atau mengurangi kecepatan motor. Gambar 2.24 berikut ini adalah gambar Interface pada program GCtrl

  Gambar 2.16

  Interface Kontroller alat PCB

  2.7 Inkscape Inkscap e adalah sebuah open-source editor grafis vektor yang mirip

  dengan Adobe Illustrator, Corel Draw, Freehand, atau Xara X. Apa yang membuat Inkscape berbeda adalah penggunaan Scalable Vector Graphics (SVG), sebuah berbasis XML standar W3C terbuka, sebagai format asli. Dengan memanfaatkan program Inkscape inilah kita dapat membuat GCode. Gambar 2.25 berikut adalah gambar ikon program Inkscape.

2.7.1 Pengenalan Menu dan Ikon Pada Inkscape

  Setelah menjalankan Inkscape, akan ada tampilan jendela Inkscape. Pada tampilan inilah segala kegiatan desain dilakukan . Gambar 2.26 berikut memperlihatkan tampilan jendela Inkscape dan bagian-bagiannya. (Fadrullah,2014:1)

  Gambar 2.18

  Jendela Inkscape

2.8 Bahasa Pemrograman Arduino

2.8.1 Struktur Pemrograman Structure

   Structure dasar dari bahasa pemrograman arduino adalah sederhana yang hanya terdiri dari dua bagian. void setup( ) { // Statement; }

  Dimana setup () bagian untuk inisialisasi yang hanya dijalankan sekali di awal program, sedangkan loop () untuk mengeksekusi bagian program yang akan dijalankan berulang-ulang untuk selamanya.

  Setup ( )

   Fungsi setup() hanya dipanggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial.Fungsi setup() harus diikutsertakan dalam program walaupun tidak ada statement yang di jalankan. void setup() { p inMode(13,OUTPUT); // mengset „pin‟ 13 sebagai output }

  Loop

   Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop(). void loop() { digitalWrite(13, HIGH);// nyalakan „pin‟ 13 delay(1000);// pause selama 1 detik digitalWrite(13, LOW);// matikan „pin‟ 13 delay(1000);// pause selama 1 detik }

  Function

   Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang akan dieksekusi ketika function di panggil.Cara pendeklarasian

  Contoh: int delayVal() {

  I nt v; // membuat variable „v‟ bertipe integer v = analogRead(pot); // baca harga potentiometer v /= 4; // konversi 0-1023 ke 0-255 return v; // return nilai v }

  Pada contoh di atas fungsi tersebut memiliki nilai balikint(integer), karena jika tidak menghendaki adanya nilai balik maka type function harus void.

  Kurung Kurawal { }

  

  Curly brace

  atau Kurung kurawal mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika memprogram dan progremer lupa memberi curly brace tutup maka ketika di-compile akan terdapat laporan error.

  Titik koma ;

  

  Semicolon atau titik koma harus di berikan pada setiap statement program

  yang kita buat ini merupakan pembatas setiap statement program yang di buat

  /*...*/ blok comment

   Semua statement yang ditulis dalam block comments tidak akan dieksekusi dan tidak akan di compile sehingga tidak mempengaruhi besar program yang dibuat untuk di masukkan dalam board arduino.

  Line Comment //

   Sama halnya dengan block comments, line comments pun sama hanya saja yang dijadikan komentar adalah perbaris.

2.8.2 Variable Variable

   Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam

  Contoh ; Int inputVariable = 0; // mendefinisikan sebuah variable bernama inputVariable dengan nilai awal 0 inputVariable = analogRead(2); // menyimpan nilai yang ada di analog pin 2 ke inputVariable

  Variable Scope

   Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara local di dalam sebuah function, dan terkadang didalam sebuah block statement pengulangan. Sebuah variable global hanya satu dan dapat di gunakan pada semua block function dan statement di dalam program. Variable global dideklarasikan pada awal program sebelum fungstion setup (). Sebuah variable local dideklarasikan di setiap block function atau di setiap block statement pengulangan dan hanya dapat di gunakan pada block yang bersangkutan saja.

  Contoh ; void setup() { // no setup needed } void loop() { for (int i=0; i<20;) // 'i' hanya dapat di gunakan dalam pengulangan saja { i++; }

2.8.3 Data Type

  

  ByteTipe

  Byte dapat menyimpan 8-bit nilai angka bilangan asli tanpa koma. Byte memiliki range 0

  • –255 Byte biteVariable= 180; // mendeklarasikan„biteVariable‟ sebagai type byte

  

  Integer

  Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai - 32.768.

  Int integerVariable = 1600; // mendeklarasikan „integerVariable‟ sebagai type integer 

  Long

  Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan range 2.147.483.647 sampai -2.147.483.648

  Long longVariable = 500000; // mendeklarasikan „longVariable‟ sebagai type long 

  Float

  Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38

  Float floatVariable = 3.14; // mendeklarasikan „floatVariable‟ sebagai type float 

  Array

  Int arraySaya[] = {2,4,6,8,10} x = arraySaya[5]; // x sekarang sama dengan 10

2.8.4 Operator Aritmetic Aritmetic

   Operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan pembagian. y = y + 3; x = x -8; i = i * 5; r = r / 9;

  Dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang digunakan jangan sampai terjadi overflow range data.

  Compound Ansignments

   Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable. Ini biasanya dipakai pada pengulangan. x ++; // sama seperti x = x + 1 atau menaikan nilaix sebesar 1 x --; // sama seperti x = x -1 atau mengurangi nilai x sebesar 1 x += y; // sama seperti x = x + y x -= y; // sama seperti x = x –y x *= y; // sama seperti x = x * y x /= y; // sama seperti x = x / y

  Comparason

   Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true. Statement ini banyak digunakan dalam operator bersyarat. x == y; // x sama dengan y x!= y; // x tidak sama dengan y x < y; // x lebih kecil dari y

  Logic Operator

   Operator logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai balik benar atau salah tergantung dari operator yang digunakan. Terdapat 3 operator logical AND, OR, dan NOT, yang biasanya digunakan pada if statement.

  Contoh penggunaan: o Logical AND

  If ( x > 0 && x < 5)// bernilai benar apabila kedua operator pembanding terpenuhi o

  Logical OR If ( x > 0 || y > 0)// bernilai benar apabila salah satu dari operator pembanding terpenuhi o

  Logical NOT If (!x > 0 )// benilai benar apabila ekspresi operator salah

2.8.5 Konstanta

  Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta. Ini membuat memprogram lebih mudah untuk di baca. Konstanta di kelasifikasi berdasarkan group.

  True/False

   Merupakan konstanta Boolean yang mendifinisikan logic level. False mendifinisikan 0 dan True mendifinisikan 1.

  If ( b == TRUE ); { //doSomething }

  High/Low

  

  Input/Output

   Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikan mode pin digital, sebagai input atau output pinMode( 13, OUTPUT )

2.8.6 Flow Control If

   If Operator, if mengtest sebuah kondisi seperti nilai analog sudah berada dibawah nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris program yang ada dalam brackets kalau tidak terpenuhi maka akan mengabaikan baris program yang ada dalam brackets.

  If ( someVariable?? value ) { //DoSomething; }

  If...else

   Operator if...else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi yang pertama maka akan mengeksekusi baris program yang ada di else.

  If ( inputPin == HIGH ) { //Laksanakan rencana A; } Else { //Laksanakan rencana B; }

  //doSomethig; }

  

  While

  Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai ekspresi sebagai kondisi pengulangan benilai salah While ( someVariable?? value ) { //doSomething; }

  

  Do....while

  Sama halnya dengan while() hanya saja pada operator Do...while tidak melakukan pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali baris perintah walaupun pada awalnya sudah terpenuhi.

  Do { //doSomething; } While ( someVariable?? value );

2.8.7 Digital I/O

  Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 - 13, ada saat tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial, sehingga harus hati-hati dalam pengalokasian I/O.

  

  Pin Mode (Pin, Mode)

  Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau Output. Arduino digital pins secara default di konfigurasi sebagai input

  • –5 

  Analog Write (pin, value) Mengirimkan nilai analog pada pin analog.

  Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer.

  Millis ()

  Delay(1000);// menunggu selama satu detik 

  Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond.

  Delay (ms)

  

  2.8.9 Time

  analogWrite(pin, value);// menulis ke pin analog

  Value = analogRead(pin);// mengset „value‟ sama dengan nilai analog pin 

  

  Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (0-5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023.

  Analog Read (pin)

  Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0

  2.8.8 Analog I/O

  Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( –13 ). digitalWrite ( pin, HIGH );// set pin to HIGH

  Digital Write (pin, Value)

  Value = digitalRead(pin);// mengset „value‟ sama dengan pin 

  Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.

  Digital Read (pin)

  Value = millis();/ / set „value‟ equal to millis()

  // set „value‟ sebagai nilai yang paling kecil dari kedua nilai

  Max (x,y)

   Max merupakan kebalikan dari min. value = max(value, 100);

  //set „value‟ sebagai nilai yang paling besar dari kedua nilai

2.8.11 Serial Serial.begin (rate)

   Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate void setup() { Serial.begin(9600);//open serial port and set baudrate 9600 bps

  Serial Printing (data)

   Mengirimkan data ke serial port.

  Serial.println(100);// mengirimkan 100