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.