Pada percobaan ini akan dibuat interupsi timer 1 pada ATmega328 dengan frekuensi 1 kHz, dan kemudian dilakukan pengukuran frekuensi yang dihasilkan.
Konfigurasi Timer 1 sebagai berikut
Frekuensi 1 kHz, atau perioda 1 ms
menggunakan Timer1
Clock Source: System Clock
Clock Value: 250 kHz (prescaler 64)
Mode: CTC top=OCR1A
Out A: Disconnected
Out B: Disconnected
Interrupt on: Compare A Match
tidak ada output langsung ke pin mikrokontroler
Frekuensi clock adalah 16 Mhz. Dengan prescaler 64, dihasilkan clock ke Timer1 sebesar 250 kHz. Untuk membuat frekuensi 1 kHz, perlu pembagi sebesar 250 (0xFA), untuk itu diperlukan angka 249 (0xF9) di register OCR1A. Mode timer1 menggunakan CTC (Clear Timer on Compare), jadi ketika angka counter mencapai 249, otomatis berikutnya menjadi 0, dibarengi dengan munculnya interupsi timer 1. Dengan demikian sinyal clock timer 1 250 kHz akan menghasilkan interupsi timer dengan frekuensi 1 kHz.
Kode dibuat dengan menggunakan CodeWizard pada compiler CodevisionAVR versi Evaluation. Berikut ini tampilan setting pada code wizard untuk Timer 1:
Konfigurasi Timer 1
Untuk menghasilkan sinyal output, digunakan port C sebagai output. Output pada port C dikomplemen setiap interupsi, sehingga akan timbul sinyal dengan frekuensi 500 Hz pada port C. Berikut kode ISR (interrupt service routine) untuk Timer 1:
Berikut ini sinyal yang dihasilkan, diukur dengan menggunakan osiloskop. Screen capture diambil langsung dari osiloskop (bukan difoto).
Hasil pengukuran port C
Frekuensi yang terukur adalah 500,026 Hz, sehingga frekuensi interupsi sebenarnya adalah 2 x 500,026 = 1000,052 Hz. Tidak sama persis dengan seharusnya (1 kHz), kemungkinannya antara frekuensi kristal yang tidak tepat, atau clock pada osiloskop yang tidak tepat.
Pengukuran frekuensi dengan osiloskop GDS 1042Pengukuran sinyal pada Arduino nano (ATmega328)
Dalam tulisan ini akan dibandingkan beberapa produk board Arduino yang mudah diperoleh di Indonesia. Arduino UNO ini sangat populer, sehingga banyak perusahaan lain yang membuat cl Daftar lengkap produk Arduino original dapat dilihat di daftar produk Arduino di website Arduino. Sebagai referensi harga saya menggunakan harga di Central Electronic Jaya Plaza dan situs online Deal Extreme
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.
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 KW di latar depan dengan Arduino Uno ORI di latar belakang
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
Berikut ini gambar konektor pada 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
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
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 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
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:
Pada Arduino Nano dan Arduino UNO terdapat pin dengan nama ‘5V’. Menurut nama pin tersebut, seharusnya pin tersebut bertegangan 5 volt, namun ternyata tidak selalu demikian.
Berikut ini beberapa board Arduino yang akan diukur tegangan pin ‘5V’-nya.
Arduino UNO Original
Arduino Nano Clone (KW) specimen 2
Arduino Nano Clone (KW) specimen 1
Board Arduino Nano Clone mirip, namun nampak ada perbedaan kecil pada kedua board tersebut.
Berikut ini hasil pengukuran pin ‘5V’ pada 2 buah board Arduino Nano Clone (KW), dan 1 buah board Arduino UNO (ORI). Sumber tegangan menggunakan 2 macam, yaitu pertama melalui kabel USB, dan kedua melalui pin VIN pada board Arduino.
Board
Output 5V dengan Power dari USB (Desktop PC)
Output 5V dengan Power VIN dari adaptor 7,5 volt
Arduino Nano KW specimen 1
3.37 volt
4.97 volt
Arduino Nano KW specimen 2
4.6 volt
4.92 volt
Arduino UNO ORI
4.89 volt
4.98 volt
Kesimpulan
Tegangan supply dari USB menghasilkan tegangan pada pin ‘5V’ yang bervariasi
Tegangan supply dari pin VIN menghasilkan tegangan ‘5V’ yang lebih konsisten mendekati 5 volt.
Arduino UNO ORI memberikan hasil tegangan ‘5V’ lebih bagus untuk power dengan USB.
Slidecam Lite 1000 adalah slider buatan Varavon sepanjang 1 meter.
Varavon Lite 1000
Slider ini dapat digerakkan secara manual dengan menggesernya dengan tangan. Untuk beberapa aplikasi seperti time lapse, lebih nyaman kalau kita menggunakan penggerak motor yang dapat menggerakkan slider ini secara otomatis.
Varavon mengeluarkan produk motor untuk slider ini yaitu Motorroid Slider Motorized Kit. Namun demikian harga kit motor ini lumayan mahal, 4x harga slidernya sendiri. Untuk itu akan dicoba membuat penggerak motor sendiri untuk slider tersebut.
Varavon Motorroid L1000
Berikut ini foto penggerak slider
Motorized Slider
Perangkat penggerak dibagi menjadi 2 bagian:
Bagian mekanikal : meliputi motor, belt, pulley serta dudukannya
Bagian elektrikal: mikrokontroler Arduino , penggerak motor dan user interface.
Bagian mekanikal dibagi 3:
Dudukan motor : berisi dudukan motor di salah satu ujung
Dudukan tanpa motor: berisi dudukan pulley di ujung yang lain
Dudukan kamera dan belt: di bagian kereta yang berisi kamera
Berikut ini detail dari bagian dudukan motor
Tampak atas dudukan motor
Tampak samping dudukan motor
Tampak samping dudukan motor dengan motor stepper
Bagian selanjutnya adalah dudukan pulley tanpa motor
Dudukan pulley tanpa motor
Dudukan pulley tanpa motor
Berikutnya adalah belt tipe 2GT. Pada belt ini dipasang kepingan aluminium untuk trigger microswitch, sehingga mikrokontroler Arduino dapat menghentikan motor jika kamera sudah sampai di salah satu ujung.
Pada belt juga dipasang tensioner untuk menjaga agar belt tetap kencang, tidak kendor.
Belt dan tensioner untuk belt
Kepingan logam tipis dipakai sebagai sangkutan belt ke dudukan kamera. Ide menggunakan kepingan logam ini meniru dari Motorized Varavon.
Dudukan kamera
Berikut ini saddle asli buatan Varavon. Nampaknya dibuat dari stainless steel yang dipunch dan ditekuk. Bagian-bagiannya dibuat berlubang agar ringan. Berhubung sulit untuk dicopy paste 100%, akhirnya dibuat saja modifikasinya.
Komponen tambahan yang diperlukan adalah L293D sebagai penguat arus untuk motor stepper. Power supply menggunakan 5 volt dari USB dan 12 volt dari power supply terpisah.
Pengendali Arduino Nano
Proses Pembuatan
Berikut ini beberapa foto proses pembuatan motorized slider ini.
Proses pengeboran dengan holesaw 20 mm
Lubang untuk motor stepper NEMA 17 selesai
Dudukan Motor
Pembuatan Dudukan Tanpa Motor
Dudukan tanpa motor
Proses pembuatan dudukan kamera dan belt
Komponen yang dipakai adalah aluminium tipis dari heatsink bekas, mur baut 3 mm dan mur baut 4 mm.
Sangkutan belt
Dudukan kamera dibuat dari besi bekas casing power supply.
Casing power supply
Slider dan plat besi
Komponen
Berikut ini beberapa komponen yang dipakai untuk pembuatan penggerak slider ini:
Berikut ini beberapa perangkat yang dipakai untuk pembuatan penggerak slider ini:
Bor duduk
Mata bor 5 mm
Mata bor 3 mm
Tap drill 5 mm
Tap drill 3 mm
Mata bor holesaw 20 mm
Step drill 4 mm ~ 22 mm
Step Drill
Step drill dipakai untuk membuat lubang untuk motor stepper. Pertama-tama menggunakan bor holesaw 20mm, kemudian lubang diperlebar sampai 22 mm dengan step drill ini. Setelah itu masih perlu digerinda dengan Dremel supaya casing motor stepper yang berukuran 22 mm dapat masuk ke lubang tersebut.
Rangkaian berikut cukup minimalis. Hanya ditambahkan resistor dari Gate ke GND untuk jaga-jaga kalau input CONTROL masuk ke keadaan floating / high impedance. Sumber: Sparkfun MOSFET Control KIT / PDF
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
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 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 🙂
Pada percobaan ini dilakukan pengukuran radiasi dari beberapa material radioaktif rendah dengan sensor geiger counter dan modul Arduino Nano sebagai penghitung radiasi.
Batang elektroda tungsten, sensor asap dan geiger counter,
Batang tungsten dengan campuran thorium sebagai sumber radiasi
Sensor asap dengan unsur americium sebagai sumber radiasi
Modul geiger counter memberikan sinyal active low setiap kali mendeteksi adanya peluruhan radioaktif. Sinyal active low ini dihubungkan ke pin 2 pada Arduino Nano untuk dihitung. Hasil perhitungan dikirimkan dengan port serial ke komputer untuk ditampilkan.
Aspek keamanan
Batang tungsten dengan campuran thorium memancarkan radiasi alpha, beta dan gamma dalam dosis rendah. Paparan langsung dalam waktu singkat tidak membahayakan. Bahaya muncul jika batang tersebut berubah menjadi serbuk, karena debu thorium berbahaya.
Americium pada sensor asap adalah sumber radiasi alpha, beta dan gamma lemah. Tidak membahayakan asal tidak tertelan
Thorium (Th) is slightly radioactive with a long half life and emits mainly alpha (α) particles, but occasionally some beta (β) and gamma (γ) radiation is emitted. Alpha particles cannot penetrate skin or even paper. However, they are harmful if released inside the digestive tract, or inside the lungs, where they act as a carcinogen.
Thorium oxide is, therefore, a low level radioactive material which may give rise to both a small external radiation hazard and an internal hazard from ingestion or inhalation. The external hazard estimated for a welder holding an electrode for a whole year is a very small fraction of the maximum permissible radiation dose and it is concluded that the external radiation hazard is likely to be negligible.
The radiation dose to the occupants of a house from a domestic smoke detector is essentially zero, and in any case very much less than that from natural background radiation. The alpha particles are absorbed within the detector, while most of the gamma rays escape harmlessly. The small amount of radioactive material that is used in these detectors is not a health hazard and individual units can be disposed of in normal household wastee.
Even swallowing the radioactive material from a smoke detector would not lead to significant internal absorption of Am-241. Americium dioxide is insoluble, so will pass through the digestive tract without delivering a significant radiation dose. (Americium-241 is however a potentially dangerous isotope if it is taken into the body in soluble form. It decays by both alpha activity and gamma emissions and it would concentrate in the skeleton).
Perangkat Lunak
Perangkat lunak yang dipakai serupa dengan di percobaan Interupsi Dengan Arduino, hanya saja pada percobaan ini pull up internal pada pin 2 dinonaktifkan karena sudah ada pull up pada modul geiger counter. Jika pull up pada internal Arduino diaktifkan, maka sinyal malah tidak bisa mencapai logika LOW.
// ide dari http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html unsigned long counts; //variable for GM Tube events unsigned long previousMillis; //variable for time measurement
void impulse() { // dipanggil setiap ada sinyal FALLING di pin 2 counts++; }
Pertama adalah pengukuran radiasi latar belakang, yaitu radiasi alamiah yang sudah ada secara alami. Angka yang tercantum adalah CPM (count per minute), yaitu total partikel radioaktif yang terukur setiap menit.
Pengukuran radiasi latar belakang
Hasil CPM: 21.5
Pengukuran Radiasi Sensor Asap
Berikutnya adalah pengukuran radiasi dari Americium pada sensor asap. Sensor asap ada yang memanfaatkan Americium sebagai sumber partikel alpha yang mengionisasi partikel asap di udara. Sensor ini dikemas dengan logam, sehingga partikel alpha dan beta tidak dapat keluar. Yang keluar hanya partikel gamma yang lemah.
Geiger counter dan sensor asap
Berikut hasil pengukuran CPM
Pengukuran radiasi Americium pada sensor asap
CPM rata-rata adalah 108.
Pengukuran Radiasi Elektroda Tungsten
Berikutnya adalah pengukuran radiasi dari batang elektroda tungsten.
Pengukuran radiasi elektroda tungsten-thorium
Pengukuran radiasi thorium tanpa pelindung
Hasil CPM rata-rata: 161.4
Pengukuran Radiasi Elektroda Tungsten Melalui Kertas
Pengukuran radiasi elektroda tungsten-thorium dengan pelindung kertas
Pengukuran radiasi thorium dengan pelindung kertas
Rata-rata CPM adalah 129
Pengukuran Radiasi Pisang Ambon
Pisang adalah salah satu makanan yang cukup radioaktif, bahkan sampai ada istilah ‘Banana Equivalent Dose’, yaitu dosis radiasi yang setara dengan radiasi dari buah pisang. [https://en.wikipedia.org/wiki/Banana_equivalent_dose]
Berikut ini kumpulan hasil pengujian beberapa material.
Material yang diuji
CPM
Radiasi Latar Belakang
21.5
Sensor asap (Americium)
108
Elektroda tungsten (Thorium)
161.4
Elektroda tungsten (Thorium) melalui kertas
129
Pisang ambon
25.43
Kacang tanah
23.17
Cangkir keramik besar
38.6
Cangkir keramik kecil
25.75
Mangkok keramik besar
37.5
Piring keramik putih
26.7
Piring keramik warna
28.965
Beberapa hal menarik:
Sensor asap dan elektroda tungsten-thorium sudah diduga bersifat cukup radioaktif
Radiasi elektroda tungsten berkurang ketika diberi pelindung kertas. Dapat disimpulkan bahwa ada radiasi alpha/beta yang terhalang oleh kertas sehingga total radiasi berkurang.
Pisang dan kacang tanah ada radiasi sedikit.
Barang-barang keramik memancarkan radiasi walaupun tidak terlalu banyak
Pada Arduino terdapat beberapa mekanisme input di antaranya:
input digital dengan fungsi digitalRead()
input analog dengan fungsi analogRead()
input data serial dengan class Serial, fungsinya di antaranya Serial.read()
input digital dengan interupsi melalui fungsi attachInterrupt()
Di antara mekanisme input tersebut, yang mudah dipakai adalah digitalRead() dan analogRead(). Pada tulisan ini dibahas contoh sederhana untuk memakai input interupsi.
Deskripsi perangkat keras:
Board prosesor menggunakan Arduino Nano v.3
Input dari sebuah switch push button, active low (dihubungkan ke GND)
Input dari switch dihubungkan ke pin 2
Jumlah penekanan switch dikirim dengan port serial
Power supply didapat dari USB
Catatan
Pada Arduino Nano hanya pin 2 dan pin 3 saja yang dapat dipakai untuk input interupsi. Pada program ini yang dipakai adalah pin 2.
Cara kerja perangkat lunak
Setiap kali switch ditekan, maka pin 2 akan menjadi low
Setiap kali pin 2 low, akan muncul interupsi
Interupsi menyebabkan fungsi impulse() dipanggil, yang akan menaikkan nilai variabel counter.
Pada main loop, isi dari variabel counter dikirim setiap 1 detik.
Berikut ini contoh software yang menggunakan interupsi untuk input.
// ide dari http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html unsigned long counts; //variable for GM Tube events unsigned long previousMillis; //variable for time measurement
void impulse() { // dipanggil setiap ada sinyal FALLING di pin 2 counts++; }
#define LOG_PERIOD 1000 // cetak tiap detik
void setup() { //setup subprocedure counts = 0; Serial.begin(9600); pinMode(2, INPUT); // tidak perlu sebenarnya, untuk jaga-jaga saja. digitalWrite(2, HIGH); // mengaktifkan internal pull up resistor attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING); //define external interrupts Serial.println("Start counter"); }
Pada referensi fungsi attachInterrupt() terdapat contoh program yang menggunakan interupsi, namun di situ belum menggunakan port serial u untuk mengirim data, sehingga hasil penekanan tombol susah diamati.
Berikut ini foto percobaan dengan Arduino Nano dan sebuah switch push button.
Arduino Nano yang dihubungkan ke sebuah switch push button
Switch push button
Berikut ini contoh data yang dikirim melalui port serial, berisi jumlah penekanan tombol.
Sensor arus ACS-712 menggunakan prinsip Hall Effect untuk mengukur arus. Sensor ini dapat mengukur arus searah (DC) maupun bolak-balik (AC). Berikut ini contoh pengukuran arus AC dengan menggunakan sensor tersebut.
Pengukuran yang dilakukan adalah mengukur arus AC yang mengalir pada bohlam lampu pijar 100 watt dengan tegangan 220 volt AC. Tegangan ini cukup berbahaya sehingga pengukuran harus dilakukan dengan hati-hati.
Pengukuran Daya Lampu
Meskipun disebutkan bahwa daya lampu adalah 100 watt, perlu dipastikan apakah lampu itu benar-benar 100 watt. Daya dan tegangan lampu diukur dengan Energy Meter TS-838.
Pengujian lampu 100 watt
Pengukuran daya lampu
Hasil pengukuran adalah sebagai berikut:
daya lampu 85.5 watt
tegangan pada lampu 205 volt
Berapakah arus?
Rumus P = V x I (asumsi faktor daya = 1)
I = P / V = 85.5 / 205 = 0.417 ampere
Tegangan di rumah 205 volt, cukup jauh di bawah 220 volt yang seharusnya. Berapakah daya jika tegangan benar-benar 220 volt?
Rumus P=V*V/R
R=V*V/P = 205 * 205 / 85.5 = 491.5 ohm
Jadi resistansi lampu adalah 491.5 ohm
Rumus P=V*V/R
P = 220 * 220 / 491.5 = 98.5 watt
Jadi daya lampu jika tegangan 220 volt adalah 98.5 watt, cukup dekat dengan daya seharusnya yaitu 100 watt.
Rangkaian pengukuran adalah sebagai berikut. Sensor ACS-712 dipasang seri dengan lampu 100 watt. Output analog dari sensor ACS-712 dimasukkan ke input analog 0 (AN0) pada Arduino Nano.
Rangkaian lampu
Karena sifat arus yang bolak-balik dengan frekuensi 50 Hz, maka menurut teori Nyquist, pengukuran arus mesti dilakukan sekurang-kurangnya dengan frekuensi 100 Hz. Pada percobaan ini pengukuran arus dilakukan setiap 2 ms, sehingga frekuensi pengukuran adalah 500 Hz, cukup jauh di atas batas Nyquist.
Berikut ini software Arduino yang dipakai:
void setup() {
Serial.begin(115200);
}
unsigned long previousMillis = 2;
unsigned long interval = 1;
void loop() {
unsigned long currentMillis >= millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
}
}
Data dari port serial direkam di komputer dengan menggunakan software CoolTerm (http://freeware.the-meiers.org/). Kecepatan baud rate yang digunakan adalah 115200 supaya tidak ada data yang hilang.
Tampilan CoolTerm
Berikut ini grafik pengukuran arus.
Grafik pengukuran arus
Sensor ACS-712 mengeluarkan tegangan 2.5 volt jika arus tidak ada (0 ampere). Maka pada grafik nampak angkanya naik turun di sekitar 512.
Yang penting dari data tersebut adalah nilai puncak dan minimal:
nilai maksimal : 522
nilai minimal : 505
Nilai rata-rata terukur: 513.5 , masih dekat dengan nilai rata-rata teoritis yaitu 512.
Dari perbandingan antara pengukuran dengan Energy Meter TS-838 dan sensor ACS-712 maka selanjutnya dapat dilakukan kalibrasi terhadap angka yang dihasilkan dari sensor.
Sensor kit ini dibeli di AliExpress. 1 paket terdiri dari 37 macam sensor. Manual kit ini tidak jelas, jadi perlu usaha ekstra untuk mencari manualnya di Internet.
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:
Arduino Nano 3.0 di latar depan dengan Arduino Uno di latar belakang
Berikut ini 10 cara merusak Arduino
Hubung singkat antara pin I/O ke ground
Hubung singkat antara sesama pin I/O
Menghubungkan tegangan lebih dari 5 volt ke pin I/O
Memasukkan tegangan terbalik ke konektor Power IN
Memasukkan tegangan melebihi 5 volt ke pin 5V
Memasukkan tegangan melebihi 3.3 volt ke pin 3.3V
Hubung singkat pin 5V ke ground
Menaruh beban pada pin VIN dan memberi power pada pin 5V
Memberi tegangan melebihi 13 volt pada pin RESET
Melampaui batas arus mikrokontroler. Total arus harus < 200 mA
Bonus cara merusak Arduino
Tegangan POWER IN melebihi 20 volt
Menghubungkan tegangan negatif ke pin I/O manapun
Arus pin I/O melebihi 40 mA
Mengubah rangkaian tanpa mematikan dulu semua power
Memasang beban induktif tanpa dioda pengaman
Temperatur melebihi 150 derajat Celcius
Temperatur lebih rendah dari -65 derajat Celcius
Menggunakan tegangan referensi DC internal namun juga menghubungkan pin AREF ke sumber tegangan lain.
Penjelasan
Penjelasan ini fokusnya Arduino UNO dan Arduino Nano 3.0 yang menggunakan ATMega328. Untuk Arduino tipe lain dapat disesuaikan dengan melihat datasheet ATMega yang dipakai. Arduino Nano dan UNO menggunakan VCC 5 volt, sedangkan ada Arduino tipe lain yang menggunakan VCC 3.3 volt, sehingga batasan tegangannya akan berbeda pula.
ATMega UNO menggunakan ATMega328 sebagai prosesornya. Batas-batas fisik prosesor tersebut dapat dilihat di datasheet ATMega328 yang tersedia di situs Atmel.
Pada kebanyakan datasheet, batas-batas fisik komponen dapat dilihat di bagian berjudul “Electrical Characteristics – Absolute Maximum Ratings”. Untuk ATMega328, batasnya adalah sebagai berikut:
ATMega328 Absolute Maximum Ratings
Jadi dari table itu dapat disimpulkan beberapa cara merusak sebagai berikut:
Temperatur kerja di bawah -55 Celcius atau di atas +125 Celcius
Temperatur penyimpanan di bawah -65 Celcius atau di atas +150 Celcius
Tegangan pin selain RESET di atas VCC+0.5 volt. Arduino UNO dan Nano menggunakan VCC 5 volt, sehingga tegangan input di atas 5.5 volt dapat merusak
Tegangan pin I/O di bawah – 0.5 volt
Tegangan pin reset di bawah -0.5 volt
Tegangan pin reset di atas 13 volt
Tegangan VCC di atas 6.0 volt
Arus pin I/O melebihi 40 mA
Arus pada pin VCC melebihi 200 mA
Arus pada pin GND melebihi 200 mA
Penjelasan detail dari 10 perkara yang merusak Arduino adalah sebagai berikut:
(1) Hubung singkat I/O dan GND
Menghubungkan pin I/O ke GND dapat menyebabkan arus I/O melebihi 40 mA jika pin I/O dijadikan output dengan nilai output HIGH.
(2) Hubung singkat antara sesama pin I/O
Jika dua pin I/O yang sama-sama menjadi output dihubungkan, maka dapat terjadi satu pin I/O sedang HIGH, dan yang lainnya LOW. Pada keadaan ini maka arus akan mengalir dari pin yang sedang HIGH ke pin yang LOW, tanpa adanya pembatasan arus, sehingga arus dapat melebihi 40 mA.
(3) Menghubungkan tegangan lebih dari 5 volt ke pin I/O
Tepatnya sih 5.5 volt, bukan 5 volt. Setiap pin I/O hanya dapat diberi tegangan maksimal VCC+0.5 volt, sedangkan VCC pada Arduino adalah 5 volt. Jika I/OI diberi tegangan melebihi 5.5 volt maka dapat merusak.
(4) Memasukkan tegangan terbalik ke konektor Power IN
Maksudnya adalah memberikan tegangan yang lebih rendah dari GND ke pin POWER IN. Akibat dari hal ini adalah mikrokotroler ATMega328 akan mendapatkan tegangan negatif pada pin VCC, padahal tegangan pada pin VCC minimal adalah GND-0.5 volt. Akibatnya mikrokontroler akan rusak.
(5) Memasukkan tegangan melebihi 5 volt ke pin 5V
Tepatnya sih 6 volt, bukan 5 volt. Tegangan VCC pada ATMega328 maksimal adalah 6 volt. Pin 5V langsung terhubung ke pin VCC pada ATMega, sehingga kalau pin ini diberi tegangan lebih dari 6 volt maka ATMega dapat rusak.
(6) Memasukkan tegangan melebihi 3.3 volt ke pin 3.3V
Pin 3.3 V terhubung ke perangkat yang memerlukan tegangan 3.3 volt. Jika tegangan di pin ini melebihi 3.3 volt, maka perangkat-perangkat tersebut dapat rusak. Jika tegangan di pin ini melebihi 9 volt, maka tegangan pada jalur 5 volt juga dapat ikut naik sehingga dapat merusak mikrokontroler ATmega328 yang hanya tahan diberi maksimal 6 volt.
(7) Hubung singkat pin VIN ke ground
Jika pin VIN dihubung singkat ke GND dan ada tegangan masuk pada konektor POWER IN, maka akan ada arus hubung singkat yang cukup besar mengalir melalui konektor POWER IN. Arus ini dapat merusak dioda pengaman dan melelehkan jalur tembaga pada PCB.
(8) Menaruh beban pada pin VIN dan memberi power pada pin 5V
Jika dibuat seperti ini, maka akan ada arus mengalir dari pin 5V melalui regulator 5 volt (NCP1117 pada Arduino UNO dan UA78M05 pada Arduino Nano), artinya arahnya terbalik. Maka regulator 5 volt akan rusak.
(9) Memberi tegangan melebihi 13 volt pada pin RESET
Pin RESET pada ATMega328 hanya dapat menerima tegangan maksimal 13 volt, jika lebih dari itu maka ATMega dapat rusak. Pin ini dapat menerima tegangan 12 volt untuk keperluan pemrograman dengan ISP (In System Programming).
(10) Melampaui batas arus mikrokontroler. Total arus harus < 200 mA
Total arus pada pin VCC maupun GND di ATMega328 maksimal adalah 200 mA. Jika melebihi maka ATMega328 akan rusak.
Penjelasan Bonus
(11) Tegangan POWER IN melebihi 20 volt (Arduino UNO) atau 25 volt (Arduino Nano)
Pin POWER IN dihubungkan ke regulator 5 volt (NCP1117 pada Arduino UNO dan UA78M05 pada Arduino Nano). NCP1117 maksimal menerima tegangan input 20 volt. UA7805 maksimal menerima input 25 volt. Jika tegangan POWER IN melebihi batas ini, maka regulator 5 volt tersebut akan rusak.
Batas tegangan maksimum pada NCP1117 dapat dibaca pada datasheetnya sebagai berikut:
Tegangan maksimum pada NCP1117
Batas tegangan maksimum pada UA78M05 dapat dibaca pada datasheetnya sebagai berikut:
Tegangan maksimal pada UA7805
(12) Menghubungkan tegangan negatif ke pin I/O manapun
Tegangan pada pin I/O tidak boleh kurang dari GND – 0.5 , sehingga jika tegangan pin I/O kurang dari -0.5 volt maka ATMega328 dapat rusak
(13) Arus pin I/O melebihi 40 mA
Arus beban pada pin I/O tidak boleh melebihi 40 mA. Kelebihan arus ini dapat terjadi karena hubung singkat dengan GND, hubung singkat dengan port I/O lain, ataupun karena kesalahan menghitung nilai resistor pembatas arus.
(14) Mengubah rangkaian tanpa mematikan dulu semua power
Perubahan rangkaian tanpa mematikan power dapat menyebabkan arus atau tegangan lebih tanpa sengaja, yang dapat merusak ATMega328. Untuk itu matikan semua power (POWER IN, 5 volt dan USB) sebelum mengubah isi rangkaian terutama di breadboard.
(15) Memasang beban induktif tanpa dioda pengaman
Semua beban induktif harus diberi dioda pengaman, lebih baik lagi jika beban induktif itu tidak langsung dikendalikan oleh ATMega328, melainkan diperkuat dulu dengan transistor BJT ataupun MOSFET.
Berikut ini adalah contoh pemasangan dioda pengaman pada beban relay. Ada 2 konfigurasi, yaitu konfiguras active HIGH dan konfigurasi active LOW.
Arduino dengan beban relay langsung
Selain dioda pengaman, mesti dicek dulu keperluan arus pada relay tersebut, karena ATMega pada Arduino hanya sanggup memberikan arus maksimal 40 mA pada setiap pin I/O nya. Jika perlu arus agak besar untuk relay, lebih baik menggunakan rangkaian transistor sebagai penguat seperti di bawah ini.
Angka ini tercantum di “Absolute Maximum Ratings”, jadi cukup jelas. Kemungkinan jika temperatur di atas 150 derajat, dapat timbul reaksi kimia yang merusak, atau pemuaian pada material yang juga dapat merusak.
(17) Temperatur lebih rendah dari -65 derajat Celcius
Angka ini tercantum di “Absolute Maximum Ratings”, jadi cukup jelas. Kemungkinan jika temperatur di atas 150 derajat, dapat penyusutan pada material silikon yang dapat merusak.
Referensi
10 Ways to Destroy An Arduino http://www.ruggedcircuits.com/10-ways-to-destroy-an-arduino/
What are the most common ways to fry an Arduino http://electronics.stackexchange.com/questions/67149/what-are-the-most-common-ways-to-fry-an-arduino
Data Arduino UNO https://www.arduino.cc/en/Main/arduinoBoardUno
Data Arduino Nano 3.0 https://www.arduino.cc/en/Main/ArduinoBoardNano