اطلاعیه

Collapse
No announcement yet.

مدار ساده نمایش دما و رطوبت با سنسور SHT10

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

    مدار ساده نمایش دما و رطوبت با سنسور SHT10

    اول از مدیران معذرت میخوام به پیشنهاد یکی از اعضا این تاپیک رو زدم چون دوستان جاهای دیگه جواب ندادن و دیدم خعلی یا یه همچین مشکلی دارن لطفا حذف نکنید کل اینترنت رو گشتم مشکلم حل نشد چند تا برنامه مختلف نوشتم همه به نوعی مشکل دارن

    دوستان من با کمک برنامه جوجه کشی داخل سایت با همین سنسور یه برنامه برداشتم که فقط دما و روطوبت رو رو ال سی دی نشون بده
    سنسورم sht10 هست ا حدوت 60 سانتی متر سیم توی سایت نوین کیت زده بود که اگر روی سنسور مثبت و منفی رو با یه خازن 100 نانو بهم وصل کنی میتونی تا یه متر اضافه کنی سیمو
    من این کار رو کردم . البته بعدا اون سیم رو هم حذف کردم و مستقیم با یه سیم 5 سانتی متری بمیکرو وصل کردم طبق مدار جوجه کشی که سنسور رو با یه مگا 8 خونده و بعد به صورت سریال فرستاده به میکرو من هم برای کلاک و هم دیتای سنسور مقاومت 10 کیلو پول اپ زدم البته من سریال نمیفرستم فقط مقاومت ها رو عین اون مدار وصل کردم من فقط میخوام رو ال سی دی نشون بدم حالا مشکلی که دارم تو یهوای اتاق که حدود 20 درجه است دما رو 68 و رطوبت رو 121 درصد نشون میده اینم بگم که با خازن و بدون خازنم تست کردم مقاومت پول اپ کلاک هم برداشتم بازم همین شد چندا برنامه دیگه هم از اینترنت و سایت بسکام و همین سایت خودمون گرفتم ولی بار نتونستم جواب بگیرم همین برنامه ی اقای جودی رو هم تست کردم نتونستم جواب بگیرم
    من به جای مگا 8 که دما رو میخونه و به صورت سریال به مگا32 میفرسته فقط از یه مگا 32 استفاده کردم به پورت c0 , C1 ,توی مگا 32 وصل کردم یعنی SCL وSDA ولی بقیه با پین های دیگه برنامه نوشتن البته من تو برنامه همه رو تعقیر دادم یعنی میشه مشکل از اون باشه
    اینم برنامه من میشه کمکم کنید اشکالم کجاست در ضمن من طبق گفته دوستمون فیوز بیت جیتگ رو هم غیر فعال کردم ولی باز در همون حدوده . از استاتید تقاضا دارم برنامه منو برسی کنند و راهنمایم کنن

    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Rs = Pina.0 , E = Pina.1 , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = Pina.5
    Config Lcd = 16 * 2
    Cursor Off
    Cls
    Sck Alias Portc.0
    Dataout Alias Portc.1
    Datain Alias Pinc.1
    Config Portc.0 = Output
    Config Portc.1 = Output
    Cls
    Gosub Signal_reset : Waitms 10
    Do
    Command = &B00000101 : Gosub Get_sht10
    Gosub Calcula_rh_liner_12bit
    Command = &B00000011 : Gosub Get_sht10
    Gosub Calcula_temp_14bit
    Waitms 100
    Locate 1 , 1 : Lcd "T=" ; Temp
    Locate 2 , 1 : Lcd "h=" ; Humidity
    Waitms 100
    '**********************************************
    Status_register_write:
    Gosub Signal_start
    Command = &B00000110 : Shiftout Dataout , Sck , Command , 1
    Gosub Signal_ack
    Command = &B00000000 : Shiftout Dataout , Sck , Command , 1
    Gosub Signal_ack
    Return
    '*******************************************
    Status_register_read:
    Gosub Signal_start
    Command = &B00000111
    Shiftout Dataout , Sck , Command , 1
    Gosub Signal_ack
    Gosub Read_byte : Data_msb = Data_byte
    Gosub Signal_ack
    Gosub Read_byte : Crc = Data_byte
    Return
    '*******************************************
    Setting_default:
    Gosub Signal_start
    Command = &B00011110 : Shiftout Dataout , Sck , Command , 1
    Gosub Signal_ack
    Waitms 100
    Return
    '*******************************************
    Get_sht10:


    Gosub Signal_start
    Gosub Send_command
    Gosub Signal_ack
    Gosub Wait_for_data_ready
    Gosub Read_byte : Data_msb = Data_byte
    Gosub Signal_ack
    Gosub Read_byte : Data_lsb = Data_byte
    Gosub Signal_ack
    Gosub Read_byte : Crc = Data_byte
    Gosub Signal_end
    Data_msb = Data_msb And &B00111111
    Data_word = Makeint(data_lsb , Data_msb)
    Return
    '*******************************************
    Signal_reset:
    Config Portc.0 = Output
    Config Portc.1 = Output
    Reset Sck : Set Dataout : Waitus 1
    For I = 1 To 9
    Set Sck : : Waitus 1 :
    Reset Dataout : Waitus 1
    Next I
    Return
    '*******************************************
    Signal_start:


    Config Portc.0 = Output
    Config Portc.1 = Output
    Reset Sck : Set Dataout : Waitus 1
    Set Sck : : Waitus 1 :
    Reset Dataout : Waitus 1
    Reset Sck : Waitus 1
    Set Sck : Waitus 1
    Set Dataout : : Waitus 1
    Reset Sck : Waitus 1
    Crc = 0
    Return
    '*******************************************
    Send_command:
    Config Portc.0 = Output : Portc.0 = 0
    Config Portc.1 = Output : Portc.1 = 0
    Shiftout Dataout , Sck , Command , 1
    Return
    '*******************************************
    Wait_for_data_ready:
    Config Portc.0 = Output
    Config Portc.1 = Input
    Set Dataout
    For I = 1 To 255
    If Dataout = 0 Then Exit For
    Waitms 1
    Next


    Return
    '*******************************************
    Read_byte:
    Config Portc.0 = Output : Portc.0 = 0
    Config Portc.1 = Input : Portc.1 = 1
    Shiftin Datain , Sck , Data_byte , 1
    Return

    '*******************************************
    Signal_ack:
    Config Portc.0 = Output
    Config Portc.1 = Output
    Reset Dataout : Reset Sck
    Set Sck : Waitus 1
    Reset Sck
    Return
    '*******************************************
    Signal_end:
    Config Portc.0 = Output
    Config Portc.1 = Output
    Set Dataout : Waitus 1
    Set Sck : Waitus 1
    Reset Sck : Waitus 1
    Return
    '*******************************************
    Calcula_rh_liner_12bit:
    Rh_liner = Data_word * Data_word
    Rh_liner = Rh_liner * -0.0000015955
    Z = 0.0367 * Data_word
    Rh_liner = Rh_liner + Z
    Rh_liner = Rh_liner - 2.0468
    Humidity = ""
    Humidity = Fusing(rh_liner , "#.#")
    Return
    '*******************************************
    Calcula_temp_14bit:


    Temp_single = 0.01 * Data_word
    Temp_single = Temp_single - 40.1
    Temp = ""
    Temp = Fusing(temp_single , "#.#")
    Return
    '/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
    End
    '/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
لطفا صبر کنید...
X