ايران ويج

نسخه‌ی کامل: کمک....کار با تایمرها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
من یه سوال دارم میشه دوستان کمک کنن .من تو تایمرا مشکل دارم اگر راهنماییم کنید ممنون میشم
با استفاده از مد fast pwm (تایمر یک) یک پالس مربعی به گونه ای تولید کنید که با استفاده از دو کلید فشاری برای D.C و دو کلید فشاری برای فرکانس بتواند 100khz<f<1Mhz و دیوتی سایکل بین 35 تا 55 درصد تغییر کند.
nرا خودمون باید تعیین کنیم
F=4MHz
سلام.

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

موفق باشی.
میشه اگر میتونید کد این برنامه رو تا یه حدیشو برام بنویسید .... چون من خیلی گیج شدم[تصویر:  154fs232528.gif][تصویر:  dash1.gif]

من این مبحثو نفهمیدم کدو برنامه خوبیم پیدا نمیکنم که از روش بخونم ...اگر کسی میتونه کمکم کنه و یه سری توضیحاتم بده ممنونش میشم.
با سلام.

کلی نوشتم همه اش پاک شد!!!
خلاصه بگم، یک کتاب مرجع برای میکروکنترلر AVR تهیه کنید وقسمت تایمر و PWM اش رو با دقت بخونید.
پروژه رو 2 قسمت کنید. اول موج PWM رو بسازید، بعد از اون قابلیت تغییر فرکانس رو بهش اضافه کنید.
در مود fast PWM تایمر از مقدار 0 تا top شمارش می کنه و سرریز می کنه و مجدد از 0 شروع به شمارش می کنه.
در این بین یک رجیستر به نام OCR در اختیار دارید ، زمانی که TCNT ( رجیستر شمارشی تایمر ) به مقدار OCR برسه ، خروجی PWM فرضا 1 می شه. TCNT کارش رو ادامه می ده تا به top برسه، در همین هنگام، زمان سرریز رخ می ده و خروجی PWM فرضا 0 می شه.
با تغییر مقدار OCR می تونید دیوتی سایکل های مختلف رو ایجاد کنید. از اونجایی که TCNT از 0 تا top می شماره، فرکانس PWM ثابت خواهد بود.
---------->> پس تا اینجا موج PWM رو ساختید.
مرحله ی بعد تغییر فرکانس موج PWM هست، کافیه مقدار top رو کم و زیاد کنید، چون TCNT از 0 تا top شمارش می کنه ، با تغییر top فرکانس PWM رو هم می تونید کنترل کنید. برای این منظور رجیستر ICRx رو در اختیار دارید.
توجه:
بین دقت دیوتی سایکل و فرکانس PWM یه trade off وجود داره و کار کنترل رو با دقت ثابتی نمی شه انجام داد.
توجه:
اگر از کدویزارد استفاده کنید، پیکر بندی اولیه رجیستر ها رو خود کدویزارد انجام می ده.

موفق باشید.
یعنی مقدار اولیه (TCNT) رو صفر درنظر بگیرم؟
بستگی داره از چه روشی استفاده کنید!
در روشی که بالا ارائه دادم، مقدار top رو دست می زنیم و اجازه می دیم TCNT از 0 شمارش کنه ...

موفق باشید.
یه سوال دیگه
ببخشید میشه روابط مربوط به تایمر یک مد fast pwm رو بگید ... اخه من توی هرکتاب و جزوه ای یه چیزی پیدا میکنم  ):
شخصا از هیچ رابطه ای استفاده نمی کنم. شما اساس کار رو بدونید، روابط رو خودتون می سازید ...
طبق توضیحات بالا اگر کارتون رو می خواید انجام بدید ، برید جلو و تحلیل کنید، هرجا مشکل داشتید مطرح کنید، تا دوستان راهنمایی کنن.

جهت راهنمایی: زمان شمارش یک واحد تایمر رو با تنظیماتی که لحاظ می کنید محاسبه کنید.
مثال: زمان شمارش یک واحد TCNT برابر 1us
زمان یک سیکل کامل PWM می شه زمان شمارش 0 تا top رجیستر TCNT
مثال: مقدار top برابر 255 باشه ، 256 تا 1us می شه 256us
برای بدست آوردن فرکانس این مقدار رو معکوس کنید.
مثال: فرکانس PWM می شه 1 به روی 256us یعنی 3.906KHz

همینطور که می بینید ، روابط خودشون در میاد، نیازی به حفظ کردن نداره ...

موفق باشید.
خب پس برای OCR که باهاش محدوده ی دیوتی سایکل رو مشخص میکنن باید چیکار کنم؟؟؟
من توی این مبحث کتاب زیاد خوندم ولی واقعا گیج شدم استادمونم یه نمونه سوالم برامون حل نکرده :divar:
شما کافیه که یک کتاب خوب رو ، خیلی خوب بخونید، حتی اگر نیازه چند بار بخونیدش.
دیوتی سایکل ماهیتش چی هست؟
برای اینکه یه عدد بامسما برای عرض پالس ارائه بشه و راحت یه مفهومی رو برسونه، در نظر گرفتیم عرض پالس رو بر حسب درصد بیان کنیم. درسته؟
وقتی TCNT از 0 تا 255 می شماره، 
OCR = 0 یعنی D.C = 0%
OCR = 127 یعنی D.C = 50%
OCR = 255 یعنی D.C = 100%
به همین راحتی!
بین رقم رجیستر و "درصد" یک تناسب ایجاد کنید. همینطور که می بینید رابطه خودش ساخته می شه ...

اگر دقیقا بدونید چه اتفاقی داره می یفته، همه چیز واضح هست، مسئله رو یه جور دیگه ببینید ...

موفق باشید.
درود وسلام

یکی از روشها و روابطش را برگزینید و درون نرم افزار شبیه سازی کنید. با کمی دستکاری در اعداد و کد به نتیجه دلخواه خواهید رسید.
فقط بر روی یادگیری متمرکز نباشید .اگر کار را آغاز کنید در حین کار هم تجربه میشود و هم ماندگاری درک ما از کارکرد دستگاهمان بیشتر میشود.Shy

سپاس