Tegangan kerja untuk Arduino Nano dan Arduino UNO adalah 5 volt. Tegangan yang dapat diberikan ke pin-pin Arduino adalah minimum 0 volt, maksimum 5 volt. Perkecualian adalah sebagai berikut: pin RESET dapat menerima tegangan sampai 13 volt. Pin VIN dapat menerima tegangan sampai 20 volt karena di pin tersebut ada regulator DC untuk mengubah tegangan masuk menjadi 5 volt.
Arduino Nano dan Arduino UNO menggunakan prosesor ATmega328. Batas maksimum tegangan pada ATmega328 dapat dilihat di datasheet prosesor ATmega328, di bagian “Absolute Maximum Ratings”. Kutipannya sebagai berikut:
ATmega328 absolute maximum rating
Tegangan pada VIN atau POWER IN tidak langsung dihubungkan ke prosesor ATmega328, melainkan melalui regulator DC. Jadi tegangan maksimumnya tergantung komponen regulator DC yang dipakai.
Pin POWER IN dihubungkan ke regulator 5 volt (NCP1117 pada Arduino UNO dan UA78M05 pada Arduino Nano). NCP1117 maksimal menerima tegangan input 20 volt. UA7805 maksimal menerima input 25 volt. Jika tegangan POWER IN melebihi batas ini, maka regulator 5 volt tersebut akan rusak.
Batas tegangan maksimum pada NCP1117 dapat dibaca pada datasheetnya sebagai berikut:
Tegangan maksimum pada NCP1117
Batas tegangan maksimum pada UA78M05 dapat dibaca pada datasheetnya sebagai berikut:
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
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.
Arduino UNO R3, ESP32 Devkit-C , ESP32 Lolin32 Lite
Arduino UNO
Arduino UNO R3 asli
Arduino UNO adalah rangkaian mikrokontroler berbasis ATmega328P. Arduino UNO memiliki 14 pin input/output digital (6 di antaranya dapat digunakan sebagai output PWM), 6 input analog, resonator keramik 16 MHz sebagai sumber clock, koneksi USB untuk catu daya dan komunikasi serial, colokan listrik DC, header ICSP (In Circuit Serial Programming), dan tombol reset. Papan rangkaian Arduino UNO berisi semua hal yang diperlukan untuk mendukung mikrokontroler. Untuk menggunakan Arduino UNO, cukup dengan disambung ke komputer dengan kabel USB atau sambungkan dengan adaptor AC-ke-DC atau baterai untuk memulai. Anda dapat mengotak-atik UNO Anda tanpa terlalu khawatir melakukan kesalahan. Pada kondisi terburuk, chip ATmega328 dengan kemasan DIP (Dual In line Package) dapat diganti jika rusak.
ESP32
ESP 32 adalah mikrokontroler yang memiliki banyak fitur pada prosesornya, dan dilengkapi dengan konektivitas Wi-Fi dan Bluetooth terintegrasi untuk berbagai macam aplikasi.
ESP32 mampu berfungsi dengan andal di lingkungan industri, dengan suhu pengoperasian mulai dari –40°C hingga +125°C. ESP32 dapat secara dinamis menghilangkan ketidaksempurnaan sirkuit eksternal dan beradaptasi dengan perubahan kondisi eksternal dengan dukungan rangkaian kalibrasi di dalamnya. Rangkaian kalibrasi ini memungkinkan WiFi pada ESP32 berfungsi tanpa perlu kalibrasi ekstra.
ESP32 dirancang untuk perangkat bergerak (mobile), perangkat elektronik yang dapat dikenakan (wearable electronics), dan aplikasi IoT. Konsumsi daya ESP32 dapat dibuat sangat rendah dengan kombinasi beberapa macam perangkat lunak khusus. ESP32 juga mencakup fitur-fitur canggih, seperti ‘clock gating‘ untuk mereduksi konsumsi daya, berbagai mode daya, dan penskalaan daya secara dinamis.
ESP32 dibuat sangat terintegrasi dengan sakelar pemilih antena di dalamnya, RF balun, power amplifier untuk radio, amplifier penerima radio dengan kebisingan rendah (low noise), filter, dan modul manajemen daya. ESP32 menambahkan fungsionalitas dan keserbagunaan yang banyak aplikasi dengan hanya memerlukan ruang kecil di PCB (Printed Circuit Board)
ESP32 dapat berfungsi sebagai sistem mandiri yang lengkap atau sebagai perangkat pembantu ke mikrokontroler lain, mengurangi overhead tumpukan komunikasi pada prosesor aplikasi utama. ESP32 dapat berinteraksi dengan sistem lain untuk menyediakan fungsionalitas Wi-Fi dan Bluetooth melalui antarmuka SPI/SDIO atau I2C/UART.
Modul ESP32 tersedia dalam berbagai versi, di antaranya adalah Lolin32 Lite dan DevkitC serta clone nya.
ESP32 memiliki beberapa kelebihan dibandingkan Arduino. Di antaranya sebagai berikut:
Prosesor di ESP32 dari keluarga Xtensa, lebih cepat dibandingkan prosesor ATmega dengan arsitektur AVR. ESP32 clocknya adalah 240 MHz, sedangkan Arduino UNO menggunakan ATmega328 dengan kecepatan maksimum 16 MHz
Jumlah core pada prosesornya lebih banyak. ESP32 mempunyai 2 core, sedangkan ATmega328 hanya 1 core saja.
Memori Flash yang terhubung lebih banyak. ESP32 memiliki Flash Memory sebesar 1 MB sampai 16 MB. Arduino UNO memiliki memori flash sebesar 32 KB. Model Arduino lain ada yang memiliki flash lebih besar, seperti ATmega2560 yang memiliki flash sebesar 256 KB
Memori RAM lebih besar. ESP32 memiliki SRAM 520 KiB, sedangkan Arduino UNO memiliki SRAM hanya 2 KB. ATmega2560 memiliki SRAM sebesar 8 kilobyte
ESP32 memiliki kemampuan nirkabel WiFi 802.11 dan Bluetooth. Fitur ini di Arduino UNO tidak ada, harus menambah modul/shield.
praktis semua bahasa pemrograman yang dapat dijalankan di sistem operasi Linux
Port USB
1 buah USB type B untuk port serial dan catu daya
1 buah mini USB untuk catu daya 4 buah USB type-A untuk memasang periferal seperti keyboard-USB dan mouse-USB
Koneksi jaringan komputer
tidak ada
Ethernet 802.3 dan Wifi 802.11 (2,4 GHz)
Tegangan Kerja
5 volt
3,3 volt
Catu Daya
5 volt (USB), 6 ~ 12 volt (pin catu daya). Konsumsi arus untuk prosesor maksimum adalah 14 mA. Konsumsi arus untuk periferal output maksimum 200 mA.
5 VDC, 2,5 ampere
Ukuran
68,6 mm x 53,4 mm
85 mm x 56 mm
berat
37 g
50 g
harga
Rp 350.000 ~ Rp 450.000
Rp 3,5 juta (model B+)
Arduino UNO
Arduino UNO R3 asli
Arduino UNO adalah rangkaian mikrokontroler berbasis ATmega328P. Arduino UNO memiliki 14 pin input/output digital (6 di antaranya dapat digunakan sebagai output PWM), 6 input analog, resonator keramik 16 MHz sebagai sumber clock, koneksi USB untuk catu daya dan komunikasi serial, colokan listrik DC, header ICSP (In Circuit Serial Programming), dan tombol reset. Papan rangkaian Arduino UNO berisi semua hal yang diperlukan untuk mendukung mikrokontroler. Untuk menggunakan Arduino UNO, cukup dengan disambung ke komputer dengan kabel USB atau sambungkan dengan adaptor AC-ke-DC atau baterai untuk memulai. Anda dapat mengotak-atik UNO Anda tanpa terlalu khawatir melakukan kesalahan. Jika ATmega328 rusak dapat diganti jika rusak.
Raspberry PI Model 3
Spesifikasi Raspberry Pi secara ringkas
The Raspberry Pi 3 Model B+ is the final revision in the Raspberry Pi 3 range.
erlu akses langsung ke interupsi pada mikroprosesor. Pada Raspberry Pi, interupsi diurus oleh sistem operasi, jadi tidak dapat diakses langsung oleh pengguna.
Arduino Nano dapat melakukan komunikasi serial baik transmit (mengirim) maupun receive (menerima). Pada library Arduino, sudah disiapkan buffer FIFO (First In First Out) pada data yang dikirimkan maupun data yang diterima. Pada tulisan ini dilakukan pengecekan berapa ukuran buffer tersebut. Pengujian ini dilakukan pada Arduino Nano dengan prosesor ATmega328. Untuk prosesor lain, ada kemungkinan ukuran buffernya berbeda.
Library Arduino untuk komunikasi serial memiliki buffer FIFO untuk outgoing maupun incoming.
Hardware yang diperlukan:
Komputer Desktop PC / Laptop
Arduino Nano Atmega328
Kabel USB
Buffer Pengiriman
Ukuran buffer pengiriman yang tersisa dapat dicek dengan fungsi Serial.availableForWrite() . Pada kondisi awal seharusnya buffer yang tersisa adalah maksimal, karena belum ada karakter yang dikirim.
Contoh program:
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
int incomingByte ;
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000);
incomingByte = Serial.availableForWrite();
Serial.print("jumlah available: ");
Serial.println(incomingByte, DEC);
}
Output seperti sebagai berikut
14:42:26.343 -> jumlah available: 63
Artinya ukuran bufffer outgoing adalah 63 karakter
Buffer Penerimaan
Ukuran buffer data masuk (receive) dapat dicek dengan fungsi Serial.available
Contoh program
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
int incomingByte ;
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000);
incomingByte = Serial.availableForWrite();
Serial.print("jumlah available: ");
Serial.println(incomingByte, DEC);
}
Setelah itu kirimkan beberapa karakter dari PC ke Arduino. Angka yang ditampilkan akan naik, namun akan berhenti di suatu batas tertentu. Angka inilah yang menunjukkan ukuran buffer FIFO incoming.
Dari hasil percobaan didapatkan rekaman komunikas serial sebagai berikut
14:37:37.062 -> jumlah available: 0
14:37:39.051 -> jumlah available: 0
14:37:41.043 -> jumlah available: 30
14:37:43.038 -> jumlah available: 43
14:37:45.064 -> jumlah available: 54
14:37:47.057 -> jumlah available: 63
14:37:49.050 -> jumlah available: 63
14:37:51.042 -> jumlah available: 63
14:37:53.067 -> jumlah available: 63
14:37:55.058 -> jumlah available: 63
14:37:57.050 -> jumlah available: 63
Artinya jumlah data yang menunggu untuk dibaca oleh software adalah maksimum 63 karakter.
Cara mengatasi regulator Arduino UNO ataupun Arduino Nano yang panas adalah dengan :
menggunakan tegangan pada power jack serendah mungkin. Tegangan paling kecil yang masih memungkinkan adalah 7 volt.
batasi pemakaian arus oleh prosesor
gunakan pendingin seperti kipas angin
Batasi Tegangan Power Jack dan VIN
Jika regulator Arduino panas, artinya ada disipasi daya pada regulator tersebut. Rangkaian regulator pada Arduino UNO adalah sebagai berikut
Rangkaian Regulator Arduino UNO
Tegangan dari power jack ataupun VIN dikecilkan menjadi 5 volt oleh regulator MC33269D-5.0 . Kelebihan tegangan ini dibuang menjadi panas. Makin besar perbedaan tegangan , maka daya yang dibuang makin besar. Daya makin besar, akibatnya regulator makin panas. Jadi salah satu cara mudah mengurangi panas pada regulator tersebut adalah dengan menggunakan tegangan power jack ataupun VIN di 7 volt saja.
Batasi Arus Mikroprosesor ATmega328
Arus maksimum pada terminal VCC prosesor adalah 200 mA. Arus ini akan menjadi beban juga bagi regulator.
Misal tegangan VIN 9 volt, dengan arus pada VCC ATmega328 adalah 200 mA. Maka akan ada pengurangan tegangan 4 volt pada regulator. Disipasi daya karena VCC sebesar P = V x I =4 volt x 200 mA = 800 mW
Misal penggunaan arus pada port ATmega328 dikurangi, sehingga total arus hanya 50 mA. Maka disipasi daya pada regulator menjadi P = VxI = 4 volt x 50 mA = 200 mW. Dengan demikian regulator tidak terlalu panas.
Gunakan Kipas
Regulator pada Arduino UNO tidak dilengkapi pendingin khusus seperti heat sink yang besar, sehingga panas sulit dibuang dengan baik. Pendinginan terutama melalui jalur tembaga di papan rangkaian (PCB) Untuk mempercepat pendinginan dapat dengan kipas angin kecil.
Secara teori cara ini dapat dipakai, namun dalam praktek sangat tidak praktis.
Menghapus EEPROM menggunakan program yang diupload ke memori Flash dan kemudian dijalankan
Menggunakan fasilitas serial programming melalui ISP (In System Programming) di ATmega328
Menggunakan fasilitas parallel programming / high voltage programming pada ATmega328
Menghapus EEPROM Dengan Upload Program
Teknik ini dijelaskan di tutorial EEPROM Clear di https://www.arduino.cc/en/Tutorial/EEPROMClear
Prinsip dasarnya adalah menggunakan fungsi EEPROM.write() untuk menulis angka 0 ke semua lokasi EEPROM.
Berikut ini contoh program untuk menghapus semua isi data di EEPROM.
/* * EEPROM Write * * Stores values read from analog input 0 into the EEPROM. * These values will stay in the EEPROM when the board is * turned off and may be retrieved later by another sketch. */
#include <EEPROM.h>
/** the current address in the EEPROM (i.e. which byte we're going to write to next) **/ int addr =0;
voidsetup(){ /** Empty setup. **/ }
voidloop(){ /*** Need to divide by 4 because analog inputs range from 0 to 1023 and each byte of the EEPROM can only hold a value from 0 to 255. ***/
int val =analogRead(0)/4;
/*** Write the value to the appropriate byte of the EEPROM. these values will remain there when the board is turned off. ***/
EEPROM.write(addr, val);
/*** Advance to the next address, when at the end restart at the beginning.
Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ addr = addr +1; if(addr == EEPROM.length()){ addr =0; }
/*** As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an EEPROM address is also doable by a bitwise and of the length - 1.
++addr &= EEPROM.length() - 1; ***/
delay(100); }
Menghapus EEPROM Dengan ISP (In System Programming)
Pada metode ini, diperlukan antar muka khusus ke port ISP di ATmega328 pada Arduino UNO. Contoh antar muka yang populer adalah USBasp (https://www.fischl.de/usbasp/)
Perangkat lunak yang diperlukan ada beberapa macam, misalnya:
Pada percobaan ini akan dibuat interupsi timer 1 pada ATmega328 dengan frekuensi 1 kHz, dan kemudian dilakukan pengukuran frekuensi yang dihasilkan.
Konfigurasi Timer 1 sebagai berikut
Frekuensi 1 kHz, atau perioda 1 ms
menggunakan Timer1
Clock Source: System Clock
Clock Value: 250 kHz (prescaler 64)
Mode: CTC top=OCR1A
Out A: Disconnected
Out B: Disconnected
Interrupt on: Compare A Match
tidak ada output langsung ke pin mikrokontroler
Frekuensi clock adalah 16 Mhz. Dengan prescaler 64, dihasilkan clock ke Timer1 sebesar 250 kHz. Untuk membuat frekuensi 1 kHz, perlu pembagi sebesar 250 (0xFA), untuk itu diperlukan angka 249 (0xF9) di register OCR1A. Mode timer1 menggunakan CTC (Clear Timer on Compare), jadi ketika angka counter mencapai 249, otomatis berikutnya menjadi 0, dibarengi dengan munculnya interupsi timer 1. Dengan demikian sinyal clock timer 1 250 kHz akan menghasilkan interupsi timer dengan frekuensi 1 kHz.
Kode dibuat dengan menggunakan CodeWizard pada compiler CodevisionAVR versi Evaluation. Berikut ini tampilan setting pada code wizard untuk Timer 1:
Konfigurasi Timer 1
Untuk menghasilkan sinyal output, digunakan port C sebagai output. Output pada port C dikomplemen setiap interupsi, sehingga akan timbul sinyal dengan frekuensi 500 Hz pada port C. Berikut kode ISR (interrupt service routine) untuk Timer 1:
Berikut ini sinyal yang dihasilkan, diukur dengan menggunakan osiloskop. Screen capture diambil langsung dari osiloskop (bukan difoto).
Hasil pengukuran port C
Frekuensi yang terukur adalah 500,026 Hz, sehingga frekuensi interupsi sebenarnya adalah 2 x 500,026 = 1000,052 Hz. Tidak sama persis dengan seharusnya (1 kHz), kemungkinannya antara frekuensi kristal yang tidak tepat, atau clock pada osiloskop yang tidak tepat.
Pengukuran frekuensi dengan osiloskop GDS 1042Pengukuran sinyal pada Arduino nano (ATmega328)
Pulse Width Modulation (PWM) atau modulasi lebar pulsa sangat bermanfaat pada sistem mikrokontroler, salah satunya adalah untuk mengendalikan motor DC. Pada chip ATmega328, sinyal PWM ini dapat dibangkitkan dengan perangkat lunak, ataupun dapat dibangkitkan dari perangkat keras dengan menggunakan periferal Timer internal. PWM dari perangkat keras cukup praktis karena tidak membebani perangkat lunak, namun ada keterbatasan karena pada ATmega328 hanya terdapat 3 buah timer internal, sehingga tidak bisa memiliki banyak output PWM dari perangkat keras.
Berikut ini ujicoba output PWM (Pulse Width Modulation) dari Timer 0 pada ATmega328. Modul yang digunakan adalah Arduino Nano clone.
Konfigurasi pengujian PWM ini adalah sebagai berikut:
Perangkat keras menggunakan Timer 0 (8 bit)
Clock Source: System Clock
Clock Value 2000.000 kHz
Mode: Fast PWM top=0xFF
Out A: Non-Inverted PWM
Out B: Disconnected
tidak ada interupsi dari Timer0
output pada pin OC0A (pin PD6 pada ATmega328, D6 pada Arduino Nano)
Pengaturan register menggunakan Code Wizard dari CodeVision AVR Evaluation dengan detail sebagai berikut ini:
Source code terkait dengan Timer 0 adalah sebagai berikut:
Variable yang dapat diubah-ubah adalah OCR0A untuk mengatur duty-cycle dari PWM. Nilai register ini dapat diisi dari 0x00 sampai dengan 0xff (255)
Tahap selanjutnya adalah pengujian output PWM dengan cara melihat sinyal yang dihasilkan dengan osiloskop GW INSTEK GDS-1042
Berikut ini adalah output dengan nilai register OCR0A=0x00. Perioda PWM adalah 2000/256 = 0.128 ms
OCR0A=0x01
Nampak bahwa nilai register 0 akan memberikan sinyal yang paling pendek, yaitu dengan panjang pulsa 500 ns. Berikut ini adalah sinyal yang sama dilihat dengan time base 100 ns per div
OCR0A=0x01, zoom
Berikut ini adalah sinyal dengan OCR0A=0x80 atau duty cycle=50%
OCR0A=0x80
Berikut ini adalah sinyal dengan OCR0A=0xfe (254)
OCR0A=0xfe (254)
Terakhir adalah sinyal dengan duty cycle = 100% , dengan OCR0A=0xff (255)
OCR0A=0xff
Hal penting yang perlu diperhatikan: nilai duty cycle tidak pernah 0%, minimum adalah 1/256. Nilai maksimum duty cycle adalah 100%. Untuk membuat sinyal PWM duty cycle =0 dapat dilakukan dengan mematikan output PWM.
Mikroprosesor memiliki berbagai macam memori dengan berbagai fungsi. Berikut ini uraian macam-macam memori pada komputer berdasarkan sifat baca tulis memori tersebut.
ROM : Read Only Memory
ROM atau Masked ROM adalah memori yang hanya dapat dibaca saja, dan isi memorinya sudah ditentukan di pabrik, tidak dapat diubah oleh pengguna. Memori ini harga satuannya (variable cost) murah, namun ongkos awalnya (fixed cost) besar, sehingga baru ekonomis kalau jumlah produksinya besar.
PROM: Programmable Read Only Memory
PROM adalah ROM yang dapat diprogram oleh user 1 kali saja. Memori jenis ini harga satuannya lebih mahal dibandingkan ROM, namun tidak perlu ongkos awal yang besar, sehingga cocok untuk produksi dalam jumlah kecil.
OTP : One Time Programmable
OTP adalah nama lain dari PROM.
Contoh komponen OTP adalah IC AT27C020 yang diproduksi oleh Microchip.
EPROM adalah memori yang dapat ditulis, isinya tidak hilang ketika power supply dimatikan, namun dapat dihapus dengan menggunakan sinar ultra violet. Pada EPROM ini terdapat ‘jendela’ dari bahan kuarsa yang memungkinkan cahaya ultra violet mengenai chip silikon yang berisi transistor EPROM.
Berikut ini beberapa contoh EPROM.
EPROM Intel C1702A
ST Microelectronics M27C256B
EPROM NEC D8749
EPROM NEC 02716
EEPROM Electrically Erasable Programmable Read Only Memory
EEPROM adalah memori yang dapat dihapus dengan tegangan listrik tertentu.
Contohnya adalah Atmel AT24C512. Memori ini dihubungkan ke mikroprosesor dengan protokol Two Wire Serial Interface.
Atmel EEPROM AT 24C512
Beberapa mikrokontroler sudah dilengkapi dengan EEPROM di dalamnya, misalnya ATMega328 yang dipakai di Arduino sudah dilengkapi dengan EEPROM berkapasitas 1 kilobyte.
RAM adalah memori yang isinya dapat dibaca dan ditulis. Isi memori hilang kalau power supply dimatikan. RAM yang umum dipakai terbagi dua , yaitu static RAM dan dynamic RAM.
SRAM: Static RAM
SRAM adalah RAM yang dibuat dengan menggunakan transistor / flip-flop. Kecepatannya tinggi, namun harganya relatif mahal dibandingkan dengan dynamic RAM.
Berikut ini komponen static RAM tipe 6264 yang berkapasitas 8 kilobyte. Komponen SRAM ini dulu favorit sebagai RAM untuk mikroprosesor Z80 dan mikrokontroler 8051.
DRAM adalah RAM yang dibuat dengan menggunakan kapasitor.
Keuntungannya lebih murah dibandingkan SRAM, namun isi tegangan di kapasitor akan hilang dalam beberapa milisekon, sehingga isi tegangan di kapasitor tersebut mesti diperbarui setiap beberapa milisekon.
RAM jenis ini adalah memori yang banyak dipakai untuk desktop dan laptop saat ini. Misalnya RAM tipe DDR berikut ini:
DDR4 SDRAM berkapasitas 8 GB
Flash Memory
Memori yang isinya tidak hilang kalau power supply dimatikan, dan isinya juga dapat dihapus secara elektrik seperti EEPROM. Perbedaannya adalah pada flash memory penghapusan dan penulisan data mesti dilakukan pada suatu blok data, tidak dapat hanya 1 byte saja, sedangkan EEPROM dapat dihapus / ditulis pada setiap byte.
Mikrokontroler seperti ATMega328 dilengkapi dengan flash memory berkapasitas 32 kilobyte di dalamnya untuk diisi dengan program.
NVRAM : Non Volatile RAM
NVRAM adalah RAM yang diberi batere, sehingga ketika power supply rangkaian dimatikan, isi RAM di NVRAM ini tetap ada, tidak hilang.
NVRAM Dallas DS1225AD
NVRAM Dallas DS1225AD
Contoh lain komponen yang berisi NVRAM adalah real time clock (RTC) seperti DS3231 dan DS1307
Real Time Clock DS3231
DS1307 real time clock
Memori pada Arduino Nano
Dalam prakteknya, suatu sistem mikroprosesor pada umumnya menggunakan lebih dari 1 macam memori. Sebagai contoh, para Arduino Nano (ATmega328), memori di dalamnya adalah sebagai berikut:
Flash memory, untuk diisi program dan data yang permanen. Hanya dapat diubah dari luar dengan programmer atau dengan menggunakan bootloader.
SRAM ( Static RAM) sebagai memori untuk menyimpan variabel yang dapat diubah-ubah
EEPROM untuk menyimpan parameter yang dapat diubah oleh program dan tidak hilang ketika listrik dimatikan.
Selain memori tersebut di atas dapat juga ditambahkan memori lain menggunakan port serial atau pin-pin pada Arduino.