You are on page 1of 23
BAB VI. ANALOG TO DIGITAL & DIGITAL TO ANALOG CONVERTER 6.1 Tujuan 1 2. Mahasiswa memahami input analaog pada mikrokontroller Arduino Mahasiswa memahami perhitungan tegangan resolusi_ ADC mikrokontroler Arduino Mahasiswa memahami —_perintah_—input—~— analog, -—_analogRead(), analogReference(parameter) Mahasiswa dapat memahami program Arduino untuk menampilkan data input analog Mahasiswa dapat memahami output analog dan PWM ( Pulse Width Modulation ) Mahasiswa memahami perintah output analog, analogWrite() 6.2 Peralatan 1 ve 6. 1. 8 9. Sebuah Komputer Arduino*Kabel data = 1 Breadboard LCD RC Kabel male-female = 12 . Kabel male-male = 12 . Potensio = 1 Resistor 220 Ohm = 5 . LED=5 10. Resistor 1 KOhm = 2 11, PushButton = 12. Buzzer=1 13, MultiSevenSegmen = 1 108 6.3 Teori 6.3.1 ADC (Analog to Digital Converter) Arduino khusus menyediakan 6 kanal (8 kanal pada model Uno, Mini dan Nano, dan 16 pada model Mega) untuk difungsikan sebagai analog input. Analog ke digital converternya menggunakan resolusi 10 bit yang berarti range nilai analog dari 0 volt sampai 5 volt akan dirubah Kenilai integer 0 sampai 1023, atau resolusinya adalah S volt / 1024 = 4,9 mV per unit dimana itu berarti nilai digital yang dihasilkan akan berubah setiap perubahan 4,9 mV dari tegangan input analognya. Akan tetapi range input analog dan resolusi tersebut dapat dirubah dengan fungsi analogReference() Perintah yang digunakan untuk fungsi analog input ini adalah: 1. analogRead(pin) : berfungsi untuk membaca nilai analog pada input pin yang akan menghasilkan nilai integer antara 0-1023 analogReference(parameter) : berfungsi untuk menentukan referensi yang digunakan. Parameternya meliputi + DEFAULT : default analog reference yaitu SV (pada board Arduino SV) atau 3,3 volt (pada board Arduino 3,3 V) + INTERNAL : built-in referensi internal tergantung pada _jenis mikrokontroler yang terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56 volt pada ATmegas. + INTERNALIV1 : built-in referensi internal 1.1V (khusus Arduino Mega) + INTERNAL2V56 : built-in referensi internal 2,56V (khusus Arduino Mega) + EXTERNAL : pilihan referensi yang tergantung pada tegangan yang diberikan pada pin AREF (hanya dengan range tegangan 0 sampai SV). Perlu untuk diperhatikan, jangan menggunakan referensi dibawah 0 volt atau lebih dari 5 volt dan pastikan memilih referensi external sebelum perintah analogRead() 109 jika menghubungkan pin AREF dengan referensi eksternal karena jika tidak akan bisa merusak mikrokontrol. Gambar 6.1 Mockup rangkaian ‘Tapi tidak semua pin Arduino dapat digunakan untuk mengolah signal analog. Pada ‘board Arduino Uno, terdapat enam pin analog, yakni mulai dari AO hingga AS. Huruf ‘A pada awal nama pin Arduino menandakan pin terscbut dapat digunakan untuk mengolah signal analog. Seberapa tepat nilai signal analog yang dipetakan secara digital, ditentukan oleh seberapa besar resolusi ADC. Semakin besar resolusi ADC, maka semakin mendekati nilai analog dari signal tersebut. Untuk resolusi ADC pada board Arduino Uno ialah 10 bit, yang berarti mampu memetakan hingga 1024 diserete analog level (2°= 2" = 1024). Beberapa jenis microcontroller lain memiliki resolusi 8 bit, 256 discrete analog level, bahkan ada yang memiliki resolusi 16 bit, 65536 discrete analog level. 110 Arduino Jiiit Gambar 6.2 Rangkaian Potensio pada Arduino 6.3.2 Hubungan Nilai ADC dengan Tegangan Nilai ADC menunjukkan ratio perbandingan dengan tegangan yang terbaca. Berikut petsamaannya ialah nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber. Nilai ADC tergantung dengan tegangan yang menjadi catu daya sistem mikrokontroler. Untuk board Arduino biasa menggunakan sumber tegangan 5 volt. Cara mencari nilai ADC, dengan menerapkan persamaan yang ada dan tegangan terbaca sebesar 2,12 volt pada board Arduino Uno. + Board Arduino Uno memiliki resolusi 10 bit, dengan nilai terbesar 1023, + Tegangan sumber § volt dan tegangan terbaca ialah 2,12 volt + Nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber Schingga diperoleh nilai ADC sebesar 434 Dengan demikian diperoleh nilai ADC sebesar 434 dari tegangan terukur 2,12 volt. Untuk setiap unit ADC tersebut memiliki perbandingan tegangan sebesar 4,9 mV. Selain dipengaruhi oleh besarnya nilai resolusi ADC, tepat tidaknya Pengukuran nilai ADC juga dipengaruhi oleh clock speed ADC tersebut. Untuk board Arduino Uno sendiri clock speed ADC maximum yang disarankan ialah 200 kHz. Nilai clock speed 200 kHz tersebut berdasarkan spesifikasi internal DAC (Digital to Analog Converter) pada rangkaian pengubahnya. Meski ML demikian, penggunaan clock speed pada 1 MHz misalnya, tidak mengurangi kualitas resolusi ADC tersebut, 6.3.3 Input analog Menunjukkan input analog dengan membaca sensor analog pada analog pin 0 dan menghidupkan serla mematikan LED yang terhubung ke pin digital 13. Jumlah waktu LED akan on dan off tergantung pada nilai yang diperoleh oleh analogRead (). Tutorial sedehana untuk belajar membaca nilai ADC dapat dilakukan dengan menggunakan potentiometer. Potentiometer bekerja dengan prinsip pembagi tegangan, dimana terdapat kaki untuk sumber tegangan dihubungkan ke Vec 5 volt Arduino, ground dihubungkan ke ground Arduino, dan data tegangan dihubungkan ke pin analog AO Arduino. Konfigurasi Rangkaian: + Potensiometer dihubungkan ke analog input 0 + Pin tengah dari potensiometer ke pin analog Mikrokontroler Arduino + Satu sisi pin (salah satu) ke ground + Pin sisi lain untuk 5 V + LED anoda (Kaki panjang) yang melekat pada keluaran digital 13 + LED katoda (kaki pendek) yang melekat pada ground + Catatan: karena sebagian Arduinos memiliki built-in LED yang terpasang untuk pin 13 di papan, LED adalah opsional. Untuk memperjelas pemahaman materi kita coba untuk mengeksekusi kode program berikut : 112 6.4 Percobaan 1 : Sensoring Potensio // select the input pin for the potentiometer int sensorPin = AQ; int ledPin = 13; // select the pin for the LED int sensorValue = 0; void setup() { // declare the ledPin as an 0} pinMode(ledPin, OUTPUT); ) void loop() { // vead the value from the sensor: sensorValue = analogRead(sensorPin) ; // turn the ledP digitalWrite(ledPin, HIGH); // stop the program for milliseconds: delay (sensorValue) // turn the ledPin off: digitalWrite(ledPin, LOW); // stop the program for for milliseconds: delay (sensorValue) ; Pembacaan Program 1 2.Mengingat —-kembali_ = fumgsi_—=—— dari sensorV. int sensorPin = AQ; digumakan untuk membuat pin AO menjadi variabel sensorPin dan karena pin AO adalah input analog, maka pada void setup tidak perlu dibuat program pinMode (sens PUT); Karena kalau pin analog sudah pasti INPUT, tidak bisa digunakan untuk OUTPUT. lue = analogRead(sensorPin); adalah untuk menyimpan nilai baca dari sensorPin kedalam variabel sensorValue, del lue) ; digunakan untuk memberikan waktu jeda berdasarkan nilai yang keluar dari sensorPin, jadi kecepatan lampu berkedip berdasarkan potensiometer, 113 Hasil dati eksekusi program diatas akan menghasilkan blink untuk LED pada pin 13 dengan delay yang disesuikan dengan menggunakan inputan dari Potensiometer. 6.5 Percobaan 2 : LED PWM dan Potensio 1, Tambahkan LED pada Pin 9 (PWM) // Bnalog input pin that the potentiometer is attached to const int analoyInPin = A0; // Analog output pin that the LED is attached to const int analogOutPin = 9; // value read from the pot int sensorValue // value output to the PWM (analog out) int outputValue = 0; void setup() { // initialize serial communic: Serial.begin(9600) ; t } void loop() { // read the analog in value: sensorValue = analogRead(analoginPin); // map it to the range of the analog out: outputValue = map(sensorValue, 0, 1023, 0, 255); // change the analog out value analogWrite(analogOutPin, outputValue) ; // print the results to the serial monitor: Serial.print("sensor = " ); Serial.print (sensorValue) ; erial.print("\t output = ": Serial.printin(outputvalue ve // wait 2 milliseconds before the next loop // for the analog-to-digital converter to settle // after the last readin delay (2); 114 Pembacaan program : 1. const int analogInPin = AQ; program seperti sama seperti sebelumnya digunakan untuk membuat variabel, tambahan kode const sebelum int adalah ‘untuk penetapan nila. 2. Serial.begin (9600); berfungsi agar arduino bisa berkomunikasi dengan komputer, 9600 adalah salah satu nilai yang dipilih untuk komunikasi = map(sensorValue, 0, 1023, 0, 255); nilai yang dihasilkan dari sensorValue adalah 0-1023, nilainya akan dikonversi menjadi 0-225 pada variabel output Value. map(value, from_min, from_max, to_min, to_max); Maka pada fungsi map berfungsi untuk mengubah nilai sensor yang awalnya ada pada range 0-1024 menjadi nilai dengan range 0-255. Jika sensor benilai 512 (anggap saja 1/2 dari 1024), maka nilai tersebut akan dirubah menjadi 127 (anggap saja 1/2 dari 255). 4, analogWrite(analogoutPin, outputValue); —menyalakan LED menggunakan PWM (agar bisa diatur terang cahanya__berdasarkan outputValue, 5. Seri, ada didalam tanda kutip print ("sensor = " ); berguna untuk menampilkan teks yang 6. Serial.print (sensorValue) ; untuk menampilkan nilai yang ada pada sensorValue. 7. Serial.print("\t output = "); berguna untuk menampilkan teks yang ada didalam tanda kutip “\t output: Serial.print1n(outputValue) ; untuk menampilkan nilai yang ada pada outputValue Input analog yang ditampilkan secara serial lewat Komponen serial monitor pada software editing Arduino 1S Pada percobaan ADC ini dapat juga digabungkan dengan output analog yang berupa PWM (Pulse Width Modulation), kasus ini akan mengatur terang dan redupnya lampu LED yang terhubung pada pin 13 dari mikrokontroler Arduino. int ledPin = 9; // LED connected to digital pin 9 void setup() { // nothing happens in setup ) void loop() { // fade in from min to max in increments of 5 points: for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { // sets the value (range from 0 to 255) analogWrite(ledPin, fadeValue) ; // wait for 30 milliseconds to see the dimming effect ) delay (30); // fade o from max to min in increments of 5 points: for(int fadeValue = 255 ; fadeValue >= 0; fadevalue -=5) { // sets the value (range from 0 to 255 analogWrite(ledPin, fadeValue) // wait for 30 milliseconds to see the dimming effect } delay (30); 116 6.6 Latihan 1. ‘Tampilkan hasil Output nilai dari potensiometer dari percobaan pertama dan percobaan kedua dengan a). Serial Monitor b) LCD I2C 16x2 ©) Multi Seven Segment 2. Kendalikan nyala 5 LED disesuikan dengan nilai Output dari potensiometer semakin banyak nilai, LED yang menyala semakin banyak. Gambar 6.3 Konfigurasi LED 3. Selesaikan skenario berikut : + Gunakan konfigurasi Arduino, LCD I2C, Potensiometer dan PushButton + Jika tombol PushButton ditekan dan nilai Pin HIGH maka, nilai potensio bisa dimasukkan dan LCD akan menampilkan Nilai dari ADC Potensio, jika posisi LOW akan ditampilkan “Anda tidak punya Akses” (geser ke Kiri). * Buzzer akan berbunyi ketika potensio diputar dan pushbutton kondisi Low. 117 BAB VII. SENSOR CAHAYA & SUHU 7.1 Tujuan 1, Mahasiswa mengenal beberapa sensor cahaya dan sensor suhu. 2. Mahasiswa mampu memprogram aplikasi untuk sensor-sensor tersebut 3. Mahasiswa mampu menghitung konversi ADC ke dalam bentuk besaran yang terukur 7.2 Peralatan 1, ArduinoB LM35 temperature sensor = 1 buah Breadboard and jumper wires A bunch of LEDs, different colors for a better effect ye eS Some resistors between 220-1,000 ohm 13 Teori 7.3.1 Sensor Cahaya Light Dependent Resistor atau yang biasa disebut LDR adalah jenis resistor yang nilainya berubah seiring intensitas cahaya yang diterima oleh komponen tersebut. Biasa digunakan sebagai detektor cahaya atau pengukur besaran konversi cahaya. Light Dependent Resistor, terdiri dari sebuah cakram semikonduktor yang mempunyai dua buah elektroda pada permukaannya, Pada saat gelap atau cahaya redup, bahan dari cakram tersebut_ menghasilkan elektron bebas dengan jumlah yang relatif kecil.Schingga hanya ada sedikit elektron untuk mengangkut muatan elektrik. Artinya pada saat cahaya redup LDR menjadi konduktor yang buruk, atau bisa disebut juga LDR-memiliki resistansi yang besar pada saat gelap atau cahaya redup. Pada saat cahaya terang, ada lebih banyak elektron yang lepas dari atom bahan semikonduktor tersebut. Sehingga akan ada lebih banyak elektron untuk mengangkut muatan elektrik. Artinya pada saat cahaya terang LDR menjadi konduktor yang baik, atau bisa disebut juga LDR memiliki resistansi yangkecil pada saat cahaya terang. 118 Prinsip Kerja LDR Pada sisi bagian atas LDR terdapat suatu garis atau jalur melengkung yang menyerupai bentuk kurva, Jalur tersebut terbuat dari bahan cadmium sulphida yang sangat sensitiv tethadap pengaruh dari cahaya, Jalur cadmium sulphida yang terdapat pada LDR. Jalur cadmium sulphida dibuat melengkung menyerupai kurva agar jalur tersebut dapat dibuat panjang dalam ruang (area) yang sempit. Cadmium sulphida (CdS) merupakan bahan semi-konduktor yang memiliki gap energi antara elektron konduksi dan elektron valensi. Ketika cahaya mengenai cadmium sulphida, maka energi proton dari cahaya akan diserap sehingga terjadi perpindahan dari band valensi ke band konduksi. Akibat perpindahan elektron tersebut_mengakibatkan hambatan dari cadmium. sulphida berkurang dengan hubungan kebalikan dari intensitas cahaya yang mengenai LDR.Lihat gambar dibawah ini. Gambar 7.1 Sensor LDR. LDR disebut juga s ‘agai photoresistor sebab alat ini akan memiliki resistansi yang akan berubah seiring dengan perubahan intensitas cahaya yang mengenainya. Dalam kondisi gelap, resistansi LDR bisa mencapai 10 M ohm, tapi dalam kondisi terang, resistansi LDR turun hingga 1 K ohm bahkan bisa kecil lagi (Gambar 7.2 dan 7.3), Sifat inilah yang membuat LDR bisa dimanfaatkan sebagai sensor cahaya. LDR terbuat dari sebuah cakram semikonduktor seperti kadmium sulfida dengan dua buah elektroda pada permukaannya. Pada saat intensitas cahaya yang mengenai LDR sedikit, bahan dari cakram LDR tersebut menghasilkan elektron bebas dengan jumlzh yang relatif kecil. Schingga hanya ada sedikit elektron untuk mengangkut muatan elektrik. Artinya saat intensitas cahaya yang mengenai LDR sedikit maka LDR akan memiliki resistansi yang besar. 119, Gambar 7.2 Resistansi LDR diterangi lampu = Gambar 7.3 Resistansi LDR ketika lampu dihalangi kertas Sedangkan pada saat kondisi terang, maka intensitas yang mengenai LDR banyak. Maka energi cahaya yang diserap akan membuat elektron bergerak cepat schingga lepas dari atom bahan semikonduktor tersebut, Dengan banyaknya elektron bebas, maka muatan listrik lebih mudah untuk dialirkan, Artinya saat intensitas cahaya yang mengenai LDR banyak maka LDR akan memiliki resistansi yang kecil dan menjadi konduktor yang baik. Gambar 7.3 adalah resistansi pada LDR dalam kondisi terang dan kondisi gelap. Dalam kondisi terang, resistansi masih kisaran 1K ohm, dan ketika cahaya sedikit terhalangi sehingga agak gelap, maka resistansi meningkat hingga puluhan kilo ohm. 120 Karakteristik inilah yang bisa kita manfaatkan untuk mengaktifkan relay dan menghidupkan lampu. 7.3.2 Sensor Suhu LM35 merupakan IC sensor suhu dengan bentuk yang mirip dengan transistor. Kaki IC ini hanya ada tiga, yaitu untuk VCC, Output, dan GND (Gambar 7.5) Gambar 7.5 Sensor suhu LM35 Sensor ini bisa digunakan untuk mengukur subu dari -55° — 150° celeius. Berdasarkan datasheet LM35, maka kita bisa menggunakan pengukuran penuh (-55 — 150° celcius) atau pengukuran sebagian yaitu hanya bisa menghitung dari 2 — 150° celcius. Untuk pengukuran penuh, maka rangkaian dasarnya seperti tampak pada Gambar 7.6 sedangkan untuk pengukuran sebagian, rangkaian dasamya adalah seperti pada Gambar 7.7 Full-Range Centigrade perature Sensor vs Lvs Vor rt (choose Ry =v (50 UA, oun = 1500 mv at 150°C Voor = 250 mV at 25°C Vout = -§50 mV at-85°C Gambar 7.6 Rangkaian dasar pengukuran suhu penuh LM35, 121 Basic Centigrade Temperature Sensor 2°C to 180°C) Ms (avtoz0w mas |_oureur ‘Omv + 10.0mv/"C Gambar 7.7 Rangkaian dasar pengukuran suhu sebagian LM35 7.4 Percobaan 1 : Sensor Cahaya Gambar 7.4 Sensor cahaya dan Arduino Berdasarkan Rangkaian Gambar 7.4, yang perlu Anda siapkan adalah resistor 10 K ohm, LDR, dan beberapa kabel jumper. Agar bisa coba- coba, silakan resistor 10 K ohm bisa Anda ganti dengan potensiometer 50 K atau 100 K, sehingga Anda lebih mudah ketika mencoba dengan resistansi yang berbeda, Potensiometer juga bisa digunakan untuk kalibrasi input pada Arduino, 1. Salah satu kaki LDR disambungkan ke VCC pada Arduino 2. Salah satu kaki Resistor disambungkan ke GND pada Arduino 3. Sambungkan sis dihubungkan ke pin AO pada board Arduino kaki LDR dan sisa kaki resistor, kemudian sambungan tersebut 122 Kodeprogram // pin AQ ke LDR const int pinLDR = AQ; void setup() { Serial.begin (9600); pinMode (pinLDR, INPUT) ; ) int de LOR = 0; { analogRead (pinLDR) ; Serial.print (" ; Serial.print (dataLDR); jataLDR : Serial.print(" Kondisi "i: if(dataLDR < 159) { Serial.printin("GELAP" de Jelse if(da 00) ¢ -printin ("REDUP" < jelse if(dataLDR < 450) { Serial.print1n("TERANG" println ("SILAU") delay (1000); Program pada Sketch diatas akan membaca nilai tegangan pada sensor dan mengirimkannya ke komputer melalui komunikasi serial. Dengan Arduino, kita bisa membuat berbagai logika untuk sensor cahaya sehingga aplikasi dari LDR ini bisa diperluas dan dibuat lebih kompleks diintegrasikan dengan berbagai sistem 123 7.5 Percobaan 2 : Sensor Suhu Berdasarkan karakteristik kaki-kaki pada IC LM35, maka kita akan menggunakan rangkaian sebagian sehingga Rangkaian Gambar 7.7 hanya bisa mengukur suhu dari 2 hingga 150 derajat celcius. Cara merangkainya sebagai berikut : Gambar 7.8 Rangkaian sensor suhu LM35 dengan ArduinoB 1. Sambungkan kaki 1 ke VCC 2. Sambungkan kaki kedua (tengah) ke AO. AO 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 1° celcius. Sehingga, karena Rangkaian Gambar 7.7 hanya mampu mengukur dari 2° celeius, maka output LM35 minimal adalah 20 mV dan maksimal 1500 mV. Konversi suhu pada output LM35 juga tergantung pada tegangan referensi yang digunakan, 124 Tegangan referensi pada arduino ada tiga (khusus Arduino Uno) 7, 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, alu mengeksekusi perintah analogReference(DEFAULT). Tegangan referensi intemal 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 $ 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); et wir pee, a Rebus LM35 Precision Centigrade T 7 Features 3 + Caivated Dincyn cots Conta) z 5 Gieare'imyr Sone acon 1 are ema pecrcy 260) % 5 Rasa orFut-see 18 Range ee + Suttle or Remote Appleaions 5 Lowcoet ve fo Watr Lara! Fog z 1 Opomen tom 4 vio 80 = {Chetan soa Gaetan x 5 Low otentng oe mu Ar = 5 Nondineaty ony 26 type e 1 [Stina Capita load Gambar 7.9 Datasheet LM35 (Sumber : ttp://www.ti.com/lit/ds/symlink/lm35.pdf) 125 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 $000 mV. padahal kemampuan LM35 hanya sebatas 150° celcius atau 150 x 10 mV = 1500 mV (1.Svolt). Schingga tegangan yang keluar dari kaki output LM3S tidak akan mungkin melebihi 1.5 volt. Berdasarkan persamaan sedethana, maka kita bisa menghitung suhu berdasarkan perbandingan antara kapasitas voltase yang bisa dicacah oleh pin analog Arduino (1024) dan kemampuan LM35 mengukur subu. Suhu dalam Voltase (T) : 0 - 500 Cacahan Voltase input (Vin) : 0 - 1024 0/500 = 0/1024 1/500 = Vin/1024 T= (vin * 500) / 1024 Kode Program : const int pSuhu = A; float suhu, data; void setup() { Serial.begin (9600); pinMode (pSuhu, INPUT) ; ) void loop() { data = analogRead (ps hu); 126 suhu = data * 500 / 1024; erial.print (" Serial.print (data); Serial.print(", suhu: "); Serial.print (suhu); Serial.printin(); delay (1000); Program pada Sketch diatas akan membaca data dari sensor suhu pada pin AO 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 — $000 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 Anda referensi INTERNAL yang nilainya adalah 1.1 volt. Sebagai catatan, ji menggunakan tegangan referensi 1.1 volt (1100 mV), maka batas maksimal suhu yang bisa dihitungan adalah 110° celeius. 127 Program sensor suhu tegangan referensi 1.1 volt : const int pSuhu = AQ; float suhu, di void setup() { // mengubah tegangan referensi ke internal, 1.1 volt analogReference (INTERNAL ); Serial.begin (9600); pinMode (pSuhu, INPUT); void leep() { data = analogRead(psuhu) ; u = data * 110 / 1024; Serial.print ("dai (data); erial.pri Serial.pri suhu: Serial.print Serial.pri Serial.prin )); Serial.print(" F)"); Serial.printin(); delay (1000); co": (convert ToF (sunu float convertToF (float suhuc) return (suhuC * 9.0/5.0) + 32; Program pada Sketch diatas menggunakan tegangan referensi internal 1.1 volt kemudian suhu dalam celcius dikonversi menjadi Fahrenheit. Berdasarkan konsepnya, konversi celcius ke Fahrenheit menggunakan rumus: 128 Kemudian informasi suhu dalam celcius dan Fahrenheit dikirim ke komputer dengan komunikasi serial. 7.6 Latihan Gunakan tampilan LCD 2C dan Multi 7-Segmen untuk menampilkan nilai dari percobaan LDR dan LM35. Gunakan sensor LDR, selesaikan bisnis proses berikut Jika LDR dalam posisi terpapar cahaya : Buzzer akan menyala LCD I2C tampil “ADA MALING!!” LED kondisi Hidup-Mati secara bergantian dan hentikan Buzzer jika tombol ditekan, Gunakan LCD Shield, manfaatkan tombol select untuk menentukan ukuran dalam. celcius dan fahrenheit. Gunakan tombol naik turun untuk memindah tampilan. Jika celcius yang terseleksi maka otomatis akan di tampilkan suhu terkini dalam celcius, jika fahrenheit yang terpilih maka akan ditampilkan suhu dalam Fahrenheit. Buat sketch untuk menangani bisnis proses Pantauan Cuaca berikut Asumsi : Jika suhu lebih dari atau sama dengan 30 dan lumen lebih dari 50 berarti Panas, Jika suhu lebih dari atau sama dengan 25 dan lumen lebih dari 45 berarti Cerah, Jika suhu kurang dari atau sama dengan 25 dan lumen kurang dari 40 berarti Mendung, Jika suhu kurang dari atau sama dengan 23 dan lumen kurang dari 40 berarti Hojan, Jika suhu kurang dari atau sama dengan 19 dan lumen kurang dari 40 berarti Dingin, 129 ‘Tampilan : ‘Tampilkan kedua nilai temperatur dan lumen dengan LCD I2C, baris pertama akan berisi nilai suhu dan lumen yang akan berganti otomatis ketika ada perubahan nilai. Indikator hasil pengukuran : + Jika kondisi cuaca cerah dan panas akan menyalakan LED hijau + Jika kondisi cuaca mendung dan dingin akan menyalakan LED kuning + Jika kondisi cuaca Hujan akan menyalakan LED merah dan buzzer bunyi. 130

You might also like