Frekuensi DAC MCP4725 pada Arduino Nano ATmega328

Pada percobaan ini diukur frekuensi & perioda konversi DAC (Digital to Analog Converter) tipe MCP4725  pada modul Arduino Nano dengan prosesor ATmega328.

Rangkaian sistem adalah sebagai berikut

 

Kode yang dipakai untuk pengujian adalah sebagai berikut:

// idea from https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-guide/all
#define MCP4725_ADDR 0x60
#include <Wire.h>  //Include the Wire library to talk I2C

int counter;  // how many iterations
int time_begin = 0;
int time_end = 0;
int duration;
void setup() {
  Wire.begin();
  Serial.begin(115200);
  counter = 0;
  Serial.println("start benchmark");
}
//---------------------------------------------------
void loop() {
  int value;  // angka yang ditulis
  value = 0;  // minimum value
  Wire.beginTransmission(MCP4725_ADDR);
  Wire.write(64);                 // cmd to update the DAC
  Wire.write(value >> 4);         // the 8 most significant bits...
  Wire.write((value & 15) << 4);  // the 4 least significant bits...
  Wire.endTransmission();

  value = 4095;  // maximum value
  Wire.beginTransmission(MCP4725_ADDR);
  Wire.write(64);                 // cmd to update the DAC
  Wire.write(value >> 4);         // the 8 most significant bits...
  Wire.write((value & 15) << 4);  // the 4 least significant bits...
  Wire.endTransmission();

  counter = counter + 1;
  if (counter >= 10000) {
    float  period;
    int time_now = millis();
      counter = 0;
    duration = time_now - time_begin;
    period = duration / 10000.0 / 2.0 ;
    Serial.print("period (ms): ");
    Serial.println(period);
    //  prepare next round
    time_begin = time_now;
  }
}

I2C 100 kHz

ATmega328 menggunakan 2 frekuensi I2C: 100 kHz dan 400 kHz. Percoban pertama menggunakan kecepatan default adalah 100 kHz.

Sinyal yang dihasilkan pada output MCP4725 adalah sebagai berikut:

Tampilan pada serial monitor adalah sebagai berikut:

start benchmark
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43

Pengukuran dengan osiloskop menunjukkan sinyal persegi dengan frekuensi 1,166 kHz

Jumlah transisi adalah 2x frekuensi ini, jadi frekuensi konversi adalah 1,166 x 2 = 2,332 kHz

I2C 400 kHz

Pada pengukuran ini, kecepatan I2C dinaikkan menjadi 400 kHz. Caranya menggunakan fungsi Wire.setClock()

Perioda menjadi 0,15 ms

start benchmark
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15

Output DAC diukur dengan osiloskop, dengan hasil sebagai berikut

Frekuensi output adalah 3,41733 kHz, sehingga frekuensi DAC adalah 2x 3,417 = 6,834 kHz

Kesimpulan

Dengan clock I2C 100 kHz, didapatkan

  • Perioda konversi ADC adalah 0,43 ms
  • frekuensi konversi ADC adalah 2,332 kHz

Dengan clock I2C 400 kHz, didapatkan

  • Perioda konversi ADC adalah 0,15 ms
  • frekuensi konversi ADC adalah 6,384 kHz

Referensi

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

 

Kelebihan dan Kekurangan Arduino Nano Dibandingkan Arduino UNO

Kelebihan Arduino Nano dibandingkan Arduino UNO:

  • Arduino Nano ukurannya lebih kecil dibandingkan Arduino UNO
  • Arduino Nano cocok untuk dipasang di breadboardd

Kekurangan Arduino Nano dibandingkan Arduino UNO:

  • Beberapa modul tersedia sebagai shield untuk Arduino UNO, namun tidak dapat / sulit disambungkan ke Arduino Nano
  • Untuk prototyping yang cepat, kabel dapat langsung dimasukkan ke konektor pada Arduino UNO
  • Pada Arduino UNO terdapat konektor power supply. Pada Arduino Nano, power supply ini terhubung ke pin VIN, tidak melalui konektor khusus.

Berikut ini perbandingan ukuran Arduino UNO dan Nano. Arduino UNO lebih besar dibandingkan Arduino Nano.

Arduino UNO dan Arduino Nano

Arduino UNO dan Arduino Nano

Berikut ini Arduino Nano dipasang di breadboard. Pada rangkaian itu Arduino Nano dihubungkan dengan LCD OLED 0.91″

Arduino Nano di breadboard dengan OLED 0.91"

Arduino Nano terpasang di breadboard

Berikut ini Arduino UNO dengan modul shield TFT LCD 2.4″.  Shield dapat dipasang langsung di atas Arduino UNO. Shield ini tidak dapat dipasang ke breadboard.

Arduino UNO dan shield TFT LCD 2.4"

Arduino UNO dan shield TFT LCD 2.4″

Berikut ini foto konektor USB (di sebelah kiri) dan konektor power (di sebelah kanan) pada Arduino UNO.

Konektor USB dan power pada Arduino UNO

Konektor USB dan power pada Arduino UNO

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.

Apakah program yang sudah diupload pada Arduino bisa diedit dan diupload ulang?

Program yang sudah diupload ke Arduino tidak dapat diedit lagi. Tepatnya: bisa diambil kalau Arduinonya belum dikunci, kodenya sudah tidak dalam bentuk awal. Kode dapat diedit, namun sulit sekali karena dalam bahasa assembly.

Arduino UNO R3

Arduino UNO R3

Program sketch Arduino menggunakan bahasa C++, dalam bentuk format teks program. Filenya menggunakan ekstensi *.INO. Ketika akan diupload ke Arduino, program tersebut diubah dulu oleh compiler dan linker menjadi file *.HEX . File *.HEX ini berisi kode-kode mesin yang akan diterjemahkan oleh prosesor di Arduino menjadi instruksi yang akan dikerjakan. Kode bahasa C++ tidak ada di dalam file HEX tersebut, sehingga kita tidak dapat lagi mengedit progam yang sudah diupload ke Arduino.

Arduino IDE dengan program Blink

Arduino IDE dengan program Blink

Berikut ini adalah source code untuk membuat LED berkedip, sumbernya dari contoh di Arduino IDE (File -> Examples -> 01.Basics -> Blink.

Penjelasan tentang software tersebut dapat juga dibaca di artikel “Arduino Tutorial Blink“.

Pada potongan kode berikut ini , komentar pada kode dihilangkan sehingga hanya source code pentingnya saja yang ditampilkan.

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH);level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
 

Software itu dicompile, menghasilkan binary dalam format HEX dengan nama “Blink.ino.hex”.

File “Blink.ino.hex” ini yang kemudian dimasukkan ke dalam prosesor di Arduino UNO, yaitu ATmega328. Format HEX ini adalah format teks ASCII , sedangkan untuk melihat wujud data ini dalam bentuk binary, mesti menggunakan software avr-objcopy, yang biasanya di Windows ada di “C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy”.

File HEX ini diubah dengan avr-objcopy menjadi format binary, dengan perintah sebagai berikut:

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -I ihex Blink.ino.hex -O binary blink.bin

Isi file dilihat dengan utility HxD (), hasilnya sebagai berikut:

Kode biner program di Arduino

Kode biner program di Arduino

Dari kode biner tersebut nampak sudah tidak ada lagi teks source code yang aslinya. Sehingga teks asli source code tidak dapat lagi diedit berdasarkan program yang sudah diupload ke Arduino UNO.

Untuk melihat kerja dari program binary tersebut dapat menggunakan fitur disassembly, namun sangat sulit dibaca dibandingkan dengan source code aslinya.

Kode biner tersebut dapat dibaca dari prosesor ATmega328, namun syaratnya adalah fuse bit untuk membaca FLASH memory pada ATmega328 belum dikunci.

Kode program tersebut dapat diubah ke dalam bahasa assembly, dengan perintah berikut ini:

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objdump" –j .sec1 –d –m avr5 Blink.ino.hex > blink.asm

File blink.asm berisi kode dalam bahasa assembly, namun membacanya cukup sulit. Contoh kodenya dapat dilihat di tautan berikut ini: blink.asm

 

Referensi

 

Cara Membuat Smart Room

Smart Room dapat dibuat dengan menggunakan mikroprosesor. Berikut ini tahap-tahap pembuatan smart room tersebut.

Menentukan Tujuan Smart Room

Tahap pertama dari sebuah pekerjaan/proyek adalah menentukan tujuan utama pekerjaan tersebut.

Berikut ini  beberapa alternatif tujuan sebuah smart room

  • Meningkatkan kenyamanan ruangan, bisa dari sisi pencahayaan, temperatur, kelembaban
  • Menghemat pemakaian energi. Suatu ruangan memerlukan temperatur untuk penerangan dan pemanasan/pendinginan
  • Meningkatkan keamanan ruangan

Menentukan Spesifikasi Sistem

Setelah tujuan ditentukan,berikutnya adalah menentukan spesifikasi teknis dari ruangan tersebut.

Hal-hal yang perlu diperhatikan pada spesifikasi smart-room:

  • Apakah temperatur perlu diukur?
  • Apakah temperatur perlu dikendalikan?
  • Apakah kelembaban perlu diukur?
  • Apakah kelembaban perlu dikendalikan?
  • Apakah cahaya perlu diukur?
  • Apakah cahaya perlu dikendalikan?
  • Temperatur ruangan diukur dengan ketelitian tertentu, misal 1 derajat Celcius, 0,5 derajat Celcius dan sebagainya
  • Rentang temperatur ruangan ditentukan. Hal ini untuk menentukan rentang sensor temperatur yang diperlukan.
  • Target temperatur yang diinginkan
  • Ketelitian pengukuran kelembaban.
  • Rentang kelembaban ruangan yang perlu diukur
  • Target kelembaban yang diinginkan.

Membuat Perancangan Sistem Secara Keseluruhan

Pada tahap ini dibuat arsitektur sistem secara keseluruhan. Aliran data & informasi ditentukan.

Perancangan perangkat keras

Pada tahap ini dilakukan pembuatan rancangan perangkat keras.

Hal-hal yang perlu ditentukan:

  • Menentukan mikrokontroler yang dipakai , jika menggunakan mikroprosesor
  • Menentukan sensor-sensor yang dipakai
  • Menentukan aktuator-aktuator yang diperlukan
  • Menentukan catu daya (power supply) yang diperlukan
  • Kotak untuk menyimpan perangkat

Berikut ini contoh sistem smart room dengan sebuah mikrokontroler sebagai pengendali utama.

Blok Diagram Perangkat Keras Smart-Room

Blok Diagram Perangkat Keras Smart-Room

Contoh prosesor populer yang dapat dipakai di antaranya:

  • Arduino UNO (ATmega328)
  • Arduino Nano (ATmega328)
  • ESP32 (Espressif)
  • ESP8266

ESP32 dan ESP8266 dapat dipakai jika kita memerlukan WiFi atau Bluetooth. Jika tidak perlu komunikasi nirkabel, cukup menggunakan Arduino berbasis ATmega328.

Contoh sensor yang dapat dipakai

  • LM35: sensor temperatur analog
  • DS18S20: sensor temperatur digital
  • BMP280: sensor temperatur dan tekanan udara
  • BME280: sensor temperatur, kelembaban dan tekanan udara
  • LDR (Light Dependent Resistor): sensor cahaya
  • Photodiode : sensor cahaya

Contoh Display yang dapat dipakai:

  • LCD 16×2
  • LCD 20×4
  • LCD matrix

Perancangan perangkat lunak

Pada tahap ini dilakukan hal-hal sebagai berikut

  • menentukan apakah akan menggunakan sistem operasi. pada sistem seperti ini sering dipakai sistem operasi waktu nyata (Real Time Operating System /RTOS ). Salah satu RTOS yang sering dipakai adalah FreeRTOS (https://www.freertos.org/)
  • membuat model diagram alir (flow chart)
  • membuat model aliran data (data flow diagram)
  • membuat model FSM (finite state machine) jika pada sistem terdapat proses yang memerlukan FSM
  • membuat model pengolahan sinyal dengan DSP (Digital Signal Processing), jika terdapat pengolahan sinyal secara digital. Umumnya melibatkan filter digital , equalizer digital, perekaman data digital.

Implementasi Perangkat Keras

Pada tahap ini dibuat papan rangkaian dengan PCB (Printed Circuit Board)

Implementasi Perangkat Lunak

Pada tahap ini dilakukan proses pembuatan perangkat lunak untuk mikrokontroler

Pengujian sistem

Pada tahap ini dilakukan pengujian untuk membandingkan antara perilaku sistem dengan spesifikasi yang diinginkan. Untuk itu diperlukan pengukuran-pengukuran untuk kemudian dibandingkan dengan angka-angka yang diinginkan pada spesifikasi.

Pengujian ini biasanya dilakukan secara kuantitatif, sehingga cukup obyektif.

Perangkat yang diperlukan untuk pengujian sistem di antaranya

  • Termometer digital atau analog sesuai dengan rentang temperatur dan ketelitian yang diinginkan
  • Higrometer digital atau analog sesuai dengan rentang kelembaban dan ketelitian pengukuran kelembaban.
  • Light Meter untuk mengukur pencahayaan ruangan
  • Voltmeter / Wattmeter untuk mengukur unjuk kerja tegangan/ arus/ daya pada rangkaian.

Validasi Sistem

Pada tahap ini dilakukan perbandingan antara tujuan sistem dengan perilaku sistem. Jika sistem yang dibuat sudah dapat menyelesaikan permasalahan di tujuan, maka sistem dapat dikatakan sudah berhasil divalidasi.

Validasi ini biasanya dilakukan secara kualitatif sehinggak agak sedikit subyektif.

Sumber Clock pada Rangkaian Elektronik

Beberapa rangkaian elektronik memerlukan clock dengan frekuensi tertentu untuk dapat bekerja, contohnya adalah sistem mikroprosesor/mikrokontroler dan rangkaian digital sinkron. Pada artikel ini diuraikan beberapa sumber clock dengan berbagai akurasi.

Secara ringkas sumber clock yang umum dipakai adalah sebagai berikut

  • Osilator berbasis induktor/kapasitor
  • Osilator berbasis kristal: kristal saja, kristal dengan kompensasi temperatur (TCXO dan MCXO), kristal dengan oven (OCXO), kristal dengan GPS (GPSDO)

Osilator Berbasis Induktor / Kapasitor

Osilator menghasilkan gelombang sinusoidal dengan frekuensi tertentu. Umumnya osilator dibuat dengan komponen pasif resistor, induktor dan kapasitor, serta komponen aktif transistor ataupun op-amp.

Frekuensi sinyal yang dihasilkan pada rangkaian jenis ini tergantung pada nilai induktor / kapasitor yang dipakai. Nilai induktor/kapasitor ini dapat berubah karena waktu ataupun pengaruh temperatur, sehingga frekuensi sinyal yang dihasilkan juga berubah, maka ketepatan frekuensi yang dihasilkan rendah.

Berikut ini contoh rangkaian osilator dengan komponen aktif transistor [sumber].

Osilator dengan transistor

Berikut ini adalah contoh relaxation oscillator dengan komponen aktif op-amp. [sumber]

Osilator dengan op-amp

 

Osilator Berbasis Kristal

Pada osilator jenis ini, sinyal clock dihasilkan menggunakan bahan piezoelektrik yang bergetar dengan suatu frekuensi tertentu. Frekuensi getaran pada bahan piezoelektrik ditentukan oleh ukurannya, sehingga frekuensi sinyal yang dihasilkan dapat sangat tepat.

Nilai frekuensi kristal umumnya dinyatakan untuk temperatur tertentu. Ukuran fisik kristal terpengaruh oleh temperatur, jadi jika temperatur berubah, maka frekuensi sinyal clock yang dihasilkan juga berubah.

Berikut ini contoh komponen kristal [sumber]

Kristal 12 MHz dan resonator 18.083 MHz

Berikut ini contoh bentuk fisik kristal [sumber]

Untuk dapat menghasilkan sinyal clock, kristal masih perlu disambung dengan beberapa komponen. Contoh rangkaian osilator berbasis kristal misalnya sebagai berikut [sumber]

Osilator Colpitts Crystal

Pada kebanyakan mikrokontroler, sudah disiapkan rangkaian clock di dalam mikrokontroler tersebut, sehingga untuk mengaktifkan kristal cukup disambung ke mikrokontroler dan ditambahkan 2 buah kapasitor. Nilai kapasitor umumnya disesuaikan dengan jenis & ukuran kristal yang digunakan, dan sudah ditentukan di datasheet mikrokontroler tersebut. [sumber]

Osilator kristal untuk mikrokontroler/mikroprosesor

Osilator Kristal Dengan Kompensasi Temperatur

Osilator kristal biasa mempunyai kelemahan, yaitu nilai frekuensinya masih berubah terhadap temperatur. Untuk mengatasi hal tersebut, dapat digunakan kristal yang frekuensinya dikompensasi terhadap perubahan temperatur. Komponen ini disebut sebagai Temperature Compensated Crystal (TCXO). Pada TCXO, kompensasi dilakukan secara analog dengan menambahkan rangkaian tertentu.

Ada juga kompensasi yang dilakukan secara digital dengan menambahkan mikroprosesor, dengan teknologi Microcontroller Compensation (MCXO).

TCXO dan MCXO sudah tersedia dalam bentuk modul, sehingga memudahkan untuk dipakai.

Contoh TCXO yang populer dipakai sebagai real time clock adalah DS3231 dari Maxim Integrated. DS3231 ini banyak dijual dalam bentuk modul yang sudah dilengkapi dengan batere Lithium sehingga waktu yang disimpan di dalamnya tidak hilang jika sumber listrik dimatikan.

Real Time Clock DS3231

TCXO TG2520SMN dari Epson

Sumber

MCXO MX-503 dari Microsemi (Microchip)

Osilator Kristal Dengan Pengendalian Temperatur (OCXO)

Pada osilator jenis ini, sebagai sumber frekuensi digunakan kristal yang temperaturnya dijaga dengan suatu sistem pengendalian temperatur. Sistem ini disebut juga sebagai Crystal Oven ataupun Oven Controlled Crystal Oscillator (OCXO)

Dimensi OCXO cukup besar, karena di dalamnya mesti ada rangkaian pemanas, pengendali temperatur dan isolator supaya temperatur stabil.

Bentuk fisik OCXO

Bentuk fisik OCXO

Perbandingan ketepatan osilator kristal dapat dilihat pada tabel berikut [sumber]

Perbandingan osilator

Osilator Kristal Dengan GPS

Jika ketepatan kristal OCXO masih kurang, maka ketepatannya masih dapat ditingkatkan dengan menggunakan bantuan sinyal GPS. Sistem ini disebut sebagai GPS Clock atau GPS disciplined oscillator (GPSDO).

Blok diagram sistem GPSDO adalah sebagai berikut [sumber]

Blok diagram GPSDO

Blok diagram GPSDO

Bentuk fisik GPSDO

Bentuk fisik GPSDO

Referensi

 

FreeRTOS Untuk Arduino AVR, ESP32 dan STM32F103 Blue Pill

Sistem operasi FreeRTOS dapat diaplikasikan pada berbagai mikrokontroler. Pada tulisan ini diulas SDK (IDE + compiler) yang dapat dipakai untuk menjalankan FreeRTOS pada Arduino (UNO+Nano), ESP32 dan STM32F103 (Blue Pill)

Arduino

Arduino Nano
Arduino Nano

Espressif ESP32

ESP32 Lolin Wemos
ESP32 Lolin Wemos

STM32F103C8T6 (Blue Pill)

STM32F103C8T Blue Pill
STM32F103C8T Blue Pill

Perbedaan Arduino ORI dan KW

Apa sih perbedaan utama antara Arduino ORI dan KW? Apakah perbedaannya besar sekali? Pada tulisan ini akan dibahas satu aspek saja, yaitu dari chip USB yang dipakai

Harga

Perbedaan utama tentunya adalah harga. Arduino UNO ori harganya 300 ribuan, sedangkan Arduino UNO KW/clone harganya di bisa bawah 100 ribu.  Arduino Nano original harganya di atas 100 ribu, sedangkan yang KW/clone sekitar 30 ribu sampai 40 ribu.

Hardware

Dari sisi hardware, Arduino Nano / UNO ori maupun KW menggunakan prosesor ATMega168 / ATmega328, dengan variasi ada yang menggunakan kemasan DIP, ada yang SMD. Perbedaan ada pada chip USB to Serial untuk Arduino Nano. Arduino Nano ORI menggunakan chip FTDI untuk menyambungkan port serial ke USB, sedangkan Arduino Nano KW/clone seringnya menggunakan chip CH340 untuk menyambungkan port serial ke USB. Arduino Nano KW  ada yang menggunakan chip FTDI (FT232), namun harganya biasanya lebih mahal daripada Arduino Nano dengan chip CH340.

CH340 di bagian bawah Arduino Nano

Software

Dari sisi software yang dimasukkan ke dalamnya, tidak ada perbedaan pada Arduino Nano/UNO baik yang KW maupun ORI, keduanya sama-sama menggunakan ATMega168 atau ATMega328, jadi tidak ada perbedaan source code.

Driver di Host

USB pada Arduino perlu driver pada komputer host yang dipakai. Komputer host yang umum dipakai adalah berbasis Windows, OSX dan Linux. Pada tulisan ini hanya dibahas Windows dan OSX, karena yang Linux belum dicoba.

Arduino yang clone seringnya untuk USB serial menggunakan chip USB to serial tipe CH340. Arduino yang original biasanya menggunakan chip FTDI. Driver FTDI di Windows 10 sudah built-in, jadi tinggal pasang saja Arduino tersebut ke  USB maka akan langsung dikenali.

Arduino yang KW umumnya menggunakan chip CH340, sedangkan driver CH340 tidak built-in di Windows 10, sehingga driver untuk CH340 mesti download & install dulu, baru kemudian Arduino tersebutdapat dikenali. Agak repot, namun proses ini hanya dilakukan sekali saja, setelah itu tidak perlu dilakukan lagi.

Kasus berbeda pada sistem operasi OSX (Apple). Pada OSX (Apple) sudah ada driver untuk FTDI, sehingga untuk Arduino yang ORI tinggal pasang saja USBnya, maka akan langsung dikenali.

Driver CH340 pada OSX belum ada built in, sehingga perlu install dulu. Selain itu juga driver CH340 secara default tidak bisa diinstall di OSX, karena sertifikatnya tidak diakui. Jadi untuk install driver CH340, pengecekan sertifikat driver harus dinonaktifkan dulu, jadi prosesnya agak ribet.

Pada Linux, driver untuk CH340 dan FTDI sudah built in, jadi tidak ada masalah seperti pada OSX. Ref: https://sparks.gogo.co.nz/ch340.html

Kesimpulan : kalau pakai sistem operasi Windows 10, pakai Arduino KW saja, cuma beda install driver CH340 paling juga 10 menitan. Jika pakai OSX dan tidak mau repot, pilih saja Arduino yang menggunakan chip FTDI.

Arduino nano di latar depan dengan Arduino Uno di latar belakang
Arduino nano KW di latar depan dengan Arduino Uno ORI di latar belakang

Referensi

Mengirim Data Sensor Jarak Jauh

Pada sistem mikroprosesor seperti Arduino, kadang-kadang diperlukan sensor analog yang jaraknya cukup jauh dari perangkat pengendali, sehingga perlu teknik khusus untuk pengiriman data dari sensor analog tersebut. Pada jarak yang jauh, sinyal analog mudah sekali mengalami gangguan, terutama masuknya sinyal lain (noise) dan redaman dari kabel, sehingga sinyal dari sensor yang sampai ke mikroprosesor sudah tidak sama dengan sinyal aslinya.

Untuk mengatasi permasalahan tersebut, ada beberapa solusi sebagai berikut:

  • Menggunakan pengiriman data digital, jadi sinyal dari sensor yang analog, diubah dulu menjadi digital dengan sebuah mikrokontroler, kemudian baru data digital ini dikirim dengan kabel. Supaya lebih kuat, kabel yang panjang dapat menggunakan protokol RS-232 atau RS-485. Sinyal TTL biasa (5 volt maupun 3.3 volt) rentan jika dipakai untuk mengirim data digital jarak jauh. Protokol serial RS-232 dapat dipakai mengirim data sampai puluhan meter, sedangkan protokol serial RS-485 dapat dipakai mengirim data sampai ratusan meter.
  • Menggunakan Current Loop 4-20 mA
  • Menggunakan VCO (Voltage Controlled Oscillator). Prinsipnya adalah tegangan diubah ke frekuensi, baru sinyal frekuensi ini yang dikirim.
  • Menggunakan radio, seperti Wifi, LoraWAN dan sebagainya

Berikut ini contoh sistem pengiriman data sensor jarak jauh menggunakan pengiriman data digital dengan komunikasi serial dan sinyal RS485:

Pengiriman data sensor jarak jauh dengan RS-485

Cara kerja adalah sebagai berikut:

  • Sensor menghasilkan tegangan analog.
  • Tegangan analog diubah menjadi digital dengan menggunakan ADC pada mikrokontroler Arduino 1. Perlu diperhatikan juga apakah sinyal dari sensor analog sudah cukup besar untuk dapat dibaca oleh ADC. Jika kurang, maka perlu diperkuat dulu dengan amplifier. Jika frekuensi agak tinggi, mungkin diperlukan juga rangkaian sample & hold sebelum masuk ke ADC.
  • Data digital dikirim dengan menggunakan protokol serial melalui port serial pada Arduino 1. Level tegangannya adalah TTL sesuai dengan tegangan kerja Arduino 1. Sinyal ini sudah digital, namun belum cukup kuat untuk dikirim pada jarak jauh.
  • Sinyal serial TTL diubah menjadi RS-485 dengan menggunakan IC konverter TTL – RS-485
  • Sinyal dalam format RS485 dikirimkan dengan kabel, yang dapat dibuat agak panjang. Supaya sinyalnya bagus, mesti menggunakan kabel twisted pair, misalnya kabel yang digunakan pada kabel ethernet LAN (Local Area Network). Pada kabel LAN ada 4 pasang kabel yang sudah dipuntir (twisted). Pada pengiriman data 1 arah, cukup digunakan 1 pasang saja.
  • Sinyal RS-485 diubah menjadi TTL dengan IC konverter RS-485 ke TTL.
  • Sinyal serial dalam level TTL dimasukkan ke dalam port serial pada Arduino 2. Sinyal ini dapat langsung dibaca oleh software di Arduino 2.

Contoh hardware dan software untuk menyambungkan RS-485 antara lain dapat dibaca di https://arduino-info.wikispaces.com/SoftwareSerialRS485Example.

Rangkaian percobaan Arduino dan RS485

Rangkaian percobaan Arduino dan RS485

Pada contoh rangkaian di atas, kabel RS485 yang dipakai pendek saja , hanya beberapa cm. Menurut spesifikasinya , RS485 dapat dipakai sampai beberapa ratus meter, tergantung kecepatan data yang dipakai. Makin cepat datanya, makin pendek jaraknya.

Referensi

Rangkaian Programmer pada Arduino UNO Dan Nano

Modul mikrokontroler Arduino sangat mudah digunakan, salah satunya karena pada modul Arduino sudah disertakan rangkaian pemrograman yang mudah dipakai, dan juga terintegrasi dengan perangkat lunak Arduino yang dipakai untuk membuat software.

Berikut ini diuraikan rangkaian programmer pada Arduino UNO dan Arduino Nano. Kedua jenis Arduino ini sangat mirip, menggunakan komponen yang sama, hanya bentuknya berbeda. Komponen paling penting adalah mikrokontroler ATMega328.

Pin pada ATMega328

Pin pada ATMega328

Berikut ini gambar konektor pada Arduino UNO:

Arduino UNO

Pin pada Arduino UNO

Konektor yang terkait pemrograman adalah USB-Plug  dan In Circuit Serial Programmer (ICSP). Seringnya yang dipakai untuk pemrograman adalah USB Plug, sedangkan ICSP jarang dipakai.

Arduino Nano

Arduino Nano

Pada Arduino Nano konektor untuk pemrograman adalah USB Mini dan ICSP (In Circuit Serial Programmer).

Konektor ICSP yang dipakai pada Arduino UNO dan Nano menggunakan header 3×2, dengan daftar pin sebagai berikut:

Konektor ICSP pada Arduino Nano dan UNO

Konektor ICSP pada Arduino Nano dan UNO

Pin yang dipakai adalah MISO, MOSI, SCK, Reset, GND dan +5V. Semua pin ini terhubung langsung ke ATMega328:

  • MISO (pin 18 / PB4)
  • MOSI (pin 17 / PB3)
  • SCK (pin 19 / PB5)
  • Reset (pin 1 / PC6)
  • GND (pin 8 & pin 22)
  • +5V (pin 7 / VCC)

Pin-pin ini sesuai dengan rangkaian dasar pemrograman ISP sebagai berikut:

Rangkaian ISP ATMega8535

Rangkaian In System Programming pada ATMega

Cara lain untuk pemrograman Arduino UNO dan Nano adalah menggunakan port USB. Port USB ini masuk ke suatu konverter USB ke Serial, kemudian pin serial TX dan RX dihubungka ke pin RX dan TX pada ATMega, jadi program dikirim melalui port serial pada ATMega. Selain itu pin DTR juga dipakai untuk melakukan reset pada ATMega.

Rangkaian USB to serial pada Arduino UNO dan Nano

Rangkaian USB to serial pada Arduino UNO dan Nano

Supaya program dapat dimasukkan melalui port serial, perlu ada software bootloader yang dimasukkan ke dalam flash memory di ATMega. Program bootloader ini belum ada pada ATMega yang keluaran pabrik, jadi bootloader ini perlu dimasukkan dulu ke dalam ATMega melalui programmer ISP (In System Programming) atau programmer paralel, seperti dijelaskan lebih lanjut di artikel “Programmer AVR“.

Bootloader ini memakai sebagian kecil memori flash, kurang lebih 512 byte, jadi memori aplikasi yang tersisa adalah 32 kilobyte dikurangi memori yang terpakai untuk bootloader. Diagram memori bootloader dan aplikasi dapat dilihat pada gambar berikut:

Memori bootloader di flash

Memori bootloader di flash

 

Programmer AVR

Pada tulisan ini diuraikan berbagai teknik untuk memasukkan firmware (program) yang sudah berupa binary (HEX) ke dalam Flash memory pada mikrokontroller keluarga AVR. Teknik tersebut secara garis besar adalah sebagai berikut:

  • ISP (In System Programming) atau disebut juga ICSIP (In Circuit System Programming) [1]. Pada teknik ini, firmware dimasukkan dengan protokol serial ke dalam chip mikrokontroler. Pada waktu pemrograman mikrokontroler tidak perlu dilepas dari rangkaiannya.
  • HVPP (High Voltage Parallel Programming). Pada teknik ini firmware dimasukkan dengan protokol paralel dengan menggunakan tegangan +12V yang lebih tinggi dari tegangan kerja (+5V).
  • HVSP (High Voltage Serial Programming). Pada teknik ini firmware dimasukkan dengan protokol serial dan dengan tegangan +12V. Teknik ini dipakai untuk menggantikan HVPP pada perangkat yang jumlah pinnya terbatas.
  • Bootloader. Pada teknik ini pada mikrokontroler diletakkan sebuah program bootloader yang dapat menerima firmware aplikasi dari luar dan kemudian memasukkan firmware itu ke flash memory. Jika menggunakan bootloader, flash memory dibagi sebagian menjadi bootloader, sebagian lagi menjadi aplikasi.

Berikut di bawah ini adalah uraian dari masing-masing teknik tersebut.

In System Programming

Pada programmer jenis ini, pemrograman dimasukkan melalui port SPI (Serial Peripheral Interface) di mikrokontroler AVR. Teknik ini dikenal juga dengan nama ISP (In System Programming), artinya mikrokontroler dapat diprogram pada sistem yang sudah tersolder, tanpa perlu mencopot mikrokontroler tersebut dari PCB.

Pin-pin yang dipakai pada metode ini adalah sebagai berikut

  • MOSI
  • MISO
  • SCK
  • Reset

Berikut ini pin ISP pada ATMega8535

pin ISP pada ATMega8535

pin ISP pada ATMega8535

Berikut ini rangkaian dasar pemrograman ISP pada ATMega8535

Rangkaian ISP ATMega8535

Rangkaian ISP ATMega8535

Atmel tidak menyatakan secara eksplisit bagaimana cara menyambungkan pin ISP antara mikrokontroler dengan programmer, namun salah satu konfigurasi yang sering dipakai orang adalah konfigurasi yang dipakai di STK200 (programmer ISP keluaran Atmel).

Konektor ISP standar STK200

Konektor ISP standar STK200

Programmer AVR dengan ISP melalui Port Paralel

Pada teknik ini, pin-pin ISP di AVR langsung dikendalikan oleh port paralel dari PC.

 

Port paralel PC

Port paralel PC

Ada 2 varian rangkaian jenis ini, yaitu programmer tanpa buffer dan programmer dengan buffer. Blok diagram rangkaian tanpa buffer adalah sebagai berikut:

Programmer port paralel

Programmer port paralel

Blok diagram rangkaian dengan buffer adalah sebagai berikut:

 

Programmer paralel dengan buffer

Programmer paralel dengan buffer

Contoh hardware rangkaian programer jenis ini adalah sebagai berikut:

Sebagai pasangan hardware programmer, diperlukan juga software di PC untuk melakukan programming. Contohnya adalah sebagai berikut:

Programmer AVR dengan ISP melalui port serial dengan bit banging

Blok diagram sederhana adalah sebagai berikut:

Programmer serial bit banging

Programmer serial bit banging

Pin-pin ISP dikendalikan oleh port serial dari PC, . Pemrograman tidak menggunakan protokol komunikasi serial, melainkan menggunakan metode bit-banging [5]. Contoh rangkaian dapat dilihat di URL berikut. http://www.lancos.com/siprogsch.html .

Software di PC dapat menggunakan PonyProg [6]

Keunggulan programmer ini adalah sederhana dan cukup tangguh, jarang merusak port PC seperti yang menggunakan port parallel. Kelemahannya memerlukan port serial yang on board di desktop PC, jadi tidak dapat menggunakan port serial dari USB serial.

Programmer AVR dengan ISP melalui port serial dengan protokol serial

Pada programmer ini, PC berkomunikasi melalui protokol serial dengan sebuah mikroprosesor. Mikroprosesor ini kemudian mengendalikan pin-pin ISP pada mikrokontroler AVR yang akan diprogram. Contoh Rangkaian

 

Programmer serial dengan mikrokontroler

Programmer serial dengan mikrokontroler

 Programmer AVR dengan ISP melalui port USB dengan bit-banging

Port USB

Port USB

Pada programmer jenis ini, sebuah mikroprosesor (mikroprosesor programmer) dipakai untuk menerima sinyal USB langsung dari PC tanpa menggunakan chip khusus USB. Mikroprosesor programmer ini kemudian memprogram chip AVR melalui koneksi ISP. Biasanya teknik ini memanfaatkan library USB untuk AVR seperti V-USB [8] dan USBtiny [9].

Programmer USB dengan mikrokontroler

Programmer USB dengan mikrokontroler

Contoh rangkaian open source:

  • AVR Doper [10]AVR-Doper is an STK500 compatible In-System Programmer (ISP) and High Voltage Serial Programmer (HVSP). It comes with a built-in USB to Serial adaptor to connect directly to USB. “
  • USBprog “An open source all purpose tool (AVR ISP, ARM7/ARM9, AT89,JTAG, RS232, IO)[11]
  • USBasp [12]. “USBasp is a USB in-circuit programmer for Atmel AVR controllers. It simply consists of an ATMega88 or an ATMega8 and a couple of passive components. The programmer uses a firmware-only USB driver, no special USB controller is needed.” Contoh implementasi USBAsp [13]
  • USB Tiny ISP [14]

Contoh produk jadi:

Beberapa software yang dapat dipakai:

  • Software Khazama dapat dipakai sebagai front-end [16]

Programmer AVR dengan ISP melalui port USB dengan chip USB

Pada programmer jenis ini, sebuah mikroprosesor (mikroprosesor programmer) memberikan sinyal ISP ke mikrokontroler AVR, sedangkan sinyal USB diterima dengan chip khusus USB, biasanya IC dari keluarga FTDI.

Programmer dengan USB to serial

Programmer dengan USB to serial

Contoh programmer

  • Bus Pirate, programmer serba guna untuk berbagai mikrokontroler [17] . Teknik pemrograman AVR dengan programmer ini dapat dibaca di [18]

Bootloader

Programmer AVR dengan bootloader melalui port serial

Pada programmer jenis ini, pada AVR yang akan diprogram diaktifkan dulu suatu program kecil bernama bootloader. PC mengirimkan software yang akan diprogramkan ke program bootloader ini , kemudian program bootloader akan memprogram memori Flash dengan program yang diinginkan tersebut.

Programmer dengan bootloader

Programmer dengan bootloader

Mikrokontroler ATMega  yang baru tidak memiliki software bootloader. Untuk menjalankan bootloader, software bootloader mesti dimasukkan dulu ke dalam flash memory dengan ISP ataupun dengan paralel programmer. Sebagian memori flash akan dipakai untuk program bootloader, sehingga memori yang tersisa untuk program aplikasi akan berkurang.

Memori bootloader di flash

Memori bootloader di flash

 

Contoh software bootloader

Variasi programmer ini adalah dengan menggunakan perangkat USB to Serial, sehingga dapat dipakai pada Desktop/Laptop yang memiliki port USB namun tidak memiliki port serial.

Contoh:

High Voltage Parallel Programmer

PROGRAMMER TEGANGAN TINGGI (HV PROGRAMMER)

Programmer ini mengakses flash di AVR melalui port paralel di AVR, bukan melalui port ISP Pada waktu pemrograman diperlukan tegangan +12V pada pin tertentu, oleh karena itu teknik ini disebut programmer tegangan tinggi. Tegangan tinggi di sini tidak mencapai puluhan ataupun ratusan volt, tapi hanya +12 V. Keunggulannya utama programmer adalah dapat dipakai untuk memprogram chip AVR yang sempat dimatikan SPI atau pin Resetnya. Kelemahannya adalah rangkaian programmernya cukup kompleks dan juga chip mikrokontroler yang diprogram harus dilepas dari PCB.

Programmer high voltage

Programmer high voltage

Terdapat beberapa rangkaian programmer yang berbasis berbasis dari board STK500 sebagai berikut:

Programmer paralel tegangan tinggi sederhana:

HVSP (High Voltage Serial Programming)

AVR HVSP

AVR HVSP [sumber]

 

Gambar Infra Merah Arduino Nano

Berikut ini foto Arduino Nano clone dan hasil thermal imaging dari barang yang sama. Nampak di bagian atas ada 2 sumber panas yaitu prosesor  ATMega dan LED indikator yang selalu menyala.

Thermal Image Arduino Nano

Thermal Image Arduino Nano

Komponen yang aktif di bagian bawah adalah Bagian bawah USB interface CH340 . IC regulator 5 volt AMX117 tidak terlalu panas karena power diambil dari USB.

Arduino Nano V3 clone tampak bawah

Arduino Nano V3 clone tampak bawah

 

Arduino nano bagian bawah

Arduino nano bagian bawah dilihat secara thermal

Thermal imaging menggunakan FLiR Dev Kit dari Sparkfun dengan komponen utama Lepton® longwave infrared (LWIR).

Output dari LWIR ini sangat sederhana, bisa dibilang hanya informasi relatif mana yang panas mana yang dingin, tidak sampai ke temperatur detail di setiap pixel. Kalau mau sampai seperti itu mesti NDA dulu dengan Lepton plus minimum order 1000 unit 🙂

Upload File HEX ke Arduino

Pada umumnya Arduino diprogram dengan menggunakan software compiler Arduino. Namun kadang-kadang kita ingin memasukkan file HEX yang dibuat dengan software lain, misal WINAVR atau CodeVision. Untuk itu kita dapat menggunakan beberapa teknik berikut ini:

Windows:

Xloader

Xloader

Mac OS

HexUploader

HexUploader untuk Mac OS

 

Linux

Referensi:

  • https://github.com/grbl/grbl/wiki/Flashing-Grbl-to-an-Arduino

Mengukur Kapasitas Powerbank

Pada tulisan ini saya mengukur dan membandingkan kapasitas sebuah powerbank Vivan M04. Pertama kita lihat dulu spesifikasi powerbank tersebut:

  • Kapasitas: 3500 mAh
  • Input pengisian: DC5V/1A
  • Output (untuk mengisi smartphone): DC5V/0.6A

Pengukuran yang dilakukan ada 2 macam:

  • Mengukur energi yang masuk ke dalam powerbank ketika mengisi batere powerbank
  • Mengukur energi yang keluar dari dalam powebank ketika powerbank bertindak sebagai charger

Perhitungan Kapasitas Powerbank Menurut Spesifikasi

Kapasitas powerbank adalah 3500 mAh, artinya dapat memberikan arus 0.6 A selama 3500/600 = 5.833 jam

E = P x t = V x I x t = 5 volt x 0.6 ampere x 5.833 jam = 17.5 watt jam

Jadi kapasitas penyimpanan energi powerbank Vivan M04 tersebut adalah 17.5 watt jam

Mengukur Energi Masuk

Energi masuk di sini maksudnya  adalah energi yang masuk ke powerbank ketika powerbank diisi / dicas. Pengukuran dilakukan dengan menggunakan kWh meter, baik kWh meter mekanik maupun elektronik. Untuk mudahnya dalam eksperimen ini saya menggunakan kWh meter elektronik.

Berhubung pemakaian energi untuk pengisian powerbank kecil, angka pengisian sulit terlihat di kWh meter biasa, jadi lebih baik menggunakan kWh meter elektronik yang lebih teliti.

Berikut ini proses pengisian powerbank melalui alat pengukur energi Energy Meter TS-838. Alat ini pada dasarnya adalah kWh meter elektronik yang juga dapat merekam parameter lain seperti arus, tegangan dan faktor daya. Pada foto di bawah nampak powerbank sedang diisi dengan arus pengisian 0.055 A, atau 55 miliampere.

Pengisian powerbank melalui kWh meter

Pengisian powerbank melalui kWh meter

Powerbank Vivan M04 tersebut di spesifikasinya disebutkan berkapasitas 3500 mAh. Angka ini dapat dibandingkan dengan energi masuk yang terukur di kWh meter elektronik.

Skema pengisian adalah sebagai berikut:

Jala-jala PLN -> kWh meter elektronik TS-838 -> USB Charger Samsung -> Powerbank Vivan M04

Setelah powerbank penuh, angka di kWh meter dilihat sebagai berikut:

Powerbank Vivan M04 sudah terisi penuh

Powerbank Vivan M04 sudah terisi penuh

Dari pengukuran tersebut dapat disimpulkan bahwa untuk mengisi powerbank sampai penuh memerlukan energi sebanyak 0.02 kWh = 20 Wh = 20 watt jam

Mengukur Energi Keluar

Energi yang keluar dari powerbank diukur dengan cara sebagai berikut:

  • Resistor dipakai sebagai beban untuk menggantikan smartphone. Karena resistor memiliki resistansi yang konstan, maka dengan hanya mengukur tegangan kita dapat langsung menghitung besar arus yang keluar dari powerbank. Jadi tidak perlu repot mengukur arus dan tegangan bersamaan.
  • Nilai resistor diatur supaya arus keluar dari powerbank masih di bawah batas maksimal arus powerbank, namun tidak terlalu kecil, karena kalau arus terlalu kecil maka pengukuran akan terlalu lama
  • Tegangan pada resistor diukur dengan menggunakan Arduino Nano
  • Hasil pengukuran dikirim ke sebuah komputer melalui komunikasi serial. Catatan pengukuran ini diperlukan karena kita ingin tahu berapa lama powerbank ini dapat memberikan arus tersebut. Pencatatan mesti dilakukan di komputer, karena Arduino hanya memiliki memori yang kecil.

Perhitungan nilai resistor beban adalah sebagai berikut:

  • Tegangan output adalah 5 volt
  • Arus output maksimal adalah 0.6 ampere
  • Maka nilai resistor sekurang-kurangnya adalah R=V/I = 5/0.6 = 8.3333 ohm
  • Dari percobaan dan berdasarkan komponen yang ada, maka dipakai beberapa resistor seri sehingga dicapai nilai resistor beban total = 12.5 ohm

Berikut ini skema pengukuran dengan Arduino.

Skema rangkaian pengukuran energi keluar dengan Arduino

Skema rangkaian pengukuran energi keluar dengan Arduino

Perangkat lunak di Arduino adalah sebagai berikut:

const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

unsigned long next_action=0;
unsigned long waktu=0;
int led_status=0;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
pinMode(ledPin, OUTPUT);  // LED kedip untuk status
}

void loop() {
waktu=millis();
if(next_action<=waktu){
next_action+=2000;   // siapkan waktu aksi berikutnya
sensorValue = analogRead(analogInPin);
Serial.print(“time = ” );
Serial.print(waktu);
Serial.print(” sensor = ” );
Serial.print(sensorValue);
Serial.println();
if(led_status==0){
led_status=1;
digitalWrite(ledPin, LOW);
}else{
led_status=0;
digitalWrite(ledPin, HIGH);
}
}
}

Berikut ini foto penampakan pengukuran:

 

Mengukur kapasitas powerbank dengan Arduino

Mengukur kapasitas powerbank dengan Arduino

 

Kabel dari powerbank menggunakan kabel USB biasa. Bagian ujungnya dipotong supaya dapat mengakses kabel 5 volt dan GND pada kabel USB tersebut. Kabel ini sudah tidak dapat dipakai karena ujung USB micro tersebut sudah rusak. Terlihat pada gambar di bawah bahwa kabel USB ini tidak menggunakan shield, sehingga kabel jenis ini cukup rentan terhadap gangguan dari sinyal lain.

 

Memotong kabel USB

Memotong kabel USB

Output serial dari Arduino direkam di PC dengan menggunakan software RealTerm (http://realterm.sourceforge.net/). Tujuan perekaman ini untuk mendapatkan waktu yang tepat ketika powerbank sudah habis isinya.

Perekaman data port serial dengan Realterm

Perekaman data port serial dengan Realterm

Setelah powerbank habis, data hasil rekaman dimasukkan ke Excel untuk dilihat nilainya. Ternyata powerbank aktif sampai dengan detik 207180.

Data rekaman di Excel

Data rekaman di Excel

Hasil pengukuran adalah sebagai berikut

  • Resistansi total beban adalah 12.5 ohm.
  • Tegangan keluar dari powerbank adalah 4.49 volt, kurang dari yang disebutkan di spesifikasinya (5 volt)
  • Arus dapat dihitung: I = V/R = 0.3592 ampere, masih di bawah batas maksimal yaitu 0.6 ampere
  • Powerbank aktif selama 20718 detik, atau sama dengan 5.755 jam

Perhitungan energi menurut pengukuran

Diketahui sebagai berikut:

  • Arus = 0.3592 ampere
  • Tegangan = 4.49 volt
  • Waktu = 5.755 jam

Energi = P x t = V x I x t = 4.49 volt x 0.3592 ampere x 5.755 jam =  9.2817 watt jam

Jadi kapasitas powerbank ini adalah sekitar 53% dari yang tertulis di spesifikasi.

Alat-alat yang dipakai pada pengukuran ini

  • Powerbank Vivan M04 sebagai powerbank yang diuji
  • KWH meter elektronik Energy Meter TS-838 (untuk mengukur energi masuk ke powerbank)
  • Charger USB Samsung Traveller (untuk mengisi powerbank)
  • Arduino Nano 3.0 (untuk pengukur tegangan powerbank)
  • Multimeter Kyoritsu model 1009 (untuk mengukur tegangan, arus dan nilai resistor).
  • Komputer desktop (untuk perekaman data)
  • Software Realterm di Windows untuk mencatat data dari port serial

Kesimpulan

Berikut ini ringkasan hasil perhitungan dan pengukuran untuk powerbank Vivan M04

Kapasitas menurut spesifikasi 17.5 watt jam
Energi masuk untuk pengisian sampai penuh 20 watt jam
Energi keluar 9.2817 watt jam

Perhatian: pengukuran baru dilakukan 1  kali saja, jadi belum dapat dijadikan kesimpulan akhir. Untuk lebih teliti masih perlu dilakukan pengukuran dengan kondisi percobaan dan alat ukur yang berbeda.