اطلاعیه

Collapse
No announcement yet.

مشکل در دقت سنسور دمای SMT160

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

    مشکل در دقت سنسور دمای SMT160

    سلام دوستان خوبم , برای اولین باره که دارم با smt160 کار میکنم و مشکلی هم که دارم اینه که دمایی رو که به من میده هی بین 3 تا 4 درجه تغیر میکنه :eek: که نمیدونم مشکل از برناممه یا از سنسور برای همین گفتم ببینم شاید باید مداری چیزی باشه که نویزشو بگیره که من ازش بیخبرم .من این سنسورو بخاطر دقتش خریدم ولی ... .
    دوستان اگه راهنمایی کنن ممنونم.
    اینم برنامه سنسور.
    کد:
    $regfile = "m16def.dat"
    $crystal = 1000000
    $lib "glcdks108.lbx"
    $include "FONT8X8.FONT"
    Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 0 , Ce2 = 1 , Cd = 6 , _
    Rd = 7 , Reset = 5 , Enable = 4
    Setfont Font8x8
    
    Cls
    
    '-----------------------------
    Dim X As Integer
    Dim Xf As Word
    Dim Xl As Word
    Dim Temp As Single
    Dim L As Byte
    Dim Lop2 As Byte
    Dim Lop1 As Byte
    Dim Cn As Byte
    Dim Cl As Byte
    Dim F As Single
    '------------------------------------------------
    Config Int0 = Rising
    Config Int1 = Falling
    Config Timer1 = Timer , Prescale = 1
    Enable Interrupts
    Enable Timer1
    Enable Int0
    Enable Int1
    On Int0 Int0_int
    On Int1 Int1_int
    '------------------------------------------------
    Do
    X = Xl + Xf
    F = Xl / X
    F = F - 0.32
    Temp = F / 0.0047
    Waitms 100
    Lcdat 1 , 1 , Temp ; "c      "
    Loop
    '------------------------------------------------
    Int1_int:
    Stop Timer1
    Xl = Timer1
    Timer1 = 0
    Start Timer1
    Return
    '------------------------------------------------
    Int0_int:
    Stop Timer1
    Xf = Timer1
    Timer1 = 0
    Start Timer1
    Return
    End                             'end program
    دعا پشتِ دعا براي آمدنت
    گناه پشــــــتِ گناه براي نيامــدنت
    دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
    کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

    #2
    پاسخ : مشکل در دقت سنسور دمای SMT160

    سلام
    برنامت بنظر من درست میاد

    خود دیتاشیت smt160 یه مدار پیشنهادی برای کاهش نویز داده ، فکر کنم اگه از اون مدار استفاده کنی مشکلت حل بشه و سعی کن خازن های استفاده کنندت از نوع پلی استر باشن

    یا علی
    ماکه رفتیم خدمت (فعلا که 14 ماهش گذشت).........چون میگذرد غمی نیست....

    http://tif00s.persiangig.com/image/MLX90614.jpg

    دیدگاه


      #3
      پاسخ : مشکل در دقت سنسور دمای SMT160

      مرسی , یه خازن 100n که تو دیتاشیتش بین مثبت و منفی بود گزاشتم و برنامه رو هم با تعداد نمونه گیری های بیشتر اصلاح کردم تیجه خیلی بهتر شد ولی باز پرش دارم یعنی دمای ثابتی به من نمیده ویکی دو درجه بالا پایین میره .اساتید گفتن اگه فرکانس میکرو بره بالا درست میشه برای همین چون کریستال خارجی ندارم تا 8 داخلی بالا بردمش ولی نتیجه عجیب بود oo: به جای افزایش سرعت , سیستم کند شده بود , نمیدونم چرا.... بگه برای کریستال داخلی هم باید فیوز بیت تغییر بدیم؟؟ اگه نه پس چرا خوب عمل نکرد؟؟ یا اسنکه واقعا باید سرعتش بیاد پایین :surprised:
      برنامه جدیدو هم میزارم اگه کمک کنید ممنون میشم.
      کد:
      $regfile = "m16def.dat"
      $crystal = 1000000
      $lib "glcdks108.lbx"
      $include "FONT8X8.FONT"
      Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 0 , Ce2 = 1 , Cd = 6 , _
      Rd = 7 , Reset = 5 , Enable = 4
      Setfont Font8x8
      
      Cls
      
      '-----------------------------
      Dim X As Integer
      Dim Xf As Word
      Dim Xl As Word
      Dim Temp(10) As Single
      Dim Dama As Single
      Dim L As Byte
      Dim Lop2 As Byte
      Dim Lop1 As Byte
      Dim Cn As Byte
      Dim Cl As Byte
      Dim F As Single
      Dim A As Byte
      Dim T As String * 5
      '------------------------------------------------
      Config Int0 = Rising
      Config Int1 = Falling
      Config Timer1 = Timer , Prescale = 1
      Enable Interrupts
      Enable Timer1
      Enable Int0
      Enable Int1
      On Int0 Int0_int
      On Int1 Int1_int
      '------------------------------------------------
      Do
      For A = 1 To 10
      X = Xl + Xf
      F = Xl / X
      F = F - 0.32
      Temp(a) = F / 0.0047
      Next
      Dama = Temp(1) + Temp(2)
      Dama = Dama + Temp(3)
      Dama = Dama + Temp(4)
      Dama = Dama + Temp(5)
      Dama = Dama + Temp(6)
      Dama = Dama + Temp(7)
      Dama = Dama + Temp(8)
      Dama = Dama + Temp(9)
      Dama = Dama + Temp(10)
      Dama = Dama / 10
      T = Fusing(dama , "#.#")
      Lcdat 1 , 1 , T ; "c  "
      Loop
      '------------------------------------------------
      Int1_int:
      Stop Timer1
      Xl = Timer1
      Timer1 = 0
      Start Timer1
      Return
      '------------------------------------------------
      Int0_int:
      Stop Timer1
      Xf = Timer1
      Timer1 = 0
      Start Timer1
      Return
      End                             'end program
      دعا پشتِ دعا براي آمدنت
      گناه پشــــــتِ گناه براي نيامــدنت
      دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
      کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

      دیدگاه


        #4
        پاسخ : مشکل در دقت سنسور دمای SMT160

        سلام
        باید فیوزبیت ها رو تغییر بدین
        CLSEL3..0=0100

        دیدگاه


          #5
          پاسخ : مشکل در دقت سنسور دمای SMT160

          ینی اگه از 8 مگاه :sad:رتز داخلی هم بخام استفاده کنم باید فیوز بیت رو عوض کنم یا فقط برای کریستال خارجی باید فیوز بیت تغییر بدم
          دعا پشتِ دعا براي آمدنت
          گناه پشــــــتِ گناه براي نيامــدنت
          دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
          کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

          دیدگاه


            #6
            پاسخ : مشکل در دقت سنسور دمای SMT160

            نوشته اصلی توسط مرتضی بیگدلی
            ینی اگه از 8 مگاه :sad:رتز داخلی هم بخام استفاده کنم باید فیوز بیت رو عوض کنم یا فقط برای کریستال خارجی باید فیوز بیت تغییر بدم
            بله , باید عوض کنی چه داخلی چه خارجی
            راحته جای نگرانی نیست

            دیدگاه


              #7
              پاسخ : مشکل در دقت سنسور دمای SMT160

              سلام دوست عزیز شما اگه برای پروگرام کردن از خود بسکام استفاده میکنید توی قسمت فیوز بیت به راحتی اون رو تغییر بدید و روی 8000000 بگذارید حالا توی قسمت نمونه برداری یک تاخیر زمانی ایجاد کنید مثلا 50 میلی ثانیه وسپس نمونه گیری ها رو 20 تا کنید و با هم معدل بگیرید پس هر یک ثانیه به شما یک خروجی میدهد حالا اگر بخواهید می توانید این زمان را به 2 یا 3 ثانیه هم تغییر دهید و برنامه را به این صورت تغییر دهید
              Do
              For A = 1 To 10
              X = Xl + Xf
              F = Xl / X
              F = F - 0.32
              Temp = F / 0.0047
              waitms 50
              Next
              Dama = Temp + dama
              Dama = Dama / 10

              T = Fusing(dama , "#.#&quot
              Lcdat 1 , 1 , T ; "c "
              Loop

              دیدگاه


                #8
                پاسخ : مشکل در دقت سنسور دمای SMT160

                سلام دوستان از راهنمایتان ممنونم ،بالاخره تونستم با یه دقت خیلی خوب و بدون پرش از این سنسور جواب بگیرم .اول از همه مشکل اینه که باید حتما فرکانس میکرو رو ببری بالا چون با 1 مگا داخلی اصلا ثابت نمیمونه .من گزاشتم رو 16 خارجی وخیلی خوب جواب داد. دوم اینکه باید یه خازن 100n که اگه پلی استر هم باشه که بهتره بین vcc و gnd نزدیک سنسور بزاریم. در این صورت خیلی خوب میشه ودیگه حتی اعشار رو هم با پرش های خیلی کم میبینیم.
                راستی من با خازن وبدون خازن دما رو اندازه گرفتم و چیزی حدود 1.5 درجه اختلاف دما بوجود میومد. به نطر شما کدوم درست تره؟؟؟؟ oo:
                راستی اینم برنامه نهایی برای اونایی که بعدن میخان با این سنسور کار کنن.
                کد:
                $regfile = "m16def.dat"
                $crystal = 16000000
                
                $lib "glcdks108.lib"
                $include "FONT8X8.FONT"
                Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 6 , Ce2 = 7 , Cd = 4 , _
                Rd = 1 , Reset = 5 , Enable = 0
                Setfont Font8x8
                Cls
                Config Portc = Output
                Cls
                '-----------------------------
                Dim X As Integer
                Dim Xf As Word
                Dim Xl As Word
                Dim Temp(10) As Single
                Dim Dama As Single
                Dim L As Byte
                Dim Lop2 As Byte
                Dim Lop1 As Byte
                Dim Cn As Byte
                Dim Cl As Byte
                Dim F As Single
                Dim A As Byte
                Dim T As String * 5
                '------------------------------------------------
                Config Int0 = Rising
                Config Int1 = Falling
                Config Timer1 = Timer , Prescale = 1
                Enable Interrupts
                Enable Timer1
                Enable Int0
                Enable Int1
                On Int0 Int0_int
                On Int1 Int1_int
                '-----------------------------------------------
                
                '-----------------------------------------------
                Do
                For A = 1 To 10
                X = Xl + Xf
                F = Xl / X
                F = F - 0.32
                Temp(a) = F / 0.0047
                Next
                Dama = Temp(1) + Temp(2)
                Dama = Dama + Temp(3)
                Dama = Dama + Temp(4)
                Dama = Dama + Temp(5)
                Dama = Dama + Temp(6)
                Dama = Dama + Temp(7)
                Dama = Dama + Temp(8)
                Dama = Dama + Temp(9)
                Dama = Dama + Temp(10)
                Dama = Dama / 10
                T = Fusing(dama , "#.###")
                Lcdat 1 , 1 ,"temp";t ; "c  "
                
                Waitms 500
                
                Loop
                '------------------------------------------------
                Int1_int:
                Stop Timer1
                Xl = Timer1
                Timer1 = 0
                Start Timer1
                Return
                '------------------------------------------------
                Int0_int:
                Stop Timer1
                Xf = Timer1
                Timer1 = 0
                Start Timer1
                Return
                End                             'end program
                دعا پشتِ دعا براي آمدنت
                گناه پشــــــتِ گناه براي نيامــدنت
                دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
                کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

                دیدگاه


                  #9
                  پاسخ : مشکل در دقت سنسور دمای SMT160

                  هنوز کسی متوجه نشده که دمای با خازن درست تره یا دمای بدون خازن ؟؟؟ :sad:
                  دعا پشتِ دعا براي آمدنت
                  گناه پشــــــتِ گناه براي نيامــدنت
                  دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
                  کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

                  دیدگاه


                    #10
                    پاسخ : مشکل در دقت سنسور دمای SMT160

                    خیلی راحت میتونی با یک دما سنج دقیق کالیبرش کنی.

                    دیدگاه


                      #11
                      پاسخ : مشکل در دقت سنسور دمای SMT160

                      یه چیزی بگم شاید به درد یکی خورد.
                      من با این سنسور کار کردم. اما همه وقفه هام رو استفاده کرده بودم و از دستور bitwait هم نمیخواستم استفاده کنم.
                      یه راه پیدا کردم و اون استفاده از adc میکرو بود.
                      اینطور که duty cycle که خروجی smt160 بود رو با یک مقاومت (100k)و یک خازن(1uF) به ولتاژ dc تبدیل کردم و با استفاده از برنامه ولت متر dc (چند خط بیشتر نیست) ton و toff رو حساب کردم.
                      ton*5=Vdc
                      toff=(5-Vdc)/5
                      که ton و toff مجهول اند و Vdc هم که از برنامه ولتمتر دیجیتال داشتیم.

                      دیدگاه


                        #12
                        پاسخ : مشکل در دقت سنسور دمای SMT160

                        نوشته اصلی توسط msfakhar
                        یه چیزی بگم شاید به درد یکی خورد.
                        من با این سنسور کار کردم. اما همه وقفه هام رو استفاده کرده بودم و از دستور bitwait هم نمیخواستم استفاده کنم.
                        یه راه پیدا کردم و اون استفاده از adc میکرو بود.
                        اینطور که duty cycle که خروجی smt160 بود رو با یک مقاومت (100k)و یک خازن(1uF) به ولتاژ dc تبدیل کردم و با استفاده از برنامه ولت متر dc (چند خط بیشتر نیست) ton و toff رو حساب کردم.
                        ton*5=Vdc
                        toff=(5-Vdc)/5
                        که ton و toff مجهول اند و Vdc هم که از برنامه ولتمتر دیجیتال داشتیم.
                        آخه این چه کاریه برادر !!!
                        اگه قراره باز از ADC استفاده بشه خب چرا smt160 از همون LM35 آدم استفاده میکنه
                        با این کارت شما سنسور دمای دیجیتالت رو به آنالوگ تبدیل کردی که
                        اصلا یکی از مزایای استفاده از Smt160 اینه که دیگه از ADC استفاده نکنیم ، چون خوده َِADC خطا ایجاد میکنه (اونم ADc میکرو که 8بیت دقت بیشتر نداره دیگه بدتر)

                        نوشته اصلی توسط مرتضی بیگدلی
                        سلام دوستان از راهنمایتان ممنونم ،بالاخره تونستم با یه دقت خیلی خوب و بدون پرش از این سنسور جواب بگیرم .اول از همه مشکل اینه که باید حتما فرکانس میکرو رو ببری بالا چون با 1 مگا داخلی اصلا ثابت نمیمونه .من گزاشتم رو 16 خارجی وخیلی خوب جواب داد. دوم اینکه باید یه خازن 100n که اگه پلی استر هم باشه که بهتره بین vcc و gnd نزدیک سنسور بزاریم. در این صورت خیلی خوب میشه ودیگه حتی اعشار رو هم با پرش های خیلی کم میبینیم.
                        راستی من با خازن وبدون خازن دما رو اندازه گرفتم و چیزی حدود 1.5 درجه اختلاف دما بوجود میومد. به نطر شما کدوم درست تره؟؟؟؟
                        خوشحالم موفق شدی

                        برا سوالت بگم که خازن باید تو مدارت باشه ، اگه یه دماسنجی گیر نیوردی که بتونی دماسنجتو کالیبرش کنی از چندتا خارن دیگه استفاده کن بعد نتیجه هاتو نگا کن
                        ولی معمولا 100n مقداره خوبیه




                        ماکه رفتیم خدمت (فعلا که 14 ماهش گذشت).........چون میگذرد غمی نیست....

                        http://tif00s.persiangig.com/image/MLX90614.jpg

                        دیدگاه


                          #13
                          پاسخ : مشکل در دقت سنسور دمای SMT160

                          [img][/img]
                          دعا پشتِ دعا براي آمدنت
                          گناه پشــــــتِ گناه براي نيامــدنت
                          دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
                          کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

                          دیدگاه


                            #14
                            پاسخ : مشکل در دقت سنسور دمای SMT160

                            سلام
                            دوست عزیز شماتیک مدارتو ابذار تا ببینم چیکار کردی .یا با پرتئوس بذار یا بصورت pdf. تا بررسی کنم و بهت بگم ایرادش کجاس؟؟
                            یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                            دیدگاه


                              #15
                              پاسخ : مشکل در دقت سنسور دمای SMT160

                              نوشته اصلی توسط اقای دکتر
                              سلام
                              دوست عزیز شماتیک مدارتو ابذار تا ببینم چیکار کردی .یا با پرتئوس بذار یا بصورت pdf. تا بررسی کنم و بهت بگم ایرادش کجاس؟؟
                              سلام دوست عزیز میخاستم بزارم ولی نشد (یعنی نتونستم) اگه یاد بدی به روی چشم.راستی جواب گرفتم فکر نمیکنم دیگه مشکلی باشه
                              دعا پشتِ دعا براي آمدنت
                              گناه پشــــــتِ گناه براي نيامــدنت
                              دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
                              کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

                              دیدگاه

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