اطلاعیه

Collapse
No announcement yet.

عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

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

    عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

    با سلام : دوستان یک دستوری میخوام وقتی مقدار adc_in توی op ریخته میشه ،اگر تغییرات ناچیزی تا یک واحد بصورت لحظه ای (مثلا در 2 ثانیه ) توی adc_in رخ بده، توی op ریخته نشه و همان مقدار قبلی در op بماند، هدف اصلی ام این است: تغییرات لحظه ای ناچیز که زیر 2 ثانیه رخ میده ، توی صفحه نمایش داده نشه. با تشکر

    کد:
    op=adc_in; 
        sa=op/10;  
        sa1=op%10; 
        da=sa/10; 
        da1=sa%10;

    #2
    پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

    وقت بخیر

    معمولا در این جور مواقع سعی در فیلتر کردن تغییرات دارن ! که دو تای اصلی آن مرتب کردن مقادیر خوانده شده و انتخاب میانه ها و دیگری متوسط گیری هست !! نمیشه بررسی تعییرات کرد چون خروجی مبدل عدد ثابت نیست هر لحظه تابع تغییرات وردی انالوگ هست .

    دیدگاه


      #3
      پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

      نوشته اصلی توسط taktrashe
      وقت بخیر

      معمولا در این جور مواقع سعی در فیلتر کردن تغییرات دارن ! که دو تای اصلی آن مرتب کردن مقادیر خوانده شده و انتخاب میانه ها و دیگری متوسط گیری هست !! نمیشه بررسی تعییرات کرد چون خروجی مبدل عدد ثابت نیست هر لحظه تابع تغییرات وردی انالوگ هست .
      با سلام و تشکر : قبلش یکی از دوستان راهنمایی کردند و اینجوری میانگین هم گرفته ام ولی در عمل چندان تفاوتی من ندیدم ! ولی یکی از دوستان با برنامه نویسی این مشکل را داشت حلش کرد ، مدارشو دیدم عالی شده بود ولی متاسفانه نگفت چطوری !
      فرض کنید ولت متری به برق شهر متصله و عدد 210 ولت را نشان میده ولی عدد صفر بعضی وقتا میشه 1 بلافاصله دوباره میشه 0 و همینجور مرتب بین صفر و یک متغییره . خصوصا در روز موقعی که جوشکاری ها و مراکز صنعتی کار می کنند ، باعث میشه این ریپل زدن بیشتر بشه. حالا راهی نداره عدد صفر یا همان (sa1=op%10 به تغییرات لحظه ای ولتاژ حساس نباشه ؟
      اگر کسی کدی ، راهی بلده این مشکل را حل کنم ممنون میشم ،واقعا حالمو گرفته و منتظر راهنمایی اساتید و دوستان عزیز هستم. با تشکر
      این فیلم را هم ببینید بد نیست مشکل را کاملا نشون میده که دیجیت سمت راستی بین عدد 8 و 7 مرتب بازی می کنه.حالا منم میخوام این ریپل ها را نداشته باشه .
      http://s6.picofile.com/file/8247207142/20160414109.rar.html
      کد:
      while(1)
      {  
           
         adc_sum = 0;    
         for(i=0; i<=49; i++){
         adc_int[i] = read_adc(0);
         adc_sum = adc_sum + adc_int[i];
         }
         adc_in = adc_sum/50;

      دیدگاه


        #4
        پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

        سلام
        تعداد میانگیر گیریتون رو زیاد کنید مثلن 100 بار یا 200 بار، اون رو بریزید داخل یه ارایه،بعد مثلن هر 5 بار که برنامه لوپ میزنه یکبار میانگین گیری کنید واعداد ارایه رو بروز کنید و نمایش بدید. بسته به sample rate میتونید این تعداد رو کم و زیاد کنید.
        از آنجایی که آموزش ماهی گیری برای من بسیار مهم تر هستش، به همین خاطر، در این انجمن، تاجایی که بتونم جواب مطلبی رو مستقیم نمیگم و تلاش میکنم با آدرس دادن و کمی جستجو به جواب برسید. اگر عاشق الکترونیک باشید، دنبال جواب خواهید گشت.

        دیدگاه


          #5
          پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

          سلام مجدد
          سوال هاتون رو همینجا مطرح کنید که اگر من نتونستم جواب بدم، دوستان دیگه بتونن.
          من با کدویژن کار نمیکنم ولی ظاهرن خطایی که گرفته مربوط به عدد تنظیم شده در Stack size هستش اون رو تا 450 زیادش کنید و نتیجه رو اعلام کنید.

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

          دیدگاه


            #6
            پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

            نوشته اصلی توسط مرتضی امانی
            سلام مجدد
            سوال هاتون رو همینجا مطرح کنید که اگر من نتونستم جواب بدم، دوستان دیگه بتونن.
            من با کدویژن کار نمیکنم ولی ظاهرن خطایی که گرفته مربوط به عدد تنظیم شده در Stack size هستش اون رو تا 450 زیادش کنید و نتیجه رو اعلام کنید.

            در توضیحاتی که دادم کدوم قسمت نامفهوم بود؟
            با سلام و تشکر:توی میانگین گیری انجوری که شما فرمودین اشتباه میکنم . متاسفانه خودم هر کاری کردم نشد. وقتی تعداد میانگین ها را به 100 تا میرسونم کدویژن ارور تصویر زیر را میده .اخه تازه واردم و نیاز به کمک دارم.
            http://uupload.ir/viewer.php?file=1s9f_j_474.jpg
            در مورد Stack size وقتی توی حلقه for مقدار i از 50 بیشتر بشه اون ارور Stack size را میده. Stack size را هم تا 450 زیاد کردم ولی متاسفانه مشکل با توجه به کد های زیر حل نشد و نوسانات لحظه ای را باز نمایش میده.
            کد:
            /*****************************************************
            This program was produced by the
            CodeWizardAVR V2.05.3 Standard
            Automatic Program Generator
            © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
            Chip type        : ATmega8
            Program type      : Application
            AVR Core Clock frequency: 8.000000 MHz
            Memory model      : Small
            External RAM size    : 0
            Data Stack size     : 256
            *****************************************************/
            int adc_in=0,op=0;
            
            unsigned int read_adc(unsigned char adc_input)
              {
              ADMUX = adc_input | (ADC_VREF_TYPE & 0xff);
              delay_us(10);
              ADCSRA|=0x40;
              while ((ADCSRA & 0x10)==0);
              ADCSRA|=0x10;
              return ADCW;
              }
            
            void main(void)
            {     
              int adc_int[50];
              int i=0,adc_max=0;
              int adc_sum=0,adc_mean=0;
              
              ADMUX=ADC_VREF_TYPE & 0xff;
              ADCSRA=0x86;
              DDRC.0=0X00;
              PORTC.0=0X00;
            
            while(1)
            {  
                  
               adc_sum = 0;    
               for(i=0; i<50; i++){
               adc_int[i] = read_adc(0);// read adc value at PORTC.0
               adc_sum = adc_sum + adc_int[i];
               }
               adc_mean = adc_sum/50;   
               op=adc_in; 
               sa=op/10;  
               sa1=op%10; 
               da=sa/10; 
               da1=sa%10;
            }
            }
            از دوستان و اساتید محترم خواهشمندم این فیلم کوتاه را تا اخر ببینید چون مشکل مدار را کاملا نشون میده،در ضمن دقت کنید همیشه این مشکل وجود نداره و در روزها و ساعات مشخصی بیشتر این مشکل دیده میشه چون نوسانات برق شهر در روزها بیشتره.هدف من همینه که این نوسانات لحظه ای نمایش داده نشه
            لطفا در اصلاح کد هایی که دوست عزیز اقای مرتضی امانی راهنمایی کردند کمک کنید این مشکل را حل کنم.با
            تشکر
            لینک دانلود فیلم:
            http://s6.picofile.com/file/8247207142/20160414109.rar.html

            دیدگاه


              #7
              پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

              توضیح بالا با تفکیک بیشتر، این مراحل رو به ترتیب انجام بدید:
              - یه آرایه 3 تایی تعریف کنید و صدگان، دهگان، یکان ولتاژتون رو داخل ذخیره و هربار که میخواید نمایش بدید، اعداد این آرایه رو بخونید و نمایش بدید.
              -یه دستور اضافه کنید که به جای اینکه در هر بار حلقه برنامه یکبار میانگیر بگیرید و نمایش بدید، مثلن هر 10 بار که حلقه می زنید، یکبار محاسبات رو انجام و نمایش بدید.
              - در آخر تعداد میانگین 40 بار کم است، حداقل تا 100 بار افزایش دهید.
              از آنجایی که آموزش ماهی گیری برای من بسیار مهم تر هستش، به همین خاطر، در این انجمن، تاجایی که بتونم جواب مطلبی رو مستقیم نمیگم و تلاش میکنم با آدرس دادن و کمی جستجو به جواب برسید. اگر عاشق الکترونیک باشید، دنبال جواب خواهید گشت.

              دیدگاه


                #8
                پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                درود
                مدارت رو نگفتی چطور بستی. rms رو حودت حساب می کنی یا از ای سی آماده استفاده کردی؟
                از ورودی dc دیتا می گیری یا از ac؟

                اگه ورودی adc به صورت dc هست می تونی یه فیلتر قرار بدی.
                فاصله زمانی خوندن adc رو هم می تونی زیاد کنی به صورتی که در هر 20 میلی ثانیه 50 تا نمونه بگیره.

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

                دیدگاه


                  #9
                  پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                  نوشته اصلی توسط marychi
                  درود
                  مدارت رو نگفتی چطور بستی. rms رو حودت حساب می کنی یا از ای سی آماده استفاده کردی؟
                  از ورودی dc دیتا می گیری یا از ac؟

                  اگه ورودی adc به صورت dc هست می تونی یه فیلتر قرار بدی.
                  فاصله زمانی خوندن adc رو هم می تونی زیاد کنی به صورتی که در هر 20 میلی ثانیه 50 تا نمونه بگیره.

                  می تونی دیتا های پرت رو هم حذف کنی. به این صورت که بعد ار میانگین گیری دیتاهایی که زیاد با میانگین فاصله دارن حذف کنی و دوباره با دیتاهای باقی مونده میانگین بگیری.
                  با سلام و تشکر : از تقسیم مقاومتی صفر تا 5 ولت ا ستفاده شده.ورودی adc به صورت dc هست . لطفا میشه فیلتر قرار دادن را بیشتر توضیح بدی ،به اندازه کافی و حساب شده در تقسیم مقاومتی از خازن استفاده شده. شرمنده اگر امکان داره کدهای اخرین پست را یکی عملا پیشنهاداتش را اعمال کنه و اصلاح شده انرا بگذاره تا روی مدار تست کنم چون واقعا من مبتدی هستم و اگر خبره بودم مشکل را تا الان حل کرده بودم.شرمنده تک تک دوستان و اساتید. با تشکر فراوان

                  دیدگاه


                    #10
                    پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                    نوشته اصلی توسط مرتضی امانی
                    توضیح بالا با تفکیک بیشتر، این مراحل رو به ترتیب انجام بدید:
                    - یه آرایه 3 تایی تعریف کنید و صدگان، دهگان، یکان ولتاژتون رو داخل ذخیره و هربار که میخواید نمایش بدید، اعداد این آرایه رو بخونید و نمایش بدید.
                    -یه دستور اضافه کنید که به جای اینکه در هر بار حلقه برنامه یکبار میانگیر بگیرید و نمایش بدید، مثلن هر 10 بار که حلقه می زنید، یکبار محاسبات رو انجام و نمایش بدید.
                    در آخر تعداد میانگین 40 بار کم است، حداقل تا 100 بار افزایش دهید.
                    با تشکر : فکر کنم بهترین راه همینه . ببینم چکار میکنم.
                    با اتمگا8 هر کاری کردم نشد و Stack size را زیاد کردم و مشکل ظاهرا حل شده یعنی تداخل اعداد یکان را به شکلی که توی فیلم بود را نداریم ولی هر لحظه عدد سمت راست(یکان) مرتب تغییر میکنه بصورتیکه که هر بار بصورت واضح یک عدد را نشان میده.هدف کلی منم اینه اگر نوسانات بالای 1 ولت و بالای مثلا 2 ثانیه بود توی صفحه نمایش داده بشه ولی اینجوری باز نوسات را به شکلی مرتب و منظم تر نمایش میده.
                    کل مشکل از عدد یکان است و باید دستوری برای اصلاح این عدد یکان نوشته بشه و ازش میانگین بگیریم و نتایج حاصله توی یکان ریخته بشه.باتشکر

                    دیدگاه


                      #11
                      پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                      چون من با بسکام کد میزنم، متاسفانه بیش از این نمیتونم در زمینه نرم افزار کمک کنم.

                      از تقسیم مقاومتی صفر تا 5 ولت ا ستفاده شده.ورودی adc به صورت dc هست . لطفا میشه فیلتر قرار دادن را بیشتر توضیح بدی ،به اندازه کافی و حساب شده در تقسیم مقاومتی از خازن استفاده شده.
                      دسترسی به اسکوپ دارید؟ فکر میکنم ریپل ورودی به پایه آنالوگ زیاد باشه. میتونید شماتیک مداری که بستید رو بذارید؟
                      از آنجایی که آموزش ماهی گیری برای من بسیار مهم تر هستش، به همین خاطر، در این انجمن، تاجایی که بتونم جواب مطلبی رو مستقیم نمیگم و تلاش میکنم با آدرس دادن و کمی جستجو به جواب برسید. اگر عاشق الکترونیک باشید، دنبال جواب خواهید گشت.

                      دیدگاه


                        #12
                        پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

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

                        دیدگاه


                          #13
                          پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

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

                          دیدگاه


                            #14
                            پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                            نوشته اصلی توسط مرتضی امانی
                            چیزی که در ظاهر بنظر میاد، مدار جالبی نیست و قاعدتن باید ریپل خروجی زیاد باشه، منتها چیزی که در عمل مشخصه، مدار سخت افزاری چندان مشکل نداره. این تست رو هم انجام بدید، که ظرفیت خازن ها رو بیشتر کنید.
                            در مورد نرم افزار واقعن ریز تر از این نمیتونم توضیح بدم. این راهی بود که یکی از دوستان در همین انجمن، حدود 10 روز پیش در جواب همین مشکل فعلی شما برام نوشت
                            ممنونم دوست عزیز ،سپاسگزارم. در مورد ان دوستی که فرمودین 10 سال پیش در جواب مشکل شما نوشته اند جسارتا نظر شخصی ام را بیان میکنم و ناراحت نشید. این دوستی که 10 سال پیش چنین حرفی زده اند به نظر من بلد نبوده ! یا اینکه خیلی بخیل بوده ، راه درستش این نیست ، اتفاقا از روی مثال ادم همه چیز یاد میگیره. توی کلاس درس هم استاد چند مثال میزنه و اونو خودش حل میکنه که بچه ها بهتر یاد بگیرند. توی این سایت های خارجی هم بری کلی به هم دیگه کمک کرده اند و کد های پیشنهادی و اصلاحی را قرار داده اند. به هر حال نظر این کسی که چنین حرفی زده برای خود بخیلش خوب بوده و بس دیگه این شگرد ما ایرانی هاست ! با تشکر فراوان از زحمات شما و دیگر دوستان. حالا هم دنیا به اخر نرسیده توی یک سایت خارجی مشکلم را حل میکنم.

                            دیدگاه


                              #15
                              پاسخ : عدم نمایش تغییرات لحظه ای (مثلا تا 2 ثانیه )

                              نوشته اصلی توسط amiri630
                              ممنونم دوست عزیز ،سپاسگزارم. در مورد ان دوستی که فرمودین 10 سال پیش در جواب مشکل شما نوشته اند جسارتا نظر شخصی ام را بیان میکنم و ناراحت نشید. این دوستی که 10 سال پیش چنین حرفی زده اند به نظر من بلد نبوده ! یا اینکه خیلی بخیل بوده ، راه درستش این نیست ، اتفاقا از روی مثال ادم همه چیز یاد میگیره. توی کلاس درس هم استاد چند مثال میزنه و اونو خودش حل میکنه که بچه ها بهتر یاد بگیرند. توی این سایت های خارجی هم بری کلی به هم دیگه کمک کرده اند و کد های پیشنهادی و اصلاحی را قرار داده اند. به هر حال نظر این کسی که چنین حرفی زده برای خود بخیلش خوب بوده و بس دیگه این شگرد ما ایرانی هاست ! با تشکر فراوان از زحمات شما و دیگر دوستان. حالا هم دنیا به اخر نرسیده توی یک سایت خارجی مشکلم را حل میکنم.
                              [glow=red,2,300]جسارتا به چشم پزشک باید مراجعه کنید[/glow]

                              دیدگاه

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