Translate

Membuat Termometer Digital Dengan DHT11

 Membuat Termometer Digital Dengan DHT11

                Pada bagian ini akan dibahas mengenai pembuatan termometer digital menggunakan sensor DHT11 sebagai pendeteksi kondisi suhu. Alat ini tidaklah jauh berbeda dengan pembahasan alat yang dibuat sebelumnya, perbedaannya hanya pada sensor, jika sebelumnya membahas tentang sensor LM35 namun kali ini membahas tentang sensor DHT11 sebagai detektor suhu. Kelebihan dari sensor DHT11 ini dibanding dengan LM35 yaitu jika DHT11 ini bisa mengukur dua data sekaligus yaitu suhu dan kelembaban, jika LM35 hanya fokus pada suhu saja. Berikut adalah gambar dari alat pendeteksi suhu dengan DHT11.
Bentuk Sensor DHT11

          DHT11 merupakan sensor yang telah teruji keakuratannya dalam pengukuran suu dan kelembaban suatu udara. DHT11 memiliki perbedaan dari sensor-sensor yang lain antara lain dapat mengukur dua faktor sekaligus dalam satu sensor yaitu suhu dan kelembaban, serta harganya yang terjangkau


          Sensor DHT11 memerlukan resistor 10K pada kaki VCC dan Data untuk menghindari arus langsung yang masuk ke sensor sebelum masuk ke mikrokontroler. Rangkaiannya seperti berikut

Skematik Mikrokontroller


 Program BASCOM AVR
'======================================================
'Programmer: Yanuar Mukhammad
'E-mail    : Yanuarm@hotmail.com
'======================================================
$regfile = "m16def.dat"
$crystal = 12000000
'--------------------------
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
Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dht_put Alias Portb.2
Dht_get Alias Pinb.2
Dht_io_set Alias Ddrb.2
Dim T As Byte                                             
Dim H 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                                        
Enable Interrupts
Set Dht_io_set
Set Dht_put
Lcd "Yanuar M."
Lowerline
Lcd "DHT11 sensor"
Do
   Waitms 1500
   Call Get_th(t , H)
   Cls
   Lcd "TMP: " ; T ; "C"
   Lowerline
   Lcd "PHP: " ; H ; "%"
Loop
Sub Get_th(t As Byte , H As Byte)
 Count = 0
 Sensor_data = ""
 Set Dht_io_set                                        
 Reset Dht_put                                           
 Waitms 25                                               
 Set Dht_put                                              
 Waitus 40
 Reset Dht_io_set                                       
 Waitus 40                                              
 If Dht_get = 1 Then                                    
    H = 1                                                
    Exit Sub                                           
 End If
  Waitus 80                                               
  If Dht_get = 0 Then                                   
    H = 2                                                 
    Exit Sub                                              
  End If
  While Dht_get = 1 : Wend                                  
   Do                                                      
    While Dht_get = 0 : Wend                              
    Waitus 30                                              
     If Dht_get = 1 Then                                   
       Sensor_data = Sensor_data + "1"                     
       While Dht_get = 1 : Wend                            
       Else                                                
       Sensor_data = Sensor_data + "0"                     
    End If
    Incr Count                                             
   Loop Until Count = 40                                   
   Set Dht_io_set
   Set Dht_put
   Tmp_str8 = Left(sensor_data , 8)                      
   H = Binval(tmp_str8)                                   
   Tmp_str8 = Mid(sensor_data , 17 , 8)                   
   T = Binval(tmp_str8)                                   
   Tmp_str8 = Right(sensor_data , 8)                        
   Crc = Binval(tmp_str8)                                  
   Mybyte = T + H                                          
   If Mybyte <> Crc Then                                   
      H = 3                                                
   End If
End Sub
 


Cara Penggunaan Alat
                   Alat diberi tegangan 12v atau 9v jika terdapat rangkaian regulator, jika tidak maka menggunakan vcc sebesar 5v untuk mengaktifkan alat. Pada saat diaktifkan, LCD akan otomatis menampilkan data Suhu dan kelembaban

4 comments: