NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4983 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 2 از 2

موضوع: موج مربعی با فرکانس و پهنای پالسه متغیر

  1. #1
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض موج مربعی با فرکانس و پهنای پالسه متغیر

    باسلام من میخوام یک موج مربعی بسازم با فرکانس متغیراز 2-25 کیلو و پهنای پالسه از 10 تا 90 درصد اما پالسم خطا داره و از 15 کیلو به بالا خطاش خیلی زیاد میشه با پهنای پالسه 10 درصد فرکانسمم تغییر میکنه چطوری میتونم خطاما کم کنم من با بیسکام برنامما نوشتم ممنون
    اینم برنامم البته اون LOOKUP TABLE برای جبرانه خطا گذاشتم اما روش خوببی نیست وخودش مشکل ایجاد میکنه لطفا کمک کنید چه جوری میتونم این خطا را درست کنم ممنونم
    $regfile = "m64def.dat"
    $crystal = 8000000

    Invert Alias Portd.3 'change to portx.x based on hardware
    Noninvert Alias Portd.4 'change to portx.x based on hardware

    Config Timer1 = Timer , Prescale = 1
    Config Timer3 = Timer , Prescale = 1

    Declare Sub Fduty

    Config Portd = Output
    Reset Noninvert 'non invert
    Set Invert 'invert

    Dim Ontime As Word , Offtime As Word , F As Word , T As Single , Dc As Byte
    Dim Ton As Single , Toff As Single

    'F = 6000
    'Dc = 50


    Enable Interrupts
    Enable Timer1
    Enable Timer3
    On Timer1 Ovf1routin
    On Timer3 Ovf3routin
    'Home
    Call Fduty

    Do
    Loop
    End

    Ovf1routin:
    Stop Timer1
    Reset Noninvert
    Set Invert
    Timer3 = Offtime
    Start Timer3
    Return

    Ovf3routin:
    Stop Timer3
    Set Noninvert
    Reset Invert
    Timer1 = Ontime
    Start Timer1
    Return

    '-------------------------------------Sub---------------------------------------
    Sub Fduty
    Stop Timer1
    Stop Timer3
    '---------------------------------CorrectionTable-------------------------------
    '************************************************* ******************************
    Select Case F
    Case 1000 To 1500 : F = F * 1.024417
    Case 1600 To 2000 : F = F * 1.03922
    Case 2100 To 2500 : F = F * 1.04904
    Case 2600 To 3000 : F = F * 1.05924
    Case 3100 To 3500 : F = F * 1.06802
    Case 3600 To 4000 : F = F * 1.08084
    Case 4100 To 4500 : F = F * 1.09362
    Case 4600 To 5000 : F = F * 1.10316
    Case 5100 To 5500 : F = F * 1.11434
    Case 5600 To 6000 : F = F * 1.12196
    Case 6100 To 6500 : F = F * 1.133104
    Case 6600 To 7000 : F = F * 1.14196
    Case 7100 To 7500 : F = F * 1.15304
    Case 7600 To 8000 : F = F * 1.16502
    Case 8100 To 8500 : F = F * 1.17496
    Case 8600 To 9000 : F = F * 1.18242
    Case 9100 To 9500 : F = F * 1.1976
    Case 9600 To 10000 : F = F * 1.213
    Case 10100 To 10500 : F = F * 1.21736
    Case 10600 To 11000 : F = F * 1.2234
    Case 11100 To 11500 : F = F * 1.2454
    Case 11600 To 12000 : F = F * 1.248
    Case 12100 To 12500 : F = F * 1.275
    Case 12600 To 13000 : F = F * 1.261
    Case 13100 To 13500 : F = F * 1.296
    Case 13600 To 14000 : F = F * 1.302
    Case 14100 To 14500 : F = F * 1.2905
    Case 14600 To 15000 : F = F * 1.305
    Case 15100 To 15500 : F = F * 1.3175
    Case 15600 To 16000 : F = F * 1.344
    Case 16100 To 16500 : F = F * 1.353
    Case 16600 To 17000 : F = F * 1.343
    Case 17100 To 17500 : F = F * 1.3475
    Case 17600 To 18000 : F = F * 1.404
    Case 18100 To 18500 : F = F * 1.424
    Case 18600 To 19000 : F = F * 1.425
    Case 19100 To 19500 : F = F * 1.4235
    Case 19600 To 20000 : F = F * 1.44
    Case 20100 To 20500 : F = F * 1.4555
    Case 20600 To 21000 : F = F * 1.449
    Case 21100 To 21500 : F = F * 1.462
    Case 21600 To 22000 : F = F * 1.452
    Case 22100 To 22500 : F = F * 1.4625
    Case 22600 To 23000 : F = F * 1.495
    Case 23100 To 23500 : F = F * 1.504
    Case 23600 To 24000 : F = F * 1.512
    Case 24100 To 24500 : F = F * 1.519
    Case 24600 To 25000 : F = F * 1.525
    Case 25100 To 25500 : F = F * 1.555
    Case 25600 To 26000 : F = F * 1.56
    End Select
    '************************************************* ******************************
    '-------------------------------------------------------------------------------
    T = 8000000 / F
    Ton = Dc * T
    Ton = Ton / 100
    Toff = T - Ton
    Ontime = 65536 - Ton
    Offtime = 65536 - Toff
    Timer1 = Ontime
    Timer3 = Offtime
    Start Timer1
    End Sub Fduty
    '---------------------------------EndSub----------------------------------------

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  4. #2
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    یعنی کسی پیدا نمیشه جواب مارا بده

  5. تشکرها از این نوشته :


موضوعات مشابه

  1. اوقات شرعی
    توسط cmuiran در انجمن AVR
    پاسخ: 8
    آخرين نوشته: 09-11-2013, 16:42
  2. ایجاد پالس مربعی با اختلاف فاز
    توسط amirtebyan در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 25-08-2013, 10:08
  3. ساختن متغیر integer از طریق اتصال دو متغیر Byte
    توسط morteza_rk در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 4
    آخرين نوشته: 27-06-2012, 13:31
  4. قطعی فیبر نوری اینترنت ، چرا؟
    توسط morteza_rk در انجمن گفت و گوي آزاد
    پاسخ: 13
    آخرين نوشته: 15-02-2010, 16:45
  5. ربات امدادگر واقعی
    توسط gate_crasher در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 8
    آخرين نوشته: 14-09-2009, 09:52

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •