Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Juli 06, 2022, 05:49:49 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
  • Total Anggota: 26,754
  • Latest: sainsftw
Stats
  • Total Tulisan: 139,633
  • Total Topik: 10,390
  • Online today: 67
  • Online ever: 441
  • (Desember 17, 2011, 09:48:51 AM)
Pengguna Online
Users: 0
Guests: 20
Total: 20

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

akses sensor sht11

Dimulai oleh dancyber, Juli 28, 2010, 01:58:02 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

dancyber

Dear all teman2 forsa, ane lagi garap tugas buat akses sensor suhu sht11 ni, tapi ane binggung dengan hasil keluaran data dari sht11 ke lcd. tampilan suhunya di lcd 615,3 C. mohon koreksinya untuk program yang ane pake?
source codenya ada di lampiran. Dalam Plan ini ane menggunakan Atmega 8535 sebgai mikronya.
--------------------------------------_____________________

rizqi_fs

Ini nh contoh program yang pernah ane pakai, emang perlu dilakukan linierisasi

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


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

   Dis = Fusing(tempf , "###.##")
   Print "Temperature = " ; Dis ; " (F)"

   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

   'Dis = Fusing(rhlinear , "##.##")
   'Print "Humidity adjusted for linear = " ; Dis


   Calc = T2 * Dataword
   Calc = Calc + T1c
   Calc2 = Tempc - 25
   Calc = Calc2 * Calc
   Rhlintemp = Calc + Rhlinear

   Dis = Fusing(rhlintemp , "##.##")
   Print "Humidity adjusted for temperature  = " ; Dis
   Print

   Wait 1
Loop


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

End

dancyber

#2
Kutip dari: rizqi_fs pada Juli 29, 2010, 03:09:52 PM
Ini nh contoh program yang pernah ane pakai, emang perlu dilakukan linierisasi

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


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

   Dis = Fusing(tempf , "###.##")
   Print "Temperature = " ; Dis ; " (F)"

   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

   'Dis = Fusing(rhlinear , "##.##")
   'Print "Humidity adjusted for linear = " ; Dis


   Calc = T2 * Dataword
   Calc = Calc + T1c
   Calc2 = Tempc - 25
   Calc = Calc2 * Calc
   Rhlintemp = Calc + Rhlinear

   Dis = Fusing(rhlintemp , "##.##")
   Print "Humidity adjusted for temperature  = " ; Dis
   Print

   Wait 1
Loop


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

End

gan source code yang agan buat itu pake bahasa apa? kalau yang punya anekan bahasa C
--------------------------------------_____________________

0y1k

bahasa basic itu gan... hehehe
compilernya BASCOM

eh SHT11 itu kan I2C, kenapa ga pake library yang sudah tersedia di codevision mengenai I2C?
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

rizqi_fs

O, sori, aq ga liat programmu dulu :D
iy di codevision dah ada juga

dancyber

Kutip dari: 0y1k pada Juli 31, 2010, 12:05:10 AM
eh SHT11 itu kan I2C, kenapa ga pake library yang sudah tersedia di codevision mengenai I2C?

modul sht11 yang ane pake udah gak menggunakan I2C untuk akses datanya, datanya udah langsung masuk ke mikro gan, modulnya ane buatan sini gan [pranala luar disembunyikan, sila masuk atau daftar.]
sebenarnya dari inovative udah ada contohnya tapi pas ane coba belum bisa juga.

Kutip dari: rizqi_fs pada Agustus 01, 2010, 07:29:33 AM
O, sori, aq ga liat programmu dulu :D
iy di codevision dah ada juga

programnya udah ane upload gan.

:kribo: :kribo: :kribo: :kribo:
--------------------------------------_____________________

0y1k

Kutip dari: dancyber pada Agustus 03, 2010, 07:59:12 AM
Kutip dari: 0y1k pada Juli 31, 2010, 12:05:10 AM
eh SHT11 itu kan I2C, kenapa ga pake library yang sudah tersedia di codevision mengenai I2C?

modul sht11 yang ane pake udah gak menggunakan I2C untuk akses datanya, datanya udah langsung masuk ke mikro gan, modulnya ane buatan sini gan [pranala luar disembunyikan, sila masuk atau daftar.]
sebenarnya dari inovative udah ada contohnya tapi pas ane coba belum bisa juga.

Kutip dari: rizqi_fs pada Agustus 01, 2010, 07:29:33 AM
O, sori, aq ga liat programmu dulu :D
iy di codevision dah ada juga

programnya udah ane upload gan.

:kribo: :kribo: :kribo: :kribo:

trus k'lo ga pake I2C akses datanya pake apa?
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

0y1k

Kutip dari: dancyber pada Agustus 03, 2010, 07:59:12 AM
Kutip dari: 0y1k pada Juli 31, 2010, 12:05:10 AM
eh SHT11 itu kan I2C, kenapa ga pake library yang sudah tersedia di codevision mengenai I2C?

modul sht11 yang ane pake udah gak menggunakan I2C untuk akses datanya, datanya udah langsung masuk ke mikro gan, modulnya ane buatan sini gan [pranala luar disembunyikan, sila masuk atau daftar.]
sebenarnya dari inovative udah ada contohnya tapi pas ane coba belum bisa juga.

Kutip dari: rizqi_fs pada Agustus 01, 2010, 07:29:33 AM
O, sori, aq ga liat programmu dulu :D
iy di codevision dah ada juga

programnya udah ane upload gan.

:kribo: :kribo: :kribo: :kribo:

trus k'lo ga pake I2C akses datanya pake apa?
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

rizqi_fs

Kutip dari: 0y1k pada Agustus 03, 2010, 09:29:47 PM
Kutip dari: dancyber pada Agustus 03, 2010, 07:59:12 AM
Kutip dari: 0y1k pada Juli 31, 2010, 12:05:10 AM
eh SHT11 itu kan I2C, kenapa ga pake library yang sudah tersedia di codevision mengenai I2C?

modul sht11 yang ane pake udah gak menggunakan I2C untuk akses datanya, datanya udah langsung masuk ke mikro gan, modulnya ane buatan sini gan [pranala luar disembunyikan, sila masuk atau daftar.]
sebenarnya dari inovative udah ada contohnya tapi pas ane coba belum bisa juga.

Kutip dari: rizqi_fs pada Agustus 01, 2010, 07:29:33 AM
O, sori, aq ga liat programmu dulu :D
iy di codevision dah ada juga

programnya udah ane upload gan.

:kribo: :kribo: :kribo: :kribo:

trus k'lo ga pake I2C akses datanya pake apa?

Setelah aq liat di [pranala luar disembunyikan, sila masuk atau daftar.] modul SHT11 yang dijual disana
bukan buatan innovative, inovative cuman buat boardnya aja biar mudah connecnya.
Emang SHT11 itu didalamnya dah ada microcontrollernya dan tetep aja pakai komunikasi I2C untuk baca datanya, coba deh liat datasheetnya.

Dulu saya beli juga sensornya di [pranala luar disembunyikan, sila masuk atau daftar.] (ini satu rumah kok lokasinya ama innovative)
dulu juga pernah kesana, beli langsung ditempatnya.

Dan tak coba pakai BASCOM ga masalah, emang aq belum pernah coba klo pakai C.



rizqi_fs

Sori Bukan delta-electronic tapi digi-ware tempat saya beli sensornya

ikhwanpcr

wah, saya berhasil kok. delay waktu mempengaruhi pembacaan. sht11 tu memang sih kayak i2c tetapi lebih tepatnya komunikasi serial dengan menggunakan 2 kabel data.  tetapi sebenanrnya dia bukan 12c. ada di datasheet penjelasanya. o,ya sekarng saya lagi diwarnet. kalau mau besok saya online di komputer saya. saya kirim ke kamu. kebetulan Tugas Akhir saya pakai SHT11 juga. hehehe... :)
ni email saya: ikhwanpcr@gmail.com