اطلاعیه

Collapse
No announcement yet.

fast-Rise time=50ns pwm with avr

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

    #46
    پاسخ : fast-Rise time=50ns pwm with avr

    نوشته اصلی توسط pars_paya
    تایمر : طبق فرمول ((( فرکانس کاری میکرو/(ارزش تایمر * prescaler) ))) تعیین میشود . یعنی اگر مقدار عددی فرمول بالا را X بنامیم ، تایمر شما بعد از هر X ثانیه به روال وقفه پرش خواهد کرد . برای مثال تایمر 0 ، 8 بیتی هست و اگر prescaler را 1 در نظر بگیریم و فرکانس 16 مگاهرتز تنظیم شده باشد ، مقدار X برابر با 16 میکرو ثانیه هست . بطور کلی تایمر از 0 شروع به شمارش کرده و تا ماکزیمم TOP(که در این مثال 256 است) پیشروی میکند و سپس تایمر سرریز شده و وقفه در صورت فعال بودن، اتفاق می افتد.

    اگر این قسمت مفهوم بوده ، اعلام کنید تا به سراغ کانتر برویم.
    دوست گلم من الان اگه یک فرکانس 100 کیلو با دیوتی متغیر بخوام چجوری باید تعریفش کنم.با code vision avr کار میکنم .کلا کار با تایمرا و خصوصیاتشون و نحوه تنظیم کردمشون مشکل دارم

    دیدگاه


      #47
      پاسخ : fast-Rise time=50ns pwm with avr

      با توجه به کلیات گفته شده و با توجه به فرمول گفته شده ، شما باید پارامترهای زیر را فعال کنید :
      1)انتخاب مقدار کلاک میکرو
      2)انتخاب تایمر (0 یا 1 یا 2 یا ....)
      3)انتخاب prescaler با توجه به رجیستر مربوطه
      4)انتخاب مد نرمال تایمر با توجه به رجیستر مربوطه
      5)فعال کردن وقفه سراسری با استفاده از دستور اسمبلی "sei"
      6)فعال کردن وقفه تایمر مربوطه
      7)نوشتن روتین وقفه

      به عمد کمی گنگ بیان شد تا خود شما یه دنبال "رجیسترهای مربوطه " بگردید و آنها را پیدا کنید.
      در هر صورت نتایج خود را قرار دهید تا باهم تایمر را راه اندازی کنیم.

      اگر مطالب مفید هستند تشکر را بزنید

      با احترام 94.11.17
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه


        #48
        پاسخ : fast-Rise time=50ns pwm with avr

        نوشته اصلی توسط pars_paya
        با توجه به کلیات گفته شده و با توجه به فرمول گفته شده ، شما باید پارامترهای زیر را فعال کنید :
        1)انتخاب مقدار کلاک میکرو
        2)انتخاب تایمر (0 یا 1 یا 2 یا ....)
        3)انتخاب prescaler با توجه به رجیستر مربوطه
        4)انتخاب مد نرمال تایمر با توجه به رجیستر مربوطه
        5)فعال کردن وقفه سراسری با استفاده از دستور اسمبلی "sei"
        6)فعال کردن وقفه تایمر مربوطه
        7)نوشتن روتین وقفه

        به عمد کمی گنگ بیان شد تا خود شما یه دنبال "رجیسترهای مربوطه " بگردید و آنها را پیدا کنید.
        در هر صورت نتایج خود را قرار دهید تا باهم تایمر را راه اندازی کنیم.

        اگر مطالب مفید هستند تشکر را بزنید

        با احترام 94.11.17
        دوست عزیز ممنونم .من میگم از میکرو سر در نمیارم چندان .مسئله رو سخت ترش کردی که.من اموزش میخوام نه خود آموزیکه

        دیدگاه


          #49
          پاسخ : fast-Rise time=50ns pwm with avr

          اگر اصلا از میکرو اطلاعاتی ندارید ، برای یادگیری تایمر خیلی خیلی زود هست.
          از همان led چشمک زن شروع کنید. :arrow:
          تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
          علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

          دیدگاه


            #50
            پاسخ : fast-Rise time=50ns pwm with avr

            نوشته اصلی توسط pars_paya
            اگر اصلا از میکرو اطلاعاتی ندارید ، برای یادگیری تایمر خیلی خیلی زود هست.
            از همان led چشمک زن شروع کنید. :arrow:

            عزیز دل برادر بنده وقتی واسه اینجور چیزا ندارم برای قسمتی از پروژم دارم میکرو رو تست میکنم ببینم به دردم میخوره یا نه.من کلا میخوام یه پالس فست(Trise&fall=5-30ns) میخوام.همچین چیزی با میکرو ممکنه؟

            دیدگاه


              #51
              پاسخ : fast-Rise time=50ns pwm with avr

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

              دیدگاه


                #52
                پاسخ : fast-Rise time=50ns pwm with avr

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

                دیدگاه


                  #53
                  پاسخ : fast-Rise time=50ns pwm with avr

                  توصیه من به شما که تو میکرو تازه وارد هستید زبان بیسیک هست . خیلی ساده تر و قابل درک تر میتونید کار کنید . اگر مایل بودین ادامه میدهیم اگر نه C کار میکنیم .

                  [code=c]$regfile = "m8def.dat"
                  $crystal = 16000000
                  Config Timer0 = Timer , Prescale = 1
                  Enable Interrupts
                  Enable Ovf0
                  Enable Timer0
                  Start Timer0
                  On Ovf0 Zzz
                  Config Portb.0 = Output

                  Do



                  Loop
                  End



                  Zzz:
                  Toggle Portb.0
                  Return[/code]


                  این برنامه یک duty cycle 50% با ماکزیمم فرکانسی که یه مگا با تایمر میتواند ایجاد کند هست . برای متغیر بودن duty cycle هم یه تکنیکی دارد که در دل همین برنامه میگنجد
                  تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                  علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                  دیدگاه


                    #54
                    پاسخ : fast-Rise time=50ns pwm with avr

                    نوشته اصلی توسط pars_paya
                    توصیه من به شما که تو میکرو تازه وارد هستید زبان بیسیک هست . خیلی ساده تر و قابل درک تر میتونید کار کنید . اگر مایل بودین ادامه میدهیم اگر نه C کار میکنیم .

                    [code=c]$regfile = "m8def.dat"
                    $crystal = 16000000
                    Config Timer0 = Timer , Prescale = 1
                    Enable Interrupts
                    Enable Ovf0
                    Enable Timer0
                    Start Timer0
                    On Ovf0 Zzz
                    Config Portb.0 = Output

                    Do



                    Loop
                    End



                    Zzz:
                    Toggle Portb.0
                    Return[/code]


                    این برنامه یک duty cycle 50% با ماکزیمم فرکانسی که یه مگا با تایمر میتواند ایجاد کند هست . برای متغیر بودن duty cycle هم یه تکنیکی دارد که در دل همین برنامه میگنجد
                    استاد بزرگ ممنونم .با زبان c بیشتر اشنام دوست گلم و برنامه هایی میتونم بنویسم .مثلا فرکانسهای کم و تغییر دیوتی با int0 , int1 رو بلدم .البته میدونم اینا اصلا چیزی نیست اما کلا یادگیری عملیم بهتره تااینکه بخوام بخونم مطلبی رو .الان دقیقا مشکل من اینه که نمیدونم چجوری باید تایمر کانتر هارو تنظیم کنم .مثلا فرکانسی رو که رو پایم میخوام چجوری حساب میشه و تولید کنم حاصل چه چیزایی هست .یا چجوری باید تنظیمات تایمرارو اعمال کنم .وگرنه تو برنامه نویسی معمولی یا شرط ها و حلقه ها مشکل چندانی ندارم دوست بزرگوار

                    دیدگاه


                      #55
                      پاسخ : fast-Rise time=50ns pwm with avr

                      من منتظر اموزش دوستان هستم.ممنون میشم مبحث pwm هارو تایمر /کانتر ها رو آموزش بدین.

                      دیدگاه


                        #56
                        پاسخ : fast-Rise time=50ns pwm with avr

                        دوست عزیز
                        من که نحوه محاسبه زمان ON و OFF رو که گفتم خدمتتون فرکانس میشه "یک تقسیم بر Ton+Toff"
                        دیگه از این ساده تر؟؟؟؟؟

                        تایمر یکسری مد داره که یکی از اونها مد نرمال هست که زمان شماری میکند ، با رسیدن به عدد ماکزیمم سرریز میشه و به روال وقفه میره (عدد ماکزیمم برای تایمر 0 ، 255 هست) حالا با toggle کردن یه پین تو روال وقفه میتوانیم فرکانس مورد نظر را بسازیم.

                        خداییش از این ساده تر؟؟؟؟؟

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




                        تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                        علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                        دیدگاه


                          #57
                          پاسخ : fast-Rise time=50ns pwm with avr

                          نوشته اصلی توسط pars_paya
                          دوست عزیز
                          من که نحوه محاسبه زمان ON و OFF رو که گفتم خدمتتون فرکانس میشه "یک تقسیم بر Ton+Toff"
                          دیگه از این ساده تر؟؟؟؟؟

                          تایمر یکسری مد داره که یکی از اونها مد نرمال هست که زمان شماری میکند ، با رسیدن به عدد ماکزیمم سرریز میشه و به روال وقفه میره (عدد ماکزیمم برای تایمر 0 ، 255 هست) حالا با toggle کردن یه پین تو روال وقفه میتوانیم فرکانس مورد نظر را بسازیم.

                          خداییش از این ساده تر؟؟؟؟؟

                          واسه تنظیم کردن رجیسترها ، اولا روال کلی رو گفتم ، ثانیا دیتاشیت میکروی مورد نظر را دانلود کنید و سپس از منوی سمت چپ ، تایمر مورد نظرتان را پیدا کنید . تمام رجیسترها با تمام توضیحات در آنجا قابل مشاهده هست. بنده خودم هر وقت میخوام با avr کار کنم ، یک دیتا شیت از میکروی مورد نظرم همیشه جلوم باز هست.
                          چیزی ندارد اگر با دقت مطالعه کنید .
                          دوستان من مینویسم شما بگین درست یا نه؟
                          اول اینکه زمانمون برای فرکانس 100khz :
                          T=1/F __T=1/100k=10 µs

                          T=Ton+Toff____ duty=Ton/Ton+Toff____duty=30%____30%=Ton/10µs_____Ton=3µs &Toff=7µs

                          تا اینجا درسته؟

                          حالا تو cod vision avr میخوایم با cod wizard این تنظیماتو اعمال کنیم.خوب چیپمون atmega32 با مشخصات زیر:
                          فرکانس کاری 0 تا 16 مگاهرتز
                          چهار تا کانال pwm
                          دوتا تایمر/کانتر 8بیتی با تقسیم کننده فرکانسی مجزا و درای مد compare(تایمر / کانتر 0 و 2)
                          یک تایمر/کانتر16 بیتی با تقسیم کننده فرکانسی مجزا و دارای مدهای compare و capture. تایمر 1

                          حالا استاد بزرگوار باید این محاسبات رو چجوری در avr وارد کنم. یعنی اون 100 کیلو هرتز چجوری و با چه مولفه هایی در ساختار میکرو درست میشه؟
                          تو عکس زیر باید برای رسیدن به فرکانس و زمان مورد نظر چه پارامترهایی رو در چه مقداری قرار داد؟
                          http://uupload.ir/files/a819_1.png

                          http://uupload.ir/files/ofm6_2.png

                          حالا چون تایمر /کانتر 1 -16بیتی ازش استفاده میکنیم.اما الان دقیقا مشکل اینه که اون 100 کیلو و زمان 10 میکرو ثانیه چجوری با تنظیمات میکرو بدست میاد؟
                          http://uupload.ir/files/ofm6_2.png

                          .خب خودش که نوشته فرکانس سیستم کلاک رو 16مگا .از این 16 مگ چجوری اون فرکانس و زمانها بدست میاد؟

                          http://uupload.ir/files/6w1z_3.png


                          اضافه شده در تاریخ :
                          یعنی واقعا کسی حاظر نیست کمک کنه و بگه چجوری باید کار کنم؟

                          دیدگاه


                            #58
                            پاسخ : fast-Rise time=50ns pwm with avr

                            نوشته اصلی توسط yousef55
                            در مورد فرکانس مشکلی نیست - تا بیشتر از 500 کیلوهرتز هم میتونه تولید کنه
                            در مورد زمان سعود و نزول( البته به فارسی!!) هم بله -زمانش در حد همون 5 نانوثانیه هستش
                            در مورد دقتش هم بله - از کریستال خارجی 8 مگاهرتز استفاده کن و پالس رو با تکنیک های تایمر تولید کن تا بهترین شکل موج به دست بیاد

                            دوست عزیز میشه بگین با کدوم تایمر و چجوری؟چیزی که من دیدم با fc lk=16000000 میتونه پالسه 65 نانو تولید کنه.البته من هنوز نتونستنم تولید کنم .

                            دیدگاه


                              #59
                              پاسخ : fast-Rise time=50ns pwm with avr

                              نوشته اصلی توسط pulsetronic

                              دوست عزیز میشه بگین با کدوم تایمر و چجوری؟چیزی که من دیدم با fc lk=16000000 میتونه پالسه 65 نانو تولید کنه.البته من هنوز نتونستنم تولید کنم .
                              برای چندمین بار توضیح میدم
                              فرکانس 500 کیلوهرتز هستش
                              5 نانو ثانیه مربوط به زمان صعود و نزول پالس هست - یعنی زمانی که طول میکشه تا پالس از 0 به 1 یا برعکس برسه -(( بازم به طور دقیق تر فاصله زمانی بین فعال کردن گیت یک ترانزیستور تا تغییر حالت خروجی)) که اونم فقط به خاطر تاخیر ترانزیستورهای ماسفت پورت ایجاد میشه

                              دیدگاه


                                #60
                                پاسخ : fast-Rise time=50ns pwm with avr

                                با ای وی ار معمولی میتونی فرکانس 75 مگاهرتز رو تو خروجی تولید کنید -
                                الان تو سیستم من داره فرکانس 60 مگاهرتز توسط ای وی ار تولید و استفاده میشه

                                دیدگاه

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