اطلاعیه

Collapse
No announcement yet.

آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

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

    آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

    از اساتید خواهش میکنم یک نفر به من یاد بده چجوری با تایمر ها فرکانس مورد نظرمو تولید کنم .همه تایمر ها رو هم خوندم ولی اصلا نمیتونم.از یکی از اساتید میخوام به من بگه چجوری فرکانس و تولید کنم.مثلا 100 کیلو رو با یک مگا 16.
    خب وقتی کد ویژن را باز میکنیم اول فرکانس کلاک میخواد.با کریستال میشه رو 16مگ تنظیم کرد.پورتها هم که مشخصه.حالا تایمر ها.
    اینجا مهمه و نمیدونم چیکار کنم.3تا مد مختلف داریم.اول اینکه چه تنظیماتیو باید تو کد ویزارد اعمال کنم.و بعد از اعمال کد ویزارد تو کد خط های برنامه باید چیا نوشته بشه.وقفه ها دخیل هستند یا نه.
    یه نفر یه مورد برام توضیح بده بقیه شو دیگه فکر کنم خودم بتونم.ممنون میشم اگه اساتید کمکم کنن.

    :rolleyes: :rolleyes: :rolleyes: :smile: :smile: :smile:

    #2
    پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

    سلام
    اگه خوب یادم مونده باشه برای تولید پالس مربعی با استفاده از تایمر میکرو باید عددی را در رجیستر TCNT قرار بدی. حالا اگه مثلا با اسیلاتور میکروی 16 مگا هرتز می خوای 100 کیلو بگیری باید اینطوری بنویسی:
    زمان تناوب 100 کیلو میشه: 10 میکرو ثانیه یعنی میکرو باید در این زمان اور فلو بده یعنی با یه تقسیم فرکانسی باید فرکانس کلاک تایمر میکرو رو کم کنی مثلا یک مگاهرتز (زمان تناوب 1 میکرو ثانیه). پس میکرو باید ده تا بشماره (با فرکانس یک مگا و با توجه به زمان تناوب 10 میکرو ثانیه) پس تایمر 8 بیتی براش استفاده می کنی و عدد TCNT رو روی 10 تا کمتر از 255 قرار میدی البته در مبنای هگز (245 یا 246) و چون تایمر رو به بالا میشمره از یکی از این اعداد شروع کرده و به 255 می رود و با رسیدن با ماکزیمم اوور فلو داده و شما می توانید خروجی تایمر استفاده شده رو فعال کنید و شکل موج را چک کنید.

    دیدگاه


      #3
      پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

      نوشته اصلی توسط FSS_ASA
      سلام
      اگه خوب یادم مونده باشه برای تولید پالس مربعی با استفاده از تایمر میکرو باید عددی را در رجیستر TCNT قرار بدی. حالا اگه مثلا با اسیلاتور میکروی 16 مگا هرتز می خوای 100 کیلو بگیری باید اینطوری بنویسی:
      زمان تناوب 100 کیلو میشه: 10 میکرو ثانیه یعنی میکرو باید در این زمان اور فلو بده یعنی با یه تقسیم فرکانسی باید فرکانس کلاک تایمر میکرو رو کم کنی مثلا یک مگاهرتز (زمان تناوب 1 میکرو ثانیه). پس میکرو باید ده تا بشماره (با فرکانس یک مگا و با توجه به زمان تناوب 10 میکرو ثانیه) پس تایمر 8 بیتی براش استفاده می کنی و عدد TCNT رو روی 10 تا کمتر از 255 قرار میدی البته در مبنای هگز (245 یا 246) و چون تایمر رو به بالا میشمره از یکی از این اعداد شروع کرده و به 255 می رود و با رسیدن با ماکزیمم اوور فلو داده و شما می توانید خروجی تایمر استفاده شده رو فعال کنید و شکل موج را چک کنید.


      ممنون از شما .
      مهندس یعنی به این صورت باید عمل کنم ؟



      http://s7.picofile.com/file/8250074926/2_1.png

      دراین مرحله اون گزینه اوورفالو رو هم تیک زدم

      http://s6.picofile.com/file/8250074942/3_1.png

      http://s6.picofile.com/file/8250074968/4_1.png

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

      دیدگاه


        #4
        پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

        ببین فرکانس کلاک رو بذار روی 8Mhz داخلی و به تب تایمر برو اون سری گفتم که برای تولید فرکانس 100 کیلو هرتز شمارنده یا تایمر 8 بیتی کافیه. توی تب تایمر Timer0 که هشت بیتی هست رو انتخاب کن و فرکانس شمارش تایمر رو روی 1MHz قرار بده خروجی تایمر رو روی Toogle... بذار و تیک وقفه تایمر رو بزن و Timer Value رو F5 Hex وارد کن.
        اگه شوالی داشتی بحتما بپرس.

        دیدگاه


          #5
          پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

          نوشته اصلی توسط FSS_ASA
          ببین فرکانس کلاک رو بذار روی 8Mhz داخلی و به تب تایمر برو اون سری گفتم که برای تولید فرکانس 100 کیلو هرتز شمارنده یا تایمر 8 بیتی کافیه. توی تب تایمر Timer0 که هشت بیتی هست رو انتخاب کن و فرکانس شمارش تایمر رو روی 1MHz قرار بده خروجی تایمر رو روی Toogle... بذار و تیک وقفه تایمر رو بزن و Timer Value رو F5 Hex وارد کن.
          اگه شوالی داشتی بحتما بپرس.
          یک دنیا ممنون مهندس چشم انجام بدم اگه سوالی بود حتما میپرسم.

          اضافه شده در تاریخ :
          نوشته اصلی توسط FSS_ASA
          ببین فرکانس کلاک رو بذار روی 8Mhz داخلی و به تب تایمر برو اون سری گفتم که برای تولید فرکانس 100 کیلو هرتز شمارنده یا تایمر 8 بیتی کافیه. توی تب تایمر Timer0 که هشت بیتی هست رو انتخاب کن و فرکانس شمارش تایمر رو روی 1MHz قرار بده خروجی تایمر رو روی Toogle... بذار و تیک وقفه تایمر رو بزن و Timer Value رو F5 Hex وارد کن.
          اگه شوالی داشتی بحتما بپرس.

          دوست عزیز تیک overflow رو بزنم یا compare

          اضافه شده در تاریخ :
          [quote author=genetech link=topic=120413.msg786807#msg786807 date=1462462512]
          یک دنیا ممنون مهندس چشم انجام بدم اگه سوالی بود حتما میپرسم.

          اضافه شده در تاریخ :

          دوست عزیز تیک overflow رو بزنم یا compare

          overflow رو زدم و فرکانس خروجی 5کیلوهرتز شد

          دیدگاه


            #6
            پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

            overflow تا هر بار که تایمر سر ریز داد مقدار تایمر رو دوباره در رجیستر TCNT0 قرار بدی چون اینکار ب صورت سخت افزاری انجام نمی شود و حتما باید به صورت نرم افزاری داخل روتین تایمر انجام شود.

            دیدگاه


              #7
              پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

              نوشته اصلی توسط FSS_ASA
              overflow تا هر بار که تایمر سر ریز داد مقدار تایمر رو دوباره در رجیستر TCNT0 قرار بدی چون اینکار ب صورت سخت افزاری انجام نمی شود و حتما باید به صورت نرم افزاری داخل روتین تایمر انجام شود.


              دوست عزیز انجام دادم اما فرکانس 5 کیلو هرتز میشه

              دیدگاه


                #8
                پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                بازم جای امید هست :applause:
                اگه تمام مقادیر رو درست انتخاب کرده باشی باید جواب حول و حوش 100 کیلو باشه.
                اگه من نرم افزارهای مورد نیاز رو داشتم حتما با عکس جواب سوال شما رو میدادم اما چندین سال هست که با اون نرم افزار ها کار نمی کنم.
                ولی روال اصلی همینه که گفتم حالا اگه با کمی سعی و خطا به نتیجه نرسیدی بگو که اونا رو پیدا کنم و نصب کنم تا به هدفت برسی... :icon_razz:
                اما انشالله کار به اونجاها نکشه.
                یه سوال: هدفت از این کار چیه؟

                دیدگاه


                  #9
                  پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                  نوشته اصلی توسط FSS_ASA
                  بازم جای امید هست :applause:
                  اگه تمام مقادیر رو درست انتخاب کرده باشی باید جواب حول و حوش 100 کیلو باشه.
                  اگه من نرم افزارهای مورد نیاز رو داشتم حتما با عکس جواب سوال شما رو میدادم اما چندین سال هست که با اون نرم افزار ها کار نمی کنم.
                  ولی روال اصلی همینه که گفتم حالا اگه با کمی سعی و خطا به نتیجه نرسیدی بگو که اونا رو پیدا کنم و نصب کنم تا به هدفت برسی... :icon_razz:
                  اما انشالله کار به اونجاها نکشه.
                  یه سوال: هدفت از این کار چیه؟
                  میخوام برای تست یک مدار دیگه از AVR استفاده کنم .
                  من میخوام یک pwm با قابلیت تنظیم فرکانس و دیوتی داشته باشم .بازه فرکانس از 1هرتز تا 1مگا.ب دیوتی مثلا 5تا 95.و بعد با فلیپ فلاپ ها بینشون اختلاف فاز ایجاد کنم.

                  البته منی که هنوز همون فرکانس دلخواهمو نمیتونم ایجاد کنم پس با AVR هم نموتم فرکانس و دیوتی رو تنظیم کنم البته مدونم دیوتی با فعال کردن INT0 و INT1 وتغییر OCRها مثلا OCR0++ میشه تنظیم کرد داد.

                  الان که میگم 100 کیلو واسه اینه که میخوام ببینم اصلا AVR به دردم میخوره یا نه.دلیل رو آوردن به AVR هم اینه که IC های آنالوگ مثل TL494 چون تولید فرکانسشون خازن مقاومتیه تو یه فرکانسی به بعد شکل موجشون به خاطر تاخیر خازن ها تو لبه های بالا رونده و پایین رونده دچار مشکل میشن ولی در میکرو اینجوری نیست.

                  ممنون میشم باز هم کمکم کنید خیلی لازمش دارم .راستش اونجوری که شما گفتین برنامه رو نوشتم حتی مقدار overflow رو هم تغییر دادم اما از 50 کیلو بالا نرفت.

                  دیدگاه


                    #10
                    پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

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

                    دیدگاه


                      #11
                      پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                      یه چیزی که یادم رفت از شما بپرسم اینه که چطوری می خوای به میکرو اطلاعات لازم رو بدی؟ با کی پد یا میکرو سوئیچ؟؟؟

                      دیدگاه


                        #12
                        پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                        نوشته اصلی توسط FSS_ASA
                        یه چیزی که یادم رفت از شما بپرسم اینه که چطوری می خوای به میکرو اطلاعات لازم رو بدی؟ با کی پد یا میکرو سوئیچ؟؟؟
                        با کی پد بهتره .اما خوب برای من تازه وارد سخته.من تو فرکانسش موندم هرچی زور میزنم 100 کیلو نمیشه.ممنون از شما دوست عزیز.مرسی که کمک می کنین.

                        دیدگاه


                          #13
                          پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                          انشالله با کمک هم و سایر دوستان جواب می گیرید. اولش من فکر کردم فقط می خوای ببینی این کار شدنیه یا نه ولی الان در غالب یه پروژه مطرحش کردی!
                          خوب تا جایی که بتونم و در توانم باشه بهت کمک می کنم.
                          خوب فرض کن ما فرکانسی رو مطابق اونچه که می خوای تولید کنیم مگه نمی خوای در واقعیت ازش جواب بگیری؟
                          چون ابزارهایی مثل پروتئوس در برخی از موارد آدم رو گمراه می کنن پس به عقیده من اونچه که انجام میدی رو باید در روی یک برد میکرو و با اسیلوسکوپ تستش کنی.
                          برای تولید هر فرکانسی (بدون دیوتی سایکل) که این فرکانس حتما باید از فرکانس کاری تایمر کمتر باشه، باید عددی رو در داخل روتین تایمر به داخل رجیستر TCNTx بریزی.
                          مثلا:
                          فرکانس میکرو: 16 مگا هرتز
                          فرکانس تایمر: 2 مگا هرتز
                          حال میتونی فرکانس رو از رابطه زیر بدست بیاری:
                          fOC0=fmicro/(N(1+Max))[left][/left

                          Max رو برای تایمر 8 بیتی صفر، 255 بزار و N هم نسبت تقسیم فرکانس میکرو به فرکانس تایمره که اینجا 8 میشه.
                          اگه این تنظیمات رو برای داشتن فرکانس 100 کیلو انجام بدی Max بدست میاد که میتونی این رقم رو از 255 کم کنی و در TCNT0 قرار بدی.
                          چون میکرو در وضعیت نرمال رو به بالا شمارش می کنه برای همین عدد بدست آمده رو از مقدار نهایی کم می کنیم.
                          برای بدست آوردن شکل موجی با فرکانس و دیوتی سایکل دلخواه باید از مدهای دیگر تایمر استفاده کنی که بعدا بهت میگم.
                          سعی کن این رو تا اینجا انجام بدی و ازش نتیجه بگیری...

                          دیدگاه


                            #14
                            پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                            نوشته اصلی توسط genetech
                            با کی پد بهتره .اما خوب برای من تازه وارد سخته.من تو فرکانسش موندم هرچی زور میزنم 100 کیلو نمیشه.ممنون از شما دوست عزیز.مرسی که کمک می کنین.
                            سلام دوست عزیز که وقت میزارین و کمک میکنین.اول اینو خدمتون عرض کنم که هم برای میکرو برد ساختم و هم پراگرام میکنم و با اسیلوسکوپ هم چک میکنم.اصلا دنبال جواب نرم افزار نیستم و عملی کار میکنم.اما با تمام توضیحات شما من با اعمال اون تنظیمات و پروگرام کردم میکرو روی اوسکوپم فرکانس 25کیلو رو دارم و هرچی اعداد رو تغییر میدم یعنی همون مقدار 255 رو باز هم تغییری حاصل نمیشه. :angry:

                            دیدگاه


                              #15
                              پاسخ : آموزش سریع و عملی تولیدموج مربعی با فرکانس دلخواه

                              کار خوبی میکنید که یکراست رفتین و دارین سخت افزاری کار میکنین. هر چند که زیاد دوستآ‌ ندارم کل کاری رو که میخاین رو وقت بگذارم و انجامش بدم اما تلاش می کنم بتونی قدم ها رو خودتون ورداری. نمیدونم به قولی برقی هستین یا نه ولی من فکر می کنم شما فرکانس میکرو رو روی 16 مگ تنظیم نمی کنین. چون توی ویزارد فقط فرکانس رو تنظیم میکنیم تا مبنایی زمانی درست بشه و برای تنظیم فرکانس باید جداگانه فیوز بیت ها رو منطبق بر فرکانس (مثلا 16 مگ) برنامه ریزی کنین. البته ببخشید شاید به نکته ساده ای اشاره کردم.

                              اضافه شده در تاریخ :
                              چون من برد میکرو دم دستم ندارم از نرم افزار استفاده میکنم ولی با تنظیمات اخیر فرکانس 50 کیلو میگیرم. ولی قبلا سر یه برنامه ای با نرم افزار گیرهای الکی داشتم.
                              بگذریم حالا شما تنظیماتی رو که انجام میدین رو به همراه نتایج برام بفرستین تا گه از دستم بر بیاد کمکتون کنم

                              دیدگاه

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