اطلاعیه

Collapse
No announcement yet.

برنامه نویسی LM35در بسکام و نمایش دما در LCD

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

    برنامه نویسی LM35در بسکام و نمایش دما در LCD

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

    #2
    پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

    برای شروع فرض میکنیم دو سنسورLM35 داریم که اولی به ADC0 و دومی بهADC1 میکرو AVR ATMEGA16 وصل هستن و ما میخواهیم اطلاعات دو سنسور را خوانده و دمای درست را با برنامه نویسی بیسیک محاسبه و در LCD نمایش دهیم.خواهشن قطعه های برنامه را با توضیحات لازم درباره کریستال و مقدار نمونه برداری و Prescaler و نحوه استفاده از تایمر بیان کنید که ملموس تر و قابل فهم تر باشه.
    ممنون از همه بسم الله.....
    جانم به فدای ائمه اطهار
    می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

    دیدگاه


      #3
      پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

      سلام بنده هم برای یکی از پروژه هام به این سنسور نیاز دارم خوشحال میشم دوستان هم نکاتی رو در مورد استفاده از این سنسور بیان کنند
      برنامه رو هم انشالله به زودی میزارم البته چیز سختی به نظر نمیاد باشه و فقط adc هست
      بنده چند تا تاپیک در این مورد خوندم و چیزای متناقضی دیدم
      بعضی ها میگفتن خوبه دقت بالایی داره بعضی ها هم شاکی بودن
      این میتونه نشون دهنده این باشه که جنس های مختلفی با کیفیت های مختلف الان تو بازار هست البته ممکنه اینطور هم نباشه
      -----------------------------------------------------------------
      این قابلیت هاش هست به گفته شرکت سازنده # Features Calibrated directly in ° Celsius (Centigrade)
      # Linear + 10.0 mV/°C scale factor
      # 0.5°C accuracy guaranteeable (at +25°C)
      # Rated for full -55° to +150°C range
      # Suitable for remote applications
      # Low cost due to wafer-level trimming
      # Operates from 4 to 30 volts
      # Less than 60 µA current drain
      # Low self-heating, 0.08°C in still air
      # Nonlinearity only ±¼°C typical
      # Low impedance output, 0.1 Ohm for 1 mA load
      --------------------------------------------------------------------

      این سنسور در ازای هر درجه سانتیگراد 10 میلی ولت خروجیش افزایش پیدا میکنه
      یعنی در 150 که سقف دمای کاریش هست 1.5 ولت میده
      دقت adc میکرو برای این کار کافی هست و نیاز نیست در گیر کاری جانبی بشید
      -----------------------------------------------------------------

      برای راه اندازی ابن سنسور برای اندازی گیری دمای مثبت کافیه تغذیه 4 تا 20 ولت رو بهش بدید و خروجیش رو با adc بخونید و ...
      ----------------------------------------------------------------
      برای راه اندازی این سنسور به صورتی که دمای منفی رو هم اندازه گیری کنه باید علاوه بر اینا خروجیش رو با ولتاژ منفی پول دون کنید
      مثلا اگه تغذیه رو 5 ولت انتخاب میکنید باید با استفاده از یک مقاومت 100 کیلو خروجیش رو وصل کنید به ولتاژ -5
      -----------------------------------------------------------


      اینا کلا چیزایی بود که از دیتا شیتش فهمیدم
      ولی در عمل باید دید جواب میده یانه

      دیدگاه


        #4
        پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

        میدونی چرا هیشکی جواب نمیده :mrgreen: چون اسونه
        اولین کار با میکرو کنترلر ها راه اندازی انالوگ به دیجی تال هستش
        من با lm35 دمای + و منفی رو سنجیدم الان یکم سرم شلوغه برنمه و توضیحات رو میزارم تو این تاپیک
        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

        دیدگاه


          #5
          پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

          اون که بله ولی بحث بنده بیشتر رو سخت افزار هست که بتونیم جواب خوبی بگیریم
          سیم سنسور حداکثر چند متر میتونه باشه؟
          راهی برای افزایش هست؟

          دیدگاه


            #6
            پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

            نوشته اصلی توسط حامد رحیمی
            میدونی چرا هیشکی جواب نمیده :mrgreen: چون اسونه
            اولین کار با میکرو کنترلر ها راه اندازی انالوگ به دیجی تال هستش
            من با lm35 دمای + و منفی رو سنجیدم الان یکم سرم شلوغه برنمه و توضیحات رو میزارم تو این تاپیک
            باشه اگه بزاری خیلی ممنون میشم آقای رحیمی.میدونی چیه؟منم تئوری رو با شک بلدم ولی تا حالا انجام ندادم که چیزی بفهمم.گیرم اینه که آیا برای نمونه برداری تایمر واجبه؟میشه بدون تایمر اینکارو کرد؟یعنی با یک حلقه for-next؟تازه من فرمولشم نمیدونم که :angry:همین سوالارم جواب بدی خوبه :cry:
            جانم به فدای ائمه اطهار
            می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

            دیدگاه


              #7
              پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

              تایمر نیاز نیست اخه خیلی هم زمان مهم نیست شما هر 300 میلی ثانیه(با ویت) نمونه برداری کنید خوبه فکر کنم
              برای فرمول هم کافیه مقدار خونده شده از adc رو تقسیم بر 2 کنید تا دما بر حسب درجه سانتیگراد بدست بیاد
              خطای این روش در زیر 50 درجه کمتر از 1 درجه هست و بالای 100 درجه بیشتر از 2 درجه(خطای ناشی از adc)
              که فکر کنم قابل قبول باشه
              -----------------------------------------
              اینا برای دمای مثبت بود
              برای دمای منفی دوستان چه باید کرد؟

              دیدگاه


                #8
                پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                $regfile = "m8def.dat"
                $crystal = 12000000
                $baud = 9600
                Config Lcd = 16 * 2
                Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
                Cls
                Cursor Off


                Config Adc = Single , Prescaler = Auto , Reference = Internal

                Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
                Deflcdchar 1 , 32 , 4 , 12 , 28 , 28 , 32 , 32 , 32
                Deflcdchar 2 , 32 , 4 , 14 , 31 , 31 , 32 , 32 , 32
                Deflcdchar 3 , 32 , 4 , 14 , 31 , 31 , 7 , 6 , 4
                Deflcdchar 4 , 32 , 4 , 14 , 31 , 31 , 31 , 14 , 4
                Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32

                Dim A As Word
                Dim B As Word
                Dim C As Single
                Dim D As Byte

                D = 1
                Start Adc

                Cursor Off
                Cls


                Do

                A = Getadc(3)
                B = Getadc(4)
                C = A - B
                C = C / 4
                Locate 1 , 1
                Lcd "temp =" ; C ; Chr(0) ; "c "
                Locate 1 , 16
                Lcd Chr(d)
                Waitms 500
                Incr D
                If D > 6 Then D = 1
                Print "temp: " ; C

                Loop

                End
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


                  #9
                  پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                  این برنامه نمونه برداری میکنه و به پورت کام هم میفرسته پس دستور $baud = 9600

                  و دستور Print "temp: " ; C

                  نیازی نیست
                  کریستال $crystal = 12000000
                  هست ولی شما میتونید از $crystal = 1000000
                  هم استفاده کنید نمایش دمای +و منفی رو هم نشون میده خودمم هم میدونم جملم درست نیست :mrgreen:
                  یعنی این که هم مثبت نشون میده هم منفی اگه سنسورو بزاری تو فریزر میره منفی
                  ببین طریقه وصل کردن پایه هارو به adc میکرو از دیتا شیت lm35 بردار اون قسمت که دو تا دیود و یدونه مقاومت 10 کیلو داره ها شماتیک کشیده تو فایل دیتاشیت lm35 بخونی متوجه می شی چه خبره :agree:
                  [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                  دیدگاه


                    #10
                    پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                    بیا اینم عکسش


                    توضیحات اینکه ولتاژ رو سعی کن بیشتر از 5 ولت بدی
                    بعدش سعی کن که تو دوتا چایه خروجی خازن بزاری با زمین لا اقل 104 واسه اینکه عدد رو ال سی دی زیاد جابه جا نشه
                    (نویز نیفته رو مدارت )
                    بعدش تشکر یادت نره :mrgreen:
                    بعدش اون مقاومت 1 کیلو ابتکار خودم بود تو دمای منفی 2 تا مثبت 2 درجه قاطی میکرد درستش کردم :agree:
                    خروجی ها یکی به ای دی سی 3 ئ یکی به 4 میره
                    adc 3 به مثبت خروجی
                    adc 4 به منفی خروجی
                    اگه عددت قاطی پاتی بود جای دو تا + و منفی رو عوض کن من همین مدارو 100 جا تست کردم درسته ولی الان دقیقا این دوتا پایه یادم نیست چی به چیه :agree:
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #11
                      پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                      باور نکردنیه اره ؟
                      ولی من که بچه اردبیلم پارسا ل زمستون این مدار منفی 22 درجه ثبت کرد :wow:
                      در ضمن 2 سالی میشه کار میکنه :icon_razz:
                      یه چیز دیگه
                      برای دماسنجی + یک ای دی سی کافی بود ولی واسه دوبل دمایی یعنی دمای مثبت و منفی باید از 2 تا ای دی سی استفاده کرد (همون انالوگ به دیجیتال خودمون adc )()
                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه


                        #12
                        پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                        بازم میگم اون دقتی که تو ولتاژ 12 ولت هست تو 5 ولت نمیبینی
                        یعنی 12 خوبه
                        دیود ها هم 1n4148 بزار :mrgreen: دیگه من برم زیاد حرف زدم :bye
                        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                        دیدگاه


                          #13
                          پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                          خروجی ها مستقیم بره به adc?
                          کدوم به چنل 3 کدوم به چنل 4؟
                          با تشکر

                          دیدگاه


                            #14
                            پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                            نوشته اصلی توسط حامد رحیمی
                            بیا اینم عکسش


                            توضیحات اینکه ولتاژ رو سعی کن بیشتر از 5 ولت بدی
                            بعدش سعی کن که تو دوتا چایه خروجی خازن بزاری با زمین لا اقل 104 واسه اینکه عدد رو ال سی دی زیاد جابه جا نشه
                            (نویز نیفته رو مدارت )
                            بعدش تشکر یادت نره :mrgreen:
                            بعدش اون مقاومت 1 کیلو ابتکار خودم بود تو دمای منفی 2 تا مثبت 2 درجه قاطی میکرد درستش کردم :agree:
                            خروجی ها یکی به ای دی سی 3 ئ یکی به 4 میره
                            adc 3 به مثبت خروجی
                            adc 4 به منفی خروجی
                            اگه عددت قاطی پاتی بود جای دو تا + و منفی رو عوض کن من همین مدارو 100 جا تست کردم درسته ولی الان دقیقا این دوتا پایه یادم نیست چی به چیه :agree:

                            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                            دیدگاه


                              #15
                              پاسخ : برنامه نویسی LM35در بسکام و نمایش دما در LCD

                              سلام حامد جون واقعا رگ اردبیلیت گل کرد :applause:ترکوندی ممنون واسه برنامه و توضیحاتت.و 2تا تشکرم کردم حال کنی اما من واسه پایان نامه میخوام و باید دقیق اونی باشه که میخوام نه دما + و -. :cry2:اما نکات خوبی داشت که فهمیدم نیاز به تایمر نیست.ولی نمونه برداری رو با یک حلقه for-next انجام بدم و در یک do-loop بزارم تا دایم فیدبک بگیره و نمونه برداری متوقف نشه.دیگه اینکه فرمولشم:
                              sample as word
                              t as word
                              temp s word
                              do
                              start adc
                              for i=1 to 100
                              sample=getadc(0
                              t=t+sample
                              next
                              t=t/100
                              temp=t/2
                              lcd temp
                              loop
                              درسته؟
                              جانم به فدای ائمه اطهار
                              می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                              دیدگاه

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