اطلاعیه

Collapse
No announcement yet.

اندازه گیری دما و رطوبت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اندازه گیری دما و رطوبت

    من میخوام رطوبت و دما رو با سنسور SHT75 اندازه گیری کنم و برنامهء زیر رو هم دارم اما نمی دونم که این برنامه این قابلیت رو داره که بشه از طریق LCD مقدار دما و رطوبت رو تنظیم کرد یا نه؟ اگه نئاره چطور میتونم این تغییر رو بوجود بیارم؟



    $regfile = "m32def.dat"
    $crystal = 2000000

    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
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0
    Cursor Off

    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(tempc , "###.##&quot
    Cls
    Lcd "Temperature = " ; Dis

    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 , "##.##&quot
    'Print "Humidity adjusted for linear = " ; Dis


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

    Dis = Fusing(rhlintemp , "##.##&quot
    'Lcd "Humidity adjusted for temperature = " ;
    Lowerline
    Lcd "Humidity = " ; Dis
    'Wait 2
    '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

    #2
    پاسخ : اندازه گیری دما و رطوبت

    سنسورهای سری SHT همگی کالیبره شده هستند و احتیاج به تنظیم ندارند.

    دیدگاه


      #3
      پاسخ : اندازه گیری دما و رطوبت

      ممنونم که پاسخ دادید.من میخوام که دما و رطوبت در یک رنج معین قرار داشته باشه. مثلا میخوام که اگه دما از 37 پایین ار اومد, المنت روشن بشه و اگه از 40 بالاتر رفت المنت خاموش بشه.چه تغییری باید در برنامه ای که در بالا آوردمش, ایجاد کنم؟

      دیدگاه


        #4
        پاسخ : اندازه گیری دما و رطوبت

        شما با برنامه نویسی به زبان بیسیک آشنایی دارید؟

        دیدگاه


          #5
          پاسخ : اندازه گیری دما و رطوبت

          اقای رضایی
          ممنونم که پاسخ میدید.من تا حدی با بیسیک آشنا هستم. در دانشگاه هم با بیسیک کار کردم.شما میتونید این برنامه رو واسم تغییرش بدید؟ ممنون میشم.

          دیدگاه


            #6
            پاسخ : اندازه گیری دما و رطوبت

            از اساتید محترم بکی هم یه من کمک کنه
            ممنون میشم.

            دیدگاه

            لطفا صبر کنید...
            X