- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Kalman für Anfänger

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das was du in Sheet 2 ausrechnest, kannst du im Sheet 3 ohne Fließkomma so ausrechnen.
    (Beachte den Faktor 1024, um den jeder Wert zu groß ist.)

    Code:
    Public Sub CalculateSheet3Formular()
    Dim nNoise As Long
    Dim nEstimation As Long
    Dim nLastEstimation As Long
    Dim nPresition As Long
    Dim nLastPresition As Long
    Dim nKalmanKoeffizent As Long
    Dim nADC As Long
    Dim nTemperatur As Long
    Dim objWorkbork As Workbook
    Dim FAKTOR As Long
    Dim i As Integer
        
        Set objWorkbork = ThisWorkbook
        
        FAKTOR = 1024   'am besten Potenz von 2 als Faktor (hier: 2^10)
        nNoise = 2 * FAKTOR / 10    ' enspricht 0,2 * FAKTOR
        nLastEstimation = 0
        nPresition = 1 * FAKTOR
    
        For i = 2 To 22
            
            nADC = objWorkbork.Sheets(3).Cells(i, 1).Value
            nADC = nADC * FAKTOR * 64
            
            nTemperatur = 82 * FAKTOR + nADC
            nTemperatur = nTemperatur / 101
            nTemperatur = nTemperatur - (150 * FAKTOR)
            
            objWorkbork.Sheets(3).Cells(i, 2).Value = nTemperatur
    
            nLastPresition = nPresition
            nKalmanKoeffizent = nPresition * FAKTOR / (nPresition + nNoise)
            
            nEstimation = (nLastEstimation * FAKTOR + nKalmanKoeffizent * (nTemperatur - nLastEstimation)) / FAKTOR
            nPresition = ((FAKTOR - nKalmanKoeffizent) * nPresition) / FAKTOR
            nLastEstimation = nEstimation
            
            objWorkbork.Sheets(3).Cells(i, 3).Value = nKalmanKoeffizent
            objWorkbork.Sheets(3).Cells(i, 4).Value = nPresition
            
            objWorkbork.Sheets(3).Cells(i, 5).Value = i - 1
            objWorkbork.Sheets(3).Cells(i, 6).Value = nEstimation
            
            ' Zu Vergleichszwecken Tabelle mit rückgewandelten Werten:
            
            objWorkbork.Sheets(3).Cells(i, 8).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 3).Value) / FAKTOR
            objWorkbork.Sheets(3).Cells(i, 9).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 4).Value) / FAKTOR
            
            objWorkbork.Sheets(3).Cells(i, 10).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 5).Value) / FAKTOR
            objWorkbork.Sheets(3).Cells(i, 11).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 6).Value) / FAKTOR
            
        Next i
    
    
    End Sub
    Geändert von Sisor (03.11.2014 um 15:48 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hi,

    jetzt verstehe ich meinen Fehler. Ich habe hier bei nicht den eigentlich Messwert nach "oben" verschoben und alle damit resultierende Werte/Vergleiche.
    Daher hat der ganze Spass dann nicht funktioniert. Auch der Trick ein Vielfaches von Zwei zu nehmen, was mir später das umrechen in C das Leben
    einfacher macht ( << -Operator), ist ein guter Hinweis.

    Gibt es eine Webseite, welches sowas nochmal genau beschreibt oder google-Stichwort.

    Vielen Dank für die Hilfe.

    R.
    Kaum macht man es richtig, schon funktioniert's ...

  3. #3
    HaWe
    Gast
    hallo,
    ist zwar OT - aber ich Suche einen Kalman für meinen Arduino Mega (ggf Due),
    und zwar um mehrere Sensoren zu fusionieren (einen nach dem anderen ntl...).
    Mit Excel kenne ich mich nun gar nicht aus -
    kennst du sowas wie eine Anleitung "Kalman für Dummies" , die man einfach in Sketch schrittweise umsetzen kann ?
    Geändert von HaWe (04.11.2014 um 15:50 Uhr)

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo,

    die oben gezeigte Funktion ist ein einfacher Kalman Filter. Was Sketch angeht, bin ich Ahnungslos. Ich schreibe in C/C++.

    Vielleicht hilft ja diese Seite:

    http://bilgin.esme.org/BitsBytes/Kal...orDummies.aspx

    Das Beispiel am Ende habe ich in der Excel-Tabelle auf dem ersten Sheet dargestellt.

    Hier musst Du Dir nur die Macros ansehen, siehe auch Thread.

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

  5. #5
    HaWe
    Gast
    hey, danke!
    ja, das ist wirklich gut!

    Sketch ist übrigens C/C++, ein Stück einfacher sogar in der Handhabung was die Klassen- und Linker-Geschichten angeht (geht automatisch).

    In den Dummie-Artikel werd ich mich mal gleich einlesen - danke nochmal! 8-)

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hi,

    auf meiner Suche nach einem weiteren Erklärung habe ich diese Seite gefunden.

    http://www.instructables.com/id/Guid...inclu/?lang=de

    Ist vielleicht auch was für Dich, da das Beispiel in Sketch beschrieben ist.

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

  7. #7
    HaWe
    Gast
    danke, der Ursprungslink ist zwar sehr Sensor-bezogen, aber es sind ein paar wirklich gute weiterführende Links dabei.
    Mach ich mich sofort dran, sobald ich den Dummie-Guide durch habe! 8-)

Ähnliche Themen

  1. RP6 Von Anfänger für Anfänger
    Von littles im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 08.07.2011, 10:07
  2. ST LPR530AL + Kalman Filter
    Von Pepade im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 23.04.2010, 07:29
  3. Kalman Filter für BASCOM
    Von harry1 im Forum Sensoren / Sensorik
    Antworten: 30
    Letzter Beitrag: 28.10.2009, 23:22
  4. CRP5: meine Erweiterung (vom Anfänger für Anfänger)
    Von loewenzahn im Forum Robby CCRP5
    Antworten: 11
    Letzter Beitrag: 21.03.2007, 18:37
  5. Kalman-Filter - wie/wo/was ?
    Von Crazy Harry im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 02.02.2006, 10:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test