اطلاعیه

Collapse
No announcement yet.

ایجاد فرکانس متغیر با PWM میکرو

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

    #16
    پاسخ : ایجاد فرکانس متغیر با PWM میکرو

    سلام وقت بخیر ، یه متغیر به عنوان شمارنده تعریف کن که بطور مداوم از صفر تا سقف مشخصی بشمره و بعد دوباره از صفر شروع کنه و مثلاً با هر سرریز تایمر یک واحد افزایش داشته باشه ( prescale تایمرت ثابت باشه). سقف شمارش این شمارنده با توجه به ولوم تعیین فرکانس از طریق ADC تعیین میشه و چرخه ی کاری ( دیوتی سایکل ) هم با توجه به ولوم تعیین عرض پالس بازم از طریق ADC مشخص میشه. به اینصورت که با شروع شمارش یه پایه ی میکرو ست میشه و هر وقت شمارش به مقدار مشخصی که با توجه به دیوتی سایکل ( و توسط ولوم عرض پالس ) تعیین میشه رسید این پایه ی میکرو ریست میشه تا شمارنده نهایتاً سرریز بشه و مجدداً شمارنده از صفر شروع به شمارش کرده و پایه ی میکرو ست میشه و الی آخر . البته به جای شمارنده ی اصلی که فرکانسو تعیین میکنه می تونی مقدار اولیه ی تایمر رو تحت تاثیر ولوم تعیین فرکانس تغییر بدی تا فرکانست عوض بشه.
    علم چندان که بیشتر خوانی چون عمل در تو نیست نادانی
    ( سعدی )

    دیدگاه


      #17
      پاسخ : ایجاد فرکانس متغیر با PWM میکرو

      نوشته اصلی توسط abi92
      سلام وقت بخیر ، یه متغیر به عنوان شمارنده تعریف کن که بطور مداوم از صفر تا سقف مشخصی بشمره و بعد دوباره از صفر شروع کنه و مثلاً با هر سرریز تایمر یک واحد افزایش داشته باشه ( prescale تایمرت ثابت باشه). سقف شمارش این شمارنده با توجه به ولوم تعیین فرکانس از طریق ADC تعیین میشه و چرخه ی کاری ( دیوتی سایکل ) هم با توجه به ولوم تعیین عرض پالس بازم از طریق ADC مشخص میشه. به اینصورت که با شروع شمارش یه پایه ی میکرو ست میشه و هر وقت شمارش به مقدار مشخصی که با توجه به دیوتی سایکل ( و توسط ولوم عرض پالس ) تعیین میشه رسید این پایه ی میکرو ریست میشه تا شمارنده نهایتاً سرریز بشه و مجدداً شمارنده از صفر شروع به شمارش کرده و پایه ی میکرو ست میشه و الی آخر . البته به جای شمارنده ی اصلی که فرکانسو تعیین میکنه می تونی مقدار اولیه ی تایمر رو تحت تاثیر ولوم تعیین فرکانس تغییر بدی تا فرکانست عوض بشه.
      ممنون از راهنمایتون ولی خوب متوجه نشدم
      من با 2 تا ولوم میخام هم فرکانسو کنترل کنم هم پهنای پالسو تو محدوده مثلا 1 تا 100 هرتز و دقت خیلی بالا هم نمیخوام همون 1 تا2 هرتز دقت برام کافیه . حالا باید چی کار کنم
      دعا پشتِ دعا برای آمدنت
      گناه پشــــــتِ گناه برای نیامــدنت
      دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
      کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

      دیدگاه


        #18
        پاسخ : ایجاد فرکانس متغیر با PWM میکرو

        لطفا هر کی این کارو کرده یا بلده کمک کنه
        دعا پشتِ دعا برای آمدنت
        گناه پشــــــتِ گناه برای نیامــدنت
        دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
        کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

        دیدگاه


          #19
          پاسخ : ایجاد فرکانس متغیر با PWM میکرو

          سلام وقت بخیر ، دارم برنامه اش رو واسه ت می نویسم آماده شد ایمیلش می کنم.
          علم چندان که بیشتر خوانی چون عمل در تو نیست نادانی
          ( سعدی )

          دیدگاه


            #20
            پاسخ : ایجاد فرکانس متغیر با PWM میکرو

            کاری نداره که!

            شما باید کار میکرو رو خودتون انجام بدید!

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

            این هم کدی که باید اضافه کرد:
            در این کد تایمر با یک فرکانس خاصی مدام دارد، می شمارد و با رسیدن به عددی (که مثلا توی مد نرمال تایمر عدد 256) هست سرریز و وقفه ی تایمر اتفاق می افتد و وارد زیربرنامه وقفه می شود.
            در وقفه شمارنده ای دیگر دوباره می شمارد ، تا با قیاس آن با مقدار خاصی (نسبت مورد نظر ما برای دیوتی سایکل) دیوتی سایکل ما اعمال شود.
            کد:
            interrupt [TIM2_OVF] void timer2_ovf_isr(void)
            {
             
             if(PWM_Counter==PWM_Signal)   
              PORTB.0=0;
             else if(PWM_Counter < PWM_Signal)
              PORTB.0=1;   
                   
             
            PWM_Counter++;
            if(PWM_Counter==PWM_Compare)   
              PWM_Counter=0;
            }
            //این شرط فوق داره میگه هر وقت تساوی شرط برقرار شد سرریزی که ما تعبیه کردیم اتفاق بیفته، پس با تعیین زمان سرریز دلخواه یعنی تعییر مقدار PWM_Compare می توان فرکانس شمارش PWM_Counter را تغییر داد که با تغییر ان در واقع فرکانس سیگنال PWM ما تغییر می کند.

            // در واقع داره زمان خاموشی رو اضافه می کنه، پس تنها اضکالی وارد هست اینه که با تغییر PWM_Compare که فرکانس تغییر می کنه دیوتی سایکل ما بهم می ریزه که باید بعد از تنظیم فرکانس دیوتی سایکل رو دوباره مقدار دهی کرد.
            _________________________
            اگر متوجه نشدید یا سوالی بود بگید تا فایل اصلی و پروتئوس رو پ کنم ، عملا نتایج رو مشاهده کنید.
            همواره یادمان باشد:
            1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
            2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
            3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

            دیدگاه


              #21
              پاسخ : ایجاد فرکانس متغیر با PWM میکرو

              سلام ، ایمیلت رو بده تا برنامه ی بیسکامش رو واسه ت بفرستم. با اسیلوسکوپ هم تستش کردم.
              علم چندان که بیشتر خوانی چون عمل در تو نیست نادانی
              ( سعدی )

              دیدگاه


                #22
                پاسخ : ایجاد فرکانس متغیر با PWM میکرو

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


                تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                دیدگاه


                  #23
                  پاسخ : ایجاد فرکانس متغیر با PWM میکرو

                  شرمنده م من تا حالا با c کار نکردم.
                  علم چندان که بیشتر خوانی چون عمل در تو نیست نادانی
                  ( سعدی )

                  دیدگاه


                    #24
                    پاسخ : ایجاد فرکانس متغیر با PWM میکرو

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

                    دعا پشتِ دعا برای آمدنت
                    گناه پشــــــتِ گناه برای نیامــدنت
                    دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
                    کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

                    دیدگاه

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