L C berekenen

Status
Niet open voor verdere reacties.

old Hippy

Gebruiker
Lid geworden
24 mei 2008
Berichten
911
Hallo allemaal

Ik ben bezig met een tool om de frequentie van een L C kring te berekenen.
Uitkomst uit de berekening F = L x C waarvan L in uF en C in Pf
de formulle is F= 1/2pi sqrt(L*C)
Dus met een L van 1000 uF en een C van 10 pF = F 1,59155 Mhz.
Uit mijn berekening komt echter F 15,5915 Mhz.
De komma staat dus verkeerd Wat gaat er mis???
En wie wil mij helpen?

Code:
Private Sub ButtonX5_Click(sender As System.Object, e As System.EventArgs) Handles ButtonX5.Click
        Try
            'F= 1/2pi sqrt(L*C) 
            Dim pi As Double
            pi = 2 * 3.14159265
            Dim L As Double = TB_Spoel.Text
            Dim C As Double = TB_Capaciteit.Text
            LB_Uitleg.Text = (1 / pi * Math.Sqrt(L * C))
        Catch ex As Exception
        End Try

    End Sub
 
Je noemt de formule F = 1/2 pi Sqrt (L * C).

In de programmacode zie ik die 2 niet terugkomen.
 
De L geef je toch niet op in Farad maar in Henry?
 
Dank voor jullie hulp maar.
even simpel C=10F L=10H F = dan dus 0.0159155 Hz

Bij mijn berekening is F dan 1.5915432 Hz

m.v.g Old Hippy
 
Hi Heb de oplossing gevonden.
De formule moet LB_Uitleg.Text = 1 / (pi * Math.Sqrt(L * C))

De haakjes stonden dus niet goed
Dank jullie hebben mij wel op het goede spoor gezet.
Groet Old Hippy
 
kleine tip: er is ook Math.PI

je kunt eenvoudig een method maken voor meer overzicht en als je het vaker op andere plaatsen gebruikt:

[CPP]Private Function CalculateFrequency(l As Double, c As Double) As Double
Return 1 / (2 * Math.PI * Math.Sqrt(l * c))
End Function[/CPP]
 
HI Veel Dank Bloodshed

Ga dit zeker gebruiken is een betere oplossing.

Groet Old Hippy
 
Hi ik ben tegen een probleem op gelopen.

De berekening is in cd C in farad de L in Henry uitkomst L Hertz
Als ik de uitkomst in KHz wil dacht ik * 1000 en in MHz *1000000 Helaas werkt dit niet.

Groet Old hippy
 
Van Hz naar Khz = delen door 1000
van Hz naar Mhz = delen door 1000000

En niet vermenigvuldigen ;)
 
Hallo allemaal
Op deze manier werkt het.
Nu nog een elegante oplossing gezocht om makkelijk te combineren.
Dus de variabele die je in kan geven zijn de L de C en de F als uitkomst.

De L waarde in Henry mH en uH
De C in F, uF, nF en pF zijn de rekenwaardes.


Code:
  Dim KHz As Decimal = 1000
            Dim MHz As Decimal = 1000000
            Dim GHz As Decimal = 1000000000
           
            Dim L As Decimal = TB_L.Text
            Dim C As Decimal = TB_C.Text
            Dim F As Decimal

            If CB_F.SelectedIndex = 0 And CB_L.SelectedIndex = 0 And CB_C.SelectedIndex = 0 Then
                F = Math.Round(1 / (2 * Math.PI * Math.Sqrt(L * C)), 7)
               Uitkomst.Text = F & " Hz"
            ElseIf CB_F.SelectedIndex = 1 And CB_L.SelectedIndex = 0 And CB_C.SelectedIndex = 0 Then
                F = Math.Round(1 / (2 * Math.PI * Math.Sqrt(L * C)), 7)
                Uitkomst.Text = F / KHz & " KHz"
            ElseIf CB_F.SelectedIndex = 3 And CB_L.SelectedIndex = 0 And CB_C.SelectedIndex = 0 Then
                F = Math.Round(1 / (2 * Math.PI * Math.Sqrt(L * C)), 7)
                Uitkomst.Text = F / MHz & " MHz"
            End If

m.v.g Old Hippy
 
Werk je trouwens in Windows Forms of in WPF?
 
Ziet er leuk uit. :thumb:

Ben zelf nog steeds de overstap aan het maken van VB6 naar VB.net maar loop toch nog vaak tegen verschillen aan.
 
Hi Buick

Niet getreurd op dit forum word je vanzelf Wijzer.
en altijd mooi geholpen.
 
Als je het 'elegant' wil doen zou je gewoon een extra method kunnen maken eventueel met een enum zoals in dit voorbeeldje: 1 method die je L, C, unit mee geeft en je krijgt de string met de unit erachter

[CPP] Public Function CalculateFrequency(l As Double, c As Double) As Double
Return 1 / (2 * Math.PI * Math.Sqrt(l * c))
End Function

Public Function GetFrequencyString(l As Double, c As Double, unit As FrequencyUnit) As String
Dim f = CalculateFrequency(l, c)

If unit = FrequencyUnit.KHz Then
f = (f / 1000)
ElseIf unit = FrequencyUnit.MHz Then
f = (f / 1000000)
ElseIf unit = FrequencyUnit.GHz Then
f = (f / 1000000000)
End If

Return String.Format("{0} {1}", Math.Round(f, 7), unit)
End Function

Public Enum FrequencyUnit
Hz
KHz
MHz
GHz
End Enum[/CPP]



voor een snelle test even in een simpele console app zetten
[CPP] Sub Main()

Dim l = Math.Pow(10, -3) '1000uF (1mF)
Dim c = Math.Pow(10, -11) '10pF

Console.WriteLine(GetFrequencyString(l, c, FrequencyUnit.Hz))
Console.WriteLine(GetFrequencyString(l, c, FrequencyUnit.KHz))
Console.WriteLine(GetFrequencyString(l, c, FrequencyUnit.MHz))
Console.WriteLine(GetFrequencyString(l, c, FrequencyUnit.GHz))

Console.ReadLine()

End Sub[/CPP]
 
Laatst bewerkt:
Dank Bloodshed

Helaas begrijp ik deze niet waar plaats ik hem en hoe geef ik de l waarde en C waarde in:eek:

Groet Old hippy
 
voorbeeld met form, de methods plaats je gewoon in de class/form en de enum kan er buiten of in een los bestand

de waardes L en C zijn in het voorbeeld gewoon hardcoded op 1000uF en 10pF, maar je kunt ze gewoon uit een textbox plukken zoals je al doet

de methode geeft een string terug die je in een textbox kunt zetten zoals in in de click method

Code:
Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim l = Math.Pow(10, -3)  '1000uF (1mF)
        Dim c = Math.Pow(10, -11) '10pF  

        txtOutput.Text = GetFrequencyString(l, c, FrequencyUnit.MHz)
    End Sub
    
    Public Function CalculateFrequency(l As Double, c As Double) As Double
        Return 1 / (2 * Math.PI * Math.Sqrt(l * c))
    End Function

    Public Function GetFrequencyString(l As Double, c As Double, unit As FrequencyUnit) As String
        Dim f = CalculateFrequency(l, c)

        If unit = FrequencyUnit.KHz Then
            f = (f / 1000)
        ElseIf unit = FrequencyUnit.MHz Then
            f = (f / 1000000)
        ElseIf unit = FrequencyUnit.GHz Then
            f = (f / 1000000000)
        End If

        Return String.Format("{0} {1}", Math.Round(f, 7), unit)
    End Function
    
End Class

Public Enum FrequencyUnit
    Hz
    KHz
    MHz
    GHz
End Enum
 
+ voorbeeld met radiobuttons (zelfde kan met combobox of andere selector)

Code:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim l = Math.Pow(10, -3)  '1000uF (1mF)
        Dim c = Math.Pow(10, -11) '10pF  

        Dim unit As FrequencyUnit
        
        If (RadioButton1.Checked) Then
            unit = FrequencyUnit.Hz
        ElseIf (RadioButton2.Checked) Then
            unit = FrequencyUnit.KHz
        ElseIf (RadioButton3.Checked) Then
            unit = FrequencyUnit.MHz
        ElseIf (RadioButton4.Checked) Then
            unit = FrequencyUnit.GHz
        End If

        txtOutput.Text = GetFrequencyString(l, c, unit)

    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan