اطلاعیه

Collapse
No announcement yet.

طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

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

    طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

    سلام.
    من میخوان 4 تا سنسوری که خروجی PWM میده مثل سنسور SMT160 رو به یک میکرو بزنم و به صورت دقیق مقدار هر کدوم رو بخونم.
    بهترین روش چیه؟ اگه میشه راهنمایی کنید با بیسکام.
    یکی نیست به ما بگه "آخه تو رو چه به AVR"

    #2
    پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

    برای شروع بهتره همه ی pwm ها رو از یه فیلتر پایین گذر عبور بدی و DC درست شده را با a/d میکرو بخونی البته راه دقیقی نیست. در حالت عادی یه مقداری اندازه گیری pwm سخته اگه این روش کارتو راه نمی اندازه بگو را روش اندازه گیری pwm رو بحث کنیم

    دیدگاه


      #3
      پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

      نوشته اصلی توسط question
      سلام.
      من میخوان 4 تا سنسوری که خروجی PWM میده مثل سنسور SMT160 رو به یک میکرو بزنم و به صورت دقیق مقدار هر کدوم رو بخونم.
      بهترین روش چیه؟ اگه میشه راهنمایی کنید با بیسکام.
      من این برنامه را با زبان c نوشتم که اول پریود را حساب میکنه بعد هم پهنای پالس را اندازه میگیره ولی با بسکام شرمنده ولی روال کار همینه که با تایمر 1 پریود را حساب کنی و با پایه اینتراپت پهنای پالس را
      فرزندم در راه است

      دیدگاه


        #4
        پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

        نوشته اصلی توسط saeid_ica
        برای شروع بهتره همه ی pwm ها رو از یه فیلتر پایین گذر عبور بدی و DC درست شده را با a/d میکرو بخونی البته راه دقیقی نیست. در حالت عادی یه مقداری اندازه گیری pwm سخته اگه این روش کارتو راه نمی اندازه بگو را روش اندازه گیری pwm رو بحث کنیم
        روش اول که دقیق نیست روشی هم که آقای کیانی میگه اینتراپت زیاد میخواد
        بیسکام دستوری برا این کار نداره؟
        یکی نیست به ما بگه "آخه تو رو چه به AVR"

        دیدگاه


          #5
          پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

          سلام دوست عزیز
          من با SMT160 کار کردم ، اما بدونه هیچ تایمری. دقیق هم کار میکنه.

          ابتدا پایه خروجی سنسور رو چک میکنم . همینکه از 0 بودن به 1 بودن تغییر کرد ، تو یه While یه Counter رو پلاس میکنم (مادامیکه 1 هستش) همینکه 0 شد میپره از While بیرون و یه Counter ه دیگه رو پلاس میکنم تا دوباره 1 بشه .
          مجموع دو تا Counter کل بازه رو نشون میده . High_Counter تقسیم بر کل هم میشه Duty و ....
          بازیه ز ندگی اون نیست که تاسه خوب بیاری , اینه که تاسه بد رو خوب بازی کنی

          دیدگاه


            #6
            پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

            نوشته اصلی توسط جواد شفقتی
            سلام دوست عزیز
            من با SMT160 کار کردم ، اما بدونه هیچ تایمری. دقیق هم کار میکنه.

            ابتدا پایه خروجی سنسور رو چک میکنم . همینکه از 0 بودن به 1 بودن تغییر کرد ، تو یه While یه Counter رو پلاس میکنم (مادامیکه 1 هستش) همینکه 0 شد میپره از While بیرون و یه Counter ه دیگه رو پلاس میکنم تا دوباره 1 بشه .
            مجموع دو تا Counter کل بازه رو نشون میده . High_Counter تقسیم بر کل هم میشه Duty و ....
            سلام
            دوست عزیز میشه برنامه ای رو که استفاده کردید قرار بدید .اخه من از تایمر استفاده کردم .روش پیشنهادی شما خیلی خوبه .اینجوری باعث میشه از تایمر برای کارهای دیگه استفاده کنم
            یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

            دیدگاه


              #7
              پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

              سلام
              برای اینکار باید از اینتراپت استفاده کنی که هم حساس به لبه بالا رونده باشه هم پائین رونده. می تونی اینتراپت رو حساس به لبه بالا رونده کنی و وقتی اینتراپت اومد مقدار تایمر رو بخونی و همون موقق اینتراپت رو حساس به لبه پائین رونده کنی و ادامه ماجرا...
              یا اینکه می تونی از 2تا اینتراپت استفاده کنی.
              اگه حوصله انجام این کارهارو هم نداری از دستور زیر استفاده کن :
              PULSEIN var , PINX , PIN , STATE

              متغییر رو هم باید از نوع word تعریف کنی البته مقدار عددی که نشون می ده شاید یکم پرت باشه مثلا برای من 3 میلی ثانیه رو 300 نشون میداد که چون دیوتی سایکل رو می خوای مهم نیست یه ویژگی که این دستور داره اینه که می تونی به تعداد پورتهای میکرو سنسور دیجیتال استفاده کنی من خودم 15 تا adxl202 رو با یه ATmega32 اندازه گرفتم...
              (راستی این رو هم اضافه کنم که که روش آخری از تایمرها استفاده نمی کنه)



              دیدگاه


                #8
                پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                سلام :smile:
                میشه با مقایسه کننده آنالوگ این کارو کرد؟
                با وقفه هایی که داره؟

                دیدگاه


                  #9
                  پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                  نوشته اصلی توسط mehrdad_italy
                  سلام
                  برای اینکار باید از اینتراپت استفاده کنی که هم حساس به لبه بالا رونده باشه هم پائین رونده. می تونی اینتراپت رو حساس به لبه بالا رونده کنی و وقتی اینتراپت اومد مقدار تایمر رو بخونی و همون موقق اینتراپت رو حساس به لبه پائین رونده کنی و ادامه ماجرا...
                  یا اینکه می تونی از 2تا اینتراپت استفاده کنی.
                  اگه حوصله انجام این کارهارو هم نداری از دستور زیر استفاده کن :
                  PULSEIN var , PINX , PIN , STATE

                  متغییر رو هم باید از نوع word تعریف کنی البته مقدار عددی که نشون می ده شاید یکم پرت باشه مثلا برای من 3 میلی ثانیه رو 300 نشون میداد که چون دیوتی سایکل رو می خوای مهم نیست یه ویژگی که این دستور داره اینه که می تونی به تعداد پورتهای میکرو سنسور دیجیتال استفاده کنی من خودم 15 تا adxl202 رو با یه ATmega32 اندازه گرفتم...
                  (راستی این رو هم اضافه کنم که که روش آخری از تایمرها استفاده نمی کنه)
                  سلام دوست عزیز

                  ممنونم از بابت راهنماییتون .

                  یه زحمتی میکشید بیشتر دراین زمینه توضیح بدید .؟ اخه من میخام با یه میکرو 4 تا SMT160 رو راه اندازی کنم بنابراین نمیتونم از تایمر میکرو استفاده کنم .پیشاپیش از همکاری شما سپاسگذارم
                  یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                  دیدگاه


                    #10
                    پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                    نوشته اصلی توسط اقای دکتر
                    سلام دوست عزیز

                    ممنونم از بابت راهنماییتون .

                    یه زحمتی میکشید بیشتر دراین زمینه توضیح بدید .؟ اخه من میخام با یه میکرو 4 تا SMT160 رو راه اندازی کنم بنابراین نمیتونم از تایمر میکرو استفاده کنم .پیشاپیش از همکاری شما سپاسگذارم
                    سلام
                    شب بخیر
                    در مورد pulse in توضیح بدم ؟

                    دیدگاه


                      #11
                      پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                      نوشته اصلی توسط mehrdad_italy
                      سلام
                      شب بخیر
                      در مورد pulse in توضیح بدم ؟
                      اره ممنونم. ولی این دستور رو میدوم که پالس مربعی رو اندازه گیری میکنه و نسبت به پایه خروجی حساس میشه .اگر میشه با ذکر یه مثال بفرمائید که چطور میشه 4تا smt160 رو توسط این دستور کنترل کرد ؟؟
                      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                      دیدگاه


                        #12
                        پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                        برای استفاده از دستور pulsein باید اول یه متغییر از جنس word تعریف کنید (اونجوری که خود بسکام گفته) و به صورت زیر عمل می کنیم :
                        Trx زمان بالارونده (البته هر اسمی دوست داری بذار)
                        Tfx زمان پائین رونده
                        -----------------------------------------------------------------------------------------------------------------------------------
                        Dim trx as word
                        Dim tfx as word
                        Dim t1 as word
                        Dim dutycycle as single
                        Do
                        Pulsein Try , Pinx , y , 1
                        Pulsein Tfy , Pinx , y , 0
                        T1= trx + tfx
                        Dutycycle =trx/t2
                        Loop
                        End
                        خوب حالا یه توضیحاتی درباره ی اعدادی که بدست میاد میدم
                        یه مثال می زنم که کامل متوجه بشی : من برای یه سنسور از این دستور استفاده کردم پریود سنسور 8 میلی ثانیه بود که در عمل باید یه 5 و 3 میلی ثانیه میداد که دیوتی سایکل میشد 3/8=0.375
                        ولی با این دستور یه 500 و یه 300 میداد که بازم دیتوی سایکل برابر با 300/800=0.375 که همینطورکه میبینی هردو یکی در میاد
                        سوالی بود در خدمتم ...
                        موفق باشی...


                        دیدگاه


                          #13
                          پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                          نوشته اصلی توسط mehrdad_italy
                          برای استفاده از دستور pulsein باید اول یه متغییر از جنس word تعریف کنید (اونجوری که خود بسکام گفته) و به صورت زیر عمل می کنیم :
                          Trx زمان بالارونده (البته هر اسمی دوست داری بذار)
                          Tfx زمان پائین رونده
                          -----------------------------------------------------------------------------------------------------------------------------------
                          کد:
                          
                          Dim trx as word
                          Dim tfx as word
                          Dim t1 as word
                          Dim dutycycle as single
                          Do
                             Pulsein Try , Pinx , y , 1
                             Pulsein Tfy , Pinx , y , 0
                          T1= trx + tfx
                          Dutycycle =trx/t2
                          Loop
                          End
                          خوب حالا یه توضیحاتی درباره ی اعدادی که بدست میاد میدم
                          یه مثال می زنم که کامل متوجه بشی : من برای یه سنسور از این دستور استفاده کردم پریود سنسور 8 میلی ثانیه بود که در عمل باید یه 5 و 3 میلی ثانیه میداد که دیوتی سایکل میشد 3/8=0.375
                          ولی با این دستور یه 500 و یه 300 میداد که بازم دیتوی سایکل برابر با 300/800=0.375 که همینطورکه میبینی هردو یکی در میاد
                          سوالی بود در خدمتم ...
                          موفق باشی...
                          ممنونم

                          با این وضیعت دقتش کاهش پیدا نمیکنه یا به عبارتی خطا هم داره ؟؟

                          شما از دو تا پین میکرو استفاده کردید
                          Pulsein Try , Pinx , y , 1
                          Pulsein Tfy , Pinx , y , 0

                          این بخاطر چی هست .یخاطر این هست که از دو تا smt استفاده کنیم؟؟
                          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                          دیدگاه


                            #14
                            پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

                            درباره دقتش اطلاعی ندارم ولی بعید می دونم انچنان تاثیر داشته باشه چو من خودم سنسور زاویه رو راه اندازی کردم دقتش خیلی بالا بود

                            از دوتا پین استفاده نشده به دستور زیر دقت کن : ( فرض می کنیم به پین d.1 وصل می کنیم )
                            Pulsein Try , Pind , 1 , 1
                            Pulsein Tfy , Pind , 1 , 0

                            همونطور که میبینی از یک پین استفاده شده اون 1 که اخر نوشته شده یعنی اینکه زمان بالارونده رو حساب کن و 0 هم برای اندازه گیری زمان پائین رونده است

                            اگه میبینی باز متوجه نمی شی من رو شکل برات توضیح بدم
                            موفق باشی...


                            دیدگاه


                              #15
                              پاسخ : طریقه اندازه گیری چند پالس PWM به صورت دقیق با یک میکرو

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

                              دیدگاه

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