Mengapa Arduino Panas

Ada keluhan sebagai berikut:

  • Mengapa Arduino panas kalau menggunakan adaptor 9 volt 1 ampere, sedangkan kalau menggunakan USB kok tidak panas.

Jawaban:

  • Saya asumsikan ini adalah Arduino UNO yang dapat diberi power 9 volt maupun 5 volt.
  • Mikrokontroler ATMega yang dipakai di Arduino bekerja dengan tegangan 5 volt. Jika Arduino mendapatkan daya dari adaptor 9 volt, maka tegangan 9 volt itu masuk ke regulator yang tugasnya mengubah tegangan 9 volt menjadi 5 volt. Regulator yang dipakai di Arduino membuang 4 volt menjadi panas, sehingga 9 volt tinggal menjadi 5 volt. Itulah sebabnya board Arduinonya menjadi panas.
  • Jika board Arduino diberi tegangan dari USB, tegangan USB ini sudah 5 volt, sehingga tidak perlu diturunkan lagi , dan dapat langsung diberikan ke mikrokontroler ATMega.
  • Jadi panas itu normal saja sebenarnya, asal Arduinonya diberi ventilasi sehingga panasnya tidak merusak.

Berikut ini Arduino UNO yang diberi power dari USB. Tegangan supply dari USB adalah 5 volt.

Arduino UNO dengan power supply dari USB
Arduino UNO dengan power supply dari USB

Berikut ini Arduino UNO dengan tegangan dari pin Power IN. Tegangan Power IN yang disarankan adalah 7 volt sampai 12 volt.

Arduino UNO dengan power supply dari power IN 9 volt
Arduino UNO dengan power supply dari power IN 9 volt

Berikut ini adalah Adaptor 9 volt yang dipakai sebagai power supply Arduino UNO.

Arduino UNO dan power supply adaptor 9 volt
Arduino UNO dan power supply adaptor 9 volt

Berikut ini adalah Arduino Nano yang  diberi power dari USB. Terminal VIN disambungkan salah satu pin, tidak melalui konektor khusus Power IN.

Rangkaian Arduino dengan sensor detak jantung
Rangkaian Arduino Nano dengan sensor detak jantung yang mendapat power supply dari konektor USB

Referensi:

  • https://www.arduino.cc/en/Main/arduinoBoardUno

Arduino Dan Servo Dengan 2 Batere

Arduino dapat digunakan untuk mengendalikan motor servo. Dalam beberapa contoh, servo dan Arduino menggunakan sumber daya yang sama. Sumber daya di sini bisa berupa batere, bisa juga berupa daya dari konektor USB ke PC. Contoh skema rangkaian dengan sumber daya tunggal dapat dilihat pada gambar berikut:

Rangkaian Arduino dengan 1 sumber daya
Rangkaian Arduino dengan 1 sumber daya

 

Rangkaian Arduino dengan sensor detak jantung
Arduino Nano dengan sumber daya dari port USB

Dalam prakteknya, sering dijumpai Arduino bermasalah ketika motor servo menggunakan sumber daya yang sama dengan Arduino. Gejalanya yang sering terjadi antara lain tidak dapat melakukan upload program ke Arduino, namun dapat berfungsi normal kalau motor servo dicopot dulu.

Solusinya adalah dengan menggunakan 2 buah sumber daya yang berbeda, satu untuk board Arduino, satu lagi untuk motor servo.

Contoh rangkaian dapat dilihat pada gambar berikut ini.

Rangkaian Arduino dengan 2 batere
Rangkaian Arduino dengan 2 batere

Alasan menggunakan 2 batere:

  • Beberapa tipe motor servo ketika bergerak mengambil arus cukup banyak dari batere, sehingga tegangan batere dapat turun dari tegangan normalnya. Jika batere yang sama digunakan untuk Arduino dan motor, maka penurunan tegangan akibat motor servo tersebut dapat mengganggu kerja prosesor, ekstrimnya prosesor akan mengalami reset / hang.
  • Beberapa motor servo dapat bekerja lebih kuat jika diberi tegangan agak besar, misal HS311 dapat mempunyai torsi besar jika diberi tegangan 6 volt. Dalam hal ini kita dapat menggunakan batere 5 volt untuk board Arduino, dan batere 6 volt untuk motor servo
Hitec HS-311
Motor servo Hitec HS-311

Sebagai contoh, berikut ini data torsi dan kecepatan untuk motor servo HS-311 (sumber: http://www.servodatabase.com/servo/hitec/hs-311)

Torque: 4.8V: 42.0 oz-in (3.02 kg-cm)6.0V: 49.0 oz-in (3.53 kg-cm)
Speed: 4.8V: 0.19 sec/60°6.0V: 0.15 sec/60°

Kesimpulan dari tabel itu: motor servo HS-311 bekerja lebih cepat dan kuat jika diberi tegangan 6 volt.

Kesimpulan

  • Gunakan batere 6 volt jika menggunakan motor servo, agar tidak mengganggu daya ke Arduino dan agar motor servo lebih kuat.

Perangkap Tikus Elektronik Dengan Sensor Cahaya

Perangkap tikus umumnya menggunakan trigger mekanik, berupa makanan yang kalau diinjak / ditarik akan menyebabkan perangkap bekerja.

Pada tulisan ini dibahas suatu perangkap tikus dengan trigger menggunakan sensor cahaya.

Prinsip kerjanya ada sumber cahaya dengan laser pointer, cahaya ini diterima oleh sensor cahaya dengan LDR (Light Dependent Resistor). Tegangan dari LDR ini diukur oleh prosesor berbasis Arduino UNO R3. Jika ada tikus yang lewat, maka cahaya tidak sampai ke sensor, dan akan dideteksi oleh prosesor. Prosesor kemudian menggerakkan motor servo untuk menarik trigger perangkap. Setelah itu pintu perangkap akan menutup.

Komponen utama:

  • perangkap tikus standar dengan pintu
  • prosesor Arduino UNO R3
  • Batere 9 volt untuk Arduino
  • Batere 6 volt untuk motor servo
  • Motor servo HS-311
  • Laser pointer sebagai sumber cahaya
  • LDR (Light Dependent Resistor) sebagai sensor cahaya
  • Resistor 10k untuk pembagi tegangan LDR
  • Breadboard untuk menaruh rangkaian
  • Papan kayu untuk dudukan
  • Sekrup
  • Lakban / Duct Tape
Perangkap Tikus Elektronik
Perangkap Tikus Elektronik
Perangkap Tikus Elektronik
Perangkap Tikus Elektronik

 

Sebagai sumber cahaya digunakan laser pointer, dengan pertimbangan berkas cahayanya kecil, tidak menyebar ke mana-mana.

Laser pointer
Laser pointer murah meriah sebagai sumber cahaya

LDR (Light Dependent Resistor) sebagai sensor cahaya.

LDR (light dependet resistor) sebagai sensor cahaya
LDR (light dependent resistor) sebagai sensor cahaya

LDR ditempatkan dalam tabung bekas spidol supaya hanya dapat menerima cahaya dari laser pointer, dan tidak terganggu cahaya sekitar.

Tabung LDR
Tabung LDR

Dudukan motor servo. Fungsi motor servo ini adalah menarik penahan pintu di jebakan tikus agar pintu tertutup.

Dudukan motor servo HS-311
Dudukan motor servo HS-311

Berikut ini perkakas yang diperlukan untuk pembuatan perangkap tikus ini

Perkakas untuk pembuatan
Perkakas untuk pembuatan

 

Jika anda lebih senang perangkap mekanikal yang konvensional, bisa dilihat-lihat di artikel Berbagai Macam Perangkap Tikus.

UPDATE 11 Juni 2015

Akhirnya berhasil juga menangkap si tikus. Perangkap dipasang 7 Juni 2015, tikus tertangkap 11 Juni 2015.

Tikus tertangkap dengan perangkap tikus elektronik
Tikus tertangkap dengan perangkap tikus elektronik

Si tikus terjepit ekornya di pintu perangkap. Nampaknya si tikus sempat mendengar suara motor servo, dan berusaha kabur, namun keburu terjepit di pintu. Untuk selanjutnya nampaknya perlu mencari motor / solenoid yang lebih cepat supaya si tikus tidak sempat berusaha kabur.

Pengukuran Detak Jantung Dengan Sensor Detak Jantung

Pengukuran Detak Jantung dengan sensor yang dibahas di artikel Sensor Detak Jantung

Data mentah, delimited dengan semicolon:

Interval sampling adalah 1 ms

Board yang dipakai adalah Arduino Nano V3 clone

Software yang dipakai adalah Arduino sebagai berikut:

/*
Sumber: http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/

// constants won’t change. Used here to set a pin number :
const int ledPin =  13;      // the number of the LED pin
// Variables will change :
int ledState = LOW;             // ledState used to set the LED
// Generally, you shuould use “unsigned long” for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0;        // will store last time LED was updated
// constants won’t change :
const long interval = 1;           // interval at which to blink (milliseconds)
unsigned long counter=0;
int sensorPin = A0;    // select the input pin for the potentiometer
int sensorValue = 0;  // variable to store the value coming from the sensor
void setup() {
// set the digital pin as output:
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}

void loop()
{
// here is where you’d put code that needs to be running all the time.

// check to see if it’s time to blink the LED; that is, if the
// difference between the current time and last time you blinked
// the LED is bigger than the interval at which you want to
// blink the LED.
unsigned long currentMillis = millis();

if(currentMillis – previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
counter++;
sensorValue = analogRead(sensorPin);
Serial.print(counter);
Serial.print(“;”);
Serial.println(sensorValue);

}
}

 

Grafik hasil pengukuran (sekitar 30000 sampel pertama). Nampak amplitude maksimum berubah-ubah, tergantung posisi dan tekanan jari pada sensor.

Pengukuran detak jantung 2900 sampel
Pengukuran detak jantung 2900 sampel

 

Grafik hasil pengukuran (hanya sekitar 1000 sampel pertama saja). Nampak ada noise pada hasil pengukuran.

Pengukuran detak jantung 1000 sampel
Pengukuran detak jantung 1000 sampel

 

Rentang angka ADC adalah 0 sampai 1023 (ADC 10 bit di ATMega328)

Angka maksimum yang tercatat adalah 536. Angka minimum yang tercatat adalah 496. Rentang angka yang tercatat adalah 40. Hal ini konsisten dengan hasil tampilan dengan software Processing di artikel Sensor Detak Jantung yang menunjukkan rentang angka pengukuran sempit dibandingkan dengan sensor asli.

Tampilan sensor ex Banggood
Tampilan sensor ex Banggood. Rentangnya sempit

 

Data mentah:

  • 1khz-data dalam format CSV, delimited dengan semicolon

Perbandingan Kecepatan I/O Digital pada Arduino

Dalam percobaan ini dibandingkan kecepatan I/O digital untuk beberapa board Arduino dan Arduino compatible sebagai berikut:

  • Arduino UNO R3 (http://www.arduino.cc/en/Main/ArduinoBoardUno)
  • Arduino Due (http://www.arduino.cc/en/Main/ArduinoBoardDue)
  • Arduino Nano clone
  • Nuvoton NuEdu-UNO
  • Intel Galileo (http://www.arduino.cc/en/ArduinoCertified/IntelGalileo)
Berbagai board Arduino yang diuji
Berbagai board Arduino yang diuji

Pengujian adalah dengan mengukur frekuensi output dari program Blink dari Arduino dengan delay dan tanpa delay.

Berikut ini program Blink asli dengan delay

void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);              // wait for a second
digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
delay(1000);              // wait for a second
}

Berikut ini program Blink asli tanpa delay

void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
}

Compiler yang digunakan adalah Intel-Arduino versi 1.6.0 untuk Intel Galileo dan Arduino ver 1.5.8 untuk board lainnya. Source code yang digunakan sama persis untuk semuanya. Pemrograman dilakukan di komputer berbasis Windows.

Pengukuran dilakukan dengan mengukur frekuensi sinyal di pin 13. Alat ukur frekuensi yang dipakai adalah multimeter Kyoritsu model 1009.

Pengukuran frekuensi I/O pada Nuvoton NuEdu-UNO
Pengukuran frekuensi I/O pada Nuvoton NuEdu-UNO

Berikut ini rangkuman hasil pengukurannya:

Board Arduino Prosesor Clock CPU
Dengan delay Tanpa delay
Arduino UNO ATmega328 16 MHz 499.1 Hz 93.9 kHz
Arduino Due Atmel SAM3X8E ARM Cortex-M3 (AT91SAM3X8E) 84 MHz 499.9 Hz 145.4 kHz
Arduino Nano clone ATmega328 16 MHz 499.9 Hz 94.1 kHz
Nuvoton NuEdu-UNO ARM Cortex-M0 NUC131SD2AE 50 MHz max 500.0 Hz 384.2 kHz
Intel Galileo Intel® Quark SoC X1000 400 MHz max 498.6 Hz 220.1 Hz

Analisis

  • Arduino UNO dan Arduino Nano menggunakan prosesor yang sama, jadi hasilnya praktis sama.
  • Pengujian ini hanya menunjukkan kecepatan akses ke I/O digital, tidak menunjukkan kemampuan umum.
  • Kecepatan I/O pada CPU jenis mikrokontroler lebih tinggi dibandingkan CPU general purpose. ATMega dan ARM Cortex-M0 adalah jenis CPU mikrokontroler.
  • Jika ingin melihat performance yang lebih umum perlu ditest dengan software benchmark yang standar.

Instalasi Arduino Untuk NuEdu-UNO

Board NuEdu-UNO di paketnya tidak dilengkapi dengan manual yang lengkap. Setelah lihat-lihat sana sini dan tanya-tanya sana-sini, berikut ini kesimpulan saya tentang instalasi Arduino dan pengujian board NuEdu.

Berikut ini tahap-tahap instalasi Arduino untuk NuEdu-UNO:

#1 Download Arduino for Windows versi 1.5.8 dari http://www.arduino.cc/en/Main/OldSoftwareReleases

#2 Install software Arduino for Windows versi 1.5.8

#3 Download NuMicro_Patch_For_Arduino1.5.8 dari http://sourceforge.net/projects/numicroedu/files/Tools/.

#4 Jalankan NuMicro_Patch_For_Arduino1.5.8.exe. Software ini akan meminta direktori instalasi Arduino, umumnya di C:\Program Files (x86)\Arduino. Software ini akan menambahkan board NuEdu ke daftar board Arduino.

#5 Download software ICP untuk NuMicro dari http://sourceforge.net/projects/numicroedu/files/Tools/. Pada saat tulisan ini dibuat, versi terbaru ICP adalah NuMicro_ICP_Programming_Tool_1.29.6425.zip.

#6 Unzip file ICP NuMicro_ICP_Programming_Tool_1.29.6425.zip tersebut.

#7 Jalankan installer ICP yaitu NuMicro ICP Programming Tool 1.29.6425.exe . Install driver-driver USB yang diperlukan.

#8 Sambungkan board NuEdu-UNO dengan kabel mini-USB. Windows akan melakukan proses deteksi USB.

#9 Jalankan software ICP tersebut. Cara mudahnya pada Windows 7 adalah mengetik ‘icp’ di Start Menu. Nama softwarenya adalah ‘NuMicro ICP Programming Tool’.

NuMicro ICP Programming Tool 1.29
NuMicro ICP Programming Tool 1.29

#10 Pilih NUC100 Series sebagai target chip, kemudian klik ‘Continue’.

#11 Klik ‘Connect’ jika belum tersambung.

ICP belum tersambung ke NuEDU
ICP belum tersambung ke NuEDU

#12 Jika muncul string ‘Chip Connected with Nu-Link (ID: xxxxxx)’ maka artinya software ICP sudah terhubung dengan baik ke board NuEdu. Dalam kasus saya, ICP tidak dapat langsung terhubung, namun ICP meminta untuk melakukan proses upgrade firmware NuLink di board NuEdu. Saya konfirmasi untuk melakukan proses upgrade firmware. Setelah proses upgrade firmware ini selesai, barulah muncul string ‘Chip Connected with Nu-Link (ID: xxxxxx)’.

ICP sudah tersambung ke NuEDU
ICP sudah tersambung ke NuEDU

#13 Pada tahap ini Arduino dan ICP sudah siap untuk dipakai. Selanjutnya adalah mencoba software dari Arduino.

Percobaan Arduino

#1. Cek port berapakah yang terhubung ke NuEdu. Caranya adalah dengan menjalankan Device Manager di Windows. Carilah ‘Nuvoton Virtual Com Port (COMxx)’.

#2. Jalankan Arduino. Jika terhubung ke internet, kadang-kadang Arduino akan memberitahu ada versi baru Arduino. Abaikan saja, karena patch NuEdu hanya berfungsi pada Arduino 1.5.8

Device Manager Windows 7
Device Manager Windows 7

#3. Ubahlah setting port pada Arduino sesuai dengan Nuvoton Virtual Com Port yang terdeteksi.

Setting port serial di Arduino
Setting port serial di Arduino

#4. Pilihlah board NuEdu-UNO

Memilih board NuEdu UNO
Memilih board NuEdu UNO

#5. Siap untuk menjalankan Arduino seperti biasa. Untuk mencoba, pilihlah ‘File -> Examples -> 01.Basics -> Blink’.

Memilih contoh program Blink
Memilih contoh program Blink

#6. Compile dan upload. Status upload akan muncul di bagian bawah

Status upload software NuEdu-UNO
Status upload software NuEdu-UNO

#7. Setelah software diupload kemungkinan software belum langsung jalan. Tekan tombol reset pada board NuEDU untuk mulai menjalankan software. Fitur ini berbeda dengan Arduino berbasis ATMega yang biasa saya pakai, yang umumnya langsung reset sendiri setelah softwarenya diupload.

Tombol reset pada NuEdu
Tombol reset pada NuEdu

#7. Cek apakah LED pada board berkedip. Jika LED berkedip artinya software berjalan baik.

Referensi:

Arduino Nano Dengan LCD Matrix JHD12864E

Spesifikasi LCD Matrix JHD12864E

  • Blue backlight
  • White dot color
  • Module size(W x H x T) : 93.0 X 70.0 X 13.0 mm
  • Viewing area(W x H) : 72.0 X 40.0 mm
  • Number of dots : 128 X 64 dots
  • Dots size(W x H) : 0.48 X 0.48 mm
  • Dots pitch(W x H) : 0.52 X 0.52 mm

Dalam contoh ini library yang digunakan untuk mengakses LCD adalah openGLCD (https://bitbucket.org/bperrybap/openglcd/wiki/Home)

Berikut ini contoh software dan outputnya:

/*
*  openGLCD Library – Hello World
*
* This sketch prints “Hello World!” to the LCD
* and shows the time in seconds since Arduino board was reset.
*
*  2013-06-15 bperrybap   – updates for openGLCD
*  2011-09-14 Bill Perry  – original creation
*      [email protected]
*/

// include the library header
// no font headers have to be included
#include <openGLCD.h>

void setup()
{
// Initialize the GLCD
GLCD.Init();

// Select the font for the default text area
GLCD.SelectFont(System5x7);

//  GLCD.print(F(“hello, world!”)); // keep string in flash on AVR boards with IDE 1.x
//  GLCD.Puts(F(“hello, world!”)); // Puts() supports F() with any version of IDE

// print() below uses RAM on AVR boards but works
// on any version of IDE with any processor
// note: Same is true for Puts()
GLCD.print(“hello, world!”);
GLCD.CursorTo(0, 1);
GLCD.print(“EL3014 Sismik!”);
}

void loop()
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
GLCD.CursorTo(0, 2);

// print the number of seconds since reset:
GLCD.print(millis()/1000);
}

Arduino Nano V3 mengendalikan LCD dot matrix JHD12864

Arduino Nano V3 mengendalikan LCD dot matrix JHD12864

 

LCD Matrix JHD12864E bagian belakang
LCD Matrix JHD12864E bagian belakang

LCD Matrix JHD12864E bagian depan
LCD Matrix JHD12864E bagian depan

Menggunakan openGLCD-v1.0rc2.zip

Referensi: