Mesin Cuci Samsung WF8590NHW sebagai sebuah sistem embedded

Berikut ini mesin cuci WF8590NHW  dengan spesifikasi sangat sederhana: ” Top-Load dengan Diamond Drum – 6 Kg”. Sama sekali tidak disebut kemampuan prosesornya. Kalau dibongkar di dalamnya, terlihat sistem embedded di dalamnya menggunakan prosesor tipe TMP91FU62DFG. Prosesor tersebut memiliki kemampuan clock maksimum 20 MHz, ROM: 96K bytes (Flash ROM), RAM: 4K bytes.

Mesin cuci Samsung WF8590NHW
Mesin cuci Samsung WF8590NHW

Spesifikasi Mesin Cuci

Spesifikasi ringkas: Top-Load dengan Diamond Drum – 6 Kg

Sumber: Situs resmi Samsung WF8590NHW

Sistem Embedded

Berikut ini papan rangkaian pengendali mesin cuci tersebut. Ukuran papan rangkaian adalah panjang 26 cm, lebar 10 cm. Posisi papan rangkaian ini tepat di belakang panel. Pada papan rangkaian terlihat LED 7 segment di bagian kiri atas, LED ini sama dengan yang nampak di bagian atas depan mesin cuci.

Berikut ini tampilan panel atas yang terletak tepat di depan papan rangkaian tersebut.

Panel mesin cuci
Panel mesin cuci

Mesin cuci ini menggunakan mikroprosesor buatan Toshiba tipe TMP91FU62DFG

Papan rangkaian prosesor di mesin cuci WF8590NHW
Papan rangkaian prosesor di mesin cuci WF8590NHW
Prosesor TMP91FU62DFG
Prosesor TMP91FU62DFG

Spesifikasi Prosesor TMP91FU62DFG

High-speed 16-bit CPU (900/L1 CPU)

  • Instruction mnemonics are upward-compatible with TLCS-900,900/H,900/L
  • 16 Mbytes of linear address space
  • General-purpose registers and register banks
  • 16-bit multiplication and division instructions; bit transfer and arithmetic instructions
  • Micro DMA: 4 channels (800ns/2 bytes at 20MHz)
  • Minimum instruction execution time:200ns (at 20MHz)
  • Built-in memory
    – ROM: 96K bytes (Flash ROM)
    – RAM: 4K bytes
  • 8-bit timers: 4 channels
  • 16-bit timers: 4 channels
  • General-purpose serial interface: 4 channels
    – UART/Synchronous mode: 3 channels
    – I2C bus mode: 1 channels
  • 10-bit AD converter (Built-in Sample hold circuit): 16 channels
  • Special timer for CLOCK
  • Watchdog timer
  • Program patch logic: 6 banks
  • Interrupts: 48 interrupts
    – 9 CPU interrupts: Software interrupt instruction and illegal instruction
    – 30 internal interrupts: 7 priority levels are selectable
    – 9 external interrupts: 7 priority levels are selectable (among 1 interrupts are selectable edge mode)
  • Input/output ports: 69 pins
  • Standby function: Three HALT modes: IDLE2 (Programmable), IDLE1 and STOP
  • Clock controller
    – Clock gear function: Select a High-frequency clock fc/1 to fc/16
    – Oscillator for CLOCK (fs = 32.768 kHz)
  • Operating voltage
    Flash read operation
    > Vcc=4.5 V – 5.5 V (fc max = 20MHz)
    Flash write/erase operation
    > Vcc=4.75 V – 5.25 V (fc max = 20MHz)
  • Package
    – LQFP80-P-1212-0.50E (TMP91FU62FG)
    – QFP80-P-1420-0.80B (TMP91FU62DFG)

Referensi

 

 

Contoh Sistem Embedded

Berikut ini beberapa contoh sistem embedded yang sering dijumpai sehari-hari.

  • Mesin cuci front loading otomatis
  • Pulse oxymeter, alat pengukur kadar saturasi oksigen dalam darah.
  • Senter LED
Contoh sistem embedded: mesin cuci front loading otomatis, pulse oxymeter, senter LED
Contoh sistem embedded

Contoh Sistem Non Embedded

Sebagai perbandingan, berikut ini contoh sistem yang bukan sistem embedded. Berikut ini contoh mesin cuci manual top loading dua tabung, di mana semua operasi dilakukan manual

 

Diagram blok mesin cuci top loading
Diagram blok mesin cuci top loading

Timer menggunakan mekanik / elektromekanik, tidak ada komponen mikroprosesor sehingga praktis tidak ada komputasi di dalamnya

Pada mesin cuci ini ada 2 motor terpisah, yaitu motor pencuci dan motor pengering. Pengisian dan pembuangan air menggunakan katup mekanik, dengan pembukaan dan penutupan dilakukan secara manual.

Timer pencuci fungsinya menyalakan motor pencuci selama beberapa menit, ditentukan oleh orang yang mencuci. Selama pencucian, arah putaran motor dapat berubah-ubah arah supaya pencucian lebih baik dibandingkan kalau putaran motor hanya satu arah.

Timer pengering fungsinya menyalakan motor pengering selama beberapa menit, ditentukan oleh orang yang mencuci. 

Fitur otomatis pada mesin cuci ini hanya pada timer pencuci, timer pengering dan sensor pintu pengering yang otomatis menghentikan motor pengering jika pintu penutup pengering dibuka dalam keadaan motor menyala.

Mesin cuci ini tidak mengandung prosesor ataupun pengolah informasi , sehingga dapat dikatakan sistem ini bukan termasuk sistem embedded

Mesin Cuci Front Loading Otomatis

 

Mesin cuci front loading
Mesin cuci front loading

 

Diagram blok mesin cuci front loading
Diagram blok mesin cuci front loading

Berikut ini ilustrasi mesin cuci front loading otomatis. Tabung pencuci digerakkan oleh motor. Ada katup pengisian air, ada pompa pembuangan air. Semuanya dikendalikan secara otomatis dengan mikroprosesor. Sensor yang dipakai antara lain sensor kecepatan motor, sensor temperature air, sensor ketinggian air, sensor pintu. Pengaturan cukup dengan menekan tombol-tombol di panel. Status mesin cuci ditampilkan pada sebuah display LCD. Dari diagram bloknya saja sudah Nampak bahwa system ini cukup kompleks. Bagi pengguna, yang penting adalah bahwa mesin ini dapat mencuci baju dengan baik. Pengguna tidak mencari mesin cuci berdasarkan kecepatan CPU, kapasitas memori dan sebagainya.

Ada juga kunci pintu supaya tidak dapat dibuka setelah mesin dinyalakan.

Mesin cuci ini termasuk CPS (Cyber Physical System), karena ada benda fisik (physical) yang diatur, yaitu tabung pencuci dan air di dalamnya. Tabung pencuci diatur kecepatan putarannya, sedangkan air diatur ketinggian dan temperaturnya.

Aktuator pada mesin cuci ini adalah sebagai berikut

  • panel display LCD
  • Buzzer
  • katup air
  • motor listrik pencuci & pengering
  • pompa pembuang air

Sensornya pada mesin cuci ini adalah sebagai berikut

  • sensor ketinggian air
  • sensor temperatur air
  • sensor kecepatan putaran motor
  • sensor pintu (terbuka atau tertutup)
  • tombol pada panel

Berikut ini tahap proses mesin cuci pada pencucian normal

  • Cucian dimasukkan (secara manual)
  • Pintu ditutup (secara manual)
  • Jenis pencucian dipilih oleh pengguna & proses dimulai
  • Pintu dikunci otomatis
  • Masukkan air & sabun (air otomatis, sabun manual)
  • Cuci dengan diputar bolak-balik dengan kecepatan tertentu
  • Buang air cucian & pompa air keluar
  • Cucian dibilas dengan air untuk membersihkan sabun
  • Keringkan dengan putaran tinggi & pompa air keluar
  • Tunggu sampai tabung berhenti berputar
  • Buka kunci pintu (otomatis)

Dalam prakteknya tahap-tahap di atas lebih kompleks, karena ada beberapa mode pencucian (pencucian cepat 29 menit, pencucian lama 2 jam, pengeringan saja, dan sebagainya) dan juga ada kemungkinan terjadinya kesalahan/gangguan pada waktu pencucian. Contoh gangguan adalah air tidak mengisi dengan baik, pompa pembuangan macet dan sebagainya

Pulse Oxymeter

Berikut ini alat pulse oximeter yang populer untuk mengukur denyut jantung dan kadar oksigen dalam darah.

Pulse oxymeter
Pulse oxymeter
Diagram blok pulse oxymeter
Diagram blok pulse oxymeter

Alat ini merupakan salah satu perangkat untuk mengukur kondisi pasien covid19 dan orang yang ada gangguan asthma.

Prinsip kerja alat ini adalah mengukur intensitas cahaya yang menembus jari tangan pada 2 buah Panjang gelombang yang berbeda

Ada sumber cahaya yang diatur oleh mikroprosesor. Intensitas cahaya yang menembus jari tangan diukur oleh sensor cahaya. Fluktuasi cahaya tersebut diproses dengan suatu algoritma di mikroprosesor. Data denyut jantung dan kadar oksigen yang didapat kemudian ditampilkan pada display

Pada system ini tidak ada pengendalian, jadi system ini tidak termasuk CPS, namun system ini termasuk ke system embedded

Mikroprosesor hanya memilih sensor mana yg aktif dengan mengatur sumber cahaya.

Algoritma pengukuran denyut jantung contohnya di artikel analisis-sinyal-detak-jantung/

Referensi

 

 

Pengertian Real Time pada Sistem Embedded

Banyak sistem embedded berinteraksi dengan dunia fisik, sehingga system embedded harus dapat merespon dunia fisik secara cukup cepat. Respon cepat ini disebut juga sebagai “real time” .

Tidak semua sistem embedded harus real time, demikian juga tidak semua sistem real time harus embedded

Pengertian Menurut Kamus

The actual time during which something takes place
  • –The computer may partly analyze the data in real time (as it comes in) – R.H. March
  • –Chatted online in real time

Sumber: https://www.merriam-webster.com/dictionary/real%20time

Maksudnya dari ‘the actual time during which something takes place” adalah ada 2 atau lebih kejadian, dan semuanya terjadi praktis pada waktu yang sama.

Real time secara Bahasa Inggris diartikan sesuatu yang terjadi seketika, namun dalam dunia teknik, kita perlu definisi yang lebih lugas.

Pengertian dalam Sistem Embedded

A real-time computer system is a computer system where the correctness of the system behavior depends not only on the logical results of the computations, but also on the physical time when these results are produced. By system behavior we mean the sequence of outputs in time of a system.

Sumber: Herman Kopetz, Real Time Systems, Design Principles for Distributed Embedded Applications 2nd edition, Springer, 2011, halaman 2

Terjemahan bebas: “Sistem komputer waktu nyata adalah system computer yang ketepatan perilakunya tergantung tidak hanya pada hasil komputasinya , namun juga waktu terjadinya hasil komputasi tersebut. Perilaku system di sini adalah urutan output terhadap waktu pada system tersebut.”

Jadi pada sistem komputer biasa, kualitas sistem hanya ditentukan hasil perhitungan yang benar, sedangkan pada komputer waktu nyata (real time), kualitas ditentukan oleh ketepatan hasil perhitungan dan waktu keluarnya hasil perhitungan tersebut.

Batasan ‘cepat’ perlu diturunkan dari fenomena fisik pada sistem. Jadi kita perlu memahami perilaku system fisik supaya dapat mendapatkan batasan waktu yang tepat.

Jika komputasi terlalu lambat maka sistem komputasi tidak dapat merespon perubahan fisik dengan baik. Jika hasil komputasi (dikeluarkan) terlalu cepat maka output juga dianggap tidak tepat.

Optimasi komputer juga diperlukan. Jika komputer yang dipakai terlalu cepat dari yang diperlukan, maka harganya akan lebih mahal. Jadi dalam hal ini perlu penentuan kecepatan komputer yang optimal.

Real time bukan hanya sekedar menggunakan prosesor yang cepat, namun juga ada masalah penjadwalan. Hal ini akan dibahas di bahasan Real Time Operating System di  bagian Scheduler (penjadwal). Pada RTOS, selain kecepatan komputasi juga ada faktor pergantian ke pekerjaan yang lebih penting.

Referensi

  • Herman Kopetz, Real Time Systems, Design Principles for Distributed Embedded Applications 2nd edition, Springer, 2011
  • Pengertian Sistem Embedded

Pengertian Cyber Physical System

Cyber Physical System (Sistem Fisik Siber) adalah sistem yang terdiri dari subsistem fisik , komputasi dan jaringan komunikasi

Pada sistem embedded, suatu mikroprosesor atau pengolah informasi lainnya dihubungkan dengan suatu system fisik. Keadaan dari system fisik dibaca oleh mikroprosesor, kemudian program di mikroprosesor mengatur system fisik. Pada system yang sederhana, kombinasi ini dapat diprogram dengan mudah. Namun pada system yang lebih kompleks, interaksi antara komputasi dan fisik ini cukup rumit. Pada tahun 2006, mulai muncul istilah ‘Cyber Physical System’, sebagai disiplin ilmu baru untuk membahas permasalahan ini.

Cyber Physical System
Cyber Physical System

Definisi Cyber Physical System

Berikut ini definisi Cyber Physical System pada beberapa literatur. 

Terjemahan bebasnya:

Definisi 1: Cyber Physical System (Sistem Fisik Siber) adalah sistem yang terdiri dari subsistem fisik , komputasi dan jaringan komunikasi

Definisi 2: Sistem Fisik Siber terdiri dari kumpulan perangkat komputasi yang berkomunikasi satu sama lain dan berinteraksi dengan dunia fisik melalui sensor dan aktuator dalam suatu umpan balik.

Definisi 3: Sistem Fisik Siber menggabungkan kemampuan siber (komputasi) dengan kemampuan fisik untuk menyelesaikan masalah-masalah yang tidak dapat diselesaikan oleh salah satu darinya saja (fisik atau komputasi)

Definisi 4: Istilah siber fisik merujuk ke gabungan erat dan koordinasi antara komputasi dan sumber daya fisik.

Definisi 5: Sistem Fisik Siber adalah sistem yang direkayasa yang dibuat dan tergantung pada integrasi erat antara komponen komputasi dan komponen fisik. Sistem Fisik Siber menggabungkan secara erat perangkat komputasi, aktuator dan kendali, infrastruktur jaringan komunikasi dan pemindaian dunia fisik.

Definis 6: Sistem Fisik Siber adalah gabungan antara komputasi dengan proses fisik

Jadi ada 3 elemen pada suatu CPS: cyber yaitu komputasi, physical yaitu system fisik yang diatur/dikendalikan, komunikasi yang menghubungkan antara beberapa komputasi yang terdistribusi dan menghubungkan antara komputasi dan physical.

Lee & Seshia menyebutkan adanya networking, artinya ada komunikasi di dalamnya. Rajeev Alur menyebutkan adanya komunikasi antar perangkat komputasi yang dipakai. NSF pada tahun 2010 tidak menyebutkan komunikasi, namun pada tahun 2021 mencantumkan ‘networking infrastructure‘ pada penjelasannya.

Berikut ini ilustrasi system CPS dengan memasukkan elemen komunikasi.

Cyber Physical System dengan komunikasi
Cyber Physical System dengan komunikasi

Adanya komunikasi membuat perilaku system lebih kompleks, karena ada factor waktu jeda pada pengiriman data.

Komputasi dan komunikasi ini dipelajari dalam ilmu distributed systems atau distributed computing.

Pada pembahasan ini kita tidak membahas aspek komunikasi ini.

Berikut ini adalah sistem CPS dengan memasukkan aktuator dan sensor.

Sistem Siber Fisikal / Sistem Siber Fisikal / Cyber Physical System
Sistem Siber Fisikal

Fungsi aktuator adalah mengubah besaran listrik menjadi besaran fisik. Fungsi sensor adalah mengubah besaran fisik menjadi besaran listrik. Keseluruhan sistem membentuk umpan balik tertutup (closed feed back loop)

Sistem Kendali Closed Loop.

Berikut ini diagram sebuah system kendali . Pada system kendali ini ada benda physical yang dikendalikan, komputasi sebagai pengendali, input biasanya dari pengguna / manusia, dan output.

Sistem kendali umpan tertutup sebagai CPS
Sistem kendali umpan tertutup sebagai CPS

Pada system kendali diinginkan output mengikuti input. Pada system ini terdapat umpan balik dari output ke komputasi, sehingga system ini juga disebut system kendali umpan tertutup, atau closed loop control.

Perilaku system kendali seperti ini dipelajari secara detail di kuliah system kendali. Di kuliah system kendali titik beratnya di analisis matematis dari system kendali tersebut.

Sistem Kendali Open Loop

Berikut ini contoh system kendali tanpa umpan balik. Keadaan dari system fisik tidak dimasukkan lagi ke komputasi. Sistem ini dapat berfungsi baik jika perilaku physical diketahui dengan baik dan tidak ada gangguan dari luar.

Sistem kendali open loop
Sistem kendali open loop

Menurut definisi CPS, system ini tidak termasuk dalam CPS. Sistem ini masih termasuk system embedded karena ada elemen komputasi di dalamnya.

Sistem Monitoring

Sistem embedded untuk monitoring
Sistem embedded untuk monitoring

Ada juga system embedded yang tidak punya input, namun hanya mengolah sinyal keluaran dari suatu benda fisik. Contohnya adalah pada alat pengukur dan perekam data. Alat ini hanya mengukur besaran fisik suatu benda, kemudian mencatat , menganalisis, mengirim ke tempat lain atau menampilkan besaran tersebut. Contohnya misalnya IoT atau internet of things untuk mencatat parameter cuaca seperti temperature, kelembaban dan curah hujan.

Menurut definisi CPS di atas, sistem monitoring ini tidak termasuk dalam CPS. Sistem ini masih termasuk system embedded karena ada elemen komputasi di dalamnya.

Algoritma Cyber Physical System

CPS melibatkan suatu sistem kendali di dalamnya, sehingga diperlukan suatu algoritma sistem kendali.

Algoritma sistem kendali yang dapat dipakai antara lain sebagai berikut

  • Model Continuous Dynamics, Model berbasis dinamika kontinu, biasanya dibuat menggunakan persamaan diferensial. Contoh yang sering dipakai adalah kendali berbasis PID (Proportional Integral Derivative)
  • Model Discrete Dynamics, yaitu model yang berbasis dinamika sistem discrete event. Contohnya adalah pemodelan dengan State Chart, dan perangkat lunaknya dibuat dengan model Finite State Machine (FSM).
  • Model Hybrid, menggabungkan antara continuous dynamics dengan discrete dynamics.

Penutup

Pada pembahasan ini kita hanya membahas terutama aspek komputasi dan physical saja. Aspek komunikasi tidak dibahas.

Referensi

 

Pengertian Sistem Embedded

Pengertian Sistem Embedded pada dunia elektronika adalah “sistem pengolah informasi yang menyatu di dalam suatu produk“.

Definisi Sistem Embedded

Istilah “embedded” adalah istilah dalam bahasa Inggris dengan arti sebagai berikut:

1.occurring as a grammatical constituent (such as a verb phrase or clause) within a like constituent

2.enclosed closely in or as if in a matrix : set firmly into a mass or material

3.attached to a military unit or group for some purpose (such as covering a conflict or providing expert advice)

sumber: “Embedded.” Merriam-Webster.com Dictionary, Merriam-Webster, https://www.merriam-webster.com/dictionary/embedded 

Arti yang paling dekat dengan arti embedded pada dunia elektronika adalah arti nomor 2, yang artinya kurang lebih “sesuatu yang menyatu atau tertanam di dalam benda lain”. Terjemahan langsung istilah ‘embedded’ adalah ‘tertanam’.

Definisi berikut diambil dari buku “Peter Marwedel, Embedded System Design 3rd edition, Springer 2018, halaman 2″

Embedded systems are information processing systems embedded into enclosing products

Pada pengertian ini embedded system adalah suatu system pengolah informasi yang digabungkan atau ditanamkan ke suatu produk atau benda lain. Sistem pengolah informasi di sini tidak harus berupa komputer atau mikroprosesor.

Tertanam atau menyatu di sini berarti bagi orang yang melihat produk hanya melihat produk saja, tidak lagi melihat prosesor di dalamnya sebagai suatu benda yang terpisah.

Berikut ini beberapa definisi menurut literatur lain.

  • An embedded system is any application where a dedicated computer is built right into the system” [Jack Ganssle, The Art of Designing Embedded Systems, 2nd Edition, Newnes, 2008]
  • An application that contains at least one programmable computer (uC, uP or DSP) and which is used by individuals who are in the main, unaware that the system is computer based. [ Pont, M.J. , Patterns for Time Triggered Embedded Systems, (2001)]
  • Any computer system hidden in any products , [David E. Simon, An Embedded Software Primer ,Addison-Wesley Professional; 1st edition (1999)]

Definisi ini menyebutkan secara spesifik bahwa sistem embedded adalah mikroprosesor, dapat berupa mikroprosesor biasa, mikrokontroler ataupun mikropsesor dari jenis digital signal processor

Komputer Umum

Sistem komputer ada yang umum (general purpose) dan embedded. Pada sistem komputer yang umum, kita masih dapat mengenali bahwa benda tersebut adalah sebuah komputer. Dari spesifikasinya biasanya berdasarkan fitur-fitur komputer, seperti kecepatan CPU (Central Processing Unit), ukuran memori dan ukuran storage. Sedangkan pada sistem embedded, biasanya spesifikasinya tidak menampilkan kemampuan komputer yang dipakai di dalamnya, namun hanya menampilkan kemampuan produknya.

Berikut ini beberapa jenis sistem komputer umum:

  1. Desktop Personal Computer
  2. Notebook atau Laptop
  3. Mobile: Smartphone dan tablet
  4. information processing: web server, server database

Berikut ini ilustrasi komputer desktop  (sumber)

Contoh komputer desktop
Contoh komputer desktop

 

Komputer Laptop
Komputer Laptop
Smartphone
Smartphone

Contoh Spesifikasi Komputer Umum

Berikut ini contoh spesifikasi laptop. Perhatikan bahwa disebut jelas tentang kemampuan CPU, memori dan storage dari laptop tersebut.

Thinkpad T495
Thinkpad T495
Spesifikasi Thinkpad T495
Spesifikasi Thinkpad T495

Contoh Produk Dengan Sistem Embedded

Berikut ini contoh mesin cuci tipe front loading otomatis. Di dalam mesin cuci ini ada mikroprosesor untuk mengendalikan semua pekerjaan mesin cuci tersebut. Namun dalam spesifikasinya sama sekali tidak disebut tentang kemampuan mikroprosesornya tersebut.

Mesin cuci Panasonic ECONAVI 8 kg
Mesin cuci Panasonic ECONAVI 8 kg

Spesifikasi:

Spesifikasi mesin cuci Panasonic

Sumber: https://www.panasonic.com/au/support/product-archives/household/laundry-irons/washing-machines/na-148vg4wau.specs.html

Sistem Mikroprosesor dan Sistem Embedded

Berikut ini diagram blok suatu sistem mikroprosor. Komponen utama pada suatu mikroprosesor adalah CPU (Central Processing Unit), memori (RAM, ROM, Flash Memory, EEPROM, EPROM, NVRAM) , Input Output dan bus mikroprosesor.

Diagram blok sistem mikroprosesor
Diagram blok sistem mikroprosesor

Arti dari sistem mikroprosesor sangat mirip dengan system embedded.

Ketika kita bicara system mikroprosesor, biasanya konteksnya kita membahas struktur susunan sistem mikroprosesor, yang terdiri dari CPU, memori dan input output.

Ketika kita membicarakan system embedded, biasanya konteksnya adalah system mikroprosesor ini akan dijadikan bagian dari suatu produk lain.

Di banyak literatur, istilah ‘sistem mikroprosesor’ sinonim dengan ‘sistem embedded’. Pada buku literatur yang baru-baru, misalkan Ketika kita mencari referensi tentang Arduino, yang merupakan mikroprosesor, seringkali judul bukunya mengandung kata ‘embedded’.

Namun perlu diingat juga bahwa tidak semua system embedded menggunakan mikroprosesor, seperti definisi yang sudah disebut di awal. Di bukunya, Peter Marwedel mencontohkan ada system embedded yang menggunakan FPGA (field programmable Gate Array) sebagai pengolah informasi. FPGA ini adalah rangkaian digital yang terdiri dari gerbang rangkaian logika dan memori, yang disusun sebagai pengolah informasi. Untuk kuliah ini kita hanya focus ke system embedded yang menggunakan mikroprosesor.

Referensi

  • Desktop computer https://en.wikipedia.org/wiki/Desktop_computer
  • Laptop computer https://en.wikipedia.org/wiki/Laptop
  • Smartphone https://en.wikipedia.org/wiki/Smartphone
  • “Embedded.” Merriam-Webster.com Dictionary, Merriam-Webster, https://www.merriam-webster.com/dictionary/embedded 
  • Peter Marwedel, Embedded System Design 3rd edition, Springer 2018
  • Jack Ganssle, The Art of Designing Embedded Systems, 2nd Edition, Newnes, 2008
  • Pont, M.J. , Patterns for Time Triggered Embedded Systems, (2001)
  • David E. Simon, An Embedded Software Primer ,Addison-Wesley Professional; 1st edition (1999)

 

 

Membuat Gelombang Sinus Dengan Arduino Nano Dan DAC MCP4725

Gelombang sinus dapat dibuat dengan Arduino Nano, dengan bantuan DAC (Digital to Analog Converter).

Arduino Nano dan UNO di dalamnya menggunakan mikrokontroler  ATmega328. ATmega328 ini tidak memiliki DAC, sehingga sebenarnya tidak mampu membuat tegangan analog secara langsung. Untuk aplikasi yang sederhana, hal ini dapat diakali dengan menggunakan fitur PWM (Pulse Width Modulation). Librarynya di Arduino menggunakan AnalogWrite() . Namun untuk menghasilkan tegangan analog yang lebih baik, diperlukan komponen DAC seperti MCP4725.

Berikut ini contoh pembangkitan gelombang sinusoidal dengan Arduino Nano dan DAC MCP4725.

Pertama rakit hubungkan MCP4725 ke Arduino. Koneksinya menggunakan protokol I2C.

Daftar pin yang dihubungkan adalah sebagai berikut:

Pin Arduino Pin MCP4725 Keterangan
A4 (SDA) SDA pin data untuk I2C
A5 (SCL) SCL pin clock untuk I2C
GND GND ground 0 volt
VCC 5V supply 5 volt

Protokol I2C menggunakan 2 kabel, yaitu SDA (data) dan SCL (clock). Kedua jalur ini sebenarnya perlu disambungkan dengan pull up menggunakan resistor, namun pada Arduino sudah ada pull up internal 10 kilo ohm, sehingga tidak perlu ditambah lagi.

MCP4725 perlu supply 5 volt, yang dapat diambil dari pin 5V dari Arduino. Namun perlu diperhatikan pada Arduino clone/KW, tegangan 5V ini biasanya kurang dari 5 volt, terutama jika menggunakan power supply dari USB.

Rangkaian Arduino Nano dan MCP4725 di breadboard
Rangkaian Arduino Nano dan MCP4725 di breadboard

Tahap selanjutnya adalah instalasi library “Adafruit MCP4725”. Ada beberapa cara instalasi:

  • Download langsung filenya dari  https://github.com/adafruit/Adafruit_MCP4725/archive/master.zip, kemudian instalasi dengan cara copy ke direktori library Arduino secara manual
  • Instalasi dari menu Arduino

Untuk melakujkan instalasi dari Arduino, lakukan tahap berikut ini:

  • Klik di menu “Tools” -> “Manage Libraries”, atau Ctrl -Shift – I
  • Cari library “Adafruit MCP4725”, kemudian klik install
  • Proses download akan dilakukan. Tunggu sampai selesai

 

Alamat MCP4725 mungkin perlu dicoba-coba, antara 0x60, 0x61, 0x62, 0x63, 0x64, 0x65. Jika ingin dicari dengan cepat, dapat menggunakan program kecil I2C Scanner untuk Arduino UNO/Nano

Berikut ini contoh software pembangkit sinusoidal. Kode ini diadaptasi dari situs https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-guide/all

Pada contoh di bawah ini, alamat MCP4725 adalah 0x63, namun mungkin perlu diubah-ubah.

/******************************************************************************
MCP4725 Example Waveform Sketch
Joel Bartlett
SparkFun Electronics
Sept. 11, 2014
https://github.com/sparkfun/MCP4725_Breakout

This sketch takes data from a lookup table to provide
waveforms to be generated by the MCP4725 DAC.

Development environment specifics:
Arduino 1.0+
Hardware Version V14

This code is beerware; if you see me (or any other SparkFun employee) at the local,
and you've found our code helpful, please buy us a round!

Distributed as-is; no warranty is given.

This code builds off the sketch written by Mark VandeWettering, which can be found here:
http://brainwagon.org/2011/02/24/arduino-mcp4725-breakout-board/
*/

#include <Wire.h>//Include the Wire library to talk I2C

//This is the I2C Address of the MCP4725, by default (A0 pulled to GND).
//Please note that this breakout is for the MCP4725A0.
#define MCP4725_ADDR 0x63
//For devices with A0 pulled HIGH, use 0x61

//Sinewave Tables were generated using this calculator:
//http://www.daycounter.com/Calculators/Sine-Generator-Calculator.phtml


int lookup = 0;//varaible for navigating through the tables

int sintab2[512] =
{
2048, 2073, 2098, 2123, 2148, 2174, 2199, 2224,
2249, 2274, 2299, 2324, 2349, 2373, 2398, 2423,
2448, 2472, 2497, 2521, 2546, 2570, 2594, 2618,
2643, 2667, 2690, 2714, 2738, 2762, 2785, 2808,
2832, 2855, 2878, 2901, 2924, 2946, 2969, 2991,
3013, 3036, 3057, 3079, 3101, 3122, 3144, 3165,
3186, 3207, 3227, 3248, 3268, 3288, 3308, 3328,
3347, 3367, 3386, 3405, 3423, 3442, 3460, 3478,
3496, 3514, 3531, 3548, 3565, 3582, 3599, 3615,
3631, 3647, 3663, 3678, 3693, 3708, 3722, 3737,
3751, 3765, 3778, 3792, 3805, 3817, 3830, 3842,
3854, 3866, 3877, 3888, 3899, 3910, 3920, 3930,
3940, 3950, 3959, 3968, 3976, 3985, 3993, 4000,
4008, 4015, 4022, 4028, 4035, 4041, 4046, 4052,
4057, 4061, 4066, 4070, 4074, 4077, 4081, 4084,
4086, 4088, 4090, 4092, 4094, 4095, 4095, 4095,
4095, 4095, 4095, 4095, 4094, 4092, 4090, 4088,
4086, 4084, 4081, 4077, 4074, 4070, 4066, 4061,
4057, 4052, 4046, 4041, 4035, 4028, 4022, 4015,
4008, 4000, 3993, 3985, 3976, 3968, 3959, 3950,
3940, 3930, 3920, 3910, 3899, 3888, 3877, 3866,
3854, 3842, 3830, 3817, 3805, 3792, 3778, 3765,
3751, 3737, 3722, 3708, 3693, 3678, 3663, 3647,
3631, 3615, 3599, 3582, 3565, 3548, 3531, 3514,
3496, 3478, 3460, 3442, 3423, 3405, 3386, 3367,
3347, 3328, 3308, 3288, 3268, 3248, 3227, 3207,
3186, 3165, 3144, 3122, 3101, 3079, 3057, 3036,
3013, 2991, 2969, 2946, 2924, 2901, 2878, 2855,
2832, 2808, 2785, 2762, 2738, 2714, 2690, 2667,
2643, 2618, 2594, 2570, 2546, 2521, 2497, 2472,
2448, 2423, 2398, 2373, 2349, 2324, 2299, 2274,
2249, 2224, 2199, 2174, 2148, 2123, 2098, 2073,
2048, 2023, 1998, 1973, 1948, 1922, 1897, 1872,
1847, 1822, 1797, 1772, 1747, 1723, 1698, 1673,
1648, 1624, 1599, 1575, 1550, 1526, 1502, 1478,
1453, 1429, 1406, 1382, 1358, 1334, 1311, 1288,
1264, 1241, 1218, 1195, 1172, 1150, 1127, 1105,
1083, 1060, 1039, 1017, 995, 974, 952, 931,
910, 889, 869, 848, 828, 808, 788, 768,
749, 729, 710, 691, 673, 654, 636, 618,
600, 582, 565, 548, 531, 514, 497, 481,
465, 449, 433, 418, 403, 388, 374, 359,
345, 331, 318, 304, 291, 279, 266, 254,
242, 230, 219, 208, 197, 186, 176, 166,
156, 146, 137, 128, 120, 111, 103, 96,
88, 81, 74, 68, 61, 55, 50, 44,
39, 35, 30, 26, 22, 19, 15, 12,
10, 8, 6, 4, 2, 1, 1, 0,
0, 0, 1, 1, 2, 4, 6, 8,
10, 12, 15, 19, 22, 26, 30, 35,
39, 44, 50, 55, 61, 68, 74, 81,
88, 96, 103, 111, 120, 128, 137, 146,
156, 166, 176, 186, 197, 208, 219, 230,
242, 254, 266, 279, 291, 304, 318, 331,
345, 359, 374, 388, 403, 418, 433, 449,
465, 481, 497, 514, 531, 548, 565, 582,
600, 618, 636, 654, 673, 691, 710, 729,
749, 768, 788, 808, 828, 848, 869, 889,
910, 931, 952, 974, 995, 1017, 1039, 1060,
1083, 1105, 1127, 1150, 1172, 1195, 1218, 1241,
1264, 1288, 1311, 1334, 1358, 1382, 1406, 1429,
1453, 1478, 1502, 1526, 1550, 1575, 1599, 1624,
1648, 1673, 1698, 1723, 1747, 1772, 1797, 1822,
1847, 1872, 1897, 1922, 1948, 1973, 1998, 2023
};


void setup()
{
Wire.begin();

// Set A2 and A3 as Outputs to make them our GND and Vcc,
//which will power the MCP4725
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);

digitalWrite(A2, LOW);//Set A2 as GND
digitalWrite(A3, HIGH);//Set A3 as Vcc
}
//---------------------------------------------------
void loop()
{
Wire.beginTransmission(MCP4725_ADDR);
Wire.write(64); // cmd to update the DAC
Wire.write(sintab2[lookup] >> 4); // the 8 most significant bits...
Wire.write((sintab2[lookup] & 15) << 4); // the 4 least significant bits...
Wire.endTransmission();
lookup = (lookup + 1) & 511;
}

Definisi alamat MCP4725 ada di baris berikut ini:

#define MCP4725_ADDR 0x63

Versi lain software pembangkit sinusoidal dapat dilihat di https://github.com/adafruit/Adafruit_MCP4725/blob/master/examples/sinewave/sinewave.ino

Tegangan output sinusoidal dapat diukur di pin OUT pada MCP4725.

Berikut ini contoh output yang diukur dengan osiloskop.

Tegangan sinusoidal dari MCP4725 dan Arduino Nano
Tegangan sinusoidal dari MCP4725 dan Arduino Nano

Frekuensi gelombang sinusoidal adalah 4,5039 Hz . Jumlah sampel dalam 1 periode adalah 512. Periode sampling adalah 1/4,5039/512 = 0,434 milidetik. Frekuensi sampling adalah 2306 Hz.

Demikianlah cara sederhana membuat gelombang sinusoidal pada Arduino Nano dengan menggunakan DAC MCP4725. Namun demikian rangkaian ini masih mempunyai kelemahan:

  • Tegangan referensi DAC menggunakan tegangan 5V dari Arduino Nano yang kalau diukur tegangannya kurang dari 5 volt (sekitar 4,6 volt), dan ada ripple / noise di situ. Solusinya adalah menambahkan filter atau regulator supaya tegangan VCC untuk MCP4725 lebih stabil.
  • Tegangan keluaran masih terbatas dari 0 sampai 5 volt, sesuai tegangan VCC pada MCP4725. Jika perlu jangkauan tegangan lain maka perlu ditambah rangkaian penguat / pengubah level, yang mudahnya dapat dibuat dengan rangkaian op-amp
  • Belum ada filter rekonstruksi (reconstruction filter), untuk menghilangkan efek tangga pada tegangan output DAC. Sistem DAC yang lebih lengkap dapat dilihat di artikel https://elektrologi.iptek.web.id/sistem-filter-digital/

Referensi

I2C Scanner Untuk Arduino UNO & Nano

I2C Scanner Untuk Arduino UNO & Nano diperlukan untuk mengecek periferal apa saja yang terhubung ke bus I2C. Kadang-kadang ada modul yang dijual dengan berbagai alamat (seperti MCP4725). I2C scanner ini juga dapat membantu untuk mengecek kualitas sambungan pada bus I2C.

Kadang-kadang bus I2C tidak berfungsi dengan baik karena kabel terlalu panjang, resistor pull-up kurang kecil, bidirectional logic converter tidak jalan (jika bus menggunakan tegangan ganda 5 volt dan 3,3 volt), dan berbagai hal lainnya. Software I2C scanner ini dapat membantu mencari terjadinya kesalahan tersebut.

Ide software ini diambil dari situs https://playground.arduino.cc/Main/I2cScanner/

// --------------------------------------
// i2c_scanner
// https://playground.arduino.cc/Main/I2cScanner/
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//


#include <Wire.h>


void setup()
{
Wire.begin();

Serial.begin(115200);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}


void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for (address = 1; address < 127; address++ )
{
Serial.println(address, HEX);
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");

nDevices++;
}
else if (error == 4)
{
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan


Referensi

Kekurangan Arduino Mega 2560

Apa kekurangan Arduino Mega 2560? Untuk itu pertama dibandingkan dulu spesifikasi antara Arduino Mega 2560 dengan Arduino UNO Rev 3.

Spesifikasi

Perbandingan antara Arduino Mega 2560 dengan Arduino UNO

  Arduino UNO Rev 3
Arduino Mega 2560 Rev 3
Prosesor / Mikrokontroler ATmega328P ATmega 2560
Clock 16 MHz 16 MHz
SRAM 2 KB 8 KB
EEPROM 1 KB 4 KB
Flash Memory 32 KB 256 KB, 8 KB untuk bootloader
Digital I/O 14 (6 dengan PWM) 54 pin (15 dengan PWM)
Analog Input 6 16 pin
berat 25 g 37 g
Ukuran 68,6 x 53,4 mm 101,52 mm x 53,3 mm
Harga
  • Original: Rp 300 ribu ~ Rp 400 ribu
  • Clone / KW: Rp 60 ribuan ~ Rp 70 ribuan
  • Original: Rp 500 ~ Rp 600 ribuan
  • Clone/ KW: Rp 100 ribuan

Dari hasil perbandingan tersebut dapat disimpulkan bahwa secara teknis Arduino Mega 2560 lebih unggul dari sisi teknis, namun kelemahannya dibandingkan Arduino  UNO adalah harganya yang jauh lebih mahal, dan ukurannya yang lebih besar.

Kekurangan Arduino Mega 2560 Rev 3 adalah sebagai berikut

  • harga lebih mahal
  • ukuran lebih besar
  • bobot lebih berat

Keuntungan Arduino Mega 2560 dibandingkan Arduino UNO adalah sebagai berikut:

  • memori SRAM (Static Random Access Memory) lebih besar, 8 KB vs 2 KB
  • memori EEPROM (Electrically Erasable Programmable Read Only Memory) lebih besar, 4 KB vs 1 KB
  • memori Flash (untuk diisi program) lebih besar, 256 KB vs 32 KB
  • jumlah pin lebih banyak

Kesamaannya adalah sama-sama menggunaan prosesor dari keluarga AVR, dan kecepatan clocknya adalah sama-sama 16  MHz. Jadi program yang dijalankan di Arduino Mega akan sama kecepatannya dengan dijalankan di Arduino UNO.

Referensi

Cara Menghubungkan 2 Arduino

Dua buah board Arduino UNO/Nano dapat dihubungkan dengan komunikasi serial, sehingga keduanya dapat berkomunikasi.

Alternatif komunikasi serial yang dapat dipakai adalah sebagai berikut:

  • Komunikasi Serial Asinkron
  • Komunikasi Serial I2C / TWI (Two Wire Interface)
  • Komunikasi SPI (Serial Peripheral Interface)

Komunikasi Serial Asinkron

Pada komunkasi serial asinkron, port yang dipakai adalah port komunikasi serial TX & RX, atau pin D0 dan D1 pada Arduino. Cara menghubungkannya adalah silang, yaitu TX dihubungkan ke RX , RX dihubungkan ke TX. Pengiriman data dilakukan dengan menggunakan library Serial pada Arduino. Pada komunikasi ini hanya dapat dihubungkan 2 buah board Arduino.

Komunikasi asinkron pada Arduino dapat menggunakan hardware dan software. Secara hardware, komunikasi asinkron terhubung ke pin D0 dan D1. Jika perlu tambahan komunikasi serial, dapat menggunakan library SoftwareSerial. 

Jika menggunakan library SoftwareSerial, port yang digunakan bebas.

Berikut ini skema menghubungkan Arduino dengan komunikasi sinkron, menggunakan port asinkron bawaan aslinya. Pin TX di Arduino pertama dihubungkan ke RX di Arduino kedua. Pin RX di Arduino pertama dihubungkan ke TX di Arduino kedua.

Cara menghubungkan 2 arduino dengan komunikasi asinkron
Cara menghubungkan 2 arduino dengan komunikasi asinkron

Komunikasi Serial I2C/TWI

Pada komunikasi ini digunakan protokol TWI (Two Wire Interface). Pin yang dipakai adalah SDA (ADC4) dan SCL (ADC5).

Berikut ilustrasi port pada Arduino:

Pin Arduino UNO
Pin Arduino UNO

Pada protokol TWI/I2C, 1 prosesor menjadi master, sedangkan lainnya adalah slave. Pengalamatan pada I2C adalah 7 bit, jadi jumlah node maksimum yang dapat dihubungkan pada bus I2C adalah 128 buah prosesor.

Berikut ini contoh cara menghubungkan 2 buah Arduino dengan protokol I2C.

Arduino UNO Master Slave I2C
Arduino UNO Master Slave I2C

Tutorialnya dapat diikuti di https://www.arduino.cc/en/Tutorial/MasterWriter

Komunikasi SPI (Serial Peripheral Interface)

Pada komunikasi ini digunakan protokl SPI. Pin yang dipakai adalah SCK, MOSI, MISO dan SS.

Daftar pin yang dipakai untuk SPI  pada Arduino adalah sebagai berikut:

Jalur SPI
Pin Arduino Pin ATmega328
MOSI 11 or ICSP-4 PB3
MISO 12 or ICSP-1 PB4
SCK 13 or ICSP-3 PB5
SS 10 PB2

Berikut cara menghubungkan 2 perangkat yang menggunakan protokol SPI

 

Arduino Dengan SPI
Arduino Dengan SPI

Tutorial menghubungkan 2 Arduino dengan SPI dapat diikuti di https://circuitdigest.com/microcontroller-projects/arduino-spi-communication-tutorial

Referensi

Berapakah besar arus maksimal masing masing pin digital Arduino?

Arus maksimal masing-masing pin digital Arduino UNO dan Arduino Nano adalah 40 milliampere (mA), dengan asumsi tidak melanggar batasan arus maksimum VCC dan GND sebesar 200 mA.

Arduino UNO dan Arduino Nano menggunakan prosesor ATmega328. Arus maksimal ini dijelaskan di datasheet prosesor ATmega328 tersebut sebagai berikut:

ATmega328 absolute maximum rating
ATmega328 absolute maximum rating
 

Namun demikian perlu diperhatikan batasan arus yang lain, yaitu arus maksimum di pin VCC dan GND, yaitu 200 mA. Jumlah pin pada ATmega328 adalah 23 buah, jadi kalau semua pin mengeluarkan arus yang sama, maka arus di setiap pin adalah 200/23 = 8.7 mA.

Jika ingin mengeluarkan arus 40 mA, maka maksimum jumlah pin yang memberikan arus 40 mA adalah 200/40 = 5 pin saja.

Board Arduino tidak semuanya menggunakan prosesor ATmega328. Untuk Arduino yang menggunakan prosesor lain, maka perlu dicek datasheet masing-masing prosesornya.

Perangkat Lunak Untuk Simulasi Arduino

Arduino dapat disimulasikan dengan perangkat lunak apa saja?

Berikut ini beberapa simulator Arduino dalam bentuk perangkat lunak (software):

  1. Atmel Studio (https://www.microchip.com/mplab/avr-support/atmel-studio-7)
  2. TinkerCad (https://www.tinkercad.com/) , simulasi berbagai perangkat termasuk Arduino. Gratis. Hanya Online
  3. Paul Ware’s Arduino simulator (https://github.com/Paulware/ArduinoDebugger/). Gratis & open source
  4. Simduino  (https://apps.apple.com/us/app/simduino/id526927905), hanya jalan di aplikasi Apple. Berbayar
  5. Emulare Arduino simulator (http://emulare.sourceforge.net/)
  6. Proteus Virtual System Modelling (VSM) https://www.labcenter.com/simulation/
  7. Virtronics Simulator for Arduino (http://www.virtronics.com.au/Simulator-for-Arduino.html)
  8. Arduino IO Simulator https://xevro.be/
  9. Circuit.io (https://www.circuito.io/) (hanya online)
  10. Virtual Breadboard (http://www.virtualbreadboard.com/)

Simulator Arduino yang sudah tidak aktif:

  1. Autodesk Eagle: fitur simulasi sudah tidak ada, tinggal PCB design saja
  2. Autodesk Circuits: sudah jadi tinkercad
  3. ArduinoSim: tidak dapat dicari lagi
  4. Arduino Simulator (https://sourceforge.net/projects/arduinosim/) sudah tidak aktif
  5. Electronify (https://www.electronify.org) ,sudah tidak aktif
  6. Yenka (https://www.yenka.com/). Sudah tidak menyediakan Arduino

 

Pemrograman Arduino Dengan Java, Mungkinkah?

 

Arduino UNO R3
Arduino UNO R3

Pemrograman Arduino dengan Java, mungkinkah? Arduino UNO / Nano tidak dapat diprogram dengan bahasa pemrograman Java. Alasan mudahnya karena memori RAM dan Flash pada Arduino terlalu kecil untuk menjalankan Java Virtual Machine (JVM).

Sejauh ini prosesor yang mendukung JVM adalah sebagai berikut:

  • x86
  • x86-64
  • SPARC
  • MIPS
  • Itanium
  • Power ISA
  • ARM
  • Alpha
  • S/390
  • z/Architecture
  • m68k

JVM juga memerlukan sistem operasi di bawahnya. Berikut ini sistem operasi yang mendukung JVM:

  • Windows
  • Linux
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Solaris
  • OpenSolaris
  • Darwin
  • macOS
  • iOS
  • BeOS
  • Haiku
  • AIX
  • IRIX
  • OS/2
  • Windows Mobile
  • AmigaOS

Arsitektur CPU pada Arduino UNO adalah AVR. Sistem operasi pada Arduino UNO juga tidak mendukung JVM.

Jika perlu program Java yang mengakses port pada Arduino, biasanya dilakukan dengan cara menjalankan program Java di komputer yang mendukung JVM, dengan mengirimkan perintah-perintah melalui port serial ke Arduino UNO. Contohnya adalah dengan menggunakan library Processing.

Referensi

  • https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines
  • https://processing.org/

 

Bagaimana mengatasi regulator Arduino yang panas?

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 Catu Daya Arduino UNO
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.

 

Arduino UNO R3
Arduino UNO R3

 

 

 

Cara Menghapus EEPROM Arduino

Cara menghapus EEPROM Arduino ada 2 cara:

  • 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;

void setup() {
  /** Empty setup. **/
}

void loop() {
  /***
    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.

    Larger AVR processors have larger EEPROM sizes, E.g:
    - Arduno Duemilanove: 512b EEPROM storage.
    - Arduino Uno:        1kb EEPROM storage.
    - Arduino Mega:       4kb EEPROM storage.

    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:

 

Arduino UNO R3
Arduino UNO R3