اطلاعیه

Collapse
No announcement yet.

تولید موج pwm روی همه ی پایه های میکرو

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

    تولید موج pwm روی همه ی پایه های میکرو

    با عرض سلام خدمت دوستان
    من چندوقتی روی این موضوع کار کردم از طریق برنامه نویسی که نتونستم یعنی اینکه نتونستم از طریق برنامه نویسی روی همه ی پایه های میکرو موج pwm رو درست کنم البته یه چیز هایی درست کردم اما با pwm خیلی تفاوت داشت چون فرکانس تغییر می کرد در حالی که نباید تغییر کنه به خاطر همین ایده ای به سرم زد تا یه جوری فرکانس رو ثابت کنم برای همین اومدم یه پالس مثلثی درست کردم با فرکانس ثابت و اون رو دادم به adc میکرو و بعد هم مدام میام عدد رو از adc می خونی و بسته به اون که چه عددی از adc می گیری موجت رو طراحی می کنی
    در اصل اگه به شکل پایین توجه کنید متوجه میشید اون خط افقی روی موج مثلثی رو نگاه کنید بهش حالا فرض کنید مثلا اون خط دقیق در وسط موج مثلثی باشه در اصل مثلا adc میکرو به ما برای ماکزیمم قله ی موج مثلثی عدد 100 رو بده البته فرض کنید برای اون خط افقی مثلا 50 رو بده حالا هرجایی که مقدار adc گرفته شده بیشتر از 50 شد میاییم یکی از پورتهای میکرو رو به دلخواه یک می کنیم و وقتی که دوباره مقدار adc کمتر یا مساوی 50 شد اون پورت رو صفر می کنیم یا اینکه کلا این ها رو برعکس کنیم که شکل سومی درست میشه حالا می تونیم با چند تا دستور if then ساده مقدار گرفته شد از adc روی همه یپورت های میکرو موج pwm رو درست کنیم مثلا اگه شما می خواهی دیوتی سایکلت مثلا بشه 20 درصد اون خط افقی رو میاریم پاییتر و شرطی که میزاریم برای میکرو رو عدد خونده شده از adc رو میزاریم روی مثلا 20 که اگر بیشتر از 20 شد مثلا پورت portb.1 رو یک کن و اگر کمتر یا مساوی شد دوباره صفرش کن

    به نظرتون چه جوریه عملی هست من توی پروتئوس که جواب گرفتم کلا هرچی نظر داردی بدید ... :rolleyes:



    قم الکترونیک

    #2
    پاسخ : تولید موج pwm روی همه ی پایه های میکرو

    با سلام آقا این کاری که کردی رو یpwm متغیر هم جواب میده یا نه

    دیدگاه


      #3
      پاسخ : تولید موج pwm روی همه ی پایه های میکرو

      برای ساخت موج مثلثی می توانید یکی از تایمرها در مد Phase correct یا Phase-frequency correct pwm قرار دهید و مقدار تایمر را بصورت نرم افزاری قرائت کنید و عملیات مورد نظر خود را در مقایسه مقدار تایمر با مقدار مورد نظر انجام دهید. در اینحالت مقدار تایمر عملا موج مثلثی مورد نیاز شما را تامین می کند و نیازی به استفاده از ADC و تولید شکل موج بصورت خارجی نیست.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #4
        پاسخ : تولید موج pwm روی همه ی پایه های میکرو

        جناب شما قبلا از این روش استفاده کرده بودی یا نه؟
        قم الکترونیک

        دیدگاه


          #5
          پاسخ : تولید موج pwm روی همه ی پایه های میکرو

          مهندس اگه منظورت از PWM تولید موج مربعی باشه و هدفت تغییر دادن نباشه با دستور SOUND این کارو میتونی بکنی
          زاویه ی نگاهتو عوض کن . . .

          دیدگاه


            #6
            پاسخ : تولید موج pwm روی همه ی پایه های میکرو

            یعنی چی تغییرش ندیم خوب موج pwm که دیوتی سایکلش تغییر نکنه که به درد ... میخوره با دستور sound مگه میشه موج pwm درست کرد
            قم الکترونیک

            دیدگاه


              #7
              پاسخ : تولید موج pwm روی همه ی پایه های میکرو

              ببین مهندس این که بخوای تمام کارای PWM رو انجام بدی به نظر من بعید میاد ...
              ولی اگه بخوای دو تا دستور PULSEOUT و SOUND هستن که قابلیت محدودی دارن ولی کار راه اندازن
              pulseout فرکانس ثابته ولی dc قابل تنظیم و sound برعکس این دستور
              زاویه ی نگاهتو عوض کن . . .

              دیدگاه


                #8
                پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                نوشته اصلی توسط طراح
                برای ساخت موج مثلثی می توانید یکی از تایمرها در مد Phase correct یا Phase-frequency correct pwm قرار دهید و مقدار تایمر را بصورت نرم افزاری قرائت کنید و عملیات مورد نظر خود را در مقایسه مقدار تایمر با مقدار مورد نظر انجام دهید. در اینحالت مقدار تایمر عملا موج مثلثی مورد نیاز شما را تامین می کند و نیازی به استفاده از ADC و تولید شکل موج بصورت خارجی نیست.
                روش شما واقعا عالیه من یادم نبود و تا گفتی افتاد که باید چه کار کنم در ضمن بابت فیلم های اموزشیتون ممنون واقعا عالیه مهندس یه سوالی داشتم می خواستم بدونم شما از این روش استفاده کردی یا نه ؟ خوب جواب میده به pwm خود میکرو میرسه یا نه ممنون
                ببین مهندس این که بخوای تمام کارای PWM رو انجام بدی به نظر من بعید میاد ...
                ولی اگه بخوای دو تا دستور PULSEOUT و SOUND هستن که قابلیت محدودی دارن ولی کار راه اندازن
                pulseout فرکانس ثابته ولی dc قابل تنظیم و sound برعکس این دستور
                در جواب دوست دیگه باید بگم من دستور pulsout که به درد این کار نمی خوره دیوتی سایکل رو که تغییر نمیده و فقط یه موج مربعی تولید میکنه با دیوتی سایکل 50 درصد ولی موج pwm مقدار متوسطش می تونه تغییر بکنه اما در pulsout مقدار متوسط ثابته
                قم الکترونیک

                دیدگاه


                  #9
                  پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                  نوشته اصلی توسط electronicnarm2010
                  در جواب دوست دیگه باید بگم من دستور pulsout که به درد این کار نمی خوره دیوتی سایکل رو که تغییر نمیده و فقط یه موج مربعی تولید میکنه با دیوتی سایکل 50 درصد ولی موج pwm مقدار متوسطش می تونه تغییر بکنه اما در pulsout مقدار متوسط ثابته
                  نه دوست عزیز اشتباه میکنین . این دستور قابلیت تغییر DC رو با تغییر مقدار period داره . من الان بازم تو پروتئوس چک کردم و تغییر کرد
                  زاویه ی نگاهتو عوض کن . . .

                  دیدگاه


                    #10
                    پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                    آقا یکی جلوی این دوتا رو بگیره الان چاقو چاقو کشی میشه.

                    من خوب متوجه نشدم شما داری چیکار میکنی؟
                    بازم نمیدونم :-?? منظورتون اینیه که میگم:
                    من با یه تایمر روی سه پایه ی میکرو تونستم LED RGB ها رو کنترل کنم.
                    ?Why not

                    دیدگاه


                      #11
                      پاسخ : پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                      نوشته اصلی توسط QUARK
                      آقا یکی جلوی این دوتا رو بگیره الان چاقو چاقو کشی میشه.

                      من خوب متوجه نشدم شما داری چیکار میکنی؟
                      بازم نمیدونم :-?? منظورتون اینیه که میگم:
                      من با یه تایمر روی سه پایه ی میکرو تونستم LED RGB ها رو کنترل کنم.
                      خوب همان طور که میدونی تولید موج pwm توی میکروبا ملزومات خود میکرویی مثل atmega 32 فقط 4 کانال pwm داریم حالا با این روش که هم من و هم مهندس کی نژاد گفتن میشه روی همه ی پورت های میکرو pwm رو درست کرد حالا دوستمون هم یه روش دیگه ای گفتن اگه لطف کنند سورس برنامه رو بزارن ممنون می شم

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

                      دیدگاه


                        #12
                        پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                        نوشته اصلی توسط electronicnarm2010
                        خوب همان طور که میدونی تولید موج pwm توی میکروبا ملزومات خود میکرویی مثل atmega 32 فقط 4 کانال pwm داریم حالا با این روش که هم من و هم مهندس کی نژاد گفتن میشه روی همه ی پورت های میکرو pwm رو درست کرد حالا دوستمون هم یه روش دیگه ای گفتن اگه لطف کنند سورس برنامه رو بزارن ممنون می شم

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

                        در مورد دستور PULSEOUT در بسکام هم سورس نمی خواد شما خودت مقدار period عوض کن ببین duty cycle بازم 50% میشه یا نه !!! یه توضیح دیگه اینکه این period مدت زمان high بودنه نه یک دوره تناوب
                        زاویه ی نگاهتو عوض کن . . .

                        دیدگاه


                          #13
                          پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                          چاقو رو یکی از دست اینا بگیره.

                          ولی خارج از شوخی وقتی سه تا پایه رو با یه تایمر شدنیش کردم پس 100 پایه هم میکرو قرض بگیره بازم میشه.

                          نیگا، دوستامون اینجا خیلی نظر دادن، شما باید ببینی که کدوم تو عمل بهتر جواب میده.
                          اینی که میگی طبق گفتت باید ADC رو هم مشغول کنی که یه پالس بسازی.تازه تو عمل جواب نگرفتی.

                          وقتی یه دستوری تو بسکام هست تو کدویژن هم یه زوری بزنی میاد.

                          بعدشم یکی یه نظری میده تاقت نداری.ببین خودت چی گفتی؟
                          کلا هرچی نظر داردی بدید ...
                          ?Why not

                          دیدگاه


                            #14
                            پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                            بابا من که چیزی نگفتم من فقط گفتم که این روشی که من ناقصش رو گفتم و مهندس کی نژاد کاملش کرد توی همه جا کاربرد داره مثلا اگه ما بخواهیم به زبان اسمبلی بنویسیم خوب دیگه دستوری مثل pulsout نداریم که
                            بازم اگه من تند رفتم معضرت می خوام شرمنده :cry2:
                            قم الکترونیک

                            دیدگاه


                              #15
                              پاسخ : تولید موج pwm روی همه ی پایه های میکرو

                              پیشنهاد ارائه شده به شما ناظر به روش تولید شکل موج مثلثی و مقایسه آن به مقدار مورد نظر بود و به این معنی نبود که برای تولید شکل موج PWM بصورت نرم افزاری، این بهترین روش است. برای تولید شکل موج PWM به صورت نرم افزاری از روش های مختلفی می توان استفاده کرد که امکان پیاده سازی آن بستگی به تعداد خروجی مورد نظر و فرکانس و resolution مورد نیاز دارد و در شرایطی هم ممکن است به دلیل محدودیت در پردازش CPU قابل تحقق نباشد. بنابراین شما در ابتدا بصورت دقیق تعداد خروجی ها و فرکانس PWM و دقت تغییرات برای Duty cycle را مشخص کنید.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه

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