Skip to main content

Dasar Mikrokontroller, Atmega dan Arduino

Dasar Mikrokontroller, Atmega dan Arduino

Sejarah Mikrokontroller

Sejarah mikrokontroler tidak terlepas dari sejarah mikroprosesor dan komputer. Diawali dengan ditemukannya mikroprosesor,kemudian ditemukan komputer, setelah itu ditemukan mikrokontroller.berikut ini sejarah mikrokontroler: 

1. Tahun 1617, john napier menemukan sistem untuk melakukan perkalian dan pembagian berdasarka logaritma. 

2. Tahun 1694, Gottfriend Wilhelm Leibniz membuat mesin mekanik yang dapat melakukan operasi +, -, * , / dan akar kuadrat. 

3. Tahun 1835, Charles Babbage mengusulkan komputer digital (Digital Computer ) pertama didunia menggunakan punched card untuk data dan instruksi, serta program control ( looping and branching ) dengan unit aritmatik dan unik penyimpanan.

4. Tahun 1850, George Boole mengembangkan symbolic logic termasuk operasi binary ( AND, OR, dll ). 5. Tahun 1946, Von Neumann menyarankan bahwa instruksi menjadi kode numerik yang disimpan pada memori. Komputer dan semua mikrokontroler didasarkan pada komputer Von neuman

6. Tahun 1948, ditemukannya transistor, dengan dikembangkannya konsep sofware ,pada tahun 1948 mulai adanya perkembangan hardware penting seperti transistor. 

7. Tahun 1959, pertama kali dibuatnya IC ( Integrated Circuit). 

8. Tahun 1971,intel membuat mikroprosesor intel 4004.mikroprosesor ini merupakan mikroprosesor pertama yang dikembangkan oleh intel ( Integrated Electronics ). Mikroprosesor ini terdiri dari 2250 transitor. Intel 4004 merupakan mikroprosesor 4 bit. Kemudian pdan tahun 1974, intel membuat mikroprosesor generasi kedua ( intel 8008), intel 8008 merupakan mikroprosesor 8 bit.semakin besar ukuran bit berarti mikroprosesor dapat memproses lebih banyak data. IC mikroprosesor intel 4004 dan intel 8008 ini dikemas dalam bentuk DIP ( Dual Inline Package ) seperti pada gambar dibawah ini. 

9. Tahun 1972, Mikrokontroler yang dibuat adalah TMS 1000. TMS 1000 merupakan mikrokontroler 4-bit buatan Texas Instrument (TI). Mikrokontroler TMS 1000 dibuat oleh Gary Boone dari Texas Intrumen. Boone merancang IC yang dapat menampumg hampir semua komponen yang membentuk kalkulator, hanya layar dan keypad yang tidak dimasukkan. TI menawarkan mikrokontroler ini untuk dijual kepada industri elektronik pada tahun 1983, sebanyak 100 juta IC mikrokontroler TMS 1000 telah dijual. 

10. Tahun 1974, beberapa pabrikan IC menawarkan mikroprosesor dan pengendali menggunakan mikroprosesor. Mikroprosesor yang ditawarkan pada saat itu yaitu Intel 8080, 8085, Motorola 6800, Signetics 6502, Zilog Z80, Texas Instrumen 9900 (16 bit) 

11. Tahun 1975, mikrokontroler PIC dikembangkan dan dibuat pertama kali di Universitas Harvard. PIC mulai diperkenalkan kepada publik oleh Microchip pada tahun 1985. PIC merupakan kependekan dari Peripheral Interface Controller atau bisa juga kependekan dari Programmable Intelligent Computer. 

12. Tahun 1976, dibuat Intel 8048, yang merupakan mikrokontroler intel pertama. 

13. Tahun 1978, mikroprosesor 16 bit menjadi lebih umum digunakan yaitu Intel 8086, Motorola 68000 dan Zilog Z8000. Sejak saat itu pabrikan mikroprosesor terus mengembangkan mikroprosesor dengan berbagai keistimewaan dan arsitektur. Mikroprosesor yang dikembangkan termasuk mikroprosesor 32 bit seperti Intel Pentium, Motorola DragonBall, dan beberapa mikrokontroler yang menggunakan ARM ( Advanced RISC Machine Ltd) core. ARM hanya menjual desain arsitekur mikrokontroler/mikroprosesor. Saat ini sedang dipromosikan penggunaan mikrokontroler 32 bit yang berbasis propesor ARM dari keluarga seri Cortex M (ARM Cortex-MO, ARM Cortex-MO+, ARM Cortex-M3, ARM Cortex-M4, ARM Cortex-M7, ARM CortexR4, dan ARM Cortex A5). Perusahaan yang menggunakan lisensi ARM prosesor meliputi : Advanced Micro Devices, Inc., Broadcom, Samsung, Toshiba, Alcatel-Lucent, Apple Inc, Atmel, Intel, LG, Nuvoton, STMicroelectronics, Texas Instruments, Infineon, dan masih banyak lagi yang lainnya. 

14. Tahun 1980,Intel 8051 atau lebih dikenal dengan keluarga mikrokontroler yang paling populer. Vendor lain yang mengadopsi mikrokontroler Intel 8051 yaitu : Philips, Siemens, Atmel ATMEL juga membuat Mikrokontroler MCS 51 yaitu mikrokontroler Atmel seri AT89xxx, misalnya : AT89S51 dan AT89S52. 

15. Tahun 1996, Atmel AVR adalah salah satu keluarga mikrokontroler pertama yang menggunakan on-chip flash memory untuk penyimpanan program.

 

Arsitektur Mikrokontroller



Berdasarkan arsitekturnya, mikrokontroler dibagi menjadi : CISC dan RISC 

• CISC (Complex Instruction Set Computer ) Mikroprosesor CISC merupakan jenis mikrokontroler yang memiliki jumlah instruksi yang kompleks dan lengkap. Contoh: Mikrokontroler CISC: Intel 80C51 (MCS51) dan Motorola 68HC11 mengikuti arsitektur CISC. 

• RISC (Reduce Instruction Set Computer ) Mikroprosesor RISC merupakan jenis mikrokontroler yang memiliki jumlah instruksi yang terbatas dan sedikit. Pada arsitektur RISC jumlah instruksi lebih sedikit, tetapi memiliki banyak register dibandingkan dengan CISC. Selain itu pada arsitektur RISC kebanyakan instruksi dieksekusi hanya dalam satu clock cycle dan mode addressing memory yang sederhana. Contoh mikrokontroler RISC: ATMELAVR, Microchip PIC2/16CXX dan National Semiconductor COP8. 

Program assembly dengan prosesor RISC menjadi lebih kompleks dibandingkan dengan program assembly prosesor CISC. Hal ini disebabkan hampir semua instruksi prosesor RISC adalah instruksi dasar, instruksinstruksi ini umumnya hanya memerlukan 1 siklus mesin untuk menjalankannya. Sebagai contoh misalnya karena tidak ada instruksi untuk perkalian pada arsitektur RISC sehingga harus dibuat program perkalian dengan menggunakan instruksi-instruksi dasar seperti instruksi penjumlahan, dan lain-lain. Namun pada arsitektur RISC tidak diperlukan hardware yang kompleks, prosesor yang tidak rumit akan cepat dan andal. 

Untuk merealisasikan instruksi dasar yang jumlahnya tidak banyak ini, mikroprosesor RISC tidak memerlukan gerbang logik yang banyak. Karenaitu dimensi IC dan konsumsi daya prosesor RISC umumnya lebih kecil dibanding prosesor CISC. Akan tetapi, program assembly pada prosesor CSIC menjadi lebih sederhana karena sudah ada instruksi yang kompleks. Untuk membuat instruksi yang kompleks seperti instruksi perkalian , pembagian, dan instruksi lain yang rumit pada prosesor CSIC, diperlukan hardware yang kompleks juga. Dibutuhkan ribuan gerbang lojik (logic gates) transistor untuk membuat prosesor CSIC. Instruksi yang kompleks juga membutuhkan jumlah siklus mesin (machine cycle) yang lebih panjang untuk dapat menyelesaikan eksekusinya. 

Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokotroler AVR. AVR adalah mikrokontroler RSIC (reduce instruction set compute) 8 bit berdasarkan arsitektur Harvard , yang dibuat oleh Atmel pada tahun 1996. AVR mempunyai kepanjangan Advanced versatile RSIC atau Alf and Vegards Risc processor yang berasal dari nama dua mahasiswa Norwegian institute of technologi (NTH), yaitu Alf-Egil Bogen dan Vegard Wollan. 

AVR memiliki keunggulan dibandingkan dengan mikrokontroller lain, keunggulan mikrokontroller AVR yaitu AVR memiliki kecepatan eksekusi program yang lebih cepat karena sebagian besar instruksi dieksekusi dalam 1 siklus clock, lebih cepat dibandingkan dengan mikrokontroller MCS51 yang memiliki arsitektur CISC (complex insruction set computer ) di mana mikrokontroller MSC51 membutuhkan 12 siklus clock untuk mengeksekusi 1 instruksi . selain itu, mikrokontroller AVR memiliki fitur yang lengkap ( ADC internal, EEPROM internal, Timer/counter,Watchdog Timer, PWM ,Port I/O, Komunikasi serial, komparator, I2C,dll.), sehingga dengan fasilitas yang lengkap ini, programmer dan desainer dapat menggunakan untuk berbagai aplikasi sistem elektronika seperti robot, otomatis instruksi, peralatan telekomuniksi,dan berbagai keperluan lain.secara umum mikrokontroller AVR dapat dikelompokkan menjadi 5 kelompok yaitu keluarga Attiny, AT90SXX,Atmega,AVRXMega, dan AVR32 UC3.

 

 

 

Beberapa development board yang akan dijelaskan adalah Arduino Uno, Arduino Nano, Arduino Nano 33 IoT, Arduino MKR WAN 1300, ATMega Series, STM32, STM8, ESP8266, ESP32 dan Raspberry Pi Pico. Agar dapat menentukan mikrokontroler mana yang paling cocok dengan aplikasi yang dirancang, harus diketahui beberapa fitur utama dari mikrokontroler dan fungsinya. Berikut ini adalah beberapa spesifikasi yang akan ditemui dan perlu dipahami saat membaca datasheet untuk mikrokontroler:

-          Bits: Mikrokontroler biasanya ditawarkan dengan informasi jumlah bit. Jumlah bit ini berdampak pada kecepatan proses dari mikrokontroler tersebut. Semakin besar bit yang ada pada mikrokontroler tersebut maka semakin cepat pula proses yang dapat dilakukan pada setiap langkahnya

RAM: RAM adalah memori dengan kecepatan tinggi yang tidak menyimpan data tanpa adanya pasokan daya (bersifat volatile). Semua mikrokontroler dilengkapi dengan RAM dalam jumlah tertentu yang memungkinkan mikrokontroler dapat mengerjakan beberapa instruksi bersamaan pada satu waktu. Semakin banyak yang RAM yang dimiliki, semakin baik, tetapi biasanya mikrokontroler dengan RAM yang besar akan seiring dengan harganya yang lebih mahal

-          Flash Memory: Flash adalah memori komputer yang dapat menyimpan data tanpa adanya pasokan daya (bersifat non-volatile). Flash memory ini berguna untuk penyimpanan kode atau file yang dibutuhkan dalam proses yang dikerjakan oleh mikrokontroler. Biasanya mikrokontroler tidak membutuhkan spesifikasi flash memory yang besar karena program yang dibuat biasanya sangat ringkas

-          GPIO: GPIO adalah singkatan dari General Pin Input/Output. GPIO adalah pin yang akan bisa digunakan untuk menghubungkan sensor dan aktuator ke mikrokontroler. Jumlah pin dapat berkisar dari satu hingga ratusan, tergantung pada spesifikasi dari mikrokontroler

-          Konektivitas: Komunikasi adalah hal penting yang ada pada sistem IoT sehingga konektivitas menjadi bagian penting ketika akan menggunakan mikrokontroler. Ada beberapa jalur komunikasi seperti wifi, ethernet, bluetooth, atau LoRa yang sudah terintegrasi pada sebuah mikrokontroler. Tetapi konektivitas juga dapat ditambahkan pada mikrokontroler yang tidak memiliki konektivitas seperti menambahkan bluetooth module agar dapat berkomunikasi melalui bluetooth

-          Konsumsi daya: Konsumsi daya juga merupakan hal yang sangat penting untuk diperhatikan terkait pemilihan mikrokontroler dalam aplikasi IoT. Lingkungan aplikasi IoT yang mungkin saja di area yang jauh dari sumber listrik sehingga hanya memanfaatkan sinar matahari melalui solar panel yang ini artinya sumber daya listrik yang ada sangat-sangat terbatas. Dengan menggunakan mikrokontroler yang memiliki daya rendah tentunya dapat memperpanjang waktu kerja dari mikrokontroler tersebut tanpa khawatir kehabisan daya

-          Perangkat pengembangan dan komunitas: Satu hal selain dari sisi teknis yang ada pada mikrokontroler itu adalah terkait perangkat pengembangan dan jumlah pengembang serta pengguna. Dengan perangkat pengembangan yang baik dalam hal dokumentasi, software maupun library tentu akan memudahkan pembuatan aplikasi IoT. Selain itu komunitas menjadi penting karena pengembang dapat berbagi keluhan dan masalah yang dihadapi dan mendapatkan solusi dari komunitas tersebut.



Arduino Uno

Arduino uno adalah salah satu kategori Arduino yang berukuran sedang dan paling banyak digunakan saat ini. Sekaligus sebagai produk pertama yang dirilis oleh pihak Arduino sendiri. Ini ditandai dengan penggunaan kata “Uno” yang dalam bahasa Italia artinya satu atau pertama. Pada papan sirkuit Arduino Uno, di dalamnya sudah tertanam chip mikrokontroler Atmega328 sebagai otak dari komponennya. Jadi jika ditanya apa itu Arduino Uno, maka jawabannya adalah

jenis dari Arduino yang ukurannya sedang. Pada dasarnya, fungsi dari Arduino secara umum semuanya sama dengan fungsi pada Arduino jenis lainnya. Fungsi Arduino Uno adalah memudahkan penggunanya dalam mengendalikan komponen elektronika dengan program seperti LED, motor DC, relay, servo, modul, dan segala jenis sensor. Bentuk dari arduino uno ditunjukkan pada gambar dibawah.


Arduino Uno telah dilengkapi dengan 14 pin input output digital yang 6 diantaranya dapat digunakan sebagai output PWM. Selain itu, Arduino Uno memiliki 6 pin input analog yang dapat digunakan untuk perangkat-perangkat penghasil sinyal analog. Bukan hanya itu saja, ada pula yang disebut dengan pin reset, ground, VCC, IOREF, AREF, SDA, dan pin SCL. Penjelasan dari pin yang ada pada Arduino Uno adalah sebagai berikut:

 

- Pinout Catu Daya

Setidaknya ada 3 cara yang bisa ditempuh untuk memberi daya pada Arduino. yaitu sebagai berikut:

Power Jack

Power jack atau yang biasa juga disebut DC power bisa digunakan untuk memberi daya pada papan sirkuit Arduino. Umumnya power jack ini terhubung pada adaptor untuk menstabilkan tegangan. Papan sirkuit dapat bekerja pada tegangan 5-20 volt, namun dari pihak Arduino sendiri merekomendasikan untuk menggunakan tegangan 7-12 volt. Tegangan yang melebihi 12 volt dikhawatirkan akan membuat regulator

sangat panas. Sedangkan pemberian tegangan di bawah 7 volt kemungkinan akan membuat project tak berjalan baik.

Pin VIN

Pin vin Arduino Uno berfungsi memberikan daya eksternal pada papan sirkuit Arduino menggunakan daya eksternal. Untuk masalah tegangannya, kira-kira sama seperti penjelasan pada power jack.

Kabel USB

Saat menggunakan kabel USB untuk menghubungkan Arduino ke komputer, Arduino akan mendapatkan tegangan 5 volt.

Di papan sirkuit Arduino terdapat dioda pelindung yang menghubungkan antara kutub positif dari power jack ke pin VIN dengan nilai 1 Ampere. Besarnya tegangan yang kamu gunakan pada Arduino sangat mempengaruhi jumlah daya yang akan digunakan untuk rangkaian. Saat kamu menggunakan jack power dan pin VIN untuk menyalakan papan sirkuit, maka kapasitas maksimum yang tersedia bergantung pada regulator 5 dan 3,3 volt di papan Arduino.

Pin 5 V dan 3,3, pin ini berguna dalam mengatur besarnya daya yang akan diberikan pada komponen eksternal sesuai dengan spesifikasi pabrik, apakah 5 volt atau 3,3 volt.Pin GND, di papan Arduino terdapat 5 pin GND yang kesemuanya itu saling berkaitan. Fungsi dari pin ini adalah untuk menutup sirkuit listrik dan menyediakan tingkat referensi logika umum di seluruh sirkuit.

Pin Reset, kegunaan dari pin ini adalah untuk mereset program Arduino agar mulai kembali dari awal.

Pin IOREF, pin ini berfungsi untuk memberikan referensi tegangan yang beroperasi pada mikrokontroler.



- Pinout Analog In

Pada dasarnya Arduino memiliki 6 pin analog yang semuanya memanfaatkan ADC (Analog to Digital Converter). Pin ini dapat berfungsi sebagai pin input analog maupun sebagai pin input/output digital. ADC merupakan sirkuit elektronik yang berfungsi mengubah sinyal analog menjadi sinyal digital. Hal ini memungkinkan prosesor yang merupakan perangkat digital bisa mengukur sinyal analog dan menggunakannya melalui operasinya. Pin A0 sampai A5 memiliki kemampuan membaca tegangan analog. Sementara di Arduino, ADC resolusi 10-bit yang artinya mewakili tegangan analog dengan 1024 level digital. Singkatnya ADC mengubah tegangan jadi bit yang dapat dipahami oleh mikroprosesor.

Contoh sederhana dari ADC adalah VoIP (Voice over IP). Setiap smartphone memiliki mikrofon yang mengkonversi gelombang suara menjadi tegangan analog. Yang selanjutnya melewati perangkat ADC yang mengonversi lagi data analog menjadi data digital. Nah, data digital inilah yang nantinya akan dikirim ke penerima melalui internet. Lokasi dari pin analog pada arduino uno ditunjukkan pada gambar dibawah.


- Pinout Digital Arduino Uno

Pin 1 - 13 pada Arduino berfungsi sebagai pin input/output digital. Pin 13 Arduino terhubung ke LED bawaan.

Pin 3, 5, 6, 9, 10, dan 11 memiliki fitur PWM

Perlu kamu ketahui bahwa tiap pin pada Arduino dapat memberikan arus maksimal 40 mA, namun yang disarankan hanya 20 mA. Sementara arus yang bisa disediakan untuk semua pin adalah 200 mA. Lokasi dari pin digital baik input dan output ditunjukkan pada gambar dibawah.



Digital bisa dikatakan sebagai cara merepresentasikan tegangan dalam 1 bit, misalnya 1 atau 0. Pin digital di Arduino adalah pin yang memang dirancang untuk dikonfigurasikan sebagai input maupun output. Tergantung kebutuhan pengguna. Pin digital pada Arduino hanya ada dua kondisi, yaitu menyala dan mati. Saat pin dalam kondisi menyala, maka saat itu tegangan nya tinggi (HIGH) yaitu 5 volt, dan saat mati tegangannya rendah (LOW) yaitu 0 volt. Jadi tahu kan mengapa di script Arduino ada HIGH dan LOW! Ketika pin digital diatur sebagai output maka hanya ada dua macam tegangan, yaitu 0 dan 5 volt. Sedangkan saat pin ii diatur sebagai input, maka tegangan yang diberikan bisa bervariasi. Tetapi jika direpresentasikan ke digital tetap hanya ada 1 dan 0. Hanya saja untuk menentukannya diberi 2 ambang batas berikut:

< 0, 8 volt dianggap 0

> 2 volt dianggap 1

PWM merupakan singkatan dari Pulse Width Modulation, yaitu teknik modulasi yang digunakan untuk menyandikan pesan menjadi sinyal berdenyut. Biasanya PWM digunakan untuk mengatur kecepatan motor DC, Peredupan LED, dan masih banyak lagi. Ada dua komponen utama dari PWM, yaitu :

Frekuensi, yaitu berapa lama waktu yang dibutuhkan untuk menyelesaikan satu siklus (periode)

Siklus Tugas, yaitu berapa lama sinyal tetap tinggi dari total periode. Biasanya siklus tugas berbentuk persentase.

Pin Arduino yang mengakti an PWM umumnya akan menghasilkan frekuensi konstan 500Hz. Sementara siklus tugas akan terus berubah-ubah sesuai dengan parameter yang digunakan pengguna. Ilustrasi PWM ditunjukkan pada gambar dibawah.



Komunikasi serial umumnya digunakan untuk saling bertukar data antara papan sirkuit Arduino dan perangkat serial lainnya seperti komputer, display, sensor, dan sebagainya. Setidaknya ada satu port serial pada tiap papan Arduino. Komunikasi serial terjadi pada pin digital (RX) dan 1 (TX) serta melalui USB. Adanya library software serial dan pin digital memungkinkan Arduino bisa mendukung komunikasi serial yang membuat pengguna bisa menghubungkan beberapa perangkat yang mendukung serial dan membiarkan port serial utama tersedia untuk USB. Port serial pada perangkat lunak menggunakan


sistem interupsi pin-change dalam berkomunikasi. Sudah tersedia library bawaan untuk melakukan komunikasi serial. Satu-satunya kelemahan dari perangkat lunak serial adalah membutuhkan lebih banyak pemrosesan dan tak dapat mendukung kecepatan tinggi yang sama dengan perangkat keras serial.

 

SPI atau Serial Peripheral Interface merupakan protokol data serial yang digunakan mikrokontroler untuk saling berkomunikasi dengan satu atau lebih perangkat eksternal dalam kondisi seperti bus. SPI juga dapat dipakai untuk menghubungkan 2 perangkat mikrokontroler. Dalam bus SPI, selalu ada satu perangkat yang dianggap sebagai perangkat master, dan sisanya adalah perangkat periferal. Pada kebanyakan kasus, mikrokontroler umumnya dianggap sebagai perangkat master. Dan pin SS (Slave Select) bertugas menentukan perangkat mana yang sedang berkomunikasi dengan master. Biasanya perangkat yang diakti an SPI selalu memiliki Uno ISP pinout berikut:

MISO (Master In Slave Out), yaitu baris untuk mengirim data ke perangkat master.

MOSI (Master Out Slave In), yaitu baris master untuk mengirim data ke perangkat periferal.

SCK (Serial Clock), yaitu sinyal jam yang dihasilkan oleh perangkat master untuk menyinkronkan transmisi data.

 

I2C merupakan protokol komunikasi yang biasa juga disebut I2C bus. Protokol ini dirancang khusus untuk memungkinkan komunikasi antar komponen dalam satu papan sirkuit. Pada I2C ada dua kabel yaitu:

SDA (Serial Data), adalah jalur yang digunakan untuk mengirim data. SCL (Serial   Clock),   adalah   garis   jam   yang    dirancang   untuk menyinkronkan transfer data.

Tiap perangkat dalam bus I2C memiliki alamat unik. Pengguna dapat menghubungkan 255 perangkat dalam bus yang sama.

Pin AREF, berfungsi sebagai tegangan referensi untuk input analog. Pin INTERRUPT, terdiri atas INT0 dan INT1 pada Arduino.

Interupsi eksternal, yaitu interupsi sistem yang terjadi pada saat ada gangguan luar. Kegunaan interupsi ini secara umum yaitu untuk membaca gelombang persegi yang dihasilkan encoder atau membangunkan prosesor dalam peristiwa eksternal.


Last modified: Friday, 10 February 2023, 10:17 AM