Perbedaan Arduino dan Mikrokontroler

Arduino adalah kerangka kerja untuk membuat sistem elektronik open-source yang meliputi sejumlah perangkat keras dan perangkat lunak. Sebagian perangkat keras Arduino menggunakan prosesor/mikrokontroler dari keluarga ATmega.

Mikrokontroler adalah komputer kecil pada suatu keping rangkaian integrasi (integrated circuit/IC) terpadu. Pada mikrokontrole sudah ada CPU (Central Processing Unit) , memori dan periferal. Mikrokontroler umumnya dirancang untuk aplikasi yang tertanam di perangkat lain, atau dikenal dengan istilah ‘embedded system’.

Perangkat keras Arduino menggunakan mikrokontroler, namun tidak semua mikrokontroler adalah bagian dari Arduino

Berikut ini contoh mikrokontroler ATmega8535 yang tidak termasuk Arduino.

Perangkat Keras Arduino

Berikut ini contoh perangkat keras Arduino yang menggunakan mikrokontroler dari keluarga ATmega

Nama Prosesor  
Arduino Nano Every ATmega4809  
Arduino Nano ATmega328  
Arduino UNO ATmega328  
Arduino Mega 2560 ATmega2560  
Arduino Leonardo ATmega32u4  

Berikut ini contoh perangkat keras Arduino yang tidak menggunakan mikrokontroler ATmega.

Nama Prosesor  
Arduino Nano 33 IoT SAMD21 Cortex®-M0+ 32bit low power ARM MCU  
Arduino Nano RP2040 Connect Raspberry Pi® RP2040  
Arduino Nano 33 BLE Sense nRF52840  

Berikut ini contoh mikrokontroler yang tidak termasuk pada sistem Arduino:

  • ATmega8535
  • ATmega8
  • ATmega16
  • ATmega32

Mikrokontroler Secara Umum

Mikrokontroler adalah komputer kecil pada suatu keping rangkaian integrasi (integrated circuit/IC) terpadu. Pada mikrokontrole sudah ada CPU (Central Processing Unit) , memori dan periferal. Mikrokontroler umumnya dirancang untuk aplikasi yang tertanam di perangkat lain, atau dikenal dengan istilah ‘embedded system’.

Pada masa lalu, mikrokontroler umumnya dibuat dalam 1 keping chip. Pada saat ini mulai dikenal konsep SoC (System on a Chip). SoC ini menggabungkan keping silikon berisi mikrokontroler dengan komponen-komponen lain yang lebih kompleks, misalnya GPU (Graphical Processing Unit) ataupun antarmuka WiFi.

Mikrokontroler digunakan dalam berbagai produk dan perangkat yang dikontrol secara otomatis, seperti sistem kontrol mesin mobil, perangkat medis, remote control, mesin kantor, alat rumah tangga, perkakas listrik, mainan, dan sistem tertanam (embedded) lainnya. Desain dengan mikrokontroler lebih ekonomis daripada mikroprosesor karena pada mikrokontroler memori dan perangkat input/output dapat digabung dalam 1 chip, sedangkan pada mikroprosesor memori dan perangkat input/output harus ditambahkan pada chip terpisah.

Mikrokontroler ada murni digital, ada juga yang campuran antara sinyal digital dan analog. Dalam konteks internet of things (IoT), mikrokontroler adalah teknik pengumpulan data yang ekonomis dan populer, mengukur dan mengendalikan dunia fisik sebagai perangkat ‘komputasi tepi’. Kontras dari ‘komputasi tepi’ adalah ‘komputasi awan’ atau ‘cloud computing’, di mana data & informasi dikumpulkan secara terpusat untuk kemudian semua data diolah secara terpusat.

Referensi

 

Perancangan Pengendali Motor Berbasis Mikrokontroler

Kit kendali motor digital
Kit kendali motor digital

Pada tulisan ini diuraikan contoh perancangan suatu sistem kendali motor dengan menggunakan mikrokontroler ATMega328 atau Arduino Nano.

Batasan masalahnya adalah sebagai berikut

  • Input kecepatan (set point) menggunakan potensiometer analog.
  • Kecepatan ditampilkan dengan 2 buah LED 7 segment. LED yang tersedia dalam konfigurasi common anode dan common cathode. Arus maksimum pada LED adalah 20 mA.
  • Motor menggunakan motor DC 12 volt.

Komponen yang tersedia:

  • mikrokontroler ATMega328 / Arduino Nano
  • transistor BJT (NPN, PNP) & MOSFET (kanal P, kanal N).
  • resistor, induktor, kapasitor , dioda, relay
  • regulator DC
  • batere 12 volt DC
  • motor DC 12 volt
  • rotary encoder 400 pulsa per putaran, output A dan B
  • LED 7 segmen common cathode dan common anode

Blok Diagram Sistem

Berikut ini adalah blok diagram sistem kendali secara keseluruhan.

Blok diagram pengendali motor berbasis mikrokontroler ATMega328
Blok diagram pengendali motor berbasis mikrokontroler ATMega328

Analisis Kebutuhan Pin

ATMega328
Daftar pin pada mikrokontroler ATMega328

Pin pada mikrokontroler terbatas, jadi perlu dianalisis dulu apakah pin yang ada cukup. Jika tidak cukup, maka harus melakukan ekspansi port, atau menggunakan mikrokontroler lain yang pin lebih banyak.

Jumlah pin pada ATMega328 adalah 23 buah, jadi perlu dianalisis dulu apakah pin yang ada cukup untuk menyambungkan semua periferal. Dalam prakteknya, beberapa  pin sudah dipakai untuk fungsi lain, jadi tidak tersedia, misalnya di Arduino Nano pin berikut sudah dipakai:

  • PB6 & PB7 untuk kristal osilator
  • PC6 untuk RESET
  • PD0 untuk serial RX
  • PD1 untuk serial TX

Jadi dalam praktisnya, yang tersedia adalah 18 pin.

Analisis alokasi pin:
Potensiometer memerlukan 1 input analog, untuk itu dapat menggunakan salah satu dari pin PC0 (ADC0) sampai PC5 (ADC5)

Rotary encoder memiliki 2 output, jadi perlu 2 pin digital untuk membaca data dari rotary encoder.

Motor agar dapat bergerak 2 arah memerlukan transistor yang dipasang dalam konfigurasi ‘H Bridge’. Pada sebuah H-Bridge terdapat 4 transistor, jadi memerlukan 4 pin digital untuk masing-masing transistor. Jumlah pin digital dapat dikurangi jika menggunakan rangkaian logika sehingga hanya diperlukan 2 pin saja: direction dan PWM. Namun pada soal hanya disediakan transistor, resistor dan sebagainya, jadi reduksi dari 4 pin menjadi 2 pin hanya boleh dilakukan dengan transistor.

LED 7 segment dapat menggunakan cara langsung: 1 pin ke 1 LED, atau bisa juga menggunakan multipleksing. Jika menggunakan cara langsung, maka diperlukan 14 pin digital untuk mengendalikan 2 buah LED 7 segment. Jika menggunakan multipleksing, maka diperlukan (7+2) pin digital.

Alternatif 1: motor dengan 4 pin, LED langsung

Alokasi pin:

  • Potensiometer: 1 pin analog
  • Rotary encoer: 2 pin digital
  • Motor: 4 pin digital
  • LED: 14 pin

Total pin: 21 , jadi konfigurasi ini dapat dibuat.

Alternatif 2: motor dengan 4 pin, LED dengan multipleksing.

  • Potensiometer: 1 pin analog
  • Rotary encoer: 2 pin digital
  • Motor: 4 pin digital
  • LED: 9 pin

Total pin: 16 , jadi konfigurasi ini dapat dibuat.

Alternatif 3: motor dengan 2 pin, LED dengan multipleksing.

  • Potensiometer: 1 pin analog
  • Rotary encoder: 2 pin digital
  • Motor: 2 pin digital
  • LED: 9 pin

Total pin: 14 , jadi konfigurasi ini dapat dibuat.

Rangkaian Potensiometer

Potensiometer dipakai sebagai pembagi tegangan. Tegangan output (Vout) akan dapat dipakai untuk mengetahui sudut putaran potensiometer. Perlu diperhatikan bahwa Vin harus <= 5 volt, supaya Vout juga <= 5 volt. Jika Vout melebihi 5 volt, maka dapat merusak mikrokontroler yang bekerja pada 5 volt.

Potensiometer sebagai pembagi tegangan
Potensiometer sebagai pembagi tegangan

Vout dihubungkan ke salah satu pin analog input pada ATMega328.

Referensi:

Rangkaian Rotary Encoder

Rotary encoder memerlukan koneksi ke GND , tegangan supply VCC, dan ada output A dan B. VCC dapat dihubungkan ke tegangan 5 volt. Detailnya disesuaikan dengan datasheet dari rotary encoder tersebut. Output A dan B dihubungkan ke input digital di mikrokontroler.

Rotary encoder
Rotary encoder

Pin yang dipilih di mikrokontroler tergantung dari metode pembacaan input yang dipakai, ada beberapa cara:

  • menggunakan interupsi eksternal, maka perlu menggunakan pin INT0 (PD2)  dan INT1 (PD3)
  • menggunakan interupsi PCINT, maka dapat menggunakan input digital mana saja.
  • menggunakan sampling dengan timer, maka dapat menggunakan input digital mana saja.

Rangkaian Motor DC

Sinyal output dari mikrokontroler hanya maksimal arus 40 mA dengan tegangan 5 volt, jadi tidak cukup untuk menggerakkan motor. Cara yang paling umum untuk menyambungkan motor DC ke mikrokontroler adalah menggunakan rangkaian ‘H Bridge’, dengan rangkaian ini motor dapat dikendalikan maju mundur.

H Bridge
H Bridge

Pada H-Bridge juga dipasang dioda pengaman (D1 , D2, D3, D4) untuk mengamankan arus yang timbul karena induktansi motor. Rangkaian ini memerlukan 4 output digital dari mikrokontroler.

H-Bridge menggunakan teknik PWM (Pulse Width Modulation) untuk mengatur energi yang diberikan ke motor DC, dan dengan demikian dapat mengatur kecepatan motor. Arah putaran motor juga dapat diatur dengan mengatur kombinasi transistor yang aktif.

Selain menggunakan H-Bridge , antar muka ke motor DC dapat juga menggunakan teknik berikut:

  • Output analog dari mikrokontroler, diperkuat dengan penguat / amplifier. Cara ini secara teoritis dapat dilakukan, namun dalam praktek jarang digunakan karena efisiensi penguat analog tidak setinggi teknik PWM.
  • Relay, namun masalahnya relay mempunya kecepatan yang lambat, sehingga tidak cocok untuk teknik PWM.

H-Bridge tersedia dalam bentuk modul yang sudah jadi, di dalamnya sudah ada transistor power dan antar muka dari mikroprosesor (CMOS/TTL) ke transistor tersebut, sehingga sangat mudah dihubungkan ke mikroprosesor. Contoh modul tersebut adalah di antaranya Toshiba TB6612FNG dan Infineon TLE 5025-2

Motor driver TB6612FNG
H-Bridge Motor driver TB6612FNG

TLE 5025-2 kemasan TO-220
TLE 5025-2 H-Bridge dengan kemasan TO-220

Referensi

Rangkaian LED 7 Segment

Cara 1: tanpa multipleksing. Setiap LED di 7 Segment dihubungkan ke output mikrokontroler. Cara ini memerlukan 14 pin output digital di mikrokontroler, namun memudahkan pemrograman karena tidak perlu melakukan update rutin.

LED 7 Segment tanpa multipleksing
LED 7 Segment tanpa multipleksing

Cara 2: dengan multipleksing. LED 7 Segment dapat dihubungkan dengan menggunakan multipleksing seperti rangkaian berikut ini:

LED 7 Segment common cathode
LED 7 Segment common cathode

Teknik multipleksing ini hanya memerlukan 9 pin digital output, namun memerlukan software yang lebih kompleks.

Perhitungan nilai resistor seri LED

  • Asumsi tegangan drop pada LED adalah 2 volt.
  • Tegangan pada resistor adalah 3 volt.
  • Arus dibatasi di 20 mA
  • Nilai resistor = R = V/I = 3 volt / 20 mA = 150 ohm. Jadi nilai resistor sekurang-kurangnya adalah 150 ohm. Untuk itu resistor untuk LEd dapat menggunakan 220 ohm.

Perhitungan nilai resistor basis transistor (R1 dan R2)

  • Asumsi penguatan arus transistor = 100. Angka ini normal untuk transistor sinyal kecil.
  • Asumsi Vbe = 0.7 volt
  • Arus total LED 1 digit= 20 mA x 7 = 140 mA
  • Arus kolektor transistor = 140 mA
  • Arus basis minimal = 20 mA / 100 = 1,4 mA
  • Tegangan pada R1 = 5-0.7 = 4.3 volt
  • R = V/I = 4.3 / 1,4 mA = 3071 ohm. Jadi nilai R paling besar adalah 3071 ohm. Untuk itu R1 dan R2 bisa menggunakan nilai 1000 ohm yang mudah didapat.

Referensi:

Rangkaian Sumber Daya

Sumber daya yang tersedia hanya 12 volt, sedangkan rangkaian memerlukan 12 volt (motor) dan 5 volt (lainnya). Untuk itu diperlukan regulator yang sesuai, misal regulator 7805 yang dapat mengubah input 12 volt menjadi output 5 volt.

Potensiometer memerlukan tegangan 5 volt untuk Vin. Jika menggunakan 12 volt, maka Vout juga dapat mencapai 12 volt, sehingga dapat merusak mikrokontroler.

Motor DC memerlukan 12 volt, sehingga tegangan 12 volt dapat langsung disambung ke rangkaian motor driver.

Mikrokontroler ATMega328 memerlukan VCC 5 volt, sehingga memerlukan regulator 5 volt.

Rotary encoder memerlukan tegangan 5 volt, sehingga memerlukan regulator 5 volt.

LED 7 Segment jika common cathode tidak terhubung ke VCC, sehingga tidak perlu sambungan ke sumber daya. Jika menggunakan common anode, maka bagian common (anode) dihubungkan ke output regulator 5 volt. Perlu berhati-hati menghubungkan LED ke 12 volt, karena kalau salah , maka akan ada tegangan 12 volt masuk ke pin mikrokontroler, sehingga dapat merusak mikrokontroler.

Rangkaian power supply
Rangkaian power supply

Skema Rangkaian Lengkap

[under construction]

Penentuan Frekuensi Sampling

Frekuensi sampling ditentukan dari bandwidth sistem yang dikendalikan.  Sesuai dengan kriteria Nyquist, frekuensi sampling adalah 2x frekuensi maksimum sistem. Pada persoalan ini nilai frekuensi sistem belum diketahui, namun dapat dihitung dengan mengetahui parameter sistem (Gc(s) dan Gp(s), ataupun dapat juga diukur dengan memperhatikan respon sistem terhadap sinyal input step.

Interupsi pada Perangkat Lunak

Berikut ini beberapa bagian pada sistem kendali ini yang memerlukan interupsi:

  • Algoritma sistem kendali digital memerlukan suatu frekuensi sampling tertentu. Untuk mendapatkan frekuensi sampling ini perlu interupsi TIMER.
  • Rotary encoder untuk pembacaan input menggunakan interupsi eksternal (INT0,INT1), atau PCINT, agar setiap transisi dari output rotary encoder menghasilkan interupsi pada mikrokontroler
  • Rotary encoder memerlukan interupsi TIMER, untuk dapat menghitung kecepatan, berdasarkan jumlah pulsa yang timbul dan waktu yang sudah berlalu.
  • LED 7 Segment memerlukan interupsi jika menggunakan konfigurasi multipleksing. Jika tidak menggunakan multipleksing, maka tidak memerlukan interupsi untuk update display.
  • Potensiometer tidak memerlukan interupsi secara langsung, namun perlu disampling sesuai dengan frekuensi sampling sistem kendali.

Diagram Alir Perangkat Lunak

Detail diagram alir (flowchart) tergantung dari konsep software yang dipakai. Berikut ini salah satu desain:

Diagram Alir Sistem Kendali
Diagram Alir Sistem Kendali

Penjelasan:

Rotary encoder menggunakan interupsi PCINT. Tiap kali ada transisi/perubahan di output A ataupun B, maka akan timbul interupsi. Dari sinyal ini dapat diketahui motor bergerak maju atau mundur. Angka posisi ini diakumulasikan oleh blok ‘Update counter posisi’

LED 7 Segment perlu update rutin jika menggunakan teknik multipleksing. Update ini ditangani oleh ‘Update Display LED’ yang dipanggil oleh interupsi TIMER.

Algoritma kendali digital memerlukan sampling secara rutin, untuk itu memerlukan interupsi TIMER secara teratur. Fungsi ini ditangani oleh blok ‘Sampling Kendali’.

Hal yang dikerjakan oleh blok ‘Sampling Kendali’ adalah sebagai berikut:

  • membaca posisi potensiometer berdasarkan tegangan analog yang masuk dari potensiometer ke ADC
  • menghitung posisi / kecepatan motor saat ini, berdasarkan angka counter posisi saat ini dan angka counter posisi sebelumnya.
  • melakukan perhitungan algoritma kendali, misalnya dengan menggunakan teknik PID (Proporsional, Integral, Derivative)
  • mengirimkan sinyal kendali hasil perhitungan dengan menggunakan output PWM dan Direction ke motor driver.

Jika display LED menggunakan teknik langsung tanpa multipleksing, maka flowchart dapat dimodifikasi sebagai berikut:

Flowchart Kendali Digital Sederhana
Flowchart kendali digital sederhana

Memilih Kemasan Mikrokontroler

Komponen mikrokontroler sering tersedia dalam berbagai kemasan, sehingga kadang membingungkan ketika kita akan membuat skema rangkaian untuk kemudian membuat layout PCB.

Misal kita mau membuat rangkaian mikrokontroler dengan ATMega8535. Cek dulu datasheet ATMega8535 untuk melihat kemasan apa saja yang tersedia.

Kemasan ATMega8535
Kemasan ATMega8535 menurut datasheet halaman 301

Misal kita ingin menggunakan kemasan yang paling mudah dipasang, yaitu PDIP (Plastic Dual Inline Package), maka kita cari kodenya, yaitu 40P6. Selanjutnya kita cek di tabel Ordering Information untuk mencari tipe ATmega8535 yang kita perlukan.

ATMega8535 ordering information
ATMega8535 ordering information

Pada tabel tersebut nampak bahwa kemasan 40P6 dipakai pada beberapa tipe ATmega8535 , yaitu:

  • ATmega8535L-8PC
  • ATmega8535L-8PI
  • ATmega8535L-8PU
  • ATmega8535L-16PC
  • ATmega8535L-16PI
  • ATmega8535L-16PU

Jadi pada software skematik yang kita pakai, kita cari satu di antara 4 tipe tersebut. Semuanya punya kemasan yang sama, hanya berbeda frekuensi dan temperatur kerjanya saja.

 

ATmega8535 dengan kemasan PDIP
ATmega8535 dengan kemasan PDIP

Berikut ini wujud fisik ATmega8535-PU dengan kemasan PDIP

ATmega8535-16PU, tentu saja dengan kemasan PDIP
ATmega8535-16PU, tentu saja dengan kemasan PDIP

Referensi

Perangkat Pengembangan Mikrokontroler ATMega

Berikut ini perangkat pengembangan sistem mikrokontroler ATMega yang saya pakai:

  • Komputer laptop/desktop untuk melakukan kompilasi dan upload program
  • Rangkaian sistem mikrokontroler ATMega8535 yang dilengkapi dengan konektor ISP (In System Programming). Deskripsi rangkaian ini dapat dibaca di artikel rangkaian sederhana ATMega8535
  • Antar muka USB to Serial adapter, perangkat ini dipakai untuk menghubungkan konektor serial di rangkaian ATMega dengan konektor USB di komputer PC. Jika menggunakan desktop PC yang ada port serialnya, perangkat USB to serial adapter ini tidak diperlukan. Output dari port serial mikrokontroler sangat berguna untuk mengetahui jalannya program di dalam mikrokontroler tersebut.
  • Kabel serial RS-232 jenis ‘straight’
  • Adaptor dari jala-jala listrik ke DC 12V
  • Programmer USB-ISP merek DI-USB AVR ISP V2 (DIM.024)  buatan Depok Instruments. Dapat dibeli di Jaya Plaza Bandung. Berbagai macam programmer AVR lain dapat dibaca di artikel tentang programmer AVR secara umum dan di artikel tentang progammer AVR buatan Indonesia.

perangkat-pengembangan-mikrokontroler-IMG_5695

Rangkaian mikrokontroler:

rangkaian-prosesor-atmega8535-sederhana-IMG_5685

Implementasi dengan PCB single layer. Konektor DB9 untuk RS232 dari jenis female, dan diletakkan di pinggir PCB supaya kabel serial dapat dipasang tanpa menabrak PCB.

Fiturnya:

  • Mikrokontroler ATMega8535, bisa juga diganti dengan ATMega16 karena pin nya sama
  • Crystal 16MHz
  • Port serial untuk input output
  • 8 buah LED dihubungkan ke port C untuk debugging
  • Port ISP
  • Masing-masing port A , port B , port C dan port D dikeluarkan ke sebuah konektor 10 pin, sehingga memudahkan jika rangkaian ini dipakai untuk keperluan khusus.
  • LED hijau untuk power ON.

Penampakan modul mikrokontroler dari sudut lain:

rangkaian-mikrokontroler-atmega8535-IMG_5686

 

Pada bagian kiri bawah nampak 3 macam konektor power 12V. Konektor yang warna putih dan hitam mempunyai keunggulan tidak dapat dipasang terbalik, sehingga memudahkan pada waktu percobaan. Pada akhirnya yang paling sering dipakai adalah konektor DC warna hitam, karena lebih kuat. Konektor putih kelemahannya adalah kabelnya mudah putus.

Modul programmer:

programmer-usb-isp-avr-IMG_5691