Sebelum kita membuat
termometer digital, kita akan belajar bagaimana menggunakan Serial Monitor
sebagai alat untuk melihat apakah sensor menghasilkan data yang benar atau
tidak. Maksudnya begini, ketika kita menggunakan sebuah sensor untuk mengambil
data, maka sensor akan mengirimkan data untuk diproses oleh mikrokontroller.
Untuk memastikan data dari sensor tersebut merupakan data yang benar, maka kita
bisa melihatnya melalui Serial Monitor. Cara kerjanya begini:
1.
Mikrokontroller akan membaca data dari sensor
2.
Kemudian mikrokontroller akan membuat koneksi serial
ke komputer
3.
Selanjutnya mikrokontroller akan mengirimkan data ke komputer
melalui komunikasi serial tersebut
4. Lalu kita bisa melihat data yang diterima oleh
komputer menggunakan serial monitor, hyperterminal, atau aplikasi
sejenis seperti CoolTerm dan PuTTY.
Serial Monitor
Serial monitor bisa
kita gunakan untuk men-debug secara software. Jika tanpa serial
monitor, kita tidak bisa melakukan debug untuk aplikasi yang kita
buat sehingga untuk menemukan solusinya, kita harus men- debug dari sisi hardware.
Misal ketika ada error, kita akan mencoba dengan LED atau menambah/ mengurangi
rangkaian.
Tapi jika menggunakan
serial monitor, kita akan tahu error-nya melalui data yang dikirimkan oleh
Arduino. Misal ketika nyala LED terlalu lama atau terlalu pelan, kita langsung
bisa mengecek nilai (angka) yang digunakan untuk delay dan semua isi variabel
dalam program yang kita buat. Sehingga kita bisa menelusuri logika dan
algoritma program berdasarkan data-data yang dikirimkan tadi.
Perhatikan pada board
arduino, pin 0 dan 1 ada tulisan RX dan TX. Pin tersebut berfungsi untuk
menerima dan mengirim data melalui komunikasi serial dari Arduino ke komputer
melalui kabel USB. Untuk menggunakan komunikasi serial, kita tidak perlu
menambahkan komponen tambahan pada Arduino karena pada board tersebut sudah
disediakan. Kita cukup menghubungkan Arduino ke komputer, dan kita bisa
langsung membuat program. Mari kita mulai dengan Sketch Komunikasi Serial.
// Sketch Komunikasi Serial
void setup() {
Serial.begin(9600);
Serial.println("With Arduino :");
}
int number = 0;
void loop() {
Serial.print("Hello World! ");
Serial.println( number++ );
delay(1000);
}
Sebelum kita melihat
hasilnya, mari kita sedikit membahas program pada Sketch Komunikasi
Serial.
Serial.begin(9600);
Pada baris ke-3,
perintah Serial.begin(9600); berarti kita akan membuat koneksi serial dengan baud
rate 9600. Sederhananya, baud berkaitan dengan jumlah bit yang
akan ditransfer setiap detik. Nilai baud rate ini tergantung pada clock
mikrokontroller. Arduino Pro
Mini sendiri menggunakan
clock 16 MHz. Jika clock-nya makin rendah, maka baud rate harus kita kurangi.
Sebagai contoh, jika kita menggunakan mikrokontroller dengan clock 1 MHz, maka
baud rate yang cocok adalah 4800. Jika clock 1 MHz kita menggunakan baud rate
9600, maka data yang dikirim ke komputer tidak akan terbaca. Pada Arduino IDE,
nilai baud rate default pada Serial Monitor adalah 9600.
Silakan Anda coba-coba
dengan mengubah nilainya sesuai pilihan yang ada.
Pada baris ke-4,
awalnya Arduino akan mengirim pesan “With Arduino” ketika pertama kali
Arduino start. Setelah itu, Arduino akan mengirim pesan “Hello
World!’ dan dilanjutkan dengan
angka 0, 1, 2, 3, dst. Jika Serial Monitor kita tutup dan kita buka kembali,
maka Arduino seakan-akan melakukan reset program. Arduino akan kembali
mengirimkan pesan “With Arduino”’ dan angka kembali ke 0
lagi.
Serial.print("Hello World! ");
Serial.println( number++ );
Pada baris ke 10 dan
11, kita menemukan perintha print yang berbeda, yaitu print() dan println(). Jika kita menggunakan
print, maka kita sekedar mengirim data tanpa diikuti end of line
(perintah untuk ganti baris , atau ENTER). Jika kita menggunakan println(), maka tulisan akan
diikuti perintah untuk pindah baris.
Kita kembali ke board Arduino. Setelah program Sketch Komunikasi Serial diupload ke Arduino. Perhatikan board Arduino, maka LED yang berlabel TX akan berkedip. Setiap LED TX berkedip, artinya Arduino sedang mengirim data. Buka Serial Monitor dengan cara mengklik icon Serial Monitor. Jika Anda menggunakan versi Arduino IDE selain versi 1.81, mungkin letaknya berbeda.
Tracking timeDelay
Kali ini kita akan men-tracking
timeDelay dan mengirimkan pesan ke komputer bahwa LED sedang nyala atau
mati. LED yang akan kita gunakan untuk percobaan adalah LED yang ada pada board
Arduino yang terhubung ke pin 13, perhatikan LED dengan label “L” pada board
Arduino.
// Sketch Program tracking timeDelay
const int LED = 13;
int timeDelay = 3000;
void setup() {
Serial.begin(9600);
Serial.println("pin 13 as OUTPUT");
pinMode(LED, OUTPUT);
Serial.println("LED = ON, selama timeDelay = 3 detik");
digitalWrite(LED, HIGH);
delay(timeDelay);
}
void loop() {
if(timeDelay <= 100){
Serial.println("Reset timeDelay to 1000");
timeDelay = 1000;
}
Serial.println();
Serial.print("timeDelay = ");
Serial.println(timeDelay);
Serial.println("LED = OFF");
digitalWrite(LED, LOW);
delay(timeDelay);
Serial.println("LED = ON");
digitalWrite(LED, HIGH);
delay(timeDelay);
timeDelay = timeDelay - 100;
}
Program pada Sketch
Program tracking timeDelay merupakan contoh simpel untuk melakukan debugging,
artinya kita ingin mengetahui apa yang dilakukan program dengan mengetahui
setiap variabel dan bagaimana perilaku program tersebut. Setidaknya program
pada Sketch Program tracking timeDelay memiliki output seperti
berikut:
pin 13 as OUTPUT
LED = ON, selama
timeDelay = 3 detik
timeDelay = 3000 LED =
OFF LED = ON
timeDelay = 2900 LED =
OFF LED = ON
timeDelay = 2800 LED =
OFF LED = ON
dst...
Mengukur Suhu dengan LM
35
LM35 merupakan IC
sensor suhu dengan bentuk yang mirip dengan transistor. Kaki IC ini hanya ada
tiga, yaitu untuk VCC, Output, dan GND
Sensor ini bisa
digunakan untuk mengukur suhu dari -55o - 150o celcius. Berdasarkan datasheet LM35,
maka kita bisa menggunakan pengukuran penuh (-55 — 150o celcius)
atau pengukuran sebagian yaitu hanya bisa menghitung dari 2 — 150o
celcius. Untuk pengukuran penuh, maka rangkaian dasarnya seperti tampak pada
Gambar Full-Range sedangkan untuk pengukuran sebagian, rangkaian dasarnya adalah
seperti pada Gambar Basic.
Rangkaian
Rangkaian
sensor suhu LM35
Berdasarkan
karakteristik kaki-kaki pada IC LM35, maka kita akan menggunakan rangkaian
sebagian sehingga Rangkaian hanya bisa mengukur suhu dari 2 hingga 150 derajat
celcius. Cara merangkainya yaitu:
1.
Sambungkan kaki 1 ke VCC
2.
Sambungkan kaki kedua (tengah) ke A0. A0 adalah pin
analog, kaki pin analog berfungsi untuk berbagasi tranduser / sensor yang
mengharuskan sinyal analog. Oleh sebab itu, untuk membaca kaki ini menggunakan analogRead(),
sedangkan untuk menulisnya menggunakan analogWrite().
3.
Sambungkan kaki ke-3 ke GND.
Karakteristik dari
sensor ini yaitu setiap kenaikan 10 mV pada kaki output, menandakan kenaikan
suhu 1o celcius. Sehingga, karena Rangkaian hanya mampu mengukur
dari 2o celcius, maka output LM35 minimal adalah 20 mV dan maksimal
1500 mV. Konversi suhu pada output LM35 juga tergantung pada tegangan referensi
yang digunakan.
Tegangan referensi pada
arduino ada tiga (khusus Arduino Uno), tegangan referensi default, internal,
dan eksternal. Jika kita tidak mendefinisikan tegangan referensi yang akan kita
gunakan, maka Arduino secara default akan menggunakan tegangan referensi 5
volt. Selain 5 volt, tegangan default yang disediakan oleh arduino adalah 3.3
volt. Akan tetapi kita harus membuat jumper dari 3.3 volt (di board Arduino) ke pin AREF, lalu
mengeksekusi perintah analogRference(DEFAULT).
Tegangan referensi
internal Arduino yaitu 1.1 volt, untuk menggunakan tegangan referensi ini, kita
harus memberikan perintah analogReference(INTERNAL).
Tapi jika ingin
menggunakan tegangan referensi selain 5, 3.3, dan 1.1 volt, kita bisa
menggunakan tegangan referensi eksternal. Tegangan referensi ini harus antara 0
dan 5 volt, jika tidak, Arduino bisa jadi akan rusak. Jika kita menggunakan
tegangan referensi custom ini, maka kita harus memasang sumber tegangan ke AREF
dan memberi perintah analogReference(EXTERNAL);
Program
Sebelum membuat
program, kita akan menghitung bagaimana cara mengukur dan mengkonversi output
dari LM35 menjadi suhu. Kita akan mengkonversi voltase pada kaki output LM35,
kemudian menghitungnya berdasarkan tegangan referensi yang digunakan,
mengubahnya menjadi celcius, lalu mengirimkannya ke komputer melalui komunikasi
serial.
Jika kita menggunakan
tegangan referensi 5 volt, maka Arduino bisa mengukur setidaknya hingga 5000
mV. padahal kemampuan LM35 hanya sebatas 150o celcius atau 150 x 10
mV = 1500 mV (1.5volt). Sehingga tegangan yang keluar dari kaki output LM35
tidak akan mungkin melebihi 1.5 volt.
Berdasarkan persamaan
sederhana, maka kita bisa menghitung suhu berdasarkan perbandingan antara
kapasitas voltase yang bisa dicacah oleh pin analog Arduino (1024) dan
kemampuan LM35 mengukur suhu.
Suhu dalam Voltase (T) : 0 - 500
Cacahan Voltase input
(Vin) : 0 - 1024
0/500 = 0/1024
T/500 = Vin/1024
T = (Vin * 500) / 1024
//Sketch Program sensor suhu LM35
const int pSuhu = A0;
float suhu, data;
void setup() {
Serial.begin(9600);
pinMode(pSuhu, INPUT);
}
void loop() {
data = analogRead(pSuhu);
suhu = data * 500 / 1024;
Serial.print("data: ");
Serial.print(data);
Serial.print(", suhu: ");
Serial.print(suhu);
Serial.println();
delay(1000);
}
Program pada Sketch
Program sensor suhu LM35 akan membaca data dari sensor suhu pada pin A0
di board Arduino kemudian mengkonversinya menjadi suhu. Informasi suhu
akan dikirim ke komputer melalui komunikasi serial dengan baud rate
9600 setiap 1000 milisekon.
float suhu, data;
Variabel suhu
dan data menggunakan float, yaitu tipe data yang
memungkinkan memuat angka desimal. Di sini menggunakan desimal karena adanya
pembagian sehingga jika kita menggunakan integer, maka hasil perhitungan kita
kurang presisi karena hasil pembagiannya akan selalu dibulatkan.
data = analogRead(pSuhu);
Fungsi analogRead()
digunakan untuk membaca masukan dari sensor analog. Nilai dari analog read ini
berkisar dari 0 hingga 1023 berdasarkan kemampuan dari mikrokontroller dalam
mencacah dari 0 — 5 volt.
Untuk mendapatkan hasil
pengukuran yang lebih presisi, maka kita bisa mengganti tegangan referensi yang
digunakan. Jika kita menggunakan tegangan referensi 5000 mV, maka space dari
1500 — 5000 mV tidak akan pernah terpakai. Oleh sebab itu, kita bisa
menggunakan tegangan referensi 1500 mV (sesuai dengan output maksimal pada
LM35) atau menggunakan tegangan referensi yang lebih rendah, misal tegangan
referensi INTERNAL yang nilainya adalah 1.1 volt. Sebagai catatan, jika Anda
menggunakan tegangan referensi 1.1 volt (1100 mV), maka batas maksimal suhu
yang bisa dihitungan adalah 110o celcius.
//Sketch Program sensor suhu tegangan referensi 1.1 volt
const int pSuhu = A0;
float suhu, data;
void setup() {
// mengubah tegangan referensi ke internal, 1.1 volt
analogReference(INTERNAL);
Serial.begin(9600);
pinMode(pSuhu, INPUT);
}
void loop() {
data = analogRead(pSuhu);
suhu = data * 110 / 1024;
Serial.print("data: ");
Serial.print(data);
Serial.print(", suhu: ");
Serial.print(suhu);
Serial.print(" C (");
Serial.print(convertToF(suhu));
Serial.print(" F)");
Serial.println();
delay(1000);
}
float convertToF(float suhuC){
return (suhuC * 9.0/5.0) + 32;
}
Program pada Sketch Program sensor suhu
tegangan referensi menggunakan tegangan referensi internal 1.1 volt kemudian
suhu dalam celcius dikonversi menjadi Fahrenheit. Berdasarkan konsepnya,
konversi celcius ke Fahrenheit menggunakan rumus:
Tidak ada komentar:
Posting Komentar