ايران ويج

نسخه‌ی کامل: راه اندازی سنسور sht11
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
بن سلام خدمت دوستان عزیز

می خواستم ی پروژه با sht11 اجرا کنم ولی اطلاعات خوبی در باره اش پیدا نکردم کسی پروژه داره در بارش داره!!؟
داش دمت گرم تا حدودی متوجه شده می خواستم ببینم امکانش هست ی آلگوریتم از اجرای این پروژه برام بگذارید... آخه این برنامه ها اکثرا PIC یا 8051 من زیاد سر در نیاوردم...
تا جایی که من متوجه شدم به یه پایه باید یک دیتا مربوط به حرارت یا رطوبت بدیم و بعد منتظر دریافت دیتا بشیم ولی نمی دونم پالس کلاک ش چطور باید بدیم یا چه فرکانسی باید داشته باشه!!!
(۱۶-آبان-۱۳۹۲, ۰۰:۱۶:۵۷)blackstar368 نوشته است: [ -> ]داش دمت گرم تا حدودی متوجه شده می خواستم ببینم امکانش هست ی آلگوریتم از اجرای این پروژه برام بگذارید... آخه این برنامه ها اکثرا PIC یا 8051 من زیاد سر در نیاوردم...
تا جایی که من متوجه شدم به یه پایه باید یک دیتا مربوط به حرارت یا رطوبت بدیم و بعد منتظر دریافت دیتا بشیم ولی نمی دونم پالس کلاک ش چطور باید بدیم یا چه فرکانسی باید داشته باشه!!!

من نمیدونم شرمنده
یعنی اینجا یک نفر هم نیست کمک کنه!!!! خیلی مهمه یک نفر ی کمکی بده!!! یعنی انقدر سخته!!!؟ بابا قبلا اینجا بیشتر کمک می کردین به آدم!!!!
عزیزم اینجا باید خودت شروع کنی تا بقیه کمکت کنن

کد php:
$regfile = "m32def.dat"
$crystal = 1000000

Config Lcdpin 
= Pin , Rs = Pina.0 , E = Pina.2 , Db4 = Pina.4 , Db5 = Pina.5 , Db6 = Pina.6 , Db7 = Pina.7
Config Lcd 
= 16 * 2
Cursor Off
Cls

Dim I 
As Byte
Dim Z 
As Single

Dim Data_byte 
As Byte
Dim Data_msb 
As Byte
Dim Data_lsb 
As Byte
Dim Data_word 
As Word
Dim Crc 
As Byte

Dim Temp 
As Single
Dim Rh_liner 
As Single
Dim Command 
As Byte

Sck Alias Portc.1
Dataout Alias Portc.0
Datain Alias Pinc.0

Config Portc.1 
= Output
Config Portc.0 
= Output

Gosub Display_lcd_start_text
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

   Gosub Display_lcd

   Wait 1
Loop

End

'**********************************************
Display_lcd_start_text:
   Cls :
   Locate 1 , 1 : Lcd "   www.RoboPardaz.com"
   Locate 2 , 1 : Lcd "AVR   PIC   8051"
   Wait 2 : Cls : Waitms 200
Return

'
*******************************************
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
   Print "Status Register=" ; Data_msb
   Print "Checksum=" ; Crc
   Print
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.1 = Output                                  ': Portc.1 = 1
   Config Portc.0 = Output                                  '
: Portc.0 = 1
   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.1 = Output                                  '
: Portc.1 = 1
   Config Portc.0 
= Output                                  ': Portc.0 = 1
   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.1 = Output : Portc.1 = 0
   Config Portc.0 
= Output : Portc.0 = 0
   Shiftout Dataout 
, Sck , Command , 1
Return

'*******************************************
Wait_for_data_ready:
   Config Portc.1 = Output                                  '
: Portc.1 = 0
   Config Portc.0 
= Input                                   ': Portc.0 = 0
   Set Dataout
   For I = 1 To 255
      If Dataout = 0 Then Exit For
      Waitms 1
   Next
Return

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

'*******************************************
Signal_ack:
   Config Portc.1 = Output                                  '
: Portc.1 = 0
   Config Portc.0 
= Output                                  ': Portc.0 = 0
   Reset Dataout : Reset Sck
   Set Sck : Waitus 1
   Reset Sck
Return

'
*******************************************
Signal_end:
   
Config Portc.1 = Output                                  ': Portc.1 = 1
   Config Portc.0 = Output                                  '
: Portc.0 = 1
   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
Return

'
*******************************************
Calcula_temp_14bit:
   
Temp = 0.01 * Data_word
   Temp 
= Temp - 40.1
Return

'*******************************************
Display_lcd:
   Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
   Locate 1 , 1 : Lcd "RH: " ; Fusing(rh_liner , "#.#") ; "%  "
   Locate 2 , 1 : Lcd "Temp: " ; Fusing(temp , "#.#") ; Chr(0) ; "C  "
Return 

[attachment=10585]

عکس پایه ها هم برات پایین پیوست کردم
(۱۸-آبان-۱۳۹۲, ۱۶:۳۰:۰۱)kimiafars نوشته است: [ -> ]عزیزم اینجا باید خودت شروع کنی تا بقیه کمکت کنن

کد php:
$regfile = "m32def.dat"
$crystal = 1000000

Config Lcdpin 
= Pin , Rs = Pina.0 , E = Pina.2 , Db4 = Pina.4 , Db5 = Pina.5 , Db6 = Pina.6 , Db7 = Pina.7
Config Lcd 
= 16 * 2
Cursor Off
Cls

Dim I 
As Byte
Dim Z 
As Single

Dim Data_byte 
As Byte
Dim Data_msb 
As Byte
Dim Data_lsb 
As Byte
Dim Data_word 
As Word
Dim Crc 
As Byte

Dim Temp 
As Single
Dim Rh_liner 
As Single
Dim Command 
As Byte

Sck Alias Portc.1
Dataout Alias Portc.0
Datain Alias Pinc.0

Config Portc.1 
= Output
Config Portc.0 
= Output

Gosub Display_lcd_start_text
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

   Gosub Display_lcd

   Wait 1
Loop

End

'**********************************************
Display_lcd_start_text:
   Cls :
   Locate 1 , 1 : Lcd "   www.RoboPardaz.com"
   Locate 2 , 1 : Lcd "AVR   PIC   8051"
   Wait 2 : Cls : Waitms 200
Return

'
*******************************************
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
   Print "Status Register=" ; Data_msb
   Print "Checksum=" ; Crc
   Print
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.1 = Output                                  ': Portc.1 = 1
   Config Portc.0 = Output                                  '
: Portc.0 = 1
   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.1 = Output                                  '
: Portc.1 = 1
   Config Portc.0 
= Output                                  ': Portc.0 = 1
   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.1 = Output : Portc.1 = 0
   Config Portc.0 
= Output : Portc.0 = 0
   Shiftout Dataout 
, Sck , Command , 1
Return

'*******************************************
Wait_for_data_ready:
   Config Portc.1 = Output                                  '
: Portc.1 = 0
   Config Portc.0 
= Input                                   ': Portc.0 = 0
   Set Dataout
   For I = 1 To 255
      If Dataout = 0 Then Exit For
      Waitms 1
   Next
Return

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

'*******************************************
Signal_ack:
   Config Portc.1 = Output                                  '
: Portc.1 = 0
   Config Portc.0 
= Output                                  ': Portc.0 = 0
   Reset Dataout : Reset Sck
   Set Sck : Waitus 1
   Reset Sck
Return

'
*******************************************
Signal_end:
   
Config Portc.1 = Output                                  ': Portc.1 = 1
   Config Portc.0 = Output                                  '
: Portc.0 = 1
   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
Return

'
*******************************************
Calcula_temp_14bit:
   
Temp = 0.01 * Data_word
   Temp 
= Temp - 40.1
Return

'*******************************************
Display_lcd:
   Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
   Locate 1 , 1 : Lcd "RH: " ; Fusing(rh_liner , "#.#") ; "%  "
   Locate 2 , 1 : Lcd "Temp: " ; Fusing(temp , "#.#") ; Chr(0) ; "C  "
Return 



عکس پایه ها هم برات پایین پیوست کردم
مرسی عزیز خیلی لطف کردی! خودت این پروژه رو اجرا کردی!!! ببخشید بد حرف زدم...
من sht1101 رو کار کردم اینو نه
(۱۹-آبان-۱۳۹۲, ۲۰:۵۸:۲۶)kimiafars نوشته است: [ -> ]من sht1101 رو کار کردم اینو نه

sht1101!!!!! سنسور دما و رطوبت!؟ من بیشتر ی الگوریتم می خواستم از چگونگی دیتا دادن بهش برنامه آماده به کارم نمیاد آخه برنامه ام خیلی سنگین میشه اینجوری اگه بخوام از برنامه های آماده استفاده کنم!! این چند روز هم وقت نشد روش خیلی کار کنم آخه گرم محرم بودم. اگر بتونید یه الگوریتم بهم بدین خیلی بهم کمک کردین...
(۱۸-آبان-۱۳۹۲, ۱۰:۲۳:۲۸)blackstar368 نوشته است: [ -> ]یعنی اینجا یک نفر هم نیست کمک کنه!!!! خیلی مهمه یک نفر ی کمکی بده!!! یعنی انقدر سخته!!!؟ بابا قبلا اینجا بیشتر کمک می کردین به آدم!!!!
سلام برهمه دوستان
اینم مدار شبیه سازی شده و برنامه بسکام راه اندازی سنسور SHT1X[attachment=13869][attachment=13869][attachment=13869][attachment=13869][attachment=13869]