اطلاعیه

Collapse
No announcement yet.

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

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

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

    نوشته اصلی توسط مهدی متاجی
    :read: :question:
    دوست عزیز امیدوارم مشکل حل شده باشه. :bye

    دیدگاه


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

      نوشته اصلی توسط ir70
      سلام دوست عزیز
      با تشکر از توجهتون ، لینکها رو تصحیح کردم.

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

      دیدگاه


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

        خدایی دمت گرم با دیود زنر و دوتا مقاومت 22 کیلو اوکی شد

        دیدگاه


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

          نوشته اصلی توسط setaresetar
          سلام دوستان
          میشه خواهش کنم یه جوری بگید منم متوجه بشم بحث تخصصی شد..
          سلام من با بسکام کارمیکنم. این پروژه رو با بیسیک انجام دادم
          دانلود پروژه با پروتئوس و فایل هگز و کد بسکام

          http://s5.picofile.com/file/8146283142/temp_dotmatrix.zip.html
          I WORK HARDLY AND I HAVE BIG DREAMS

          دیدگاه


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

            من برای اندازه گیری دما با LM35 از اتمگا32 استفاده کردم، برنامم به نظر درست میرسه ولی مقداری که روی LCD نشون میده صفر هستش، پایه روی ایسی که برای ورودی دما استفاده کردم رو چک کردم درسته ولی انگار ADC هیچی نمیخونه، برنامم رو قرار دادممم..کسی میدونه اشکالش چیه؟
            کد:
            //LM35 Temperature Sensor */
            #include <stdio.h>
            #include <delay.h>
            #include <mega16.h>
            #include <lcd.h>
            #define xtal 1000000
            #define ADC_VREF_TYPE 0xC0  
            //
            // Alphanumeric LCD Module functions
            #asm
              .equ __lcd_port=0x12 ;PORTD
            #endasm
            
            //Variables
            //
            int adc_data;
            char buffer[16];
            float t;
            //
            //Functions
            //
            void loop(void);
            unsigned int read_adc(unsigned char adc_input);
            //
            //Main
            //
            void main(void)
            {
              //PortA -> Input
              PORTA = 0x00;
              DDRA = 0x00;
              //Set ADSC_VREF -> Internal 2.56V
              ADMUX = ADC_VREF_TYPE;
              //ADC Enable & Prescaler -> 64
              ADCSRA = 0x86;     
              //Initial LCD
              lcd_init(16);
              lcd_clear();
              lcd_puts(" LM35 Sensor ");
              delay_ms(1000);
              lcd_clear();  
              //Loop
              loop();
            }
            //
            //Loop Function
            //
            void loop(void)
            {
              while (1)
              {
                //Read LM35_a
                adc_data = read_adc(0);
                //t = adc_data/4;
                delay_ms(100);
                //Show on LCD
                sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->°
                lcd_gotoxy(0,0);
                lcd_puts(buffer);
               }
            }
            //
            //Read ADC
            //
            unsigned int read_adc(unsigned char adc_input)
            {
              ADMUX= adc_input | ADC_VREF_TYPE;
              delay_us(10);
              // Start the AD conversion
              ADCSRA|=0x40;          
              // Wait for the AD conversion to complete
              while ((ADCSRA & 0x10)==0);
              ADCSRA|=0x10;
              return ADCW;
            }

            دیدگاه


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

              نوشته اصلی توسط Soheilas
              من برای اندازه گیری دما با LM35 از اتمگا32 استفاده کردم، برنامم به نظر درست میرسه ولی مقداری که روی LCD نشون میده صفر هستش، پایه روی ایسی که برای ورودی دما استفاده کردم رو چک کردم درسته ولی انگار ADC هیچی نمیخونه، برنامم رو قرار دادممم..کسی میدونه اشکالش چیه؟
              کد:
              //LM35 Temperature Sensor */
              #include <stdio.h>
              #include <delay.h>
              #include <mega16.h>
              #include <lcd.h>
              #define xtal 1000000
              #define ADC_VREF_TYPE 0xC0  
              //
              // Alphanumeric LCD Module functions
              #asm
                .equ __lcd_port=0x12 ;PORTD
              #endasm
              
              //Variables
              //
              int adc_data;
              char buffer[16];
              float t;
              //
              //Functions
              //
              void loop(void);
              unsigned int read_adc(unsigned char adc_input);
              //
              //Main
              //
              void main(void)
              {
                //PortA -> Input
                PORTA = 0x00;
                DDRA = 0x00;
                //Set ADSC_VREF -> Internal 2.56V
                ADMUX = ADC_VREF_TYPE;
                //ADC Enable & Prescaler -> 64
                ADCSRA = 0x86;     
                //Initial LCD
                lcd_init(16);
                lcd_clear();
                lcd_puts(" LM35 Sensor ");
                delay_ms(1000);
                lcd_clear();  
                //Loop
                loop();
              }
              //
              //Loop Function
              //
              void loop(void)
              {
                while (1)
                {
                  //Read LM35_a
                  adc_data = read_adc(0);
                  //t = adc_data/4;
                  delay_ms(100);
                  //Show on LCD
                  sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->°
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                 }
              }
              //
              //Read ADC
              //
              unsigned int read_adc(unsigned char adc_input)
              {
                ADMUX= adc_input | ADC_VREF_TYPE;
                delay_us(10);
                // Start the AD conversion
                ADCSRA|=0x40;          
                // Wait for the AD conversion to complete
                while ((ADCSRA & 0x10)==0);
                ADCSRA|=0x10;
                return ADCW;
              }
              سلام
              متغیر adc_data رو جداگانه روی ال سی دی نمایش بده ... ببین چی نشون میده
              پایه AVCC رو VCC کردید ؟؟
              با یه ولوم بهش ولتاژ بده ببین تغییر میکنه یا نه ...
              با یه ولتمتر هم میتونی از خروجی سنسور ولتاژ رو ببینید ... اگر ولتاژ نداد سنسورتون خرابه ...
              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
              معرفی نرم افزار Codewizard PWM
              با من بیشتر آشنا شوید

              دیدگاه


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

                نوشته اصلی توسط سامان اسدی
                سلام
                متغیر adc_data رو جداگانه روی ال سی دی نمایش بده ... ببین چی نشون میده
                پایه AVCC رو VCC کردید ؟؟
                با یه ولوم بهش ولتاژ بده ببین تغییر میکنه یا نه ...
                با یه ولتمتر هم میتونی از خروجی سنسور ولتاژ رو ببینید ... اگر ولتاژ نداد سنسورتون خرابه ...
                ممنونم، پایه ورودی ADC را از LM35 خارج کردم و به 5 ولت دادم،
                پایه AVCC هم به 5 ولت وصله،
                ولی بازم روی LCD صفر نشون میده
                واسه این برنامه ADC_VREF_TYPE =0xC0 که میشه 2.6 داخلی
                نمیدونم اشکال از کجاست؟
                مدارم با کریستال RC یک مگ داخلی کار میکنه میشه مشکل از اون باشه، با اینکه عبارتی که باید روی LCD نوشته بشه صحیحه....
                من حتی ایسی ام هم عوض کردم...ولی بازم تغییری نکرد...
                یعنی اشکال از کجا میتونه باشه؟

                دیدگاه


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

                  نوشته اصلی توسط Soheilas
                  ممنونم، پایه ورودی ADC را از LM35 خارج کردم و به 5 ولت دادم،
                  پایه AVCC هم به 5 ولت وصله،
                  ولی بازم روی LCD صفر نشون میده
                  واسه این برنامه ADC_VREF_TYPE =0xC0 که میشه 2.6 داخلی
                  نمیدونم اشکال از کجاست؟
                  مدارم با کریستال RC یک مگ داخلی کار میکنه میشه مشکل از اون باشه، با اینکه عبارتی که باید روی LCD نوشته بشه صحیحه....
                  من حتی ایسی ام هم عوض کردم...ولی بازم تغییری نکرد...
                  یعنی اشکال از کجا میتونه باشه؟
                  میکروی شما ATmega32 سری A نیست ؟؟ ATmega32A
                  اگر باشه باید کتابخانه mega32a به کار بگیرید نه mega32
                  به متغیرتون یه مقداری بدید و ببینید همون متغیر رو نشون میده یا نه ...
                  [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                  معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                  معرفی نرم افزار Codewizard PWM
                  با من بیشتر آشنا شوید

                  دیدگاه


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

                    [move][/move]
                    نوشته اصلی توسط سامان اسدی
                    میکروی شما ATmega32 سری A نیست ؟؟ ATmega32A
                    اگر باشه باید کتابخانه mega32a به کار بگیرید نه mega32
                    به متغیرتون یه مقداری بدید و ببینید همون متغیر رو نشون میده یا نه ...
                    بله میکروم سری A هستش، تست میکنم ببینم چطور میشه
                    یه مسئله جالبی رو متوجه شدم، من اومدم پایه AVCC رو قطع کردم و با ولتمتر اندازه اش رو گرفتم در حالتی که قطعه مقدارش حدود 4 ولته آیا این طبیعیه؟

                    از کتابخانه mega32a.h استفاده کردم بازم صفره مقدارش

                    دیدگاه


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

                      نوشته اصلی توسط Soheilas
                      [move][/move]
                      بله میکروم سری A هستش، تست میکنم ببینم چطور میشه
                      یه مسئله جالبی رو متوجه شدم، من اومدم پایه AVCC رو قطع کردم و با ولتمتر اندازه اش رو گرفتم در حالتی که قطعه مقدارش حدود 4 ولته آیا این طبیعیه؟

                      از کتابخانه mega32a.h استفاده کردم بازم صفره مقدارش
                      نوشته اصلی توسط سامان اسدی
                      به متغیرتون یه مقداری بدید و ببینید همون متغیر رو نشون میده یا نه ...
                      این هم تست زدی ؟؟
                      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                      معرفی نرم افزار Codewizard PWM
                      با من بیشتر آشنا شوید

                      دیدگاه


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

                        نوشته اصلی توسط سامان اسدی
                        این هم تست زدی ؟؟
                        بله تست کردم یه متغیر t توی همون قسمت تعریف کردم و مقدارشو 36 گذاشتم، روی LCD هم همین مقدار 36 رو داد...
                        نمیدونم اشکال از کجاست؟
                        کد:
                            adc_data = read_adc(0);
                            //t = adc_data/4; 
                            t = 36;
                            delay_ms(100);
                            //Show on LCD
                            sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->°
                            lcd_gotoxy(0,0);
                            lcd_puts(buffer);

                        دیدگاه


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

                          [code=c]

                          //LM35 Temperature Sensor */
                          #include <stdio.h>
                          #include <delay.h>
                          #include <mega16a.h>
                          #include <stdlib.h>
                          #include <lcd.h>
                          #define xtal 1000000
                          #define ADC_VREF_TYPE 0xC0
                          //
                          // Alphanumeric LCD Module functions
                          #asm
                          .equ __lcd_port=0x12 ;PORTD
                          #endasm

                          //Variables
                          //
                          int adc_data;
                          char buffer[16];
                          //
                          //Functions
                          //
                          void loop(void);
                          unsigned int read_adc(unsigned char adc_input);
                          //
                          //Main
                          //
                          void main(void)
                          {
                          //PortA -> Input
                          PORTA = 0x00;
                          DDRA = 0x00;
                          //Set ADSC_VREF -> Internal 2.56V
                          ADMUX = ADC_VREF_TYPE;
                          //ADC Enable & Prescaler -> 64
                          ADCSRA = 0x86;
                          //Initial LCD
                          lcd_init(16);
                          lcd_clear();
                          lcd_puts(" LM35 Sensor "
                          delay_ms(100);
                          lcd_clear();
                          //Loop
                          loop();
                          }
                          //
                          //Loop Function
                          //
                          void loop(void)
                          {
                          while (1)
                          {
                          //Read LM35_a
                          adc_data = read_adc(0);
                          //t = adc_data/4;
                          delay_ms(100);
                          //Show on LCD
                          lcd_gotoxy(0,1);
                          lcd_putsf("temp="
                          ftoa(((float)adc_data/4),2,buffer);
                          lcd_puts(buffer);
                          }
                          }
                          //
                          //Read ADC
                          //
                          unsigned int read_adc(unsigned char adc_input)
                          {
                          ADMUX= adc_input | ADC_VREF_TYPE;
                          delay_us(10);
                          // Start the AD conversion
                          ADCSRA|=0x40;
                          // Wait for the AD conversion to complete
                          while ((ADCSRA & 0x10)==0);
                          ADCSRA|=0x10;
                          return ADCW;
                          }

                          [/code]
                          این رو امتحانش کن ...
                          من که جواب گرفتم ...

                          موفق باشید


                          اضافه شده در تاریخ :
                          پستم رو ویرایش کردم ...
                          دوباره نگاه کنید ...
                          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                          معرفی نرم افزار Codewizard PWM
                          با من بیشتر آشنا شوید

                          دیدگاه


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

                            نوشته اصلی توسط سامان اسدی
                            [code=c]
                            //LM35 Temperature Sensor */
                            #include <stdio.h>
                            #include <delay.h>
                            #include <mega16a.h>
                            #include <stdlib.h>
                            #include <lcd.h>
                            #define xtal 1000000
                            #define ADC_VREF_TYPE 0xC0
                            //
                            // Alphanumeric LCD Module functions
                            #asm
                            .equ __lcd_port=0x12 ;PORTD
                            #endasm

                            //Variables
                            //
                            int adc_data;
                            char buffer[16];
                            float t;
                            //
                            //Functions
                            //
                            void loop(void);
                            unsigned int read_adc(unsigned char adc_input);
                            //
                            //Main
                            //
                            void main(void)
                            {
                            //PortA -> Input
                            PORTA = 0x00;
                            DDRA = 0x00;
                            //Set ADSC_VREF -> Internal 2.56V
                            ADMUX = ADC_VREF_TYPE;
                            //ADC Enable & Prescaler -> 64
                            ADCSRA = 0x86;
                            //Initial LCD
                            lcd_init(16);
                            lcd_clear();
                            lcd_puts(" LM35 Sensor "
                            delay_ms(1000);
                            lcd_clear();
                            //Loop
                            loop();
                            }
                            //
                            //Loop Function
                            //
                            void loop(void)
                            {
                            while (1)
                            {
                            //Read LM35_a
                            adc_data = read_adc(0);
                            //t = adc_data/4;
                            delay_ms(100);
                            //Show on LCD
                            lcd_gotoxy(0,1);
                            lcd_putsf("temp="
                            itoa(adc_data,buffer);
                            lcd_puts(buffer);
                            }
                            }
                            //
                            //Read ADC
                            //
                            unsigned int read_adc(unsigned char adc_input)
                            {
                            ADMUX= adc_input | ADC_VREF_TYPE;
                            delay_us(10);
                            // Start the AD conversion
                            ADCSRA|=0x40;
                            // Wait for the AD conversion to complete
                            while ((ADCSRA & 0x10)==0);
                            ADCSRA|=0x10;
                            return ADCW;
                            }

                            [/code]
                            این رو امتحانش کن ...
                            من که جواب گرفتم ...

                            موفق باشید

                            ممنونم از راهنماییهاتون و وقتی که میذارین...
                            روی LCD تمپ رو 1023 نشون میده یعنی حداکثر مقدار با اینکه روی پایه 40 میکرو، یعنی ورودی ADC 5 ولت نیست و 0.28 ولته،
                            میشه اشکال از کریستال میکرو باشه؟ مشکل سخت افزاریه حتما...ولی نمیدونم کجا؟!!!!!

                            دیدگاه


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

                              نوشته اصلی توسط Soheilas

                              ممنونم از راهنماییهاتون و وقتی که میذارین...
                              روی LCD تمپ رو 1023 نشون میده یعنی حداکثر مقدار با اینکه روی پایه 40 میکرو، یعنی ورودی ADC 5 ولت نیست و 0.28 ولته،
                              میشه اشکال از کریستال میکرو باشه؟ مشکل سخت افزاریه حتما...ولی نمیدونم کجا؟!!!!!
                              برنامه رو ویرایش کردم
                              دوباره امتحان کنید
                              موفق باشید

                              اضافه شده در تاریخ :
                              پایه های سنسورتون رو چطوری وصلش کردید ؟؟
                              به کدوم پایه سنسور وصل میکنید ؟؟؟
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه


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

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

                                اضافه شده در تاریخ :
                                پایه های سنسورتون رو چطوری وصلش کردید ؟؟
                                به کدوم پایه سنسور وصل میکنید ؟؟؟
                                باز هم 1023 رو نشون میده،من پایه 40 میکرو رو سخت افزاری وصل کردم به ADC،
                                آخه مشکلش چیه؟

                                دیدگاه

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