- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: Kalman für Anfänger

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332

    Kalman für Anfänger

    Hallo Zusammen,
    derzeit versuche ich mich an einem kalman Filter.
    Ich beginne mit einer einfachen Implementation und habe
    mir aus diesem Grunde eine kleine Excel Tabelle erstellt,
    wo ich die entsprechenden Werte eingeben kann.

    Hierbei will ich zuerst meine Temperatursensoren KTY81-110 von
    der "simplen" Mittelwertberechnung auf einen Kalman Filter umsetzen.
    Mit Floating Point Mathematik scheint das laut Tabelle schon ganz
    gut zu klappen. Die genauen Parameter habe ich noch nicht gefunden (Optimiert).
    Nur soll die Routine im Atmega8 nicht auf Float Mathematik arbeiten,
    sondern auf Fix Point Mathematik. Und hier habe ich meine ersten Problem.
    Meine Routine arbeitet nicht so wie ich es gerne hätte.

    Floating Point Mathe
    Code:
    Public Sub CalculateSheet2Formular()
    Dim nNoise As Double
    Dim nEstimation As Double
    Dim nLastEstimation As Double
    Dim nPresition As Double
    Dim nLastPresition As Double
    Dim nKalmanKoeffizent As Double
    Dim nValue As Double
    Dim nADC As Long
    Dim nTemperatur As Long
    Dim objWorkbork As Workbook
    Dim i As Integer
        Set objWorkbork = ThisWorkbook
        nNoise = 0.2
        nLastEstimation = 0
        nPresition = 1
        For i = 2 To 22
            
            nADC = CDbl(objWorkbork.Sheets(2).Cells(i, 1).Value)
            nADC = nADC * 64             ' (<< 7) in ASM
            nTemperatur = 82 + nADC
            nTemperatur = nTemperatur / 101
            nTemperatur = nTemperatur - 150
            
            objWorkbork.Sheets(2).Cells(i, 2).Value = nTemperatur
            nValue = nTemperatur
            nLastPresition = nPresition
            nKalmanKoeffizent = nPresition / (nPresition + nNoise)
            
            nEstimation = nLastEstimation + nKalmanKoeffizent * (nValue - nLastEstimation)
            nPresition = (1 - nKalmanKoeffizent) * nPresition
            nLastEstimation = nEstimation
            
            objWorkbork.Sheets(2).Cells(i, 3).Value = nKalmanKoeffizent
            objWorkbork.Sheets(2).Cells(i, 4).Value = nPresition
            
            objWorkbork.Sheets(2).Cells(i, 5).Value = i - 1
            objWorkbork.Sheets(2).Cells(i, 6).Value = nEstimation
        Next i
    
    End Sub
    Fix Point Mathe (Versuch der schief ging)
    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 nValue As Long
    Dim nADC As Long
    Dim nTemperatur As Long
    Dim objWorkbork As Workbook
    Dim i As Integer
        Set objWorkbork = ThisWorkbook
        nNoise = 2
        nLastEstimation = 10
        nPresition = 16
        For i = 2 To 22
            
            nADC = CDbl(objWorkbork.Sheets(3).Cells(i, 1).Value)
            nADC = nADC * 64             ' (<< 7) in ASM
            nTemperatur = 82 + nADC
            nTemperatur = nTemperatur / 101
            nTemperatur = nTemperatur - 150
            
            objWorkbork.Sheets(3).Cells(i, 2).Value = nTemperatur
            nValue = nTemperatur
            nLastPresition = nPresition
            nKalmanKoeffizent = nPresition * 100 / (nPresition + nNoise)
            
            nEstimation = nLastEstimation + (nKalmanKoeffizent * (nValue - nLastEstimation) / 100)
            nPresition = (100 - nKalmanKoeffizent) * nPresition
            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
        Next i
    
    End Sub
    Hat jemand eine Hilfestellung ?
    Wie ist generell der beste Ansatz eine Floating Point Mathe in Fix Point zu wandeln.
    Ich dachte bis jetzt immer, da Ansatz wäre den Zahlenbereich nach oben zu schieben,
    die Berechnungen durchzuführen und danach den Bereich wieder anpassen.
    Viele Gruess
    R.
    Angehängte Dateien Angehängte Dateien
    Kaum macht man es richtig, schon funktioniert's ...

Ä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
  •  

Solar Speicher und Akkus Tests