اطلاعیه

Collapse
No announcement yet.

ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

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

    ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

    سلام دوستان عزیز
    من می خواهم یک مدار انتگرالگیر درست کنم که بتونه از سیگنال ورودی انتگرال بگیره ، این کارو کردم ولی مشکلی که دارم اینه که می خواهم زمان انتگرالگیریم به جای 50 میلی ثانیه 4 ثانیه باشه ، لطفاٌ روش کارمو بینین و کمک کنین.
    ممنون
    اینم لینک دانلود برنامه و شبیه سازی آن در پروتئوس 7.1 با SP2
    http://rapidshare.com/files/176409989/Entegral.rar.html
    «اگر واقعيات با نظريات هماهنگي ندارند، واقعيتآ‌ها را تغيير بده.»
    آلبرت انشتين

    #2
    پاسخ : ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

    من یه نگاهی انداختم. تو برنامه شما از یک تایمر به مدت 50 میلی ثانیه استفاده شده. من یه تغییری ایجاد کردم. تعریف کردم که از تایمر 80 بار با همین زمان صفر بشه و دوباره استفاده بشه تا زمان انتگرال گیری به 4 ثانیه برسه. البته خیلی دقیق نیست. قبلا هم دقیق نبود. ولی فعلا کار می کنه.


    '--------------------------------------------------------------------------
    ' This Program Has Written By M.R. PourFarshchian
    ' Temp & Press Meter
    ' 1386/7/16
    ' ver 1.01.1
    ' Temp Accuracy 0.5 C
    '--------------------------------------------------------------------------
    ' Micro Setting

    $regfile = "M16def.dat"
    $crystal = 8000000
    $baud = 9600

    '--------------------------------------------------------------------------
    ' Dim Variable

    Dim P1 As Single


    Dim Sum1 As Word


    Dim Adc1 As Single
    Dim Dc1 As Word

    Dim Entegral As Single

    Dim Dv As Word
    Dim Cu As Word

    Dim T As Long
    Dim Tstep As Single
    Dim Total As Integer
    Dim I As Integer

    Const Et = 50000
    Dim Et1 As Single 'time as us =50ms

    Config Timer1 = Timer , Prescale = 8


    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 20 * 4

    Cursor Off

    Config Adc = Single , Prescaler = Auto

    Start Adc

    Do

    Sum1 = 0
    Total = 0

    Timer1 = 0
    I = 0

    Start Timer1
    Timer1 = 0
    Do

    Do
    Sum1 = Sum1 + Getadc(0)
    Incr I
    Loop Until Timer1 >= Et

    Incr Total
    Timer1 = 0

    Loop Until Total >= 80

    Stop Timer1

    Et1 = 80 * Et
    Tstep = Et / I
    P1 = Sum1 / 204.0 '204 instaed of 204.8= 5/1024
    Entegral = P1 * Tstep

    Print "T=" ; Et1 ; "us " ; "Tstep=" ; Tstep ; "us " ; "N=" ; I ; " Entegral= " ; Fusing(entegral , "#.##&quot ; " Sum=" ; Fusing(p1 , "#.##&quot


    Loop

    End
    دلا یاران سه قسمند ار بدانی
    زبانی اند و نانی اند و جانی
    به نانی نان بده از در برانش
    محبت کن به یاران زبانی
    و لیکن یار جانی را به دست آر
    به جانش جان بده تا می توانی

    دیدگاه


      #3
      پاسخ : ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

      سلام آرش عزیز
      ممنون از جوابت ، درسته برنامه دقیق نیست یکی از مشکلاتش اینه که خود عملیات داخل حلقه یعنی Getadc زمان زیادی می بره و دومی این که متغییرها تو زمان زیاد Overflow می شوند. آیا بنظر شما کلاً میشه متد بهتری برای حل این مسئله پیاده کرد؟ یا نه ؟
      بازم ممنون از توجه شما
      موفق باشید.
      «اگر واقعيات با نظريات هماهنگي ندارند، واقعيتآ‌ها را تغيير بده.»
      آلبرت انشتين

      دیدگاه


        #4
        پاسخ : ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

        خب راه حل خاصی به ذهنم نمیرسه. اما شاید بشه به یک کلک متوسل شد. شاید هم بشه گفت یک جور کالیبره کردن. شما این مدار رو به صورت واقعی بسازید سپس خروجی مولد سیگنال رو توسط یک ولت متر که خودش یه جور انتگرال گیر هست در حالت DC اندازه بگیرید. هر چقدر با خروجی میکرو اختلاف داشت اونو به صورت درصد تو خروجی میکرو اعمال می کنیم تا کار میکرو هم دقیق بشه. مثلا خروجی میکرو رو در 99/100 ضرب می کنیم تا خطای برنامه نویسی از بین بره.

        دلا یاران سه قسمند ار بدانی
        زبانی اند و نانی اند و جانی
        به نانی نان بده از در برانش
        محبت کن به یاران زبانی
        و لیکن یار جانی را به دست آر
        به جانش جان بده تا می توانی

        دیدگاه


          #5
          پاسخ : ساخت یک مدار انتگرالگیر از سیگنال ورودی در بازه زمانی دلخواه با AVR

          ممنون
          کسی دیگر از دوستان نظری نداره؟
          درمورد Overflow شدن متغییرها چی؟
          «اگر واقعيات با نظريات هماهنگي ندارند، واقعيتآ‌ها را تغيير بده.»
          آلبرت انشتين

          دیدگاه

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