اطلاعیه

Collapse
No announcement yet.

چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

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

    چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

    سلام دوستان خسته نباشید
    یه ولتاژ سینوسی دارم که با یک یک سو ساز این ولتاژ یک سو شده حالا من نیاز دارم به صورت دقیق Vpeek این ولتاژ رو با Adc بخونم فرکانس این ولتاژ سینوسی 2 کیلو هرتز هست
    هر کاری هم کردم با خازن نتونستم این ولتاژ رو dc کنم ممنون میشم کمکم کنید

    #2
    پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

    سلام لازم نبود چندجا تاپیک بزنید . همون جایی رو که اول زدید همه می تونن ببینن . پاسختون رو توی تاپیک قبلی دادم . لطفا اون تاپیک رو مطالعه کنید .
    http://www.eca.ir/forum2/index.php?topic=63587.0
    تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
    دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
    مقالات و فایل های آموزشی نرم افزار Labview
    حل مشکل درایور و راه اندازی FT232 های غیراورجینال

    دیدگاه


      #3
      پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

      نوشته اصلی توسط محمد م
      سلام لازم نبود چندجا تاپیک بزنید . همون جایی رو که اول زدید همه می تونن ببینن . پاسختون رو توی تاپیک قبلی دادم . لطفا اون تاپیک رو مطالعه کنید .
      http://www.eca.ir/forum2/index.php?topic=63587.0
      شماتیک یکی هست ولی یوال دو تاست این جا دیگه نمی خوام ِ dc کنم بازم ممنونم از شما

      دیدگاه


        #4
        پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

        نوشته اصلی توسط re_bita
        شماتیک یکی هست ولی یوال دو تاست این جا دیگه نمی خوام ِ dc کنم بازم ممنونم از شما
        اگه اینجا می خواید بدون صاف کردن مقدار خروجی ماکزیمم اون رو اندازه بگیرید بازهم می تونید همین شکل موج رو با یک تقسیم مقاومتی بدید به adc بعد هرچی عدد دیجیتال حاصل از adc بزرگتر باشه ولتاژ خروجی هم بیشتر هست و می تونید عدد دیجیتال بدست اومده رو در یک متغییر ذخیره کنید و با عدد دیجیتال قبلی مقایسه کنید . هر موقع عدد جدید از عدد قدیم کوچکتر شد یعنی عدد قدیم همون مقدار ماکزیمم بوده .
        تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
        دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
        مقالات و فایل های آموزشی نرم افزار Labview
        حل مشکل درایور و راه اندازی FT232 های غیراورجینال

        دیدگاه


          #5
          پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

          نوشته اصلی توسط محمد م
          اگه اینجا می خواید بدون صاف کردن مقدار خروجی ماکزیمم اون رو اندازه بگیرید بازهم می تونید همین شکل موج رو با یک تقسیم مقاومتی بدید به adc بعد هرچی عدد دیجیتال حاصل از adc بزرگتر باشه ولتاژ خروجی هم بیشتر هست و می تونید عدد دیجیتال بدست اومده رو در یک متغییر ذخیره کنید و با عدد دیجیتال قبلی مقایسه کنید . هر موقع عدد جدید از عدد قدیم کوچکتر شد یعنی عدد قدیم همون مقدار ماکزیمم بوده .
          lمن میخوام از 100 نیم سیکل نمونه بگیرم ماکزیمم بدست آمده رو میانگین بگیرم چون یه خورده این ریپل داره این که نی دونم کجا نیم سیکل شروع میشه و کجا تموم میشه ؟

          دیدگاه


            #6
            پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

            نوشته اصلی توسط re_bita
            lمن میخوام از 100 نیم سیکل نمونه بگیرم ماکزیمم بدست آمده رو میانگین بگیرم چون یه خورده این ریپل داره این که نی دونم کجا نیم سیکل شروع میشه و کجا تموم میشه ؟
            شما میتونید دقت adc رو طوری تنظیم کنید که اون سطح ولتاژ ریپل رو در نظر نگیره . دامنه ریپل خروجی با توجه به فرکانس کاریتون نمی تونه خیلی زیاد باشه . بستگی داره شما بخواید با چه دقتی ماکزیمم ولتاز خروجی رو بخونید ؟
            برای اینکه بفهمید نیم سیکل از کجا شروع میشه می تونید از مدارها آشکارساز گذر از صفر یا همین اینتراپت میکرو استفاده کنید .
            اگه زیاد دقت بالا نمی خواید همون راه حل قبلی ای که گفتمم به نظرم خوب باشه .
            تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
            دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
            مقالات و فایل های آموزشی نرم افزار Labview
            حل مشکل درایور و راه اندازی FT232 های غیراورجینال

            دیدگاه


              #7
              پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

              این برنامه رو بلاخره به کمک دوستان نوشتم البته من می خواستم ولتاژ موثر رو حساب کنم از روی ولتاژ peek این جا میزارم هم دوستان یه نظری بدند بشه بهینه ترش کرد و هم شاید به درد کسی بخوره
              کد:
              $regfile = "m32def.dat"
              $crystal = 8000000
              $baud = 9600
              Config Adc = Single , Prescaler = Auto , Reference = Avcc
              Dim I As Integer
              Dim Rms As Single
              Dim Rms_const As Single
              Dim Rmstemp(50) As Word
              Dim Rmstemp2 As Word
              Dim Rmstemp3 As Word
              Dim Rmstemp1 As Word
              Dim Rmsmax3 As Single
               Rms_const = 5 / 1023
              
               Rms_const = Rms_const / 1.41421356237
              
              
              
              
               For I = 1 To 50
              Rmsnew:
              Rmstemp1 = Getadc(0)
              Rmstemp2 = Getadc(0)
              Rmstemp3 = Getadc(0)
               If Rmstemp2 > Rmstemp1 And Rmstemp3 < Rmstemp2 Then Rmstemp(i) = Rmstemp2
               If Rmstemp(i) = 0 Then Goto Rmsnew
               Next I
              
               Stop Adc
              For I = 1 To 50
                Rmsmax3 = Rms_const * Rmstemp(i)
                Rms = Rms + Rmsmax3
                 Next I
                Rms = Rms / 50
                Print Rms
              
              End

              دیدگاه


                #8
                پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                سلام ظاهرا که برنامه مشکلی نداره . البته از لحاظ قواعد کلی میگم . چون من زیاد بیسیک کار نکردم بیشتر سی کار کردم .
                حالا این رو با پروتوس هم شبیه سازی کردی؟
                فقط یک مشکل هست اونم اینکه برای میانگین گیری نیازی نبود 50 تا متغیر از نوع word تعریف کنی. اینطوری حجم برنامت خیلی میره بالا . کافی بود 2 تا متغیر تعریف می کردی . اولین و دومین نمونه رو با هم جمع می کردی تقسیم بر 2 می کردی می ریختی توی اولی. دوباره عدد سومی رو با نتیجه قبلی جمع می کردی و بعد تقسیم بر دو میکردی و دوباره می ریختی توی اولی و همینطور تا آخر .
                تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
                دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
                مقالات و فایل های آموزشی نرم افزار Labview
                حل مشکل درایور و راه اندازی FT232 های غیراورجینال

                دیدگاه


                  #9
                  پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                  نوشته اصلی توسط محمد م
                  فقط یک مشکل هست اونم اینکه برای میانگین گیری نیازی نبود 50 تا متغیر از نوع word تعریف کنی. اینطوری حجم برنامت خیلی میره بالا . کافی بود 2 تا متغیر تعریف می کردی . اولین و دومین نمونه رو با هم جمع می کردی تقسیم بر 2 می کردی می ریختی توی اولی. دوباره عدد سومی رو با نتیجه قبلی جمع می کردی و بعد تقسیم بر دو میکردی و دوباره می ریختی توی اولی و همینطور تا آخر .
                  خیلی هوشمندانه بود جای تشکر داشت آفرین بر شما که هوشمندانه برنامه می نویسید نکته بسیاز مهمی رو اشاره کردید
                  و تشکر از دوستی که خودش رو مقید به بقیه مراجعین دانسته و سورس برنامه رو اینجا گذاشت
                  برای درک بهتر لطفا به این عکس توجه کنید
                  این تیکه از کد به دلیل اینکه مقدار rms از پیک محاسبه شده این جوری شده
                  Rms_const = Rms_const / 1.41421356237


                  معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                  دیدگاه


                    #10
                    پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                    نوشته اصلی توسط محمد م
                    سلام ظاهرا که برنامه مشکلی نداره . البته از لحاظ قواعد کلی میگم . چون من زیاد بیسیک کار نکردم بیشتر سی کار کردم .
                    حالا این رو با پروتوس هم شبیه سازی کردی؟
                    فقط یک مشکل هست اونم اینکه برای میانگین گیری نیازی نبود 50 تا متغیر از نوع word تعریف کنی. اینطوری حجم برنامت خیلی میره بالا . کافی بود 2 تا متغیر تعریف می کردی . اولین و دومین نمونه رو با هم جمع می کردی تقسیم بر 2 می کردی می ریختی توی اولی. دوباره عدد سومی رو با نتیجه قبلی جمع می کردی و بعد تقسیم بر دو میکردی و دوباره می ریختی توی اولی و همینطور تا آخر .
                    با سلام

                    این نوع محاسبه نتیجه اش با میانگین ساده ، یکسان نیست.

                    بلکه نتیجه ذیل را دارد که باعث حذف کافی نویز/یا هدف مورد نظر ، نمیشود

                    RES = ( A00 + A01 + 2*A02 + 4*A03 + 8*A04 + 16*A05 + .... + A49*2^48 ) / 2^49

                    A49 جدیدترین نمونه است و بیشترین اثر را در محاسبه دارد.
                    َA00 قدیمیترین نمونه از 50 تا نموته اخیر است و کمترین اثر را دارد.

                    در حالیکه باید در میانگین ساده ، اثرات نمونه ها با ضریب یکسان باشد.

                    با سپاس
                    گشتی در لاله زار
                    http://www.eca.ir/forum2/index.php?topic=76138.0

                    http://www.eca.ir/forum2/index.php?topic=76141

                    دیدگاه


                      #11
                      پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                      نوشته اصلی توسط Solsal
                      با سلام

                      این نوع محاسبه نتیجه اش با میانگین ساده ، یکسان نیست.

                      بلکه نتیجه ذیل را دارد که باعث حذف کافی نویز/یا هدف مورد نظر ، نمیشود

                      RES = ( A00 + A01 + 2*A02 + 4*A03 + 8*A04 + 16*A05 + .... + A49*2^48 ) / 2^49

                      A49 جدیدترین نمونه است و بیشترین اثر را در محاسبه دارد.
                      َA00 قدیمیترین نمونه از 50 تا نموته اخیر است و کمترین اثر را دارد.

                      در حالیکه باید در میانگین ساده ، اثرات نمونه ها با ضریب یکسان باشد.

                      با سپاس
                      سلام
                      شاید من منظورم رو بد گفتم . بذارید یکم بهتر توضیح بدم :
                      ببینید مثلا ما می خواهیم میانگین 4 عدد 23 و 25 و 26 و 24 رو بدست بیاریم . برای این کار دو تا راه حل وجود داره :
                      1-راه حل اول همون راه حل اصلی هست که باید 4 عدد رو با هم جمع کنیم تقسیم بر تعدادشون کنیم . یعنی هر کدوم از این اعداد رو داخل یک متغییر بریزیم بعد میانگین این متغییرها رو بگیرید. با این کار میانگین اونها میشه 24.5 .
                      2- راه حل دوم اینه که این کار رو بکنید :
                      a=(a+b)/2=(23+25)/2=24
                      حالا مقدار جدید a شد 24.
                      a=(a+next number)/2=(24+26)/2=25
                      حالا مقدار جدید a شد 25.
                      a=(a+next number)/2=(25+24)/2=24.5
                      آخرین مقدار a همون میانگین اصلی هست .
                      همونطور که می بینید باز هم میانگین همون 24.5 شد . در این روش شما هر عددی رو که از ADC میکرو می گیرید با عدد قبلی که داشتید میانگینشون رو می گیرید و داخل همون متغییر قبلی می ریزید. تا عدد ADC جدید بیاد و این کار دوباره انجام بشه تا 50 بار (با یک حلقه for می شه این کار رو کرد و عدد بعدی یا همون next number رو گرفت) . این طوری کلا 2 تا متغییر بیشتر نمی خواد . بازم اگه مشکل داشتید بگید یک طور دیگه توضیح بدم.
                      تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
                      دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
                      مقالات و فایل های آموزشی نرم افزار Labview
                      حل مشکل درایور و راه اندازی FT232 های غیراورجینال

                      دیدگاه


                        #12
                        پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                        با سلام

                        اگر ترتیب اعداد عوض شود، نتیجه عوض می شود.

                        مثلا:
                        23 و 24 و 25 و 26

                        23 و 24 => 23.5

                        23.5 و 25 => 24.25

                        24.25 و 26 => 25.125

                        باید به 24.5 می رسیدیم

                        با سپاس
                        گشتی در لاله زار
                        http://www.eca.ir/forum2/index.php?topic=76138.0

                        http://www.eca.ir/forum2/index.php?topic=76141

                        دیدگاه


                          #13
                          پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                          نوشته اصلی توسط Solsal
                          با سلام

                          اگر ترتیب اعداد عوض شود، نتیجه عوض می شود.

                          مثلا:
                          23 و 24 و 25 و 26

                          23 و 24 => 23.5

                          23.5 و 25 => 24.25

                          24.25 و 26 => 25.125

                          باید به 24.5 می رسیدیم

                          با سپاس
                          ممنون
                          به این نکته توجه نکرده بودم . من این میانگین گیری رو با روش نصف کردن که یک روش محاسبات عددی هست قاطی کردم.
                          این کار رو نمیشه برای میانگین گیری بکنیم :
                          a0=(a/50)+a0
                          که در اون a0 یک مقدار اولیه صفر داره .(a هم همون اعدای هست که باید میانگینشون گرفته بشه مثلا همون 23 24 25 26 ) بعد این رو داخل حلقه for بذاریم . (برای 50 نمونه) یعنی بیایم ابتدا عدد بدست اومده (a) رو بر 50 تقسیم کنیم بریزیم داخل a0 . بعد a0 یک مقدار جدید داره که برای مرحله بعد استفاده میشه . این طوری بازهم به همون دوتا متغیر بیشتر نیاز نیست . یعنی همون کسر میانگین رو اومدیم باز کردیم . نتیجه نهایی a0 همون میانگین هست .
                          تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
                          دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
                          مقالات و فایل های آموزشی نرم افزار Labview
                          حل مشکل درایور و راه اندازی FT232 های غیراورجینال

                          دیدگاه


                            #14
                            پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                            نوشته اصلی توسط محمد م
                            ممنون
                            به این نکته توجه نکرده بودم . من این میانگین گیری رو با روش نصف کردن که یک روش محاسبات عددی هست قاطی کردم.
                            این کار رو نمیشه برای میانگین گیری بکنیم :
                            a0=(a/50)+a0
                            که در اون a0 یک مقدار اولیه صفر داره .(a هم همون اعدای هست که باید میانگینشون گرفته بشه مثلا همون 23 24 25 26 ) بعد این رو داخل حلقه for بذاریم . (برای 50 نمونه) یعنی بیایم ابتدا عدد بدست اومده (a) رو بر 50 تقسیم کنیم بریزیم داخل a0 . بعد a0 یک مقدار جدید داره که برای مرحله بعد استفاده میشه . این طوری بازهم به همون دوتا متغیر بیشتر نیاز نیست . یعنی همون کسر میانگین رو اومدیم باز کردیم . نتیجه نهایی a0 همون میانگین هست .
                            با سلام

                            x = 49*x/50 + y/50

                            or

                            x = (49*x + y ) / 50

                            x = average
                            y = new sample

                            البته برای نمونه برداری مستمر ، مناسب است.

                            با سپاس

                            گشتی در لاله زار
                            http://www.eca.ir/forum2/index.php?topic=76138.0

                            http://www.eca.ir/forum2/index.php?topic=76141

                            دیدگاه


                              #15
                              پاسخ : چه طوری ماکزمیم این ولتاژ رو میکرو بخونونم Vpeek

                              از همه ممنونم واقعا ممنونم

                              دیدگاه

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