Pada kesempatan yang berbahagia kali ini saya akan menjelaskan tentang sensor yang sangat bagus dipakai untuk pendeteksi suhu dan kelembapan, yaitu SHT11. sensor ini memang agak mahal dibanding sensor suhu - kelembaban pada umumnya namun akurasi dan sensitifitasnya sangat baik dan biasanya untuk alat-alat industri memakai sensor ini. Output sensor ini tidak berupa tegangan melainkan sebuah pulsa dan angka, sehingga cara mengaksesnya tidak lagi menggunakan ADC namun menggunakan port I/O. untuk lebih jelasnya berikut program dan skemanya.
a. Minimum System
b. Sensor SHT11 ( suhu dan kelembaban )
c. Program Bascom AVR
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600
Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4
Config Lcdpin = Pin , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcd = 16 * 2
Deflcdchar 1 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32 'membuat karakter derajat
Dim Dataword As Word
Dim Command As Byte
Dim Calc As Single
Dim Calc2 As Single
Dim Rhlinear As Single
Dim Rhlintemp As Single
Dim Tempc As Single
Dim Ctr As Byte
Dim X As Word
Dim Y As Single
Dim Z As Single
Dim Suhu As String * 10
Dim Kelembaban As String * 10
Dim Tekanan As String * 10
Const C1 = -4
Const C2 = 0.0405
Const C3 = -0.0000028
Const S = .01
Const H = .00008
'sck output pada port C.0
Sck Alias Portc.0
Dataout Alias Portc.1
Datain Alias Pinc.1
Declare Sub Kirim()
Ddrc = &B11111111
Config Pinc.0 = Output
Config Pinc.1 = Output
Wait 1
Set Dataout
For Ctr = 1 To 12
Set Sck
Waitus 2
Reset Sck
Waitus 2
Next Ctr
'main program
Do
Gosub Data_suhu
Print "Data suhu: " ; Suhu
Print "Data kelembaban: " ; Kelembaban
Waitms 200
Gosub Tampil
Loop
Tampil:
Cls
Cursor Off
Upperline
Lcd "Suhu= " ; Suhu ; " " ; Chr(1) ; "C"
Lowerline
Lcd "Rh = " ; Kelembaban ; " " ; "%"
Wait 1
Return
Data_suhu:
Command = &B00000011
Call Kirim
Tempc = S * Dataword
Tempc = Tempc - 40
Suhu = Fusing(tempc , "#.##")
Command = &B00000101
Call Kirim
Calc = C2 * Dataword
Calc2 = Dataword * Dataword
Calc2 = C3 * Calc2
Calc = Calc + C1
Rhlinear = Calc + Calc2
Calc = H * Dataword
Calc = Calc + S
Calc2 = Tempc - 25
Calc = Calc2 * Calc
Rhlintemp = Calc + Rhlinear
Kelembaban = Fusing(rhlintemp , "#.##")
Return
Sub Kirim()
Local Datavalue As Word
Local Databyte As Byte
Set Sck
Reset Dataout
Reset Sck
Set Sck
Set Dataout
Reset Sck
Shiftout Dataout , Sck , Command , 1
Ddrc = &B11111101
Config Pinc.1 = Input
Set Sck
Reset Sck
Waitus 10
Bitwait Pinc.1 , Reset
Shiftin Datain , Sck , Databyte , 1
Datavalue = Databyte
Ddrc = &B11111111
Config Pinc.1 = Output
Reset Dataout
Set Sck
Reset Sck
Ddrc = &B11111101
Config Pinc.1 = Input
Shiftin Datain , Sck , Databyte , 1
Shift Datavalue , Left , 8
Datavalue = Datavalue Or Databyte
Dataword = Datavalue
Ddrc = &B11111111
Config Pinc.1 = Output
Reset Dataout
Set Sck
Reset Sck
Ddrc = &B11111101
Config Pinc.1 = Input
Shiftin Datain , Sck , Databyte , 1
Ddrc = &B11111111
Config Pinc.1 = Output
Set Dataout
Set Sck
Reset Sck
End Sub
End
d. Cara Penggunaan Alat
Untuk menggunakan alat ini langkah pertama yaitu hubungkan supply 12 volt ke minimum system, kemudian akan tertera nilai suhu dan kelembaban dari sensor, sebelumnya pastikan dulu port yang dipakai untuk SDA-SCL adalah benar yaitu SCK di PortC.0 dan Dout di PortC.1. jika sudah benar maka akan terlihat nilainya di LCD display. Untuk melihat via komputer bisa menggunakan kabel RS232 dan software Hyperterminal.
Saya belajar microcontroller dengan bascom avr. Saya menerapkan code di atas pada avr atmega 128 dengan Crystal 16000.Tetapi kok suhu yang ditampilkan Suhu: 287.67 c
ReplyDeleteR: -992.5%