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
No comments:
Post a Comment