Search This Blog

Friday, November 30, 2018

Lightning Impulse Signal : Li Full and Li Chop simulation


Lightning Impulse Signal : Li Full and Li Chop simulation Code

Generate Li Full and Li Chop array points using Code (VB.net)

Li Full : T1 (Time to peak) 1.2uS
              T2 (Time to peak) 50uS
               Amplitude : 1 unit

Code:

        Dim k0 As Integer = 100
        Dim k1 As Single = 2.47
        Dim k2 As Single = 1 / 68.23
        Dim I As Single = 0
        IMPULSE_ARY(0) = 0
        Dim t As Single = 0.01

        ' IMPULSE_ARY(0-124)=0
        For I = 125 To 152
            IMPULSE_ARY(I) = 4.2 * t ^ 3
            t = t + 0.01
        Next
        t = 0.04
       ' exponential 
        For I = 150 To SAMPLES
            IMPULSE_ARY(I) = 1 / 0.9643 * (1 - Math.E ^ (-k1 * t)) * (Math.E ^ (-k2 * t))
            'IMPULSE_ARY(I) =  Math.E ^ (-k1 * t) - (Math.E ^ (-k2 * t))
            t = t + 0.01
        Next
        For I = 0 To SAMPLES Step 4
            IMPULSE_ARY(I) = IMPULSE_ARY(I) + (Rnd(1) - 0.5) * 0.0004
        Next
       ' plot this array and get 



















--------------------------------------------------------------------------------------------------------------------------

Li Chopped : T1 (Time to peak) 1.2uS
              Tc (Time to peak) 3.88uS
               Amplitude : 1 unit

Code:

        Dim k0 As Integer = 100
        Dim k1 As Single = 2.47
        Dim k2 As Single = 1 / 68.23
        Dim I As Single = 0
        Dim t As Single = 0.01
        ' IMPULSE_ARY(0-124)=0       
        For I = 125 To 152
            IMPULSE_ARY(I) = 4.2 * t ^ 3
            t = t + 0.01
        Next
        t = 0.04
        For I = 152 To 4000
            IMPULSE_ARY(I) = 1 / 0.9643 * (1 - Math.E ^ (-k1 * t)) * (Math.E ^ (-k2 * t))
            t = t + 0.01
        Next
        Dim A As Single = 450
        Dim B As Single = A + 27
        t = 0.01 * B
        Dim E_VAL As Single
        For I = B To B + 25
            IMPULSE_ARY(I) = IMPULSE_ARY(I) * Math.Cos(2 * (t - (B / 100))) * (Math.E ^ (-0.2 * (t - (B / 100))))
            t = t + 0.01
        Next
        t = t - 0.01
        For I = B + 25 To 4000
            E_VAL = (0.95 * Math.E ^ (-4 * (t - (B + 25) / 100))) + (0.05 * Math.E ^ (-0.3 * (t - (B + 25) / 100)))

            IMPULSE_ARY(I) = IMPULSE_ARY(B + 25) * E_VAL * Math.Cos(3 * (t - (B + 25) / 100))
            t = t + 0.01
        Next
        For I = 0 To 4000 Step 4
            IMPULSE_ARY(I) = IMPULSE_ARY(I) + (Rnd(1) - 0.5) * 0.0006
        Next
    ' plot this array and get



No comments:

Post a Comment