اطلاعیه

Collapse
No announcement yet.

سوال در مورد LM35

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

    #31
    پاسخ : سوال در مورد LM35

    کد:
     data = read_adc();
    این چرا خالیه؟
    باید اینجوری باشه
    کد:
     data = read_adc(1);

    دیدگاه


      #32
      پاسخ : سوال در مورد LM35

      تو زیر برنامه void تعریفش کردم.
      نرم افزاری مشکلی نداره تستش کردم. چرا باید 1 باشه ؟؟
      کد:
       unsigned char read_adc (void)
        {             
          ADCSRA = ADCSRA | 0x40;     
          while (ADCSRA != 0xF4)
          {                 
          }
          ADCSRA = ADCSRA | 0x10; 
          return ADCW; 
        }
      فکر نکنم مشکلی داشته باشه

      دیدگاه


        #33
        پاسخ : سوال در مورد LM35

        مثلا اگه بخوای از کانالیک بگیری باید بزنی کانال یک

        دیدگاه


          #34
          پاسخ : سوال در مورد LM35

          نوشته اصلی توسط reza javahery
          مثلا اگه بخوای از کانالیک بگیری باید بزنی کانال یک
          من اگه عدد بذارم توش بعد باید بیام تو زیر برنامه هم یه متغیر واسش تعریف کنم مثلا همون adc_input بعد باید بیام ازش یه جا استفاده کنم حتما وگر نه کدویژن گیر میده..
          تو بعضی برنامه ها میان از این کد زیر استفاده میکنن برای اینکه صرفا از متغیر adc_input استفاده کنن
          کد:
          ADMUX = adc_input|(0xE0&0xFF);
          من دیدم کدش بیخودیه و اینکه اصلا کاری انجام نمیده حذفش کردم :mrgreen: الانم تو پروتئوس جواب میده

          دیدگاه


            #35
            پاسخ : سوال در مورد LM35

            دیگه نیدونم :cry2: :angry: :cry: oo:

            دیدگاه


              #36
              پاسخ : سوال در مورد LM35

              دوستان کسی پیشنهادی نداره .... دارم دیوانه میشم کم کم از دست این LM35 ... :angry: :angry: :angry:

              دیدگاه


                #37
                پاسخ : سوال در مورد LM35

                مدارت رو بزار

                دیدگاه


                  #38
                  پاسخ : سوال در مورد LM35

                  عکس نمیتونم پلود کنم :mrgreen: :angry:

                  دیدگاه


                    #39
                    پاسخ : سوال در مورد LM35

                    اوکی پس یه کم فک کن به نتیجه میرسی

                    دیدگاه


                      #40
                      پاسخ : سوال در مورد LM35

                      نوشته اصلی توسط navid.h
                      دوستان کسی پیشنهادی نداره .... دارم دیوانه میشم کم کم از دست این LM35 ... :angry: :angry: :angry:

                      داداش نوید برو خدا رو شکر کن که لااقل تونستی عدد رو ثابت نگهش داری !!!

                      یکی دو سال پیش یه دماسنج با 7سگمنت و این سنسور بستم و همین مشکل پرش اعداد رو داشتم.هفت جد آبادم رو آورد جلوی چشمام و کسی هم نتونست مشکلمو حل کنه !
                      البته این مشخص بود که اشکال از نویز شدیده ولی کسی هم فیلتر به ما پیشنهاد نداد.

                      امیدوارم که تاپیک شما به جواب برسه و دست آخر هم وقتی مشکلات مدارت رفع شد یه جمع بندی داشته باشی.چون این مشکل پرش رو خیلیا دارند.

                      موفق باشی
                      * هر گاه خدا بخواهد بنده ای را خوار کند، دانش را از او دور سازد.
                      * سخن بگویید تا شناخته شوید، زیرا که انسان در زیر زبان خود پنهان است.
                      *بدترین دوست،آ‌ کسی است که برای او به رنج و زحمت افتی.
                      حضرت علی(ع)
                      آموزش AVR به ساده ترین زبان ممکن : Noise.Blog.IR

                      دیدگاه


                        #41
                        پاسخ : سوال در مورد LM35

                        مشکل برطرف شد...
                        اشکال تو این بود که گراندهای مدارم صفر مطلق نبود و مقداری ولتاژ داشت . فهمیدم که مشکل سر همون سوراخ های برد بورد هست و مقدار نشتی ولتاژ ایجاد میکرد. سیمهارو دقیقا زدم روی پایه خود آی سی. درست شد ولتاژهاش هم خوبه الان..
                        البته درجه حرارت هم با یکی دو درجه اختلاف نشون میده البته نسبت به مولتی مترم که ممکنه خطا هم داشته باشه اما کاملا یکنواخت و بدون پرش هست. ولی هنوز با یک دما سنج مقایسش نکردم.
                        ولی به نظر میرسه تو این کارا خیلی باید دقت بشه ولتاژها درست باشه تو همه جای مدار.
                        این برد بورد های ضد نویز به درد این کارا می خوره ؟؟؟
                        و اینکه الان ولتاژ سر پایه AREF الان 2.62 هست. آیا راهی هست برسونمش به 2.56 ؟؟؟

                        دیدگاه


                          #42
                          پاسخ : سوال در مورد LM35

                          سلام؛
                          ظاهرا داری از کدویژن استفاده می کنی ولی چرا از توابع کدویزارد استفاده نکردی؟ و چقدر سختش کردی...
                          تابع ADC رو این طوری تعریف کن:

                          کد:
                          #define ADC_VREF_TYPE 0xC0
                          
                          unsigned int read_adc(unsigned char adc_input)
                          {
                          ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                          // Delay needed for the stabilization of the ADC input voltage
                          delay_us(10);
                          // Start the AD conversion
                          ADCSRA|=0x40;
                          // Wait for the AD conversion to complete
                          while ((ADCSRA & 0x10)==0);
                          ADCSRA|=0x10;
                          return ADCW;
                          }
                          برای t1 t2 هم از این استفاده کن:

                          کد:
                             data=read_adc(1);
                          
                             data= data*.25;
                          
                          
                             t1=data/10%10;
                             t2=data%10;
                          البته عددی که در آرگومان read_adc مینویسی معرف پایه adc هست که سنسور رو بهش وصل کردی.

                          دیدگاه


                            #43
                            پاسخ : سوال در مورد LM35

                            کد:
                            برای t1 t2 هم از این استفاده کن:
                            
                            کد: [انتخاب]
                               data=read_adc(5);
                            
                               data= data*.25;
                            
                            
                               t1=data/10%10;
                               t2=data%10;
                            چون می خواستم طرز کار رجیستر هارو یاد بگیرم خودم نوشتمشون وگرنه با کد ویزارد هم تست کردم
                            چرا data رو ضرب در 0.25 کردی اینجا؟

                            دیدگاه


                              #44
                              پاسخ : سوال در مورد LM35

                              خیلی ساده، شما از ADC ده بیتی استفاده می کنی، یعنی حداکثر مقدار خوانده شده از ADC برابر 1024 هست. چون از منبع ولتاژ داخلی به عنوان مرجع استفاده شده بیشترین مقداری که توسط ADC قابل اندازه گیری هست 2.56 ولت یا 2560 میلی ولت هست. یعنی وقتی ولتاژ ورودی برابر 2.56 ولت باشه مقدار data برابر میشه با
                              کد:
                              1024*.25=256
                              و به عبارت دیگه به ازای 10 میلی ولت تغییر در ورودی مقدار اdata یک واحد تغییر میکنه.

                              دیدگاه


                                #45
                                پاسخ : سوال در مورد LM35

                                نوشته اصلی توسط امیر جعفری
                                خیلی ساده، شما از ADC ده بیتی استفاده می کنی، یعنی حداکثر مقدار خوانده شده از ADC برابر 1024 هست. چون از منبع ولتاژ داخلی به عنوان مرجع استفاده شده بیشترین مقداری که توسط ADC قابل اندازه گیری هست 2.56 ولت یا 2560 میلی ولت هست. یعنی وقتی ولتاژ ورودی برابر 2.56 ولت باشه مقدار data برابر میشه با
                                کد:
                                1024*.25=256
                                و به عبارت دیگه به ازای 10 میلی ولت تغییر در ورودی مقدار اdata یک واحد تغییر میکنه.
                                این 0.25 نباید 0.0025 باشه. چون بر حسب فورمول data*2.56/1024 در واقع 2.56/1024 میشه 0.0025 که باید نوشت data * 0.0025. من هر چی نگاه میکنم به نظرم این میاد. اگه اشتباه میکنم بهم بگید ..

                                دیدگاه

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