اطلاعیه

Collapse
No announcement yet.

مشکل با PWM

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با PWM

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

    من می خوام دو تا عدد بدم که یکی بین 0تا 100 (تعیین کننده دیوتی)و یک بین 1 تا 2000 (تعیین کننده محدوده فرکانسی) اما انگار خروجی PWM حداقل 1.2 کیلو هرتزه. من باید چه کار کنم.؟
    کسی میدونه با AVR میشه این کار رو انجام داد یا نه ؟
    یکی گفت با آی سی 555 میشه من چنتا مدار دیدم ولی همشون اینجوری بودن که یا فرکانسشون ثابت بود و دیوتی تغییر می کرد یا فرکانس شون که تغییر می کرد دیوتی هم تغییر می کرد؟

    ممنون

    #2
    پاسخ : مشکل با PWM

    با سلام
    دوست عزیز همون طوری که میدونید فرکانس پالس PWM رو میشه از فرمول زیر محاسبه کرد:

    Fpwm=[(PR2+1)]*4*Tosc*(Postscale 1 or 4 or 16)

    اگه شما به بالای جدولی که گذاشتین نگاه کنید اونجا نوشته این مقدار نصب به اوسیلاتور 20Mhz هستش! خوب حالا اگه این 20 رو به 40 تغییر بدی حتما پالسی با فرکانسهای پایین تر از 1.22 کیلوهرتز میتونی تولید کنی. البته پیش از اینکه از اوسیلاتور 40 استفاده کنی باید به دیتاشیت میکرو مراجعه کنید چون PIC16F877A نمیتونه اوسیلاتور 40MHz رو ساپورت کنه و بهتر از PIC18F452 استفاده کنید.

    موفق باشید

    دیدگاه


      #3
      پاسخ : مشکل با PWM

      سلام
      فکر می کنم بشه بصورت نرم افزاری PWM رو تولید کرد کسی این کار رو کرده چون یک جتئی تو سایت خوندم که خوب کار نمی کنه
      آیا CCS خودش کتابخونه ای واسه این کار داره یا باید برنامش رو خودمون بنویسیم. آقا سعید از برنامه تون ممنون اما فکر نمیکنم نیازی به دستورات #bite #bit باشه من بدونه استفاده از اینا جواب گرفتم شما با mikroC نوشته بودین؟یعنی پایه ها رو ست نکردم.

      دیدگاه


        #4
        پاسخ : مشکل با PWM

        نوشته اصلی توسط masiha308
        سلام
        فکر می کنم بشه بصورت نرم افزاری PWM رو تولید کرد کسی این کار رو کرده چون یک جتئی تو سایت خوندم که خوب کار نمی کنه
        آیا CCS خودش کتابخونه ای واسه این کار داره یا باید برنامش رو خودمون بنویسیم. آقا سعید از برنامه تون ممنون اما فکر نمیکنم نیازی به دستورات #bite #bit باشه من بدونه استفاده از اینا جواب گرفتم شما با mikroC نوشته بودین؟یعنی پایه ها رو ست نکردم.
        با سلام
        من یه زمانی که نمیدونستم CCP چی یه برنامه واسه روبات مسیریاب با استفاده از کامپایلر PICBasic PRO نوشتم که به صورت نرم افزاری تونستم پالس PWM تولید کنم!!! بعدها متوجه شدم که این پالسی که من درست کردم همش کشک بود! البته ناگفته نمونه که این روبات ما خیلی هم خوب جواب میداد و سر هر پیچ هم به خوبی دور میزد حالا نمیدونم تو CCS هم میشه این کارو کرد یا نه؟! ولی به نظر من اگه یه خورده به تایمرها تسلط داشته باشیم میتونیم این پالس رو روی پایه هایی غیر از پایه های CCP تولید کرد.
        در مورد استفاده از دستور bit و byte نیز باید بگم بعضی مواقع به جایه استفاده از دستور بهتره که به صورت مستقیم دست به ریجستری میکروها برد. به نظرم من این طوری آدم بهتر میفهمه که فلان دستور از کجا اومده و کار اصلیش چی! من یه جایی خونده بودم که استفاده از دستورات اسمبلی در محیط C انعطافپذیری رو بالا میبره. :redface:
        من تو میکرو سی یه بار نوشتم ولی جواب نگرفتم!! :sad:

        موفق باشید

        دیدگاه


          #5
          پاسخ : مشکل با PWM

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

          System Clock Frequency=(Oscillator Frequency)/prescaler=4,000,000/8=500,000hz


          F_pwmm =( System Clock Frequency)/〖pwm〗_Resolution=500,000/1024 =488.28Hz HHHHHHHHHHHHHHHHHHHHH

          در این مثال فرکانس نوسان ساز 4 مگاهرتز هست .میدونیم که فرکانس داخلی میکرو که فعالیتهای میکرو بر اساس اون صورت میگیره در اکثر میکروکنترلرها 1/4 فرکانس اوسیلاتوره(بجز سری 18F به بالا در pic وسری XMEGA در AVR و میکروکنترلرهای ARM که بخش دیگری به اسم PLL دارند و محاسبات اسیلاتور اونها از انعطاف بیشتری برخوردار هست.)و prescaler هم نسبت تقسیم pwm clock هست.
          یکی از عمومی ترین کاربردهای pwm کنترل توان الکتریکی و یا همون کنترل دامنه ولتاژه(تبدیل مقادیر دیجیتال به ولتاژ آنالوگ و ایجاد تغیرات سریع در مقدار اون که حالت نوسان ایجاد میکنه و حتی در باز سازی صدای ضبط شده و سایر شکل موجها به کار میره).حالت یا مُد مناسب برای این کار، مد Fast pwm هست.
          از طرفی در این مد درجه تفکیک یا همون resulotion طبقه pwm در میکروکنترلرها اکثرا 2^8 و 2^9 و 2^10 بیت یعنی 256 و 512 و 1024 بیت هست. به طور اختصار میشه گفت که با توجه به ساختار و نحوه کار بلوک pwm در میکرو کنترلر برای تائین دوره تناوب در این بخش عددی رو بین صفر و حد اکثر (مقدار ممکن برای درجه تفکیک) رو در برنامه تایین میکنیم .
          با شروع به کار بلوک pwm پایه خروجی مربوط به این بلوک سطح یک منطقی میشه و تایمر مربوطه(تایمر سخت افزاری یا نرم افزاری) به صورت اتوماتیک شروع به شمارش میکنه و بر اساس منبعی که به عنوان clock انتخاب کردیم ، تایمر به صورت صعودی شروع به شمارش میکنه تا به عدد مورد نظر ما که در برنامه تائین کردیم برسه .
          در این لحظه و ضعیت پایه خروجی که تا به حال یک بود(T_on ) به صفر منطقی تغییر میکنه و تا رسیدن تایمر به عدد نهایی درجه تفکیک (256 , 512 or 1024 ) این وضعیت رو حفظ میکنه(T_off ) و داریم:
          Duty. Cycle=T_on/(T_on+T_off )
          که این یعنی همون نسبت جزء به کل .
          به طور مثال اگر درجه تفکیک 256 باشه و ما هم عدد 128 رو در دستورات pwm میکرو انتخاب کرده باشیم D.C به قرار زیر خواهد بود:
          D.C = 128/(128+128)= 0.5
          و اگر از یک فیلتر انتگرال گیر(فیلتر پایین گذر RC ) مناسب در خروجی استفاده کنیم میتونیم سطح زیر منحنی را حساب کنیم و یا بعبارت ساده تر میتونیم ولتاژ مستقیم (DC) در خروجی تولید کنیم.و رابطه این ولتاژ با دوره تناوب یا همون D.C در ذیل بیان شده :
          Vcc×D.C=5×0.5=2.5v 〖Vdc〗_out=
          که در این فرمول VCC سطح ولتاژ مدار در منطق یک (که به طور معمول 5v )هست اما با روشهایی مثل Level Shifting (استفاده از دروازه هاب منطقی کلکتور باز ) میشه این سطح ولتاژ رو تا چند ده و یا چند صد ولت نیز بالا برد و به مقادیر دلخواه دست پیدا کرد.
          *اگر هدف از استفاده بلوک pwm کنترل ولتاژ و توان dc باشه فرکانس pwm اهمیت ویژه نداره و تنها در انتخاب و محاسبات مدار انتگرال گیر تاثیر خواهد داشت .از یاد نبریم که در این گونه مدارات قرکانس ولتاژ ریپل خروجی ما برابر با فرکانس پالس pwm است و بالا تر بودن آن در کاهش مقادیر خازنهای صافی موثر خواهد بود...



          موفقیت یک فرایند است نه یک اتفاق...

          ******** استفاده از گزينه تشكر نشانه اهميت و احترام شما به پيگيري شخص نظر دهنده است ********

          دیدگاه

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