Jumat, 30 September 2011

Tutorial Sensor Suhu dan Kelembaban SHT11 dengan Bascom AVR

Sensor SHT11 merupakan sensor yang dapat mendeteksi suhu dan kelembaban dengan range -40 sampai 123.8 derajat Celcius atau -40 sampai 254.9 derajat Fahrenheit, dan 0 sampai 100 %RH.

Ada dua pin yang digunakan pada SHT11 untuk berkomunikasi dengan mikrokontroler, yaitu pin SCK dan pin DATA. Pin SCK berfungsi untuk mensinkronisasikan komunikasi antara SHT11 dan mikrokontroler, sedangkan pin DATA berfungsi untuk mentransfer data in dan out pada SHT11.


Rangkaian skematik sensor SHT11 ini sebagai berikut:

 skematiksht11

Listing programnya sebagai berikut:
'===============================================
' Tutorial Sensor Suhu dan Kelembaban SHT11
' Programmer: Wahyu Rahmaniar
' Company: Technologination
'===============================================
  1. $regfile = "m8535.dat"  
  2. 'mikrokontroler ATMega8535
  3. $crystal = 11059200
  4. $baud = 9600  
  5. 'baud rate utk pengiriman data serial
  6.  
  7. Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
  8. 'pin-pin lcd yang digunakan
  9. Config Lcd = 16 * 2
  10.  
  11. Deflcdchar 1 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32  
  12. 'membuat karakter derajat 
  13.  
  14. Dim Dataword As Word
  15. Dim Command As Byte
  16. Dim Calc As Single
  17. Dim Calc2 As Single
  18. Dim Rhlinear As Single
  19. Dim Rhlintemp As Single
  20. Dim Tempc As Single
  21. Dim Ctr As Byte
  22. Dim X As Word
  23. Dim Y As Single
  24. Dim Z As Single
  25. Dim Suhu As String * 10
  26. Dim Kelembaban As String * 10
  27. Dim Tekanan As String * 10
  28. Const C1 = -4
  29. Const C2 = 0.0405
  30. Const C3 = -0.0000028
  31. Const S = .01
  32. Const H = .00008
  33. Sck Alias Portc.0  
  34. 'sck output pada port C.0
  35. Dataout Alias Portc.1 
  36. 'ketika memanggil dataout portc.1 menjadi output
  37. Datain Alias Pinc.1  
  38. 'ketika memanggil datain portc.1 menjadi input

  39. Declare Sub Kirim()
  40. Ddrc = &B11111111  
  41. 'port c sebagai output
  42. Config Pinc.0 = Output
  43. Config Pinc.1 = Output
  44. Wait 1
  45. Set Dataout
  46. For Ctr = 1 To 12
  47. Set Sck
  48. Waitus 2
  49. Reset Sck
  50. Waitus 2
  51. Next Ctr
  52. Do
  53. Gosub Data_suhu
  54. Print "Data suhu: "; Suhu  
  55. 'mengirimkan data suhu ke komputer
  56. Print "Data kelembaban: "; Kelembaban ' 
  57. 'mengirimkan data kelembaban ke komputer
  58. 'Waitms 100
  59. Gosub Tampil
  60. Loop
  61. Tampil:  
  62. 'sub program untuk menampilkan pada LCD
  63. Cls
  64. Cursor Off
  65. Upperline
  66. Lcd "Suhu= " ; Suhu ; " " ; Chr(1) ; "C"
  67. Lowerline
  68. Lcd "Rh = " ; Kelembaban ; " " ; "%"
  69. Wait 1
  70. Return
  71. Data_suhu:  
  72. 'sub program untuk mengambil data suhu dan kelembaban dari sht11
  73. Command = &B00000011
  74. Call Kirim  
  75. 'memanggil fungsi kirim
  76. Tempc = S * Dataword
  77. Tempc = Tempc - 40
  78. Suhu = Fusing(tempc , "#.##") 
  79. 'mengubah data single menjadi string dengan 2 angka dibelakang koma
  80. Command = &B00000101
  81. Call Kirim
  82. Calc = C2 * Dataword
  83. Calc2 = Dataword * Dataword
  84. Calc2 = C3 * Calc2
  85. Calc = Calc + C1
  86. Rhlinear = Calc + Calc2
  87. Calc = H * Dataword
  88. Calc = Calc + S
  89. Calc2 = Tempc - 25
  90. Calc = Calc2 * Calc
  91. Rhlintemp = Calc + Rhlinear
  92. Kelembaban = Fusing(rhlintemp , "#.##")
  93. Return
  94. Sub Kirim()
  95. Local Datavalue As Word
  96. Local Databyte As Byte
  97. Set Sck
  98. Reset Dataout
  99. Reset Sck
  100. Set Sck
  101. Set Dataout
  102. Reset Sck
  103. Shiftout Dataout , Sck , Command , 1
  104. Ddrc = &B11111101
  105. Config Pinc.1 = Input
  106. Set Sck
  107. Reset Sck
  108. Waitus 10
  109. Bitwait Pinc.1 , Reset
  110. Shiftin Datain , Sck , Databyte , 1
  111. Datavalue = Databyte
  112. Ddrc = &B11111111
  113. Config Pinc.1 = Output
  114. Reset Dataout
  115. Set Sck
  116. Reset Sck
  117. Ddrc = &B11111101
  118. Config Pinc.1 = Input
  119. Shiftin Datain , Sck , Databyte , 1
  120. Shift Datavalue , Left , 8
  121. Datavalue = Datavalue Or Databyte
  122. Dataword = Datavalue
  123. Ddrc = &B11111111
  124. Config Pinc.1 = Output
  125. Reset Dataout
  126. Set Sck
  127. Reset Sck
  128. Ddrc = &B11111101
  129. Config Pinc.1 = Input
  130. Shiftin Datain , Sck , Databyte , 1
  131. Ddrc = &B11111111
  132. Config Pinc.1 = Output
  133. Set Dataout
  134. Set Sck
  135. Reset Sck
  136. End Sub
  137. End

Program diatas berfungsi untuk menampilkan data suhu dan kelembaban dari sensor SHT11 ke LCD display 16x2 dan mengirimkan data suhu dan kelembaban tersebut ke komputer.

Rangkaian lengkapnya sebagai berikut:

Datasheet sensor suhu dan kelembaban SHT11 dapat didownload disini.

Data suhu dan kelembaban bisa ditampilkan dengan program antarmuka pada Tutorial Interface Microcontroller and Computer using Visual Basic.

Tempat Jual Komponen dan Elektronik.
    -ayuchan-