اطلاعیه

Collapse
No announcement yet.

تولید موج با فرکانس متغیر توسط avr

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

    تولید موج با فرکانس متغیر توسط avr

    با سلام
    میخواستم یه سیگنال متغیر مربعی با avr تولید کنم و فرکانس خروجی رو بتونم کنترل کنم . و میخوام این سیگنال توسط واحد تایمر /کانتر باشه بازه فرکانسم 1HZ تا 10KHZ هست دیوتی سایکلشم 50 درصد ُ دامنشم که همون ولتاژ میکرو(5ولت) است . مشکلم توی تغییر فرکانس خروجیه و کنترول اونه . نمیدونم از چه ریجستری برای کنترول فرکانس و کمو زیاد کردنش استفاده کنم. من با کامبایلر کد ویژن کار میکنم اساتید محترم لطفا راهنماییم کنین و یه راه خوب که بقیه واحد های میکرو در گیر این تولید موج نباشن بگین. ممنون

    #2
    پاسخ : تولید موج با فرکانس متغیر توسط avr

    نوشته اصلی توسط behnam909 نمایش پست ها
    نمیدونم از چه ریجستری برای کنترول فرکانس و کمو زیاد کردنش استفاده کنم.
    سلام،
    رجیسترهای Captuer/Compar از تایمر مربوطه!
    ببخشی دیر وقته!
    ◙◙◙◙◙ میخوام به دوستان یه کتاب معرفی کنم! وقت کردید، بخونید - اسمش هست قرآن، سال نشر 10، نویسنده: خدا . ◙◙◙◙◙

    دیدگاه


      #3
      پاسخ : تولید موج با فرکانس متغیر توسط avr

      نوشته اصلی توسط ubub نمایش پست ها
      سلام،
      رجیسترهای Captuer/Compar از تایمر مربوطه!
      ببخشی دیر وقته!
      واقعا ممنون لطف کردین. فقط میشه یه تیکه کد نمونه برام بزاری تا درکش راحت بشه؟

      دیدگاه


        #4
        پاسخ : تولید موج با فرکانس متغیر توسط avr

        درود.
        بهترین راه استفاده از مد CTC تایمر هستش. برای مثال تایمر ۲ میکروی مگا۸ رو درنظر بگیر. کد خاصی نداره کلا یک رجیستر هست که برا پیکربندی تایمر یک بار برای همیشه مقدار دهی میکنی:
        کد:
        TCCR2=0x1B;
        با این مقدار دهی مد CTC فعال و فرکانس شمارش تایمر به اندازه یک شانزدهم فرکانس اصلی میکرو(من ۸مگ درنظر گرفتم) تنظیم میشه. بنابراین حداکثر فرکانسی که میتونی تولید کنی نزدیک ۱۲۵ کیلو و حداقل حدود ۴۸۰ هرتز خواهد بود. تو هر دیتاشیت AVR که به بخش CTC تایمر ۲ مراجعه کنی فرمول*ها رو نوشته . یه نگاه بندازی متوجه میشی باید چطور حساب کتاب کنی.
        و اما برای تغییر فرکانس کافیه رجیستر زیر را از ۱ تا ۲۵۵ مقدار دهی کنی:
        کد:
        OCR2=Your value;
        فقط باید پورت مربوط به OC2 تایمر را به عنوان خروجی تعریف کنی تا ازش سیگنال بگیری.
        حالا این مد CTC چطور کار میکنه؟ هیچی! تایمر با فرکانسی که براش تعریف کردی شروع میکنه به شمردن تا به مقدار OCR2ای که شما تعیین میکنی برسه. با رسیدن به این مقدار تایمر صفر میشه و دوباره از نو شروع میکنه به شمارش تا اتفاق قبلی تکرار بشه. خروجی OC2 هنگامی که تایمر صفر میشه تغییر وضعیت میده. مقدار duty cycle هم همیشه روی ۵۰ هستش. کافیه با تغییر OCR2 بازه زمانی صفر شدن تایمر را کم و زیاد کنی. به همین راحتی.
        جدیدترین ویرایش توسط Mostafa.y; ۲۲:۴۱ ۱۳۹۶/۱۱/۱۰.

        دیدگاه


          #5
          پاسخ : تولید موج با فرکانس متغیر توسط avr

          نوشته اصلی توسط Mostafa.y نمایش پست ها
          درود.
          بهترین راه استفاده از مد CTC تایمر هستش. برای مثال تایمر ۲ میکروی مگا۸ رو درنظر بگیر. کد خاصی نداره کلا یک رجیستر هست که برا پیکربندی تایمر یک بار برای همیشه مقدار دهی میکنی:
          کد:
          TCCR2=0x1B;
          با این مقدار دهی مد CTC فعال و فرکانس شمارش تایمر به اندازه یک شانزدهم فرکانس اصلی میکرو(من ۸مگ درنظر گرفتم) تنظیم میشه. بنابراین حداکثر فرکانسی که میتونی تولید کنی نزدیک ۱۲۵ کیلو و حداقل حدود ۴۸۰ هرتز خواهد بود. تو هر دیتاشیت AVR که به بخش CTC تایمر ۲ مراجعه کنی فرمول*ها رو نوشته . یه نگاه بندازی متوجه میشی باید چطور حساب کتاب کنی.
          و اما برای تغییر فرکانس کافیه رجیستر زیر را از ۱ تا ۲۵۵ مقدار دهی کنی:
          کد:
          OCR2=Your value;
          فقط باید پورت مربوط به OC2 تایمر را به عنوان خروجی تعریف کنی تا ازش سیگنال بگیری.
          حالا این مد CTC چطور کار میکنه؟ هیچی! تایمر با فرکانسی که براش تعریف کردی شروع میکنه به شمردن تا به مقدار OCR2ای که شما تعیین میکنی برسه. با رسیدن به این مقدار تایمر صفر میشه و دوباره از نو شروع میکنه به شمارش تا اتفاق قبلی تکرار بشه. خروجی OC2 هنگامی که تایمر صفر میشه تغییر وضعیت میده. مقدار duty cycle هم همیشه روی ۵۰ هستش. کافیه با تغییر OCR2 بازه زمانی صفر شدن تایمر را کم و زیاد کنی. به همین راحتی.
          مهندس واقعا ممنون واسه توضیحاتی که دادین . من تست کردم و به یه مشکلی برخوردم تغییرات فرکانس فقط توی یه بازه انجام میشه ینی از 1 تا255 تغییر نمیکنه برای مثال وقتی فرکانس داخلیو روی 4 مگ میزارم از 19 تا 25 وقتی مقدار میدم تغییر فرکانس دارم بد فرکانس صفر میشه و دوباره از 80 تا 87 تغییر فرکانس دارم و دوباره صفر میشه.
          ممنون میشم راهی رو یشنهاد کنین این مشکلو نداشته باشم چون بازه تغییر فرکانس واقعا کمه

          دیدگاه


            #6
            پاسخ : تولید موج با فرکانس متغیر توسط avr

            دوست عزیز اگر مراحلی که عرض کردم با دقت انجام داده باشید قاعدتا نباید مشکلی پیش بیاد. اگر تایمر را به درستی در مد CTC پیکربندی کرده باشید و ... فرکانس در تمام بازه OCR2=0 تاOCR2=254 تغییر خواهد کرد. یه مقدار دیگه تلاش کنید انشالله که جواب میگیرید. راستی OCR2 را چطوری مقدار دهی میکنی و فرکانس را چطوری اندازه میگیری؟
            یه نکته برای بعد از اینکه تو موارد بالا موفق شدی. برای اینکه بازه تغییر فرکانس بیشتری را داشته باشی بهتره از تایمر ۱ استفاده کنی. همه چی مشابه حالت قبله با این تفاوت که رجیسترها ۱۶ بیتی هستن. یعنی اینجا میتونی مقادیر رو از ۰ تا ۶۵۵۳۵ تغییر بدی.
            جدیدترین ویرایش توسط Mostafa.y; ۱۷:۵۵ ۱۳۹۶/۱۱/۱۵.

            دیدگاه


              #7
              پاسخ : تولید موج با فرکانس متغیر توسط avr

              سلام دوستان کسی هست نحوه فرکانس متغییر با بسکام رو توضیح بده؟؟؟؟ممنون

              دیدگاه


                #8
                پاسخ : تولید موج با فرکانس متغیر توسط avr

                نوشته اصلی توسط erfa66 نمایش پست ها
                سلام دوستان کسی هست نحوه فرکانس متغییر با بسکام رو توضیح بده؟؟؟؟ممنون
                منم همچین سوالی دارم
                در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
                گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

                دیدگاه

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