اطلاعیه

Collapse
No announcement yet.

نوسان در ولتمتر DC

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

    نوسان در ولتمتر DC

    مدار ولتمتر DC رو سون سگمنت مالتی پلکس ساختم که اشکال اون نوسان در نمایش مقدار ولتاژه.
    یعنی اگه مثلا ورودی5.2 ولت باشه خروجی نمایشگر بین 4.7 و 5.6 ولت نوسان می کنه.
    $regfile = "m8def.dat"
    $crystal = 1000000

    Config Portd = Output
    Config Portc.1 = Output
    Config Portc.2 = Output
    Config Portc.3 = Output


    Dim A As Word
    Dim B As Word
    Dim C As Word
    Dim N As Word

    Dim N1 As Word
    Dim N2 As Word
    Dim N3 As Word
    Dim N4 As Word



    Dim A2d As Word , Volt As Single
    '-------------------------------------------------------------------------------
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Enable Adc
    '-------------------------------------------------------------------------------
    Main:

    If N = 100 Then
    Start Adc
    A2d = Getadc(5)
    Stop Adc
    N = 0
    Volt = A2d / 204.6
    Volt = Volt * 6.607
    End If

    Incr N


    '------------------------
    A = Volt * 100
    B = A Mod 1000
    N1 = A - B
    N1 = N1 / 1000

    Gosub Show1
    '------------------------
    C = B Mod 100
    N2 = B - C
    N2 = N2 / 100
    Gosub Show2
    '------------------------
    N4 = C Mod 10
    N3 = C - N4
    N3 = N3 / 10

    Gosub Show3
    '------------------------


    '------------------------
    Goto Main
    '============================================ ===================================
    Show1:

    Portc.1 = 1
    Portc.2 = 0
    Portc.3 = 0
    Portd = Lookup(n1 , Code)
    Waitms 2
    N1 = 0

    Return
    '============================================ ===================================
    Show2:

    Portc.1 = 0
    Portc.2 = 1
    Portc.3 = 0
    Portd = Lookup(n2 , Code1)
    Waitms 2
    N2 = 0

    Return
    '============================================ ===================================

    Show3:

    Portc.1 = 0
    Portc.2 = 0
    Portc.3 = 1
    Portd = Lookup(n3 , Code)
    Waitms 2
    N3 = 0
    Return

    '============================================ ===================================
    Goto Main
    End 'end program

    Code:
    Data &B11000000 '0
    Data &B11111001 '1
    Data &B10100100 '2
    Data &B10110000 '3
    Data &B10011001 '4
    Data &B10010010 '5
    Data &B10000010 '6
    Data &B11111000 '7
    Data &B10000000 '8
    Data &B10010000 '9

    Code1:
    Data &B01000000 '0
    Data &B01111001 '1
    Data &B00100100 '2
    Data &B00110000 '3
    Data &B00011001 '4
    Data &B00010010 '5
    Data &B00000010 '6
    Data &B01111000 '7
    Data &B00000000 '8
    Data &B00010000
    انا لله و انا اليه الراجعون

    #2
    پاسخ : نوسان در ولتمتر DC

    با سلام
    به نظر من دوتا کار میتونید بکنید :
    1.پیک سیگنال رو با آشکار ساز پیک بدست بیارید بعد بدید به میکرو و با اون مقدار dc سیگنال رو حساب کنید.
    2.مقدار پیک ولتاژ یکسو شده که به میکرو اعمال کردید رو به صورت نرمافزاری محاسبه کنید بعد مقدار ریپل ac رو ازش کم کنید

    دیدگاه


      #3
      پاسخ : نوسان در ولتمتر DC

      ببخشید متوجه منظورتون نشدم؟
      انا لله و انا اليه الراجعون

      دیدگاه


        #4
        پاسخ : نوسان در ولتمتر DC

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

        I = 1
        While I = 1
        V = Getadc(0)
        V_temp1 = V
        V_temp1 = V_temp1 * 5 'Vref=5v
        V_temp1 = V_temp1 / 1023
        If V_max < V_temp1 Then
        V_max = V_temp1
        Else
        I = 0
        End If
        Wend

        و برای محاسبه مقدار مینیمم سیگنال بنویسیم :

        V_min = V_max:I = 1
        While I = 1
        V = Getadc(0)
        V_temp1 = V
        V_temp1 = V_temp1 * 5 'Vref=5v
        V_temp1 = V_temp1 / 1023
        If V_min > V_temp1 Then
        V_min = V_temp1
        Else
        I = 0
        End If
        Wend

        و بعد مقدار میانگین که همون ولتاژ ِdc باشه رو به صورت زیر محاسبه میکنیم :

        V_mid = V_min + V_max
        v_mid=v_mid/2


        البته بگم من اینها رو زیاد بهشون مطمئن نیستم توی تئوری که تو ذهنم بود جواب داد شاید تو عمل جواب نده اما بالاخره یک راه حل میتونه باشه

        دیدگاه

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