Posts Tagged ‘jualan sensor SHT11’

Akses Sensor Suhu dan Kelembaban SHT11 Berbasis Mikrokontroler

SHT11 Module merupakan modul sensor suhu dan kelembaban relatif  dari Sensirion. Modul ini dapat digunakan sebagai alat pengindra suhu dan kelembaban dalam aplikasi pengendali suhu dan kelembaban ruangan maupun aplikasi pemantau suhu dan kelembaban relatif ruangan.

Spesifikasi dari SHT11 ini adalah sebagai berikut:

1. Berbasis sensor suhu dan kelembaban relatif Sensirion SHT11.

2. Mengukur suhu dari -40C hingga +123,8C, atau dari -40F hingga +254,9F dan kelembaban relatif dari 0%RH hingga 1%RH.

3. Memiliki ketetapan (akurasi) pengukuran suhu hingga 0,5C pada suhu 25C dan ketepatan (akurasi) pengukuran kelembaban relatif hingga 3,5%RH.

4. Memiliki atarmuka serial synchronous 2-wire, bukan I2C.

5. Jalur antarmuka telah dilengkapi dengan rangkaian pencegah kondisi sensor lock-up.

6. Membutuhkan catu daya +5V DC dengan konsumsi daya rendah30 μW.

7. Modul ini memiliki faktor bentuk 8 pin DIP 0,6sehingga memudahkan pemasangannya.

Prinsip Kerja Sensor

SHT11 adalah sebuah single chip sensor suhu dan kelembaban relatif dengan multi modul sensor yang outputnya telah dikalibrasi secara digital. Dibagian dalamnya terdapat kapasitas polimer sebagai eleman untuk sensor kelembaban relatif dan sebuah pita regangan yang digunakan sebagai sensor temperatur. Output kedua sensor digabungkan dan dihubungkan pada ADC 14 bit dan sebuah interface serial pada satu chip yang sama. Sensor ini mengahasilkan sinyal keluaran yang baik dengan waktu respon yang cepat. SHT11 ini dikalibrasi pada ruangan denagn kelembaban yang teliti menggunakan hygrometer sebagai referensinya. Koefisien kalibrasinya telah diprogramkan kedalam OTP memory. Koefisien tersebut akan digunakan untuk mengaklibrasi keluaran dari sensor selama proses pengukuran.

Diagram Blok SHT11

Sistem sensor yang digunakan untuk mengukur suhu dan kelembaban adalah SHT11 dengan sumber tegangan 5 Volt dan komunikasi bidirectonal 2-wire. Sistem sensor ini mempunyai 1 jalur data yang digunakan untuk perintah pengalamatan dan pembacaan data. Pengambilan data untuk masing-masing pengukuran dilakukan dengan memberikan perintah pengalamatan oleh mikrokontroler. Kaki serial Data yang terhubung dengan mikrokontroler memberikan perintah pengalamatan pada pin Data SHT11 “00000101” untuk mengukur kelembaban relatif dan “00000011” untuk pengukuran temperatur. SHT11 memberikan keluaran data kelembaban dan temperatur pada pin Data secara bergantian sesuai dengan clock yang diberikan mikrokontroler agar sensor dapat bekerja. Sensor SHT11 memiliki ADC (Analog to Digital Converter) di dalamnya sehingga keluaran data SHT11 sudah terkonversi dalam bentuk data digital dan tidak memerlukan ADC eksternal dalam pengolahan data pada mikrokontroler. Skema pengambilan data SHT11 dapat dilihat pada gambar berikut ini.

nach ni dia sample program SHT11 menggunakan BASCOM AVR:

$regfile = “m8535.dat”

$crystal = 12000000

Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.3 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0

Config Lcd = 16 * 2

Cursor Off Noblink

‘Routine to read the SHT11 Humidity sensor chip

‘By Stuart Leslie

‘Contact stu@4sightinc.com with any questions

‘Uses BascomAVR

‘a .01 uf capacitor across VCC and Ground on the SHT11 really cleans up the data

‘a pullup is required on “data” pin as shown in the data sheet

Dim Hasil As Single

Dim Hasilsuhu As Single

Dim Suhu As Single

Dim X As Single

Dim Ctr As Byte

Dim Dataword As Word

Dim Command As Byte

Dim Dis As String * 20

Dim Calc As Single

Dim Calc2 As Single

Dim Rhlinear As Single

Dim Rhlintemp As Single

Dim Tempc As Single

Dim Tempf As Single

Const C1 = -4

Const C2 = 0.0405

Const C3 = -0.0000028

Const T1c = .01

Const T2 = .00008

Const T1f = .018

Sck Alias Portb.0

Dataout Alias Portb.1

Datain Alias Pinb.1

Redled Alias Portb.2

Declare Sub Getit()

Ddrb = &B11111111                                             ‘all port b are output

Config Pinb.0 = Output                                      ‘sck

Config Pinb.1 = Output                                       ‘datain

‘reset the serial communications first, it is easily confused!

Set Dataout

For Ctr = 1 To 12

Set Sck

Waitus 2

Reset Sck

Waitus 2

Next Ctr

Cls

Lcd “akses sht11”

Lowerline

Lcd “by fahmizal”

Wait 2

Do                                                                                 ‘continually read the tempfature and humidity

Command = &B00000011

Call Getit                                                                    ‘Get the temperature, puts result in “dataword” for us

Tempf = T1f * Dataword

Tempf = Tempf – 40

Tempc = T1c * Dataword                                     ‘get celcius for later calculations and for “the rest of the world”

Tempc = Tempc – 40

X = Tempf

Hasil = X – 32

Suhu = 5 / 9

Hasilsuhu = Hasil * Suhu

Dis = Fusing(hasilsuhu , “###.##”)

Home

Lcd “Temp = ” ; Dis ; “(C)”

Command = &B00000101

Call Getit                                                                          ‘get the humidity

Calc = C2 * Dataword

Calc2 = Dataword * Dataword                                ‘that “2” in the datasheet sure looked like a footnote for a couple days, nope it means “squared”!

Calc2 = C3 * Calc2

Calc = Calc + C1

Rhlinear = Calc + Calc2

Calc = T2 * Dataword

Calc = Calc + T1c

Calc2 = Tempc – 25

Calc = Calc2 * Calc

Rhlintemp = Calc + Rhlinear

Lowerline

Dis = Fusing(rhlintemp , “##.##”)

Lcd “Humid = ” ; Dis ; “(%)”

Waitms 500

Loop

End

Sub Getit()

Local Datavalue As Word

Local Databyte As Byte

‘start with “transmission start”

Set Sck

Reset Dataout

Reset Sck

Set Sck

Set Dataout

Reset Sck

‘now send the command

Shiftout Dataout , Sck , Command , 1

Ddrb = &B11111101                                          ‘datain is now input

Config Pinb.1 = Input                                      ‘datain

Set Sck                                                                   ‘click one more off

Reset Sck

Waitus 10                                                              ‘no idea why, but it doesn’t work without it!

Bitwait Pinb.1 , Reset                                       ‘wait for the chip to have data ready

Shiftin Datain , Sck , Databyte , 1                ‘get the MSB

Datavalue = Databyte

Ddrb = &B11111111

Config Pinb.1 = Output

Reset Dataout                                                      ‘this is the tricky part- Lot’s of hair pulling- have to tick the ack!

Set Sck

Reset Sck

Ddrb = &B11111101                                          ‘datain is now input

Config Pinb.1 = Input

Shiftin Datain , Sck , Databyte , 1                 ‘get the LSB

Shift Datavalue , Left , 8

Datavalue = Datavalue Or Databyte

‘don’t tick the clock or ack since we don’t need the CRC value, leave it hanging!

Dataword = Datavalue

Ddrb = &B11111111

Config Pinb.1 = Output

Reset Dataout

Set Sck

Reset Sck

Ddrb = &B11111101                                                 ‘datain is now input

Config Pinb.1 = Input

Shiftin Datain , Sck , Databyte , 1                        ‘not using the CRC value for now- can’t figure it out! Anybody know how to impliment?

‘Print “CRC value was – ” ; Databyte

Ddrb = &B11111111

Config Pinb.1 = Output

Set Dataout

Set Sck

Reset Sck

End Sub