Showing posts with label Mikrokontroller. Show all posts
Showing posts with label Mikrokontroller. Show all posts

Monday, February 25, 2019

Apa Itu ADC (Analog to Digital Converter) Pada Arduino?

February 25, 2019
 
Gambar 1. Wiring LM 35 to ADC Arduino
ADC (Analog to Digital Converter) adalah suatu perangkat elektronika yang mengubah analog menjadi data digital.

Analog bersifat continous, sementara digital berifat diskrit. Pertanyaannya muncul yaitu mengapa perlu adanya sebuah ADC bila kita ingin memasukan suatu input ke dalam mikrokontroller.
Jawabannya, mikrokontroller adalah sebuah perangkat yang hanya dapat mengolah data digital atau diskrit, Hanya nol dan satu. Sehingga untuk mendapatkan sebuah data non digital yaitu data analog perlu sebuah ADC.
Contoh input analog adalah potensiometer dan sensor. Karena, data yang didapatkan tidak bernilai satu dan nol namun dapat berubah-ubah sesuai waktu.
Agar sebuah data analog dapat dibaca oleh mikrokontroller perlu sebuah proses yang terjadi dalam ADC adalah:
·        Pen-cuplik-an
·        Peng-kuantisasi-an
·        Peng-kode-an

Proses ADC tersebut dapat dinyatakan dalam persamaan:
Data_ADC = (Vin/Vref) x Maksimal_Data

Contoh dalam penggunaannya yang umum adalah pembacaan sensor LM35. Diketahui data ADC yang terbaca pada analog input adalah 300. (bila pada arduino dapat dibaca pada serial monitor)
Sementara Vref adalah tegangan masukan pada Vcc pada LM35. Kenapa 1 Volt ? Karena dianggap pada range pengukuran kenaikan 1 derajat adalah 10 mV. Untuk pengukuran range 1-100 derajat maka antara range maksimal 1000 mV alias 1 Volt.
Oleh karena itu biasanya perlu sebuah sinyal conditioning yang mengubah dari 10mV menjadi 1 Volt. Agar range pengukuran dapat berkirsar antara 1-5 volt sesuai tegangan kerja arduino.
Hal tersebut dilakukan agar pengukuran menjadi lebih presisi. Bisa saja maksimal 1 volt untuk tegangan referensinya. Namun, hal tersbut dapat menyebabkan pengukuran yang kurang tepat.
Maksimal data yang digunakan adalah 1023 adalah jumlah maksimal bit pada arduino yaitu 10 bit. Kita juga dapat menggunakan ADC eksternal dengan jumlah bit yang lebih besar.
Jumlah bit yang lebih besar dapat membuat pengukuran akan menjadi lebih presisi karena data yang dihitung tercacah lebih detail.
Data_ADC = (Vin/Vref) x Maksimal_Data
250 = (Vin/1) x 1023
Vin = (250 x 1 / 1023) = 0,243 Volt

Langkah berikutnya adalah menentukan suhu sesungguhnya yang dideteksi oleh LM35. Untuk melakukan itu perlu diperhatikan sensitivitas dari LM35. Dari datasheet-nya, LM35 memiliki sensitivitas  10 mV/oC. Sehingga suhu yang terdeteksi oleh LM35 (T):

T = (Vin/Sensitivitas) (0,293/0,01) = 24,43 oC


Langkah tersebut dapat digunakan juga untuk pengukuran sensor lain dengan melihat data datasheet mulai dari tegangan keluaran sensor dan sensitifitas sensor.

Thursday, February 7, 2019

Mengukur Suhu dengan Thermocouple dan Modul MAX6675

February 07, 2019

Kali ini, kita akan belajar membuat alat monitoring suhu menggunakan sensor Thermocouple tipe k dan Arduino.

Alat ini menggunakan modul MAX6675 yang digunakan untuk cold & hot juncion compensation. Selain itu terdapat penguat tegangan output dari sensor Thermocouple.

Modul MAX6675 ini mengubah tegangan menjadi data digital dengan konversi  ADC sebesar 12bit.

Uniknya, data yang dikirim dari MAX6675 adalah berupa data digital dengan komunikasi mirip dengan komunikasi SPI.

Dengan begitu, perlu adanya konversi data digital yang ditangkap oleh Arduino melalui komunikasi SPI. Tapi, dengan adanya library max6675.h tidak perlu lagi repot untuk memikirkan komunikasi dan konversinya.
Rangkaian MAX6675 dengan Arduino

Program 



PIN SO pada Modul MAX6675 disambungkan ke pin 8 arduino sesuai dengan inisialisasi awal program.

PIN CS pada Modul MAX6675 disambungkan ke pin 9 arduino sesuai dengan inisialisasi awal program.

PIN CLK pada Modul MAX6675 disambungkan ke pin 10 arduino sesuai dengan inisialisasi awal program.

Sementara untuk PIN VCC disambungkan ke 5V pada arduino dan GND disambung ke pin GND Arduino

Tuesday, February 5, 2019

Interrupt Pada Arduino (Aplikasi Program Running LED)

February 05, 2019

Fungsi Interrupt pada Arduino adalah suatu fungsi untuk memicu program lain secara eksternal atau internal.

Singkatnya, dengan kamu memberi masukan atau sebuah keluaran, kamu bisa memproses program lain.

Secara sederhana arduino sudah menyediakan fungsi khusus untuk penggunaan interupt yaitu dengan attachInterrupt (interrupt, function, mode) .

Khusus untuk Arduino Uno, hanya memiliki 2 pin interrupt yaitu INT0 pada pin 2 digital dan INT1 pada pin 3 digital.

Pada bagian fungsi bisa ditulis program fungsi yang dimaksud. Contoh untuk program fungsi void variasi() .

Mode Penggunaan Interrupt

Mode LOW. Pada mode ini interrupt akan diaktifkan saat pin int memiliki logika low dan akan aktif selama masih berlogika low. Artinya bila tidak ada trigger awal, intterupt dapat bekerja menjalankan program fungsi.
Mode CHANGE. Interrupt akan diaktifkan saat terjadi perubahan logika baik dari low ke high ataupun high ke low.
Mode RISING. Pengaktifan interrupt akan terjadi jika pin mengalami perubahan logika dari low ke high. Bedanya dengan CHANGE, ketika dari high ke low interrupt tidak akan aktif.
Mode FALLING. Perubahan logika pada pin int dari high ke low akan mengaktifkan fungsi interrupt. Ini menjadi kebalikan dari metode RISING.

Rangkaian Interrupt 
Rangkaian Intterupt Running LED
Contoh Program Arduino



Pada program ini, inisialisasi input dan output pada void setup. Jelas sesuai dengan gambar proteus.
Pada void setup juga terdapat instruksi attachInterrupt (digitalPinToInterrupt(2) , variasi, RISING); untuk inisialisasi pemilihan pin digital 2, fungsi program dan mode interrupt.
Pada void loop terdapat fungsi switch case untuk memanggil program yang sesuai kanankiri, kirikanan, dan tengahkanankiri.
Namun bedanya ketika terdapat interrupt diaktifkan saat menekan tombol di pin digital 2 akan langsung mengalihkan program ke fungsi void variasi.
Yang selanjutnya mengalihkan program secara langsung dari yang awalnya kanankiri langsung loncat ke program kirikanan. Tanpa perlu menunggu program running led selesai dari kanan ke kiri.
Itu penjelasan singkat mengenai interrupt, aplikasinya banyak banget. Bisa digunakan untuk kontrol motor yang memerlukan banyak trigger yang dapat juga diaplikasikan dengan rangkaian elektronika daya.
Selamat mencoba!

Thursday, January 31, 2019

Millis Pada Arduino, Contoh Program dan Aplikasinya

January 31, 2019

Millis adalah sebuah fungsi pada sintak arduino yang berguna menjalankan waktu secara independen. Pasti ada yang bingung kan bedanya millis sama delay?

Bedanya adalah millis dapat menjalankan program dengan multi tasking tanpa menghentikan kerja keseluruhan arduino. Berbeda dengan delay, fungsi delay membuat kerja arduino berhenti.

Dengan delay, arduino dapat menjadi lebih menghitung. Karena saat arduino menjalankan fungsi delay, arduino tidak dapat mengerjakan kerja program lain.  
Aplikasinya dapat digunakan dalam pengendalian motor, lampu led, dan masih banyak lagi 
Rangkaian 
Rangakaian Miliis pada Pin arduino 8
Program Delay
Aplikasi Millis?
Berikut adalah program untuk menyalakan dan mematikan LED pada pin 8 dengan waktu tunda satu detik menggunakan millis.

Diawal terdapat deklarasi yaitu variable interval, previosMillis, currentMillis, dan millis(); saat menyimpan data millis digunakan type variable unsigned longKenapa unsigned long karena datanya panjang.

Pertama, currentMillis menghitung waktu secara independent dari millis(), kemudian adalah program terus berputar. Kemudian akan terpanggil dan melakukan check apakah currentMillis – previousMillis >= 1000?. Saat itu previousMillis masih bernilai 0 karena inisialisasi awal.
jika tidak maka variable previousMillis akan mengambil waktu lagi dari millis. Hal tersebut dilakukan millis sampe nilai mendekati 1000.
Setelah currentMillis – previousMillis >= 1000 sudah terpenuhiLED akan dirubah menjadi perintah menyalakan dan mematikan sesuai dengan program yang dibuat.

Itu berdasarkan perintah if. Yaitu, if ((unsigned long)(currentMillis - previousMillis) >= interval) lalu masuk ke bagian if.

ledState = !ledState; digunakan untuk melihat status false atau true. Untuk menghidupkan perintah menyalakan dan mematikan secara bergantian sesuai dengan perhitungan millis(); 

Untuk perintah terakhir adalah   previousMillis = millis(); fungsinya untuk mengembalikan millis untuk dijadikan nilai previousMillis yang selanjutnya digunakan untuk perhitungan if.

Itu dilakukan secara terus menerus looping hingga terpenuhi nilai 1000, maka previousMillis akan kembali ke 0 dan mengulangi perhitungan dari awal.


Tuesday, January 29, 2019

Lampu LED Berjalan (Running LED) Menggunakan Arduino Dengan WHILE

January 29, 2019

Pada postingan ini kita akan mencoba membuat Lampu LED Berjalan (Running LED) Menggunakan Arduino, namun  yang membedakan adalah penggunaan algoritma WHILE

Kelebihannya, program yang dibuat akan jauh lebih sederhana. Berbeda dengan program konvensional.

Jika menggunakan program konvensional, Bayangkan saja jika terdapat 13 LED, kita harus membuat program satu persatu dengan perintah digital write high dan low beserta delaynya. 

Berbeda dengan dengan WHILE, penulisannya akan lebih singkat dan sangat sederhana. 

Sebenarnya hampir mirip dengan FOR, Cuma hal yang membedakan adalah inisialisasi awal variablenya. Oke langsung saja kita ulas bersama.

Rangkaian Running LED

Gambar 1. Rangkaian Running LED 

Alat dan Bahan

  • 5 Buah LED 
  • 5 Buah Resistor 330Ω Ohm
  • Kabel Jumper Secukupnya
  • 1 Buah Protoboard
  • 1 Buah Arduino 

Sketch Program

Berikut adalah program dari Lampu LED Berjalan (Running LED) Menggunakan Arduino dengan WHILE. 

Kita menggunakan Pin 5, 6, 7, 8, dan 9 sebagai keluaran LED.


Int i; adalah pendeklarasian variable global. Maksudnya, Variable itu dapat digunakan sebagai pengenalan "i" berupa Integer bisa digunakan diseluruh bagian program.

Void Loop berguna sebagai program utama. Jika dalam sebuah film adalah jalan cerita utamanya. Disana, terdapat WHILE yang digunakan sebagai metode yang digunakan

Perbedaannya jika WHILE variable "i" perlu diberi nilai awal yaitu i=5; selanjutnya masuk ke fungsi WHILE. Selanjutnya While (i<=9) akan masuk kedalam program digitalwrite (i,High) untuk menyalakan LED . i menunjukan pin setiap perulangan. Setelah itu delay selama 1 detik. Selanjutnya, digitalwrite (i,Low) untuk mematikan LED.

Setelah program tersebut ditambahkan i++ untuk menambah perulangan. Ketika "i" sudah lebih dari 9 maka program didalam while tidak dapat dieksekusi.

Program langsung mengarahkan ke return 0; . Sehingga, "i" kembali ke 0 dan memulai kembali dari awal. Begitupun seterusnya.

Berbeda dengan FOR, pendeklarasian langsung  diawal. For (i=5;i<=9;i++) terlihat pendeklarasian berada diawal.

Sebenarnya secara prinsip kerja sama. Maksudnya, keduanya bisa digunakan untuk perulangan untuk n kali. Contoh ingin melakukan perulangan 5 kali seperti pada program LED berjalan diatas.

Lampu LED Berjalan (Running LED) Menggunakan Arduino Dengan FOR

January 29, 2019

Pada postingan ini kita akan mencoba membuat Project Lampu LED Berjalan (Running LED) Menggunakan Arduino, tapi yang membedakan adalah penggunaan algoritma FOR. 

Kelebihannya, program yang dibuat akan lebih sederhana. Berbeda dengan program konvensional.

Jika menggunakan program konvensional, Bayangkan saja jika terdapat 13 LED, kita harus membuat program satu persatu dengan perintah digital write high dan low beserta delaynya. Berbeda dengan dengan FOR, penulisannya akan lebih singkat dan sangat sederhana. 

Well, pasti udah tidak sabar untuk belajar kan? langsung saja kita bahas programnya. Namun sebelum itu, kita perlu tahu alat dan bahan yang digunakan. 

Rangkaian Running LED

Gambar 1. Rangkaian Running LED 

Alat dan Bahan

  • 5 Buah LED 
  • 5 Buah Resistor 330Ω Ohm
  • Kabel Jumper Secukupnya
  • 1 Buah Protoboard
  • 1 Buah Arduino 

Sketch Program

Berikut adalah program dari Lampu LED Berjalan (Running LED) Menggunakan Arduino dengan FOR. 

Kita menggunakan Pin 5, 6, 7, 8, dan 9 sebagai keluaran LED.


Int i; adalah pendeklarasian variable global. Maksudnya, Variable itu dapat digunakan sebagai pengenalan "i" berupa Integer bisa digunakan diseluruh bagian program.

Void Loop berguna sebagai program utama. Jika dalam sebuah film adalah jalan cerita utamanya. Disana, terdapat FOR yang digunakan sebagai metode yang digunakan

FOR (i=5) maksudnya adalah pendeklarasian awal output LED di pin 5 . sementara i<=9 adalah pembatasan hingga LED pin 9. Sementara i++ digunakan untuk menambah setiap perulangan.

"i" akan masuk pada program digitalwrite (i,High) untuk menyalakan LED . "i" menunjukan pin setiap perulangan. Setelah itu delay selama 1 detik. Selanjutnya digitalwrite (i,Low) untuk mematikan LED.

Pada perulangan pertama dimulai dari pin 5 dilanjut ke pin 6 hingga berakhir di pin 9. Saat sudah mencapai pin 9. Program akan melanjutkan ke return 0. Sehingga "i" akan bernilai 0 kembali.

Saat sudah menjadi 0, program akan mengulang kembali ke pin 5. Kemudian begitulah seterusnya.