Monitoring Suhu Kelembaban dg ATmega16
Setelah kemarin kita posting monitoring suhu dengan sensor suhu LM35, sekarang kita lanjutkan membuat aplikasi mikrokontroler dengan tema masih sama, seputaran sensor suhu. Kali ini kita pakai sensor suhu kelembaban DHT11.

Sensor suhu ini juga mudah didapatkan dan harga juga murah. Beda antara DHT11 dengan LM35 adalah data output berupa digital (LM35 berupa analog). Jumlah pin/kaki sama yaitu 3 pin.

Spesifikasi sensor suhu kelembaban DHT11 :
- Tegangan kerja : 3,3 – 5VDC
- Range suhu : 0 – 50 derajat Celcius
- Range kelembaban : 20 – 95 % RH
- Resolusi : 8 bit
Sistem pengambilan data suhu dan kelembaban dari sensor DHT11 ini adalah Serial Interface(Single – Wire Two- Way) sehingga cukup dengan 1 jalur saja (pin DATA). Cara menyambung sensor DHT11 ke mikrokontroler juga mudah, cukup dengan menghubungkan pin tegangan ke jalur tegangan mikrokontroler dan pin data ke salah satu pin I/O mikrokontroler.
Pada contoh proyek mikrokontroler dengan sensor DHT11 kali ini kita akan memakai ATmega16 dengan tampilan LCD 16×2. Kebutuhan komponennya :
- ATmega16 (1)
- Crystal 16 Mhz (1)
- Capasitor 22 pF (2)
- Capasitor 10 nF (1)
- Resistor 4K7 (1)
- LCD 16×2 (1)
- Trimpot 10K (1)
- Sensor DHT11 (1)
- Kabel konektor
Selanjutnya silakan dibuat rangkaian mikrokontroler dengan LCD dll.

Program mikrokontroler monitoring suhu kelembaban kita buat dengan BASCOM-AVR. Silakan dibuat program berikut ini :
$regfile = "m16def.dat"
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 ,
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd "Monitoring Suhu"
Lowerline
Lcd " & Kelembaban"
Wait 2
Cls
Declare Sub Get_dht11(temp As Byte , Humi As Byte)
Dht11_out Alias Portb.0
Dht11_in Alias Pinb.0
Dht11_pin Alias Ddrb.0
Dim Temp As Byte
Dim Humi As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Set Dht11_pin
Set Dht11_out
Do
Wait 1
Call Get_dht11(temp , Humi)
Upperline
Lcd "SUHU: " ; Temp ; " C "
Lowerline
Lcd "HUMI: " ; Humi ; " % "
Loop
Sub Get_dht11(temp As Byte , Humi As Byte)
Count = 0
Sensor_data = ""
Set Dht11_pin
Reset Dht11_out
Waitms 25
Set Dht11_out
Waitus 40
Reset Dht11_pin
Waitus 40
If Dht11_in = 1 Then
Humi = 1
Exit Sub
End If
Waitus 80
If Dht11_in = 0 Then
Humi = 2
Exit Sub
End If
While Dht11_in = 1 : Wend
Do
While Dht11_in = 0 : Wend
Waitus 30
If Dht11_in = 1 Then
Sensor_data = Sensor_data + "1"
While Dht11_in = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Set Dht11_pin
Set Dht11_out
Tmp_str8 = Left(sensor_data , 8)
Humi = Binval(tmp_str8)
Tmp_str8 = Mid(sensor_data , 17 , 8)
Temp = Binval(tmp_str8)
Tmp_str8 = Right(sensor_data , 8)
Crc = Binval(tmp_str8)
Mybyte = Temp + Humi
If Mybyte <> Crc Then
Humi = 3
End If
End Sub
Save kemudian Compile, pastikan tidak ada error. Jika sudah berhasil silakan download programnya ke IC Mikrokontroler ATmega16.

Hasilnya terlihat di LCD yang menampilkan nilai suhu dan kelembaban. Untuk melihat respon sensor DHT11 silakan berikan perubahan suhu pada sensor, misalnya didekatkan ke sumber panas, amati hasilnya.
Alhamdulillah … semoga bermanfaat.
