اطلاعیه

Collapse
No announcement yet.

سنسور lm35 با نمایش دما بر روی led

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

    سنسور lm35 با نمایش دما بر روی led

    سلام من برنامه ای با atmega16 نوشتم که سنسور lm35 دما رو روی lcd نشون میده حالا مخوام به جای اینکه دما روی lcd نمایش داده بشه روی led نمایش داده بشه طوری که در ازای هر 25 درجه بالای صفر یک led قرمز روشن و در ازای هر 25 درجه پایین صفر یک led آبی روشن بشه یه جورایی شبیه دماسنج جیوه ای دیگه..
    لطفا اگر میشه راهنمایی کنید. :rolleyes:
    شخصی می گفت من شانزده سال دارم.بزرگی به او خرده گرفت که نباید بگویی شانزده سال دارم باید بگویی آن شانزده سال را دیگر ندارم...

    #2
    پاسخ : سنسور lm35 با نمایش دما بر روی led

    سلام.
    شما تقریباً 90% راه رو رفتین. کافیه با یه شرط خروجی رو روی یه پین بندازید. با چه زبانی برنامه مینویسی؟ برنامه رو بذار تا کمکت کنیم.
    تشکر لازم نیست!

    دیدگاه


      #3
      پاسخ : سنسور lm35 با نمایش دما بر روی led

      نوشته اصلی توسط iman-63
      سلام.
      شما تقریباً 90% راه رو رفتین. کافیه با یه شرط خروجی رو روی یه پین بندازید. با چه زبانی برنامه مینویسی؟ برنامه رو بذار تا کمکت کنیم.
      با زبان c برنامه رو نوشتم.

      [tt]#include <mega16.h>
      #include <delay.h>
      #include <stdio.h>
      #asm
      .equ __lcd_port=0x18 ;PORTB
      #endasm
      #include <lcd.h>
      #define ADC_VREF_TYPE 0xC0
      unsigned int read_adc(unsigned char adc_input)
      {
      ADMUX=adc_input|ADC_VREF_TYPE;
      ADCSRA|=0x40;
      while ((ADCSRA & 0x10)==0);
      ADCSRA|=0x10;
      return ADCW;
      }
      void main(void)
      {
      char z[10];
      int y;
      PORTA=0x00;
      DDRA=0x00;
      ADMUX=ADC_VREF_TYPE;
      ADCSRA=0x86;
      lcd_init(16);
      while (1)
      {
      lcd_clear();
      y=read_adc(0);
      y=y/4;
      sprintf(z,"%u c",y);
      lcd_gotoxy(0,0);
      lcd_puts(z);
      delay_ms(100);
      };
      }[/tt]
      ممنون میشم راهنمایی کنید. :-/
      شخصی می گفت من شانزده سال دارم.بزرگی به او خرده گرفت که نباید بگویی شانزده سال دارم باید بگویی آن شانزده سال را دیگر ندارم...

      دیدگاه


        #4
        پاسخ : سنسور lm35 با نمایش دما بر روی led

        سلام
        y=read_adc(0);
        y=y/4;
        فکر کنم این خط دوم صحیح نباشه.
        بهرحال کافیه مقدار Y رو توی شرط بذاری. اینطوری:
        کد:
        if (y>=25)
        PORTB=0xff;
        else
        PORTB=0x00;
        البته این برنامه زمانی که دما بیشتر از 25 میشه خروجی رو یک میکنه. بهتر شما توی یه بازه خروجی رو یک کنی. اینطوری:
        کد:
        if (y>=25 && Y<26)
        PORTB=0xff;
        else
        PORTB=0x00;
        راستی قبلش یادت نره پورت B رو بصورت خروجی تعریف کنی.
        موفق باشی.
        تشکر لازم نیست!

        دیدگاه


          #5
          پاسخ : سنسور lm35 با نمایش دما بر روی led

          کد:
          if (y>=25 && Y<26)
          PORTB=0xff;
          else
          PORTB=0x00;
          سلام اگر اشتباه نکنم این طوری تمام پورت روشن میشه!!
          در صورتی که من میخوام هشت تا LED روی پورت باشه 2 تا برای دمای زیر صفر و 6 تا برای دمای بالای صفر هر LED نشونه ی 25 درجه هست اگر بیشتر توضیح بدید ممنون میشم. :sad:
          شخصی می گفت من شانزده سال دارم.بزرگی به او خرده گرفت که نباید بگویی شانزده سال دارم باید بگویی آن شانزده سال را دیگر ندارم...

          دیدگاه


            #6
            پاسخ : سنسور lm35 با نمایش دما بر روی led

            درود
            دوست عزیز اگر مقدار عدد خوانده شده از ADC را تقسیم بر 2 کنید دما بدست میاد 2/y=y و یک روش برای LED ها :
            LED ها رو به یکی از پورت ها که به عنوان خروجی تعریف کردی وصل کن ، حالا نسبت به اینکه می خوای اگر دما از 0 تا 25 بود اولین LED روشن بشه یا از 0 تا 24 خاموش باشه و زمانیکه به 25 رسید اولین LED روشن بشه و به همین ترتیب برای محدوده های دمایی دیگر شرط ها رو بنویس و نسبت به هر محدوده دمایی پایه های LED هایی که باید روشن یا خاموش باشند را 1 یا 0 کن
            در روزگاری که لبخند آدم ها بخاطر شکست توست برخیز تا بگریزند. کورش کبیر
            شاد بودن، تنها انتقامی است که میتوان از زندگی گرفت. ارنستو چه گوارا

            دیدگاه


              #7
              پاسخ : سنسور lm35 با نمایش دما بر روی led

              سلام

              سلام اگر اشتباه نکنم این طوری تمام پورت روشن میشه!!
              دقیقاً. من این. بعنوان مثال برای راهنمایی گفتم وگرنه برنامه این نیست.
              کافیه شما ولتاژ رو بخونین و طبق همون ولتاژها پین ها رو کنترل کنین. برای این پروژه شما ابتدا دما رو محاسبه میکنن (همونطور که بدست آوردین.) بعد توی چند شرط (به هر میزان که نیازه) همانطور که مثال زدم توی یه پورت پیاده میکنین.
              مثلاً:

              کد:
              if (y>0 && Y<=25)
              PORTB=1;
              
              else if (y>25 && Y<=50)
              PORTB=2;
              
              else if (y>50 && Y<=75)
              PORTB=4;
              
              else if (y>75 && Y<=100)
              PORTB=8;
                .
                .
                .
                .
                .
                .
              else
              PORTB=0;
              تشکر لازم نیست!

              دیدگاه


                #8
                پاسخ : سنسور lm35 با نمایش دما بر روی led

                نوشته اصلی توسط iman-63
                سلام

                دقیقاً. من این. بعنوان مثال برای راهنمایی گفتم وگرنه برنامه این نیست.
                کافیه شما ولتاژ رو بخونین و طبق همون ولتاژها پین ها رو کنترل کنین. برای این پروژه شما ابتدا دما رو محاسبه میکنن (همونطور که بدست آوردین.) بعد توی چند شرط (به هر میزان که نیازه) همانطور که مثال زدم توی یه پورت پیاده میکنین.
                بازم سلام
                از راهنمایی تون خیلی خیلی مچکرم. عاقبت یه جایی از برنامه جواب داد دمای بالای صفرو نشون میده خیلی جالبه.. ولی دمای پایین صفرو نشون نمیده یعنی کلاً led های مربوط به دمای زیر صفر روشن نمیشه یعنی مشکل از چیه؟ :angry:
                اینم برنامه:
                کد:
                y=read_adc(0);
                y=y/4; 
                if (y>0 && y<=25)
                PORTB=32;
                
                else if (y>25 && y<=50)
                PORTB=48;
                
                else if (y>50 && y<=75)
                PORTB=56;
                
                else if (y>75 && y<=100)
                PORTB=60;
                
                else if (y>100 && y<=125)
                PORTB=62;
                
                else if (y>125 && y<=150)
                PORTB=63;
                
                else if (y>=-55 && y<-25)
                PORTB=192;
                
                
                else if (y>=-25 && y<0)
                PORTB=64;
                
                else
                PORTB=0;
                };
                }
                شخصی می گفت من شانزده سال دارم.بزرگی به او خرده گرفت که نباید بگویی شانزده سال دارم باید بگویی آن شانزده سال را دیگر ندارم...

                دیدگاه


                  #9
                  پاسخ : سنسور lm35 با نمایش دما بر روی led

                  سلام.
                  من تا حالا 100 تا مدار با این lm35 بستم اما همشو برای دماهای بالای 0 درجه استفاده کردم!!!!
                  باید دیتاشیت رو بخونین. اونجا قطعاً نوشته توی دمای های زیر صفر درجه وضعیت ولتاژ دهی چطوره. بعد طبق اون شرط ها رو قرار بدین.
                  تشکر لازم نیست!

                  دیدگاه


                    #10
                    پاسخ : سنسور lm35 با نمایش دما بر روی led

                    دوست عزیز حتماً میدونید که محدوده اندازه گیری دمای زیر صفر ، خروجی سنسور رو به مقداری منفی میبره... حالا اگر منبع تغذیه مدار شما برای این سنسور دارای مقدار منفی نباشه ، سنسور نمیتونه مقدار منفی نسبت به گراند مدار رو در خروجیش ظاهر کنه. :rolleyes:
                    توی تصاویر زیر میتونید منظورم رو دقیقتر متوجه بشید...

                    تصویر (1) اندازه گیری مقادیر دمای بالاتر از صفر


                    تصویر (2) اندازه گیری محدوده کامل (زیر صفر تا بالای صفر)


                    لینکها ویرایش شد.

                    دیدگاه


                      #11
                      پاسخ : سنسور lm35 با نمایش دما بر روی led

                      سلام دادا.
                      من که تصویری نمیبینم!!!
                      تشکر لازم نیست!

                      دیدگاه


                        #12
                        پاسخ : سنسور lm35 با نمایش دما بر روی led

                        نوشته اصلی توسط iman-63
                        سلام دادا.
                        من که تصویری نمیبینم!!!
                        :read: :question:

                        دیدگاه


                          #13
                          پاسخ : سنسور lm35 با نمایش دما بر روی led

                          :bye

                          دیدگاه


                            #14
                            پاسخ : سنسور lm35 با نمایش دما بر روی led

                            بازم نیست دادا!!!

                            بهرحال مهم اینه که طبق فرمایش شما توی دماهای زیر صفر ولتاژ منفی میده. اما باید این ولتاژ رو مثبت کنیم. فکر کنم با opamp و یا یک ترانزیستور PNP اونو مثبت کنین و با یک پین دیگه از adc بخونین.
                            تشکر لازم نیست!

                            دیدگاه


                              #15
                              پاسخ : سنسور lm35 با نمایش دما بر روی led

                              نوشته اصلی توسط iman-63
                              بازم نیست دادا!!!

                              بهرحال مهم اینه که طبق فرمایش شما توی دماهای زیر صفر ولتاژ منفی میده. اما باید این ولتاژ رو مثبت کنیم. فکر کنم با opamp و یا یک ترانزیستور PNP اونو مثبت کنین و با یک پین دیگه از adc بخونین.
                              سلام دوست عزیز
                              با تشکر از توجهتون ، لینکها رو تصحیح کردم.

                              همونجوری که شما فرمودید ، باید ولتاژ منفی اندازه گیری شده مثبت بشه تا با میکرو قابل اندازه گیری بشه ، فکر میکنم ساده ترین روش برای اینکار ایجاد یک زمین مجازی برای سنسور باشه (تصویر زیر)



                              در این حالت باید مقادیر اندازه گیری شده توی برنامه تصحیح و تبدیل بشوند (با توجه به مقدار جابجایی زمین مجازی سنسور نسبت به زمین حقیقی مدار)
                              و نهایتاً روش دوم همونجوری که دوستمون iman-63 گفتن ، استفاده از دو پین ADC هست که اولی جهت اندازه گیری ولتاژ آند زنر نسبت به زمین و دومی جهت اندازه گیری خروجی زنر نسبت به زمین .
                              در این حالت تفاضل این دو مقدار ، خروجی دقیق سنسور رو ارائه میکنه (البته دیگه نیازی به قطعات اضافی مثل اپ امپ یا ترانزیستور نیست).

                              دیدگاه

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