Modul Teori Mikrokontroller
Modul Teori Mikrokontroller
(03 2 3 MIK T)
MODUL TEORI
DAFTAR ISI
Sejarah Mikrokontroler
Semenjak kelahiran mikroprosesor, banyak mikroprosesor/mikrokontroler 4, 8, 16, dan
32 bit yang dikembangkan dan bermunculan di pasaran. Intel 4004 adalah 4-bit prosesor pertama
yang muncul pada tahun 1971. Intel 4004 memiliki kapasitas 8-bit instruksi dan 4-bit proses data,
memori eksternal terpisah untuk program (4K) dan data (1K). Ada 46 instruksi yang tereksekusi
dalam satu clock (740 kHz). Lalu selama tahun 1972 intel mengembangkan mikroprosesor 4040
yang merupakan versi advance dari 4004. 4040 memiliki 14 instruksi lebih banyak dengan 8K
memori program dan juga sudah memiliki kemampuan interupsi.
Di tahun 1974 Texas Instrument mengenalkan mikrokontroler pertama TMS 1000. TMS
100 memiliki on-chip RAM, ROM dan I/O. Lalu di tahun 1974 Intel memperkenalkan
mikroprosesor 8080 yang merupakan versi advancedari 8008 yang telah diluncurkan sebelumnya
di tahun 1972. Yang paling populer di tahun 1976 Intel mengembangkan 8085. Seri ini dapat
beorperasi pada +5V dan frekuensi 3 MHz. Di tahun yang sama Zilog Z-80 muncul dengan
kemampuan lebih baik dari 8080. Z80 beoperasi pada frekuensi 2,5 MHz dan frekuensi dalam
CMOS (Complementary Metal Oxide Semiconductor) 10 MHz.
Pada tahun 1975 peripheral interface controller (PIC) terbentuk di Universitas Havard.
Keluarga mikrokontroler PIC mulai dikenalkan pada tahun 1985 oleh Microchip. PIC menggunakan
arsitektur Havard dan telah memiliki Reduce Intruction Set. Di tahun 1978 Intel mengmbangkan
8086 yang merupakan prosesor 16-bit. Seiring dengan ini Motorola meluncurkan mikroprosesor
16-bit 68000, sedangkan Zilog meluncurkan 16-bit mikroprosesor Z8000.
Pada juni 1997, mikrokontroler ATMEL 8-bit AVR dikenalkan ke pasar. dan hari ini telah
banyak keluarga dari mikrokontroler yang bermunculan dari berbagai macam sumber dan
berbagai macam versi.
Fungsi Mikrokontroler
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, biaya, dan konsumsi tenaga dibandingkan dengan
mendesain menggunakan mikroprosesor memori, dan alat input output yang terpisah, kehadiran
mikrokontroler membuat kontrol elektrik untuk berbagai proses menjadi lebih ekonomis. Dengan
penggunaan mikrokontroler ini maka :
a) Sistem elektronik akan menjadi lebih ringkas
b) Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah
perangkat lunak yang mudah dimodifikasi
c) Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak
Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan
CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar menambah
jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroler adalah versi mini
atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung beberapa periferal
yang langsung bisa dimanfaatkan, misalnya port paralel, port serial, komparator, konversi digital
ke analog (DAC), konversi analog ke digital dan sebagainya hanya menggunakan sistem minimum
yang tidak rumit atau kompleks.
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, yang terdiri dari 4 bagian, yaitu :
Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi
andalan Atmel. Arsitektur ini dirancang memiliki berbagai kelebihan dan merupakan
penyempurnaan dari arsitektur mikrokontroler-mikrokontroler yang sudah ada.
Berbagai seri mikrokontroler AVR telah diproduksi oleh Atmel dan digunakan di dunia
sebagai mikrokontroler yang bersifat low cost dan high performance. Di Indonesia,
mikrokontroler AVR banyak dipakai karena fiturnya yang cukup lengkap, mudah untuk
didapatkan, dan harganya yang relatif terjangkau.
Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun kesemuanya
memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak berbeda. Tabel 1.1
membandingkan beberapa seri mikrokontroler AVR buatan Atmel.
Seri Flash RAM EEPROM Pin Timer Timer UART PWM ADC SPI ISP
(kbytes) (bytes) (kbytes) I/O 16-bit 8-bit 10-
bit
ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya
ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya
ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya
ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya
ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya
ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya
ATtiny12 1 - 0.0625 6 - 1 - - - - Ya
ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya
ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya
ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya
Keterangan :
Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil
buatan manusia yang harus dijalankan oleh mikrokontroler
RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk
penyimpanan data sementara dan pengolahan data ketika program sedang running
EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk
penyimpanan data secara permanen oleh program yang sedang running
Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun
masukan bagi program
Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus
secara serial asynchronous
PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa
ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog
dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range
tertentu
SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara
serial synchronous
ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat
diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang
minimal
b. Arsitektur Mikrokontroler AVR
Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah tipe
ATtiny2313 dan ATmega8535. Seri ATtiny2313 banyak digunakan untuk sistem yang relatif
sederhana dan berukuran kecil. Berikut adalah feature-feature mikrokontroler seri ATtiny2313.
Sedangkan ATmega8535 banyak digunakan untuk sistem yang kompleks, memiliki input
sinyal analog, dan membutuhkan memori yang relatif lebih besar. Berikut adalah feature-feature
mikrokontroler seri ATmega8535.
Mikrokontroler MCS51 buatan Atmel terdiri dari dua versi, yaitu versi 20 kaki dan versi 40
kaki. Semua mikrokontroler ini dilengkapi dengan Flash PEROM (Programmable Eraseable Read
Only Memory) sebagai media memori-program, dan susunan kaki IC-IC tersebut sama pada tiap
versinya.
Mikrokontroler MCS51 Atmel versi mini (20 pin) dan versi 40 pin secara garis besar
memiliki struktur dasar penyusun arsitektur mikrokontroler yang sama. Bagian-bagian tersebut
secara lebih lengkap (detil) ditunjukan dalam diagram blok berikut.
Mikrokontroler MCS51 Atmel versi 40 kaki mempunyai 32 kaki sebagai port paralel dan 8
pin yang lain untuk konfigurasi kerja mikrokontroler. Satu port paralel terdiri dari 8 kaki, dengan
demikian 32 kaki tersebut membentuk 4 buah port paralel yang masing-masing dikenal sebagai
port 0, port 1, port 2, port 3. Nomor dari masing-masing jalur (kaki) dari port paralel
mikrokontroler MCS51 Atmel mulai dari 0 sampai 7, jalur (kaki) pertama dari port 0 disebut
sebagai P0.0 dan jalur terakhir untuk port 3 adalah P3.7. Mikrokontroler MCS51 Atmel versi mini
mempunyai 20 kaki, 15 kaki diantaranya adalah kaki port 1 dan port 3. 5 kaki yang lain untuk
konfigurasi kerja mikrokontroler. Port 1 terdiri dari 8 jalur yaitu P1.0 sampai P1.7 dan port 3 terdiri
dari 7 jalur yaitu P3.0 sampai P3.5 dan P3.7. Susunan kaki mikrokontroler MCS51 atmel versi 40
kaki dapat dilihat pada Gambar 1.7 berikut.
Port 0
Merupakan dual-purpose port (port yang memiliki dua kegunaan). Pada desain
yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih
lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address
yang di-multiplex. Port 0 terdapat pada pin 32-39.
Port 1
Merupakan port yang hanya berfungsi sebagai port I/O, kecuali pada IC 89S52
yang menggunakan P1.0 dan P1.1 sebagai input eksternal untuk timer ketiga (T3). Port 1
terdapat pada pin 1-8.
Port 2
Port 3
Merupakan dual-purpose port. Selain sebagai port I/O juga mempunyai fungsi
khusus yang ditunjukkan pada tabel berikut.
VCC
Kaki VCC digunakan untuk masukan suplai tegangan.
GND
Kaki (pin) GND funsinya sebagai saluran ground atau pentanahan.
RST
Kaki RST fungsinya sebagai masukan reset. Kondisi “1” selama 2 siklus mesin pada saat
oscillator bekerja akan me-reset mikrokontroler yang bersangkutan.
ALE/
Kaki ALE digunakan sebagai keluaran ALE atau Adreess Latch Enable yang akan
menghasilkan pulsa-pulsa untuk menahan byte rendah (low byte) alamat selama
mengakses memori eksternal. Kaki ini juga berfungsi sebagai masukan pulsa program (the
program pulse input) atau selama pemrograman flash. Pada operasi normal, ALE akan
berpulsa dengan laju 1/6 dari frekuensi kristal dan dapat digunakan sebagai pewaktuan
(timing) atau pendekatan (clocking) rangkainan eksternal.
Kaki (Program Store Enable) merupakan sinyal baca untuk memori program eksternal.
Saat mikrokontroler MCS51 menjalankan program dari memori eksternal, akan diaktifkan
dua kali per-siklus mesin, kecuali dua aktivasi dilompati (diabaikan) saat mengakses
memori data eksternal.
/VPP
Kaki /VPP ( Exkternal Access Enable) fungsinya sebagai kontrol untuk mengakses memori.
harus dihubungkan ke ground, jika mikrokontroler akan mengeksekusi program dari
memori eksrternal. Selain itu harus dihubungkan ke VCC jika akan mengakses program
secara internal. Kaki ini juga berfungsi untuk menerima tegangan 12V (VPP) selama
pemrograman flash, khususnya untuk tipe mikrokontroler 12V volt.
XTAL1
Kaki XTAL1 merupakan masukan untuk penguat inverting oscillator dan masukan untuk
clock internal pada rangkaian operasi mikrokontroler.
XTAL2
Kaki XTAL2 merupakan keluaran dari rangkaian penguat inverting oscilator
PIC memungkinkan Anda untuk mengontrol perangkat output ketika mereka dipicu oleh
sensor dan switch. Program dapat dihasilkan dengan menggunakan diagram alur dalam perangkat
lunak komputer, yang kemudian dapat di-download ke dalam chip PIC. Mereka dapat ditulis ulang
sebanyak yang Anda inginkan. Memori jenis ini disebut memori flash.
Sebuah mikrokontroler PIC adalah sirkuit terpadu tunggal cukup kecil untuk muat di
telapak tangan dan berisi memori pengolahan unit, Jam dan sirkuit Input / Output dalam satu
unit. Sebuah mikrokontroler PIC, oleh karena itu, sering digambarkan sebagai komputer dalam
sirkuit terpadu. Mikrokontroler PIC dapat dibeli kosong dan kemudian diprogram dengan
program kontrol tertentu. Mikrokontroler PIC juga dapat dibeli dengan pra-diprogram
seperangkat perintah yang memungkinkan download langsung dari kabel komputer dan
mengurangi biaya peralatan pemrograman.
Melalui izin dari seluruh dunia, arsitektur ARM adalah yang paling umum dilaksanakan
32-bit set instruksi arsitektur. Arsitektur ARM diimplementasikan pada Windows, Unix, dan sistem
operasi mirip Unix, termasuk Apple iOS, Android, BSD, Inferno, Solaris, WebOS, Plan 9 dan GNU /
Linux. Advanced RISC Machine awalnya dikenal sebagai Mesin Acorn RISC
Masing-masing keluarga mikrokontroler tersebut mempunyai turunan sendiri-sendiri.
Sekarang kita akan membahas pembagian jenis-jenis mikrokontroler yang telah umum digunakan.
Mikrokontroler AT89S52
8 K Bytes In system Programmable (ISP) flash memori dengan kemampuan 1000 kali
baca/tulis
Tegangan kerja 4-5 V
Bekerja dengan rentang 0 – 33MHz
256×8 bit RAM internal
32 jalur I/O dapat deprogram
3 buah 16 bit Timer/Counter
8 sumber interrupt
saluran full dupleks serial UART
watchdog timer
dual data pointer
Mode pemrograman ISP yang fleksibel (Byte dan Page Mode)
Jenis-jenis Mikrokontroler Atmel lain yang ada di pasaran adalah sebagai berikut:
AMCC
Hingga Mei 2004, mikrokontroler ini masih dikembangkan dan dipasarkan oleh IBM,
hingga kemudian keluarga 4xx dijual ke Applied Micro Circuits Corporation, jenis-jenisnya yaitu:
Cypress MicroSystems
Jenis dari Cypress MicroSystems yang ada di pasaran adalah CY8C2xxxx (PSoC)
Freescale Semiconductor
Hingga 2004, mikrokontroler ini dikembangkan dan dipasarkan oleh Motorola, yang divisi
semikonduktornya dilepas untuk mempermudah pengembangan Freescale Semiconductor,
adapun jenis-jenisnya yaitu sebagai berikut:
Fujitsu
Jenis chip mikrokontroler yang dikeluarkan oleh fujitsu diantaranya adalah sebagai berikut:
Holtek
Intel
Intel adalah salah satu perusahan yang banyak mengeluarkan jenis chip di pasaran, secara
umum intel mengeluarkan dua jenis chip mikrokontroler yaitu:
Microchip
National Semiconductor
Jenis chip mikrokontroler yang dikeluarkan oleh National Semiconductor adalah jenis
COP8 dan CR16.
NEC
NEC mempunyai beberapa jenis chip mikrokontroler yang ada dipasaran yaitu : jenis 17K,
75X, 78K, V850.
Philips Semiconductors
Ada tiga jenis chip mikrokontroler yang dikeluarkan oleh perusahaan ini yaitu : LPC2000,
LPC900, LPC700.
ST Microelectronics
STMicroelectronic merupakan salah satu perusahaan yang bergerak juga dalam produksi
chip mikrokontroler, diantaranya produknya adalah : ST 62, ST 7.
Texas Instruments
Dua jenis chip mikrokontroler yang di produksi oleh perusahaan ini adalah : TMS370,
MSP430.
Perusahaan Wistern Design Center memproduksi dua tipe chip mikrokontroler yang
beredar di pasaran yaitu:
Ubicom
Seri Ubicom’s SX series adalah jenis mikrokontroler 8 bit yang, tidak seperti
biasanya, memiliki kecepatan tinggi, memiliki sumber daya memori yang besar, dan
fleksibilitas tinggi. Beberapa pengguna menganjurkan mikrokontroller pemercepat PICs.
Meskipun keragaman jenis mikrokontroler Ubicom’s SX sebenarnya terbatas, kecepatan
dan kelebihan sumber dayanya yang besar membuat programmer bisa membuat
perangkat virtual lain yang dibutuhkan. Referensi bisa ditemukan di Parallax’s Web site,
sebagai penyalur utama.
IP2022
Ubicom’s IP2022 adalah mikrokontroler 8 bit berkecepatan tinggi (120 MIPs).
Fasilitasnya berupa: 64k FLASH code memory, 16k PRAM (fast code dan packet buffering),
4k data memory, 8-channel A/D, various timers, and on-chip support for Ethernet, USB,
UART, SPI and GPSI interfaces.
Xilinx
Ada dua jenis chip mikrokontroler yang dikeluarkan oleh perusahaan Xilink diataranya
adalah:
ZiLOG
Dua jenis chip mikrokontroler dari ZiLOG yang ada di pasaran adalah:
Z8
Z86E02
Disamping itu, Ada banyak mikrokontroller yang dirancang oleh produsen sebagai sarana
hobi. Biasanya mikrokontroller seperti ini dimuati interpreter BASIC, dihubungkan ke bagian Dual
Inline Pin bersama power regulator dan beberapa fasilitas lain. PICs sepertinya sangat popular
untuk jenis ini, barangkali karena adanya perlindungan terhadap listrik statis. Diantara produk ini
adalah:
Parallax, Inc
BASIC Stamp. Nama besar di mikrokontroler BASIC, meskipun sebenarnya lamban dan
harganya tidak sebanding.
SX-Key. Harga murahnya harus dibayar dengan kualitas yang buruk.
PicAxe
Murah, tidak lebih dari sekedar PIC yang dimuati BASIC. Bagian programmernya ditancapi
dengan 3 resistors. Penawaran BASIC menawarkan fungsionalitas yang besar dengan adanya
fasilitas IF..GOTO secara terbatas.
Untuk membangun fungsi sebagai komputer mikro, sebuah mikroprosesor harus dilengkapi
dengan memori, biasanya memori program yang hanya bisa dibaca (Read Only Memory=ROM)
dan memori yang bisa dibaca dan ditulisi (Read Write Memory=RWM), decoder memori, osilator,
dan sejumlah peralatan input output seperti port data seri dan paralel.
Pokok dari penggunaan mikroprosesor adalah untuk mengambil data, membentuk kalkulasi,
perhitungan atau manipulasi data, dan menyimpan hasil perhitungan pada peralatan penyimpan
atau menampilkan hasilnya pada sebuah monitor atau cetak keras.
Mikrokontroler
Sama halnya dengan mikroprosesor, mikrokontroler adalah piranti yang dirancang untuk
kebutuhan umum. Penggunaan pokok dari mikrokontroler adalah untuk mengontrol kerja mesin
atau sistem menggunakan program yang disimpan pada sebuah ROM. Untuk melihat perbedaan
konsep diantara mikroprosesor dan mikrokontroler di bawah ini ditunjukan tabel perbandingan
konfigurasi, arsitektur, dan set instruksi diantara mikroprosesor Z-80 CPU dengan mikrokontroler
8051.
Perbedaan Mikrokontroler dan Mikroprosesor. Sebagai catatan dari tabel ini, jika
dilakukan perbandingan bukanlah berarti menunjukkan bahwa yang satu lebih baik dari yang
lainnya. Kedua rancangan tersebut memiliki penekanan dan tujuan yang berbeda.
PLC Microcontroller
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 secarafisik dengan kabel atau jalur
tembaga yang disebut dengan istilah “hard wired” sehingga untuk merubah rangkaian maka
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.
Saat ini ada beberapa alat pengembangan prototype berbasis microcontroller yang cukup
populer, misalnya:
Arduino http://www.arduino.cc
I-CubeX http://www.infusionsystems.com
Arieh Robotics Project Junior http://www.arobotineveryhome.com
Dwengo http://www.dwengo.org
EmbeddedLab http://www.embedded.arch.ethz.ch
GP3 http://www.awce.com/gp3.htm
Di antara sekian banyak alat pengembangan prototype, Arduino adalah salah satunya
yang paling banyak digunakan. Arduino dikatakan sebagai sebuah platformdari physical
computingyang bersifat open source. Pertama-tama perlu dipahami bahwa kata “platform” di sini
adalah sebuah pilihan kata yang tepat. Arduino tidak hanya sekedar sebuah alat pengembangan,
tetapi ia adalah kombinasi dari hardware, bahasa pemrograman dan Integrated Development
Environment (IDE)yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis
program, meng-compile menjadi kode biner dan meng-uploadke dalam memorymicrocontroller.
Ada banyak projek dan alat-alat dikembangkan oleh akademisi dan profesional dengan
menggunakan Arduino, selain itu juga ada banyak modul-modul pendukung (sensor, tampilan,
penggerak dan sebagainya) yang dibuat oleh pihak lain untuk bisa disambungkandengan Arduino.
Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi banyak
praktisi.
Salah satu yang membuat Arduino memikat hati banyakorang adalah karena sifatnya yang
open source, baik untuk hardware maupun software-nya. Diagram rangkaian elektronik Arduino
digratiskan kepada semua orang. Anda bisa bebas men-download gambarnya, membeli
komponen-komponennya, membuat PCB-nya dan merangkainya sendiri tanpa harus membayar
kepada para pembuat Arduino. Sama halnya dengan IDEArduino yang bisa di-download dan
diinstal pada komputer secara gratis. Kita patut berterima kasih kepada tim Arduino yang sangat
dermawan membagi-bagikan kemewahan hasil kerja keras mereka kepada semua orang. Saya
pribadi betul-betul kagum dengan desain hardware, bahasa pemrograman dan IDE Arduino yang
berkualitas tinggi dan sangat berkelas.
Arduino dikembangkan oleh sebuah tim yang beranggotakan orang-orang dari berbagai
belahan dunia. Anggota inti dari tim ini adalah:
Profil mengenai anggota tim tersebut dan kontribusinya bisa diakses pada situs web
http://www.arduino.cc/playground/Main/People.
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
ARDUINO SERIAL
ARDUINO MEGA
Gambar 2.3. Board Arduino Mega
Papan Arduino dengan spesifikasi yang lebih tinggi,dilengkapi tambahan pin digital, pin analog,
Arduino Mega
Arduino Mega 2560
ARDUINO FIO
ARDUINO LILYPAD
ARDUINO BT
Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah
microcontroller, pada gambar 3.1. berikut ini diperlihatkan contoh diagram blok sederhana dari
microcontroller ATmega328 (dipakai pada Arduino Uno).
Konfigurasi pin-pin
Dengan mengambil contoh sebuah papan Arduino tipe USB, bagian-bagiannya dapat
dijelaskan sebagai berikut.
Berfungsi sebagai input atau output, dapat diatur oleh program. Khusus untuk 6 buah pin
3, 5, 6, 9, 10 dan 11, dapat juga berfungsi sebagai pin analog output dimana tegangan output-nya
dapat diatur. Nilai sebuah pin output analog dapat diprogram antara 0 – 255, dimana hal itu
mewakili nilai tegangan 0 – 5V.
USB Interface
Berfungsi untuk:
Jika microcontroller dianggap sebagai sebuah otak, maka kristal adalah jantung-nya
karena komponen ini menghasilkan detak-detak yang dikirim kepada microcontroller agar
melakukan sebuah operasi untuk setiap detak-nya. Kristal ini dipilih yang berdetak 16 juta kali per
detik (16MHz).
Tombol Reset S1
Untuk me-reset papan sehingga program akan mulai lagi dari awal. Perhatikan bahwa
tombol reset ini bukan untuk menghapus program atau mengosongkan microcontroller.
IC 1 – Microcontroller Atmega
Komponen utama dari papan Arduino, di dalamnya terdapat CPU, ROM dan RAM.
Jika hendak disuplai dengan sumber daya eksternal, papan Arduino dapat diberikan
tegangan DC antara 9-12V.
6 pin input analog (0-5)
Pin ini sangat berguna untuk membaca tegangan yang dihasilkan oleh sensor analog,
seperti sensor suhu. Program dapat membaca nilai sebuah pininput antara 0 – 1023, dimana hal
itu mewakili nilai tegangan 0 – 5V.
BAB IV
4 SOFTWARE ARDUINO
Sehubungan dengan pembahasan untuk saat ini software Arduino yang akan digunakan
adalah driver dan IDE, walaupun masih ada beberapa software lain yang sangat berguna selama
pengembangan Arduino. IDE Arduino adalah software yang sangat canggih ditulis dengan
menggunakan Java. IDE Arduino terdiri dari:
Berikut ini adalah contoh tampilan IDE Arduino dengan sebuah sketch yang sedang diedit.
Baiklah kita akan bahas bahasa pemrogramannya, seperti bahasa pemrograman tingkat menegah pada umumnya
arduino pun sama memiliki alur algoritma yang mirip yang beda adalah cara penulisan sintaknya.
Struktur pemrograman
4.1.1 Struktur
Structur dasar dari bahasa pemrograman arduino itu sederhana hanya terdiri dari dua bagian.
void setup( )
{
// Statement;
}
void loop( )
{
// 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 di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk
pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program
void setup()
{
pinMode(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
}
4.1.2 function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang
akan di eksekusi ketika function di panggil. Fungsi void setup() dan void loop() telah di bahas di atas dan pembuatan
fungsi yang lain akan di bahas selanjutnya.
type functionName(parameters)
{
// Statement;
}
Contoh:
int delayVal()
{
int 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 balik int (integer), karena kalau tidak menghendaki adanya nilai
balik maka type function harus void.
Curly brace 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.
4.1.4 ; semicolon
Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan pembatas setiap
statement program yang di buat.
Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak akan di compile sehingga
tidak mempengaruhi besar program yang di buat untuk di masukan dalam board arduino.
Sama halnya dengan block comments, line coments pun sama hanya saja yang di jadikan komen adalh perbaris.
Variable
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam program. Variable dapat di rubah
sesuai dengan instruksi yang kita buat. Ketika mendeklarisikan variable harus di ikut sertakan type variable serta nilai
awal variable.
Type variableName = 0;
Contoh
sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara local di dalam
sebuah function, dan terkadang di dalam sebuah block statement pengulangan.
Sebuah variable global hanya satu dan dapat di gunakan pada semua block function dan statement di dalam
program. Variable global di deklarasikan pada awal program sebelum fungstion setup().
Sebuah variable local di deklarasikan di setiap block function atau di setiap block statement pengulangan dan hanya
dapat di gunakan pada block yang bersangkutan saja.
Contoh penggunaan:
void loop()
{
for (int i=0; i<20;) // 'i' hanya dapat di gunakan dalam
pengulangan saja
{
i++;
}
float f; // 'f' sebagai variable local
}
Data Type
4.3.1 byte
type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range 0 – 255.
4.3.2 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.
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan range
2.147.483.647 sampai -2.147.483.648
4.3.4 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
4.3.5 array
Array adalah kumpulan nilai yang dapat di akses dengan index number, nilai yang terdapat dalam array
dapat di panggil dengan cara menuliskan nama array dan index number. Array dengan index 0 merupakan nilai
pertama dari array. Array perlu di deklarasikan dan kalau perlu di beri nilai sebelum di gunakan.
Operator aritmetic
4.4.1 aritmetic
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.
4.4.2 compound assignments
Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable. Ini biasanya
dipakai pada pengulangan.
4.4.3 comparison
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 leboh kecil dari y
x > y; // x lebih besar dari y
x <= y; // x lebih kecil dari sama dengan y
x >= y; // x lebih besar dari sama dengan y
Operator logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai balik benar atau
salah tergantung dari operator yang di gunakan. Terdapat 3 operator logical AND,OR, dan NOT, yang biasanya di
gunakan pada if statement.
Contoh penggunaan:
Logical AND
Logical OR
Logical NOT
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.
4.5.1 true/false
Merupakan konstanta Boolean yang mendifinisikan logic level. False mendifinisikan 0 dan True mendifinisikan 1.
If ( b == TRUE );
{
//doSomething
}
4.5.2 high/low
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di gunakan ketika membaca dan menulis ke
digital pin. HIGH di definisikan sebagai 1 sedangkan LOW sebagai 0.
4.5.3 input/output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital, sebagai input
atau output
Flow control
4.6.1 if
If Operator if mengtest sebuah kondisi seperti nilai analog sudah berada di bawah 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;
}
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;
}
4.6.3 for
4.6.4 while
Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai ekspresi sebagai
kondisi pengulangan benilai salah
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 );
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.
Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau Output. Arduino
digital pins secara default di konfigurasi sebagai input sehingga untuk merubahnya harus menggunakan operator
pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage
4.7.2 digitalRead(pin)
Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
Analog I/O
4.8.1 analogRead(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.
Time
4.9.1 delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond.
Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer.
4.10.2 max(x,y)
Random
4.11.1 randomSeed(seed)
4.11.2 random(min,max)
Serial
4.12.1 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
}
4.12.2 Serial.prinln(data)
Pemasangan LED harus diperhatikan polaritasnya. Kaki yang panjang mengarah ke kutup
Positif (+), sedangkan kaki yang pendek atau kaki pada permukaan LED yg datar, mengarah ke
kutub negative (-) atau Ground (Gnd)
void setup()
void loop()
Control Motor DC
Motor DC, misalnya motor Tamiya, tidak dapat langsung dihubungkan dengan output
Mikrokontroler, karena arusnya terlalu kecil. Untuk itu diperlukan rangkaian H-bridge sebagai
penguat arus sekaligus pengendali kecepatan motor dan arah putaran motor DC.
Rangkai modul H-Bridge, bodi Robot mobil (dengan 2 DC motor Tamiya) dan sumber tenaganya
Dengan bantuan sensor, misalnya sensor jarak, kita dapat membuat Robot Line tracer, Obstacle
Avoider, light sensing, dll.
Program berikut ini adalah untuk menggerakkan Robot maju full speed dan mundur half speed.
Gambar 5.3. H-Bridge driver
Sketch:
int transistorPin = 9; // dari digital pin 9 ke pin signal PWM kiri (menggerkkan motor)
int transistorPin2 = 11; // dari digital pin 11 ke pin signal PWM kanan (menggerkkan motor)
int relayPin = 7; // dari digital pin 7 ke pin signal relay kiri (membalik putaran motor)
int relayPin2 = 5; // dari digital pin 5 ke pin signal relay kanan (membalik putaran motor)
void setup() {
// set the transistor pin as an output
pinMode(transistorPin, OUTPUT);
pinMode(transistorPin2, OUTPUT);
// set the relay pin as an output
pinMode(relayPin, OUTPUT);
pinMode(relayPin2, OUTPUT);
}
void loop()
{
digitalWrite(7, LOW); // relay1 off - MAJU
digitalWrite(5, LOW); // relay2 off - MAJU
analogWrite(9, 255); // motor 1 on, full speed - (nilai 0-255)
analogWrite(11, 255); // motor 2 on, full speed - (nilai 0-255)
delay(3000);
analogWrite(9, 0); // motor 1 off
analogWrite(11, 0); // motor 2 off
delay(3000);
digitalWrite(7, HIGH); // relay1 on - MUNDUR
digitalWrite(5, HIGH); // relay2 on - MUNDUR
analogWrite(9, 125); // motor 1 on, half speed - (nilai 0-255)
analogWrite(11, 125); // motor 2 on, half speed - (nilai 0-255)
delay(3000);
analogWrite(9, 0); // motor 1 off
analogWrite(11, 0); // motor 2 off
delay(3000);
}
DAFTAR PUSTAKA
1. Http://www.immersa-lab.com/pengenalan-mikrokontroler.htm
2. http://www.immersa-lab.com/sejarah-mikrokontroler.htm
3. http://www.immersa-lab.com/jenis-jenis-mikrokontroler.htm
4. https://sintasintya.wordpress.com/2014/11/04/3-macam-dan-jenis-mikrokontroler-populer/
5. http://ndoware.com/sejarah-mikrokontroler-dan-mikroprosesor.html
6. http://www.immersa-lab.com/perbedaan-mikrokontroler-dan-mikroprosesor.htm
7. http://saung.igoscenter.org/kupas_tuntas_arduino#min.28x.2cy.29
8. Http://robomania.tokobagus.com