اطلاعیه

Collapse
No announcement yet.

DS18S20

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

    #16
    پاسخ : DS18S20

    سلام من یه دماسنج ساختم با بیسیک میخوام تبدیل کنم به c حالا کدوم قسمت این برنامه فقط مربوط به خوندن سنسور هست؟
    http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

    دیدگاه


      #17
      پاسخ : DS18S20

      نوشته اصلی توسط asmira
      حالا برای اینکه چندتا ds1820 رو بتونم کنترل کنم چکار باید بکنم؟
      به نظر شما چکار باید بکنید؟

      دیدگاه


        #18
        پاسخ : DS18S20

        تا اونجایی من میدونم هر سنسور یه ایدی خاص داره از طریق اون باید این کار رو انجام داد
        http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

        دیدگاه


          #19
          پاسخ : DS18S20

          با سلام
          دوستان با توجه به فایلی که قرار دادم 8 تا سنسور رو میتونه بخونه اما من از تابع w1_serch چیزی دستگیرم نشد یعنی محتویات این تابع نشون داده نشده و نمیدونم چطور واسه جندتا سنسور تو برنامه خودم این کارو بکنم
          http://s4.picofile.com/file/8164332250/DS1820.zip.html

          اضافه شده در تاریخ :
          نوشته اصلی توسط freedom_truth
          به نظر شما چکار باید بکنید؟
          به نظر من باید یه تابع serchبنویسم که اولین و device بعدی رو پیدا کنه بعد تو یه حلقه نشون بده اما این کارو کردم نشد

          اضافه شده در تاریخ :
          دوستان اگه میشه یه نگاهی ام به این لینک بندازید
          http://www.picprojects.net/ds1820/

          دیدگاه


            #20
            پاسخ : DS18S20

            درسته. توی دیتاشیت و در قست ROM Commands و ذیل دستور Search ROM گفته که باید با این دستور تمام سنسور ها رو از روی کد Rom شون شناسایی کنید. برای اطلاعات بیشتر هم به یک سند دیگه ارجاع داده.

            در این تاپیک یک نمونه کد برای راه اندازی چند سنسور ارائه شده. ممکنه مجبور باشید کمی تغییرش بدید و ایرادهاش رو بگیرید.
            http://www.ccsinfo.com/forum/viewtopic.php?t=44853

            موفق باشید.

            دیدگاه


              #21
              پاسخ : DS18S20

              سلام
              دوست عزیز من این کدی که فرمودید زدم اما خروحی سنسورهارو نشون نمیده
              http://s5.picofile.com/file/8164481050/6.zip.html
              http://s4.picofile.com/file/8164481142/how.zip.html

              دیدگاه


                #22
                پاسخ : DS18S20

                دلیلش اینه که توی مشخصات سنسور ها Rom serial number شون یکیه. اونا رو عوض کنید یه چیزایی نشون میده.

                در ضمن زیاد هم به پروتیوس تکیه نکنید. در عمل هم تست کنید.

                دیدگاه


                  #23
                  پاسخ : DS18S20

                  منظورتون از Rom serial number اون جدول است؟میشه در مورد اینکه چطور اون اعداد بدست میاد راهنمایی کنید من تو دیتاشیت خوندم که crc برای درستی عملکرد و xor کدهاست .من برناامه قبلیمو رو بردهم تست کردم واسه شبکه شدن جواب نداد این برنامه جدید رو هنوز رو برد تست نگرفتم اما تو پرتئوس هم حواب نمیده.اینجا اومده دونه دونه اضافه میکنه rom snumbero چطور میشه که rom serial ها یکی شدن؟

                  اضافه شده در تاریخ :
                  من فکر میکنم شماره سریال ها درسته و مشکل در پروتئوس هست در تغذیه PARAZITکه در کد و دیتاشیت هم اشاره شده

                  اضافه شده در تاریخ :
                  و اینکه تو این برنامه TEMP حتی برای یک DEVICE هم درست نشون نمیده

                  دیدگاه


                    #24
                    پاسخ : DS18S20

                    نوشته اصلی توسط asmira
                    منظورتون از Rom serial number اون جدول است؟
                    نه منظورم مشخصات قطعه تو پروتیوسه.
                    روی قطعه کلیک راست کنید و Edit properties بزنید. Rom serial number رو رقم آخرشو عوض کنید. برای هر سنسور این کار رو انجام بدید.

                    دیدگاه


                      #25
                      پاسخ : DS18S20

                      من برای یک DEVICE هم تست میگیرم دما رو درست نشون نمیده

                      اضافه شده در تاریخ :
                      الان برای سه تا سنسور هم دمارو اشتباه نشون میده.سوال دیگه ای که داشتم هر DS1820 چقدر جریان میکشه؟

                      دیدگاه


                        #26
                        پاسخ : DS18S20

                        نوشته اصلی توسط asmira
                        الان برای سه تا سنسور هم دمارو اشتباه نشون میده.سوال دیگه ای که داشتم هر DS1820 چقدر جریان میکشه؟
                        کد رو بررسی کنید ببینید چرا اشتباه نشون میده.
                        ممکنه ضرب و تقسیم یا نوع داده ها(Data types) اشتباه باشه یا مال یک مدل سنسور دیگه باشه. مثلاً DS18B20.

                        در مورد جریان مصرفی هم به دیتاشیت مراجعه کنید.

                        دیدگاه


                          #27
                          پاسخ : DS18S20

                          در مورد جریان مصرفی چیزی تو DATASHEET نگفته و اینکه من چک کردم همه جیز درسته چرا دما رو درست نشون نمیده؟تا اونجایی که میدونم سنسور چه S باشه چه B باید درست نشون بده فقط B دقتش بیشتر

                          دیدگاه


                            #28
                            پاسخ : DS18S20

                            همونطور که حدس زدم مشکل توی محاسبه بود. ظاهراً اون کد مال B هست و فرق میکنه یک کم. من الان تست کردم درست نشون میده.

                            این رو:
                            [code=c]if (temperature >= 0)
                            temperature = (temperature + 8)/16;

                            else
                            temperature = (temperature - 8)/16; [/code]

                            با این عوض کنید.
                            [code=c] temperature = (temperature)/2; [/code]

                            نمیدونم چرا +8 و -8 کرده. حوصله هم ندارم بررسی کنم. به هر حال با حذف اونا کار میکنه.

                            دیدگاه


                              #29
                              پاسخ : DS18S20

                              بله همونطور که فرمودید این کد برای DS18B20 هست وچطور میتونم برای DS18S20 تغییر بدم؟

                              اضافه شده در تاریخ :
                              دوست عزیز من کد رو تغییر دادم [code=c]temperature = (temperature)/2; [/code]
                              برای DS18S20 کار میکنه اما اولی رو اشتباه نشون میده

                              اضافه شده در تاریخ :
                              شرط رو برداشتم درست شد. واقعا یک دنیا ممنون از همکاریتون

                              اضافه شده در تاریخ :
                              با سلام
                              دوست عزیز
                              من اطلاعات دمایی که سنسورها نشون میدن رو طبق یک پروتکل خاصی میخوام به pc انتقال بدم اما به مشکل بر خوردم
                              اول اینکه دمای اندازه گیری شده float هست و من برای قرار دادن تو پروتکلم باینری میخوام اطلاعات دمارو و حالا این پروتکل چی هست
                              تو این پروتکل که تو شکل بیشر معلومه چی هست هر سنسور اطلاعات دماش مثلا 8بیت میشه که این پروتکل 4بایتی هست و در بایت اول id که 6بیت بایت اول هست رو میفرسته ودر بایت دوم d0 تا d5 و در بایت سوم d6 تا d7 ودر بایت اخر cheksum که شامل xor اطلاعات هر بیت میباشد.

                              و اینکه cheksume شامل xor 3 بایت بالا میباشد و برای هر سنسور این مراحل تکرار میشوند و شماره id اضافه میشود.

                              اضافه شده در تاریخ :
                              که این هم عکس پروتکل و قسمتی از کد که خودم نوشتم اما تکمیل نیست
                              http://s4.picofile.com/file/81650415...TOCOL.zip.html

                              دیدگاه


                                #30
                                پاسخ : DS18S20

                                به جای float میتونید از int16 استفاده کنید. البته باید کد نمایش دما رو کمی تغییر بدید.
                                برای پروتکل هم میتونید از modbus استفاده کنید که کتابخونه و مثالش هست. تست کردم جواب میده.

                                دیدگاه

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