اطلاعیه

Collapse
No announcement yet.

مشکل در کنترل دیوتی سایکل

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

    مشکل در کنترل دیوتی سایکل

    سلام بر دوستان
    من قصد تولید موج pwm در پایه میکرو غیر از پایه های اختصاصی pwm دارم.
    میخوام فرکانس 50 کیلوهرتز ثابت تولید کنم. که بتوانم دیوتی سایکل ان را بعدا نیز راحت تغییر دهم.
    این برنامه را نوشتم. ابتدا با فرکانس 500 هرتز طراحی کردم خوب کار میکرد. میزان دیوتی سایکل را داخل یک حلقه قرار دادم که خودش کم زیاد میشود. فایل پروتیوس را ضمیمه کردم.
    اما برای فرکانس 50 کیلوهرتز با مشکل مواجه شدم. نمیدونم چرا نمیتونم میزان دیوتی سایکل را کنترل کنم.
    برنامه اینه :

    $regfile = "m32def.dat"
    $crystal =32000000

    dim mpwm(1) as word
    dim count as word

    dim i as word
    config timer0 = TIMER , Prescale = 1

    timer0 = 255
    on timer0 isr



    config PORTA.0=OUTPUT
    enable timer0
    enable interrupts

    do
    for i=1 to 900
    mpwm(1)=900-i
    waitus 50
    next
    loop
    end

    isr:
    stop timer0

    count=count+95

    incr count
    if mpwm(1) > count then
    porta.0=1
    else
    porta.0=0
    endif
    if count> 99 then
    count=0
    endif
    timer0=255
    start timer0
    return

    همچنین روش طراحی ام برای فرکانس 500 هرتز به شکل زیر است.



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

    #2
    پاسخ : مشکل در کنترل دیوتی سایکل

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

    دیدگاه


      #3
      پاسخ : مشکل در کنترل دیوتی سایکل

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

      سلام. در این پست که من نگفتم نمیخوام از تایمرها استفاده نکنم. فقط گفتم نمیخوام از پایه های اختصاصی مربوط به pwm استفاده کنم. البته به این نتیجه هم رسیدم بهترین کار همون استفاده از تایمر کانترها است.

      دیدگاه


        #4
        پاسخ : مشکل در کنترل دیوتی سایکل

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

        دیدگاه


          #5
          پاسخ : مشکل در کنترل دیوتی سایکل

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

          سلام. بله. البته من برای انجام پروژه ای حتما باید روی پایه های معمولی PWM تولید کنم و کردم. در فرکانس 500 هرتز طبق برنامه ای که نوشتم درست کار میکنه اما برای فرکانس 50 کیلوهرتز درست کار نمیکنه. در این مورد اگر میتونید راهنمایی کنید ممنون میشم. کدها را بالا نوشتم

          دیدگاه

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