اطلاعیه

Collapse
No announcement yet.

عدم نمایش درجه حرارت LM35 با میکرو Atmega32

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

    عدم نمایش درجه حرارت LM35 با میکرو Atmega32

    با سلام خدمت اساتید عزیز
    من برای قسمتی از پروژه خود نیاز به دمای محیط دارم که برای این کار از LM35 استفاده کردم ولی درجه حرارت روی LCD نمایش داده نمیشه و فقط عبارت T='C نمایان میشه!
    با استفاده از پروتیوس هم شبیه سازی کردم همین مشکل وجود داره!
    فرکانس میکرو روی 8Mhz بصورت داخلی با فیوزبیت های مربوطه تنظیم شده و اتصالات LM35 هم بدرستی انجام شده و خروجی سنسور به بیت اول پورت A وصل شده و برای Vref از ولتاژ داخلی خود میکرو یعنی 2.56 استفاده شده است.با استفاده از شبیه سازی پروتیوس روی ورودی میکرو تغییرات سنسور را دارم ولی مقدار آن روی LCD نمایش داده نمیشه!سورس برنامه هم ظاهرا درسته
    از دوستان عزیز میخوام که منو در این مورد راهنمایی کنن
    [hr]
    کد:
    [left]
    #include <mega32.h>
    #include <lcd.h>
    #include <stdio.h>
    #include <delay.h>
    #define xtal 8000000
    #asm
      .equ __lcd_port=0x18 ;PORTB
    #endasm
    #define ADC_VREF_TYPE 0xC0
    float t0;
    unsigned int read_adc(unsigned char adc_input)
    {
      float t;
      ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
      delay_us(10);
      ADCSRA|=0x40;
      while ((ADCSRA & 0x10)==0);
      ADCSRA|=0x10;
      t=((ADCW*2.56)/1023)*100;
      return t;
    }
    void main(void)
    {
    char buffer[32];
    SFIOR=0x00;
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x86;
    lcd_init(16);
    while (1)
       {
        t0=read_adc(0);
        lcd_clear();
        sprintf(buffer,"T=%f\xdfC",t0);
        lcd_puts(buffer);
        delay_ms(100); 
       };
    }
    
    [/left]

    #2
    پاسخ : عدم نمایش درجه حرارت LM35 با میکرو Atmega32

    لطفا کمک کنید!!!!!!!!!!!!!!!!!!!! :angry:

    دیدگاه


      #3
      پاسخ : عدم نمایش درجه حرارت LM35 با میکرو Atmega32

      دوتا چیز هست، اول اینکه مدت زمان تاخیرت خیلی کمه. بیشتر LCD کاراکتری ها نمی تونن با این سرعت رفرش کنن و شاید خیلی کم رنگ بشه. دوم اینکه مقدار t0 توی دستور sprintf با x رقم اعشار داره تبدیل میشه؟
      دانش فني تا به عمل تبديل نشده، ذره اي ارزش نداره. اما بعضي وقت ها بايد از دانش براي باز کردن مرزهاي جديدي در علم استفاده کرد، نه اينکه اونها رو صرفاً فقط به عمل تبديل کرد.

      دیدگاه


        #4
        پاسخ : عدم نمایش درجه حرارت LM35 با میکرو Atmega32

        نوشته اصلی توسط حامد پور آزاد
        دوتا چیز هست، اول اینکه مدت زمان تاخیرت خیلی کمه. بیشتر LCD کاراکتری ها نمی تونن با این سرعت رفرش کنن و شاید خیلی کم رنگ بشه. دوم اینکه مقدار t0 توی دستور sprintf با x رقم اعشار داره تبدیل میشه؟
        با سلام خدمت همه اساتید عزیز
        زمان مناسب برای Refresh چند میلی ثانیه قرار بدم و در دستور sprintf از چه پارامتری برای تبدیل استفاده کنم که دما بطور دقیق محاسبه شود.
        مدار من التراسونیک می باشد و من با توجه به طراحی آن مجبورم از کریستال 8MHZ استفاده کنم ولی در این حالت نوشته های LCD کم رنگ میشود و با نوسان خیلی زیاد نمایش داده میشه آیا راه حل مناسبی برای این مشکل وجود داره؟به نظر شما اگر از نوسان ساز 8MHZ داخلی میکرو استفاده کنم بهتر است یا کریستال خارجی؟
        با تشکر

        دیدگاه


          #5
          پاسخ : عدم نمایش درجه حرارت LM35 با میکرو Atmega32

          نوشته اصلی توسط rezamicro
          زمان مناسب برای Refresh چند میلی ثانیه قرار بدم و در دستور sprintf از چه پارامتری برای تبدیل استفاده کنم که دما بطور دقیق محاسبه شود.
          به نظر من زمان رفرش رو بذار 500 میلی ثانیه حداقل. برای sprintf هم به جای x مثلاً بذار 2.

          نوشته اصلی توسط rezamicro
          مدار من التراسونیک می باشد و من با توجه به طراحی آن مجبورم از کریستال 8MHZ استفاده کنم ولی در این حالت نوشته های LCD کم رنگ میشود و با نوسان خیلی زیاد نمایش داده میشه آیا راه حل مناسبی برای این مشکل وجود داره؟به نظر شما اگر از نوسان ساز 8MHZ داخلی میکرو استفاده کنم بهتر است یا کریستال خارجی؟
          با تشکر
          دلیل اینکه نوشته های LCD کم رنگ میشه 2 تا چیزه، اول که باید با پتانسیومتر یه کم کنتراست رو زیاد کنی :mrgreen: دوم اینکه سرعت رفرش رو همون حدودای 500 میلی قرار بده.
          کریستال هم فرقی نمی کنه چقدر باشه و داخلی باشه یا خارجی.
          دانش فني تا به عمل تبديل نشده، ذره اي ارزش نداره. اما بعضي وقت ها بايد از دانش براي باز کردن مرزهاي جديدي در علم استفاده کرد، نه اينکه اونها رو صرفاً فقط به عمل تبديل کرد.

          دیدگاه

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