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
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
Berikut ini adalah Adaptor 9 volt yang dipakai sebagai power supply Arduino UNO.
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 Nano dengan sensor detak jantung yang mendapat power supply dari konektor USB
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
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
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
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 ElektronikPerangkap Tikus Elektronik
Sebagai sumber cahaya digunakan laser pointer, dengan pertimbangan berkas cahayanya kecil, tidak menyebar ke mana-mana.
Laser pointer murah meriah sebagai sumber cahaya
LDR (Light Dependent 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
Dudukan motor servo. Fungsi motor servo ini adalah menarik penahan pintu di jebakan tikus agar pintu tertutup.
Dudukan motor servo HS-311
Berikut ini perkakas yang diperlukan untuk pembuatan perangkap tikus ini
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
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.
// 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
Grafik hasil pengukuran (hanya sekitar 1000 sampel pertama saja). Nampak ada noise pada hasil pengukuran.
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. Rentangnya sempit
Data mentah:
1khz-data dalam format CSV, delimited dengan semicolon
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.
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:
#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.
#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
#10 Pilih NUC100 Series sebagai target chip, kemudian klik ‘Continue’.
#11 Klik ‘Connect’ jika belum tersambung.
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
#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
#3. Ubahlah setting port pada Arduino sesuai dengan Nuvoton Virtual Com Port yang terdeteksi.
Setting port serial di Arduino
#4. Pilihlah 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
#6. Compile dan upload. Status upload akan muncul di bagian bawah
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
#7. Cek apakah LED pada board berkedip. Jika LED berkedip artinya software berjalan baik.
/*
* 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);
}