dht11 PDF
dht11 PDF
dht11 PDF
2017
http://repositori.usu.ac.id/handle/123456789/3174
Downloaded from Repositori Institusi USU, Univsersitas Sumatera Utara
RANCANG BANGUN SISTEM PENGUKURAN DATA SUHU,
KELEMBABAN DAN TEKANAN UDARABERBASIS MIKROKONTROLER
ATMEGA 328P
SKRIPSI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2017
SKRIPSI
Diajukan untuk melengkapi dan memenuhi syarat mencapai gelar sarjana sains
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2017
Diluluskan di
Medan, Agustus 2017
Komisi Pembimbing :
Diketahui/Disetujui oleh
KetuaDepartemen Fisika FMIPA USU, Pembimbing,
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri kecuali beberapa
kutipan dan ringkasan yang masing- masing di sebutkan sumbernya.
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK
iiv
ABSTRAC v
DAFTAR ISI vi
DAFTAR GAMBAR ix
DAFTAR TABEL x
BAB 1 PENDAHULUAN 1
1.1. LATAR BELAKANG 1
1.2. RUMUSAN MASALAH 2
1.3. BATASAN MASALAH 2
1.4. TUJUAN PENELITIAN 2
1.5. MANFAAT 3
1.6. SISTEMATIKA PENULISAN 3
DAFTAR PUSTAKA 49
LAMPIRAN A 50
LAMPIRAN B 51
LAMPIRAN C 57
Tabel Halaman
Berbagai uraian yang telah ada maka penelitian ini diarahkan pada permasalahan
berikut:
1. Bagaimana rancang bangun alat ukur suhu, kelembaban dan tekanan udara
berbasis mikrokontroler Atmega 328P.
2. Bagaimana sistem kerja DHT11 dan BMP085 yang digunakan untuk
mengindetifikasi data suhu, kelembaban dan tekanan udara.
Mengingat keterbatasan waktu dan untuk menghindari topik yang tidak perlu
maka penulis membatasi pembahasan pembuatan alat ini. Adapun permasalahan ini
adalah:
1. Perancangan dan pembuatan alat ini berbasis mikrokontroller Atmega 328P
2. Mengetahui bagaimana prinsif kerja dari rangkaian alat suhu, kelembaban dan
tekanan udara.
3. Mengetahui bagaimana fungsi dari masing- masing komponen utama yaitu sensor
DHT11, sensor BMP085, mikrokontroller Atmega 328P,serta komponen
pendukung lainnya
4. Mengetahui keakuratan alat hasil dengan alat standart
5. Hasil pengolahan data akan ditampilkan pada LCD (Liquid Crystal Display)
DAFTAR PUSTAKA
2.1. Umum
Suhu juga disebut temperatur yang diukur dengan alat termometer. Empat
macam termometer yang paling dikenal adalah Celsius, Reaumur, Fahrenheit dan
Kelvin. Perbandingan antara satu jenis termometer dengan termometer lainnya
mengikuti:
C:R:(F-32) = 5:4:9
K = C + 273.(derajat)
Karena dari Kelvin ke derajat Celsius, Kelvin dimulai dari 273 derajat, bukan
dari -273 derajat.Dan derajat Celsius dimulai dari 0 derajat. Suhu Kelvin sama
perbandingan nya dengan derajat Celsius yaitu 5:5, maka dari itu, untuk mengubah
suhu tersebut ke suhu yang lain, sebaiknya menggunakan atau mengubahnya ke
derajat Celsius terlebih dahulu, karena jika kita menggunakan Kelvin akan lebih
rumit untuk mengubahnya ke suhu yang lain
Tekanan udara adalah yang bekerja yang bekerja untuk menggerakkan massa
udara dalam setiap satuan luas tertentu.Tekanan udara dibatasi oleh ruang dan waktu,
yang berarti tempat dan waktu yang berbeda, memiliki besar tekanan udara yang
berbeda pula.ada 2 jenis tekanan udara yaitu tekanan udara vertikal dan tekanan
udara horizontal.
DHT11 adalah salah satu sensor yang dapat mengukur dua parameter lingkungan
sekaligus, yakni suhu dan kelembaban udara (humidity). Dalam sensor ini terdapat
sebuah thermistor tipe NTC (Negaive Temperature Coefficient) utuk mengukur suhu,
sebsuah sensor kelembaban tipe resistif dan sebuah mikrokontroller 8-bit yang
mengolah kedua sensor tersebut dan mengirim sinyal hasilnya ke pin output dengan
format single-wire bi-directional (kabel tunggal dua arah). Jadi walaupun
kelihatannya kecil, DHT11 ini ternyata melakukan fungsi yang cukup kompleks
Spesifikasi :
• Resolusi pengukuran : 16 bit
• Repeability : 1% RF
• Akurasi pengukuran : 250C dan 5%
• Interchangeability : fullyinterchangeable
• Waktu respon : 250C 6 detik
• Supply : 5V
• Konsumsi arus : 0.3mA
• Periaode Sampling : lebih dari 2 detik
Sensor barometer BMP085 adalah salah satu sensor barometer yang sering
digunakan dalam pembuatan multirotor. Sensor barometer berukuran 5 mm x 5mm x
1,2 mm ini memiliki tingkat akurasi hingga 2,5 hPa. Dalam aplikasinya, konsumsi
daya barometer BMP085 sangat rendah, yaitu dibawah 3 µA. Gambar 2.2 merupakan
gambar bentuk fisik barometer BMP085. Sedangkan konfigurasi dan deskripsi kaki-
kakinya dapat dilihat pada gambar 2.3 dan tabel 1.
Read only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan
catu daya. Sesuai dengan keperluannya, sesuai dengan susunan MCS-51.
Memorypenyimpanan program dinamakan sebagai memory program.Random Acces
Memory (RAM) isinya akan begitu sirna IC kehilangan catu daya dipakai untuk
menyimpan data pada saat program bekerja. RAM yang dipakaiuntuk menyimpan
data ini disebut sebagai memori data.
ATMega328 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD
dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan
sebagai input/output digital atau difungsikan sebagai periperal lainnya.
2. PORTC
Port C merupakan jalur data 7 bit yang dapat difungsikan sebagai input/output
digital. Fungsi alternatif PORTC antara lain sebagai berikut.
a. ADC6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10 bit.
ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog
menjadi data digital
b. I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC.
I2C digunakan untuk komunikasi dengan sensor atau devicelain yang memiliki
komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck.
3. PORT D
Port D merupakan jalur data 8 bit yang masing-masing pin-nya juga dapat
difungsikan sebagai input/output. Sama seperti Port B dan Port C, Port D juga
memiliki fungsi alternatif dibawah ini.
a. USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan
level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial,
sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsi untuk
menerima data serial.
b. Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai
interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari
program, misalkan pada saat program berjalan kemudian terjadi interupsi
hardware/software maka program utama akan berhenti dan akan menjalankan
program interupsi.
c. XCK dapat difungsikan sebagai sumber clock external untuk USART, namun
kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu
membutuhkan externalclock.
Tabel 2. Spesifikasi
Chip mikrokontroller ATmega328P
Tegangan operasi 5V
Tegangan input (yang 7V - 12V
direkomendasikan)
Digital I/O pin 14 buah, 6 diantaranya menyediakan
PWM
Analog Input pin 6 buah
2.5.2. Pemrograman
Untuk pengguna mikrokontroller yang sudah lebih mahir, anda dapat tidak
menggunakan bootloader dan melakukan pemrograman langsung via header ICSP
(In Circuit Serial Programming) dengan menggunakan Arduino ISP
Development Board Arduino Nano dapat diberi tenaga dengan power yang
diperoleh dari koneksi kabel Mini-B USB, atau via power supply eksternal. External
power supply dapat dihubungkan langsung ke pin 30 atau Vin(unregulated 6V -
20V), atau ke pin 27 (regulated 5V). Sumber tenaga akan otomatis dipilih mana yang
lebih tinggi tegangan
Beberapa pin power pada Arduino Uno :
• GND. Ini adalah ground atau negatif.
• Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power
langsung ke board Arduino dengan rentang tegangan yang disarankan 7V -
12V
• Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir tegangan 5V
yang telah melalui regulator
• 3V3. Ini adalah pin output dimana pada pin tersebut disediakan tegangan
3.3V yang telah melalui regulator
Chip ATmega328 pada Arduino Uno R3 memiliki memori 32 KB, dengan 0.5
KB dari memori tersebut telah digunakan untuk bootloader. Jumlah SRAM 2 KB,
dan EEPROM 1 KB, yang dapat di baca-tulis dengan menggunakan EEPROM
library saat melakukan pemrograman.
2.5.5. Komunikasi
Dengan banyak nya fasilitas yang di tawarkan, proteksi, feature dan kemudahan
dari Arduino Nano V3, menjadikan board ini menjadi pilihan terbaik untuk
membantu anda yang menginginkan untuk belajar mikrokontroller namun juga
membutuhkan board yang tidak banyak memakan tempat.
Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada di antara bahasa
beraras rendah dan beraras tinggi.Bahasa beraras rendah artinya bahasa yang
berorientasi pada mesin dan beraras tinggi berorientasi pada manusia.Bahasa beraras
rendah, misalnya bahasa assembler, bahasa ini ditulis dengan sandi yang dimengerti
oleh mesin saja, oleh karena itu hanya digunakan bagi yang memprogram
mikroprosesor.Bahasa beraras rendah merupakan bahasa yang membutuhkan
kecermatan yang teliti bagi pemrogram karena perintahnya harus rinci, ditambah lagi
masing-masing pabrik mempunyai sandi perintah sendiri.Bahasa tinggi relatif mudah
digunakan, karena ditulis dengan bahasa manusia sehingga mudah dimengerti dan
tidak tergantung mesinnya.Bahasa beraras tinggi biasanya digunakan pada komputer.
Kelebihan Bahasa C:
- Bahasa C tersedia hampir di semua jenis computer.
- Kode bahasa C sifatnya adalah portable dan fleksibel untuk semua jenis
computer.
- Bahasa C hanya menyediakan sedikit kata-kata kunci. hanya terdapat 32 kata
kunci.
- Proses executable program bahasa C lebih cepat
Kekurangan Bahasa C:
- Banyaknya operator serta fleksibilitas penulisan program kadang-kadang
membingungkan pemakai.
- Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
Suatu source program C baru dapat dijalankan setelah melalui tahap kompilasi dan
penggabungan. Tahap kompilasi dimaksudkan untuk memeriksa source-program
sesuai dengan kaidah-kaidah yang berlaku di dalam bahasa pemrograman C. Tahap
kompilasi akan menghasilkan relocatable object file. File-file objek tersebut
kemudian digabung dengan perpustakaan-fungsi yang sesuai. untuk menghasilkan
suatu executable-program.Shortcut yang digunakan untuk mengkompile:
1. Header File
adalah berkas yang berisi prototype fungsi. definisi konstanta. dan definisi
variable. Fungsi adalah kumpulan code C yang diberi nama dan ketika nama
tersebut dipanggil maka kumpulan kode tersebut dijalankan.
Contoh :
stdio.h
math.h
conio.h
2. Preprosesor Directive (#include)
Preprosesor directive adalah bagian yang berisi pengikutsertaan file atau berkas-
berkas fungsi maupun pendefinisian konstanta.
Contoh:
#include <stdio.h>
#include phi 3.14
3. Void
artinya fungsi yang mengikutinya tidak memiliki nilai kembalian (return).
4. Main ( )
Fungsi main ( ) adalah fungsi yang pertama kali dijalankan ketika program
dieksekusi.tanpa fungsi main suatu program tidak dapat dieksekusi namun dapat
dikompilasi.
2.6.4. Identifier
Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogram
yang digunakan untuk menyimpan nilai, misalnya nama variable, nama konstanta,
nama suatu elemen (misalnya: nama fungsi, nama tipe data, dll). Identifier punya
ketentuan sebagai berikut :
1. Maksimum 32 karakter (bila lebih dari 32 karakter maka yang diperhatikan hanya
32 karakter pertama saja).
2. Case sensitive: membedakan huruf besar dan huruf kecilnya.
3. Karakter pertama harus karakter atau underscore ( _ ) . selebihnya boleh angka.
4. Tidak boleh mengandung spasi atau blank.
5. Tidak boleh menggunakan kata yang sama dengan kata kunci dan fungsi.
Variabel adalah identifier yang nilainya dapat berubah atau diubah selama
programberjalan (dieksekusi). Pengubahnya adalah user atau proses.
2.6.4.2 KONSTANTA
Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau
variabel.Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan
nilai yang dapat diubah-ubah selama eksekusi berlangsung.
Contoh:
Karakter escape adalah karakter yang diawali dengan tanda backslash (/), yang
masing-masing memiliki makna tertentu. Berikut adalah daftar karakter:
KARAKTER ARTI
ESCAPE
\a Bunyi bel (speaker komputer)
\b Mundur satu spasi (backspace)
\f Ganti halaman (form feed)
\n Ganti baris baru (new line)
\r Ke kolom pertama baris yang sama (carriage return)
\t Tab horizontal
\’ Karakter petik tunggal
\v Tab vertical
\0 Nilai kosong (NULL)
\” Karakter petik ganda
\\ Garis miring terbalik (backslash)
\? Karakter tanda Tanya
\DDD Menyatakan sebuah karakter yang nilai ASCII nya sama dengan
nilai octal DDD
\Xhh Menyatakan sebuah karakter yang nilai ASCII nya sama dengan
nilai heksadesimal HH
LCD (Liquid cristal display) adalah salah satu komponen elektronika yang
berfungsi sebagai tampilan suatu data, baik karakter, huruf ataupun grafik. Jenis
LCD yang dipakai pada alat ini adalah LCD M1632.LCD terdiri dari dua bagian,
yang pertama merupakan panel LCD sebagai media penampil informasi dalam
bentuk huruf/angka dua baris, masing–masing baris bisa menampung 16
huruf/angka.LCD (Liquid Crystal Display) adalah modul penampil yang banyak
Bagian kedua merupakan sebuah sistem yang dibentuk dengan mikrokontroler yang
ditempel dibalik pada panel LCD, berfungsi mengatur tampilan LCD. Dengan
demikian pemakaian LCD M1632 menjadi sederhana, sistem lain cukup
mengirimkan kode – kode ASCII dari informasi yang ditampilkan.
Spesifikasi LCD M1632:
1. Tampilan 16 karakter 2 baris dengan matrik 5 x 7 + kursor.
2. ROM pembangkit karakter 192 jenis.
3. RAM pembangkit karakter 8 jenis ( diprogram pemakai ).
4. RAM data tampilan 80 x 8 bit ( 8 karakter ).
5. Duty ratio 1/16.
6. RAM data tampilan dan RAM pembangkit karakter dapat dibaca dari unit
mikroprosesor.
7. Beberapa fungsi perintah antara lain adalah penghapusan tampilan (display
clear), posisi kursor awal ( crusor home ), tampilan karakter kedip (display
character blink), penggeseran kursor ( crusor shift ) dan penggeseran tampilan
(display shift).
8. Rangkaian pembangkit detak.
9. Rangkaian otomatis reset saat daya dinyalakan.
10. Catu daya tunggal +5 volt.
Pin, kaki atau jalur input dan kontrol dalam suatu LCD (Liquid Cristal Display)
diantaranya adalah :
• Pin data adalah jalur untuk memberikan data karakter yang ingin ditampilkan
menggunakan LCD (Liquid Cristal Display) dapat dihubungkan dengan bus
data dari rangkaian lain seperti mikrokontroler dengan lebar data 8 bit.
• Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan
jenis data yang masuk, apakah data atau perintah. Logika low menunjukan
yang masuk adalah perintah, sedangkan logika high menunjukan data.
• Pin R/W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis
data, sedangkan high baca data.
• Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar.
• Pin VLCD berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini
dihubungkan dengan trimpot 5 Kohm, jika tidak digunakan dihubungkan ke
ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt
Rangkaian power supplay pada alat ini berfungsi sebagai sumber daya untuk
menghidupkaan sistem.
DHT11 adalah sensor digital yang dapat mengukur suhu dan kelembaban udara
di sekitarnya. Sensor ini sangat mudah digunakan bersama dengan Arduino.
Memiliki tingkat stabilitas yang sangat baik serta fitur kalibrasi yang sangat akurat.
Koefisien kalibrasi disimpan dalam OTP program memory, sehingga ketika internal
sensor mendeteksi sesuatu, maka module ini menyertakan koefisien tersebut dalam
kalkulasinya.
Sensor DHT11 ini terdapat sebuah thermistor tipe NTC (Negaive Temperature
Coefficient) utuk mengukur suhu, sebuah sensor kelembaban tipe resistif dan sebuah
mikrokontroller 8-bit yang mengolah kedua sensor tersebut dan mengirim sinyal
hasilnya ke pin output dengan format single-wire bi-directional (kabel tunggal dua
arah) ke mikrokontroller ATMega 328P untuk dibaca pembacaan suhu dan
kelmbabannya.
Pada gambar 18, flowchart cara kerja alat ini terdiri dari rangkaian
mikrokontroller, sensor DHT11 untuk mendeteksi suhu dan kelembaban, Sensor
BMP085 untuk mendeteksi tekanan udara.
Sensor DHT11 ini terdapat sebuah thermistor tipe NTC (Negaive
Temperature Coefficient) utuk mengukur suhu, sebuah sensor kelembaban tipe
resistif dan sebuah mikrokontroller 8-bit yang mengolahkedua sensor tersebut dan
mengirim sinyal hasilnya ke pin output dengan format single-wire bi-directional
(kabel tunggal dua arah) ke mikrokontroller ATMega 328P untuk dibaca pembacaan
suhu dan kelembabannya.
Mulai
Inisialisasi Sistem
Terbaca Terbaca
YA ATMEga 328P YA
Tampilkan ke
LCD
Akhir
void loop()
{digitalWrite(13, HIGH);
delay(1000);
}
Rangkaian LCD dihubungkan ke PB.0 .... PB.7, yang merupakan pin I/O dua
arah dan pin fungsi khusus, yaitu sebagai Timer/Counter, komperator analog dan SPI
mempunyai fungsi khusus sebagai pengiriman data secara serial. Sehingga nilai yang
akan tampil pada LCD display akan dapat dikendalikan oleh Mikrokontroller
ATMega328. Pada bagian ini, mikrokontroler dapat memberi data langsung ke LCD.
Pada LCD Hitachi - M1632 sudah terdapat driver untuk mengubah data ASCII
output mikrokontroler menjadi tampilan karakter. Pengujian rangkaian LCD
dilakukan dengan memberikan program pada mikrokontroller untuk menampilkan
karakter pada display LCD. Programnya adalah sebagai berikut :
/* The circuit:
* LCD RS pin to digital pin 2
* LCD Enable pin to digital pin 3
* LCD D4 pin to digital pin 4
* LCD D5 pin to digital pin 5
* LCD D6 pin to digital pin 6
* LCD D7 pin to digital pin 7
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
*/
#include <LiquidCrystal.h>
void setup()
{ lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Yetti Febri");
lcd.setCursor(0, 1);
lcd.print("150821035");
}
DHT11 adalah sensor digital yang dapat mengukur suhu dan kelembaban udara
di sekitarnya. Koefisien kalibrasi disimpan dalam OTP program memory, sehingga
ketika internal sensor mendeteksi sesuatu, maka module ini menyertakan koefisien
tersebut dalam kalkulasinya.
Dari pengujian tegangan input 12V berasal dari daya adaptor. Output dari
regulator 7805 mengeluarkan daya sebesar 5V dimana komponen elektronik seperti
sensor DHT 11 dan Lcd dapat bekerja dengan daya 3V sampai 5V, output tegangan
yang dikeluarkan Adaptor dikonversi oleh IC regulator untuk menyesuaikan
tegangan yang dibutuhkan oleh komponen elektronik.
Pengujian sensor DHT 11 dilakukan dengan cara memberikan tegangan 5V dan
0 V ke Arduino NANO yang ada pada model pengatur suhu dan kelembaban dan
menghubungkan pin 2, GND, dan VCC pada sensor DHT 11. Setelah itu output
tegangan dicek pada pin DHT 11 yang dihubungkan dengan phobe positif dan pin
GND yang dihubungkan dengan negatif multimeter. VCC dan pin GND yang
dihubugkan dengan phobe positive negative multimeter.
Berikut adalah analisa alat DHT11 dengan alat standart sebelum dikalibrasi:
50
45 y = -0,019x2 + 2,376x - 26,02
40 R² = 0,996
35
STANDART
30
25
20 Humidity
15 Poly. (Humidity)
10
5
0
0 10 20 30 40 50 60
ALAT
23
22,5
STANDART
22 Temperature
20,5
20
24 25 26 27 28 29 30 31
ALAT
Data hasil pengukuran dan grafik pada data ini terdapat perbedaan antara data
yang didapat dari nilai standart dengan data yang dihasilkan oleh alat, dimana data
yang dihasilkan oleh alat memiliki % deviasi = hal ini dapat dilihat dari hasil analisis
yang diperoleh
𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 −𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 − 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
% kesalahan = ∣ 100%
𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
% kesalahan Humidity :
% kesalahan Suhu :
Sensor tekanan udara BMP085 juga menghasilkan nilai keluaran tegangan yang
kemudian dibaca oleh bagian ADC daripada ATMega 328P, sebelum dibaca maka di
kuatkan dulu oleh pengkondisi sinyal.Mikrokontroler Atmega 328P memproses
pembacaan daripada sensor-sensor tersebut dan hasil pembacaanya ditampilkan
kebagian LCD. Berikut adalah analisa alat BMP085 dengan alat standart sebelum
dikalibrasi:
90700
90680
STANDART
90660 Pressure
90640 Linear (Pressure)
90620 Poly. (Pressure)
90600
90580
90450 90500 90550 90600 90650
ALAT
Data hasil pengukuran dan grafik Pada data ini terdapat perbedaan antara data
yang didapat dari nilai standart dengan data yang dihasilkan oleh alat, dimana data
yang dihasilkan oleh alat memiliki % deviasi, yaitu:
5.1 Kesimpulan
Setelah dilakukan serangkainkegiatan perencanaan, perancangan, pembuatan
serta pengujian alat pengukur suhu, kelembaban dan tekanan udara berbasis
Mikrokontroler ATMega 328, dapat diambil kesimpulan sebagai berikut:
1. Sensor DHT11 membaca perubahan suhu dan kelembaban, sehingga output dari
sensor berupa sinyal data bit. Perubahan tersebut selanjutnya diubah menjadi
data pengukuransuhu dalam oC dan kelembaban dalam %.
2. Sensor BMP085 melihat perubahan tekanan udara dan ketinggian sekitar
berdasarkan medan magnet yang terbaca, output merupakan nilai data bit yang di
konversikan ke ATMega 328 dalam satuan Pascal (Pa).
3. Ketinggian diukur berdasarkan medan magnetik yang terbaca. Umumnya
semakin tinggi ketinggian maka semakin rendah tekanan udara, namun ada
beberapa faktor yang mempengaruhi seperti kelembaban udara, wilayah
permukaan, dsb.
5.2 Saran
1. Untuk melakukan pengukuran dengan karakter yang beragam jenisnya perlu
diperhatikan masalah kalibrasi pada program mikrokontroller.
2. Dengan beberapa pengembangan dan penyempurnaan sistem dari alat ini akan
dapat lebih baik lagi hasilnya.
3. Diharapakan pembaca dapat memberi saran dan kritik terhadap penulis dalam
perancangan alat ini, dan penulis berharap alat ini dapat dikembangkan baik
aplikasi maupun rancangannya agar lebih baik lagi.
Rangkaian Keseluruhan
LCD1
U? LM016L
R? 3
SCK
2 > 80.0
DATA
27.0
10k
%RH °C
DHT11
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
SIM?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BMP180 MODULE
6
5 D13 D12
4 3V3 D11
3 REF D10
ATMEGA328P
A0 D9
2
ATMEL
A1 D8
1 A2 D7
A3 D6
CONN-SIL6 A4 D5
A5 D4
A6 D3
12V U2 A7
5V
D2
GND
J2 GND < RX D0
VIN > TX D1
3 1 3
VI VO www.arduino.cc
2 blogembarcado.blogspot.com
GND
1 SIMULINO NANO
C3 C4
CONN-SIL3 1nF 1nF
2
Pada lampiran ini terdapat program, yaitu program yang ada di dalam
mikrokontroller dengan menggunakan bahasa C sebagai pembaca data dari sensor
ketebalan yang di gunakan pada PC sebagai output data terakhir selanjutnya dapat di
perhatikan program sebagai berikut :
Program Bahasa C ( Mikrokontroller )
/*******************************************************
/*untuk mendapatkan nilai temperatur dan kelembapan, data hasil pembacaan
DHT11 perlu dikonversi terlebih dahulu sebelum ditampilkan di LCD yaitu dengan
rumus:
RH=(DataRead* x 0.0405) � (DataRead* x DataRead* x 0.0000028)-4;
Temp=(DataRead* � 4000)/100;
*/
//bagian BMP085
int read_int_register(unsigned char r)
{
unsigned char msb, lsb;
Wire.beginTransmission(I2C_ADDRESS);
Wire.send(r); // register to read
Wire.endTransmission();
void bmp085_get_cal_data() {
Serial.println("Reading Calibration Data");
ac1 = read_int_register(0xAA);
Serial.print("AC1: ");
Serial.println(ac1,DEC);
ac2 = read_int_register(0xAC);
Serial.print("AC2: ");
Serial.println(ac2,DEC);
int temperature = 0;
long pressure = 0;
void setup()
{
DDRC |= _BV(DHT11_PIN); //let analog port 0 be output port
PORTC |= _BV(DHT11_PIN); //let the initial value of this port be '1'
Serial.begin(9600);
Serial.println("Ready");
}
void loop()
{
/*byte dht11_dat[5];
byte dht11_in;
byte i;// start condition
PORTC &= ~_BV(DHT11_PIN); // 1. pull-down i/o pin for 18ms
delay(18);
PORTC |= _BV(DHT11_PIN); // 2. pull-up i/o pin for 40us
delayMicroseconds(1);
DDRC &= ~_BV(DHT11_PIN); //let analog port 0 be input port
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN); // read only the input port 0
if(dht11_in)
{
Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal:
LOW
delay(1000);
return;
}
delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN); //
if(!dht11_in)
{
Serial.println("dht11 start condition 2 not met"); //wair for second response
signal:HIGH
return;
}
delayMicroseconds(80);// now ready for data reception
for (i=0; i<5; i="" p="">
{ dht11_dat[i] = read_dht11_dat();} //recieved 40 bits data. Details are described
in datasheet
DDRC |= _BV(DHT11_PIN); //let analog port 0 be output port after all the data
have been received
PORTC |= _BV(DHT11_PIN); //let the value of this port be '1' after all the data
have been received
if(dht11_dat[4]!= dht11_check_sum)
{
Serial.println("DHT11 checksum error");
}
Serial.print("Kelembaban = ");
Serial.print(dht11_dat[0], DEC);
Serial.print(".");
Serial.print(dht11_dat[1], DEC);
Serial.print("% ");
Serial.print("Suhu = ");
Serial.print(dht11_dat[2], DEC);
Serial.print(".");
Serial.print(dht11_dat[3], DEC);
Serial.println("C ");*/
baca_DHT();
BMP();
lcd.setCursor(0, 0); lcd.print("H=");
lcd.setCursor(2, 0); lcd.print(h);
lcd.setCursor(6, 0); lcd.print("%");
lcd.setCursor(0, 1); lcd.print("T=");
lcd.setCursor(2, 1); lcd.print(t);