Sunday, October 7, 2012

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.


 


'==========================================================================
'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



Membuat Detektor Maling / Pencuri



               Prinsip kerja alat ini yaitu sensor mendeteksi adanya orang di suatu titik, sensor PIR ini mendeteksi orang melalui sumber panas yang dihasilkan oleh makhluk hidup, jadi selain manusia, hewan pun bisa terdeteksi, setelah sensor aktif maka akan mengirimkan tegangan output yang akan ditangkap oleh mikrontroler, oleh mikrokontroler memberikan perintah kepada buzzer untuk berbunyi. Untuk lebih jelasnya dapat melihat bagan berikut ini


  Alat ini menggunakan ATMega16 sebagai pengendali dan pengatur perintah, data dari PIR sensor dibaca oleh port ADC mikrokontroler, jika terdeteksi ada orang yang lewat suatu titik maka pir akan bernilai >1 maka akan menghidupkan buzzer, jika tidak PIR akan bernilai 0 yang artinya kondisi aman. 


                   PIR (Passive Infra Red) Motion Detektor adalah sensor yang digunakan untuk mendeteksi suatu makhluk hidup yang memiliki panas tubuh, sensor ini optimal pada jarak kurang dari 1 meter, namun tergantung jenis dari sensor PIR itu sendiri, ada yang bisa optimal kurang dari satu meter, ada yang lebih dari satu meter dan bahkan sampat 3 meter pun ada, tergantung merk dan kualitas sensor PIR itu. berikut gambarnya


               Sensor PIR ini hanya memiliki tiga buah kaki yaitu kaki VCC, Data Dan GND, sehingga mudah untuk digunakan untuk komunikasi dengan mikrokontroler melalui port ADC, untuk tegangan keluaran dari PIR ini dideteksi oleh portA.0, sehingga jika nilai dari portA.0 lebih dari 1 maka akan menghidupkan rangkaian buzzer.


'==========================================================================
'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
  $baud = 9600
  $hwstack = 32
  $swstack = 10
  $framesize = 50

  Dim Dummy As Integer
  Dim Potvalue As Integer


  Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31
  Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31
  Cls
  Cursor Off

  Config Pinb.0 = Output
  Config Timer1 = Pwm , Prescale = 64 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

  Ddrb.0 = 1
  Enable Interrupts
  Enable Timer1
  Config Adc = Single , Prescaler = 64
  Start Adc
  Ocr1ah = 0
  Ocr1ah = 0

  Do
  Potvalue = Getadc(0)    'ADC portA.0
  Dummy = Potvalue / 2
  Dummy = Dummy / 2
  Ocr1bl = Dummy

  Locate 2 , 2
   Lcd "PIR="
  Locate 2 , 8
   Lcd "         "
  Locate 2 , 8
   Lcd Dummy

'---- Buzzer
   If Dummy >= 0 Then
      Portb.0 = 1
   End If

  
   If Dummy = 0 Then
      Portb.0 = 0
   End If
  Loop
  End