- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Spannung messen - Probleme mit der Berechnung

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628

    Spannung messen - Probleme mit der Berechnung

    Anzeige

    Praxistest und DIY Projekte
    Hallo!

    Für mein Projekt will ich die Versorgungspannung messen und diese anschließend auf einem LCD-Display ausgeben. Der A/D-Eingang ist über einen Spannungsteiler, bestehend aus 10k und 4k7 an der Versorgungsspannung angeschlossen. Zusätzlich wird er durch eine Zenerdiode Zd=5V1 vor Überspannung geschützt.

    0V entsprechen nun dem Wert 0
    6V entsprechen nun dem Wert 512
    12V entsprechen nun dem Wert 1023

    Eine einfache Methode zum Umrechnen des Wertes vom A/D-Wandler ist meiner Meinung nach folgende:
    Code:
    Dim x as Word
    Dim Spg as Word
    
    x = Getadc(0)
    Spg = x*12
    Spg = Spg/1023
    Bekomme ich bei dieser Methode nur Ganzzahlen heraus (z.B. 7V)?
    Falls nicht, wie wandle ich diese in einen String um, so dass ich am LCD zum Beispiel 7,07V lesen kann?

    Wie ihr seht habe ich mich mit dieser Problematik nicht befasst und bin jetzt auf eure Hilfe angewiesen.

    Mit freundlichen Grüßen
    Thomas

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Habe einen Teil der Antwort schon gefunden.
    Die Variable Spg muss als Single definiert werden, dann sind mit ihr auch Operationen mit Dezimalzahlen á la 5,12 möglich.

    Nur die Umwandlung in einen String zur Ausgabe am LCD ist mir noch nicht ganz klar.

    MfG
    Thomas

  3. #3
    Hallo Thomas,

    Nur die Umwandlung in einen String zur Ausgabe am LCD ist mir noch nicht ganz klar.
    Du musst das ganze nicht zwingend in einen String umwandeln. Wenn du das ganze auf dem Display ausgeben möchtest könnte das wie folgt aussehen:

    Code:
    Locate 1,1
    Lcd Spg;V
    Gruß Flo

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo Flo!

    Danke für deine Antwort!

    Wenn allerdings für Spg einmal 8,497 und einmal 12 rauskommt, hätte ich am Display zuerst 8,497V und anschließend 12V97 stehen, oder?

    Wieviele Nachkommastellen sind eigentlich möglich, bzw., wieviele benutzt der µC? Ist das definierbar?

    MfG
    Thomas

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    Bei deinem Spannungsteiler dürfte erst bei 15.4V eine 1023 beim getadc(0) herauskommen, wenn du ihn mit 10k und 4.7k aufgebaut hast.

    Schau dir mal die Funktion Fusing() an, die dürfte für dich hilfreich sein. Mit dieser wandelst du ein Single in einen String mit definierten Nachkommastellen um.

    Wenn du dann auch noch möchtest, das dein String, den du zum LCD sendest, stets die selbe Länge hat, damit der Wert mit seinen Stellen immer am gleichen Platz erscheint, bietet sich an, den Ergebnisstring vorne mit Leerzeichen zu ergänzen und dann nur rechts die gewünschte Anzahl an Stellen zu nehmen.

    Erg = Fusing(Singlewert,"#.##")
    Erg = "... einige Leerzeichen ..." + Erg
    Erg = Right(Erg,5)

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Auflösung und damit die Zahl der Sinnvollen stellen gibt der AD vor. Beim AVR sind das 10 Bit. Bei 15 V als Messumfang kann man damit 15V/1024 also etwa 0,015 V auflösen. Damit ist schon die 2te Stelle hinter dem Komma nicht voll aufgelöst. Ein wenig mehr kann man noch gewinnen, wenn man den AD wandler mehr als 1 mal ausließt und z.B 8 Werte addiert. Mehr als 2 Stellen hinter dem Komma machen aber wenig Sinn.

    Die Umrechnung kann man dann mit einer Multiplikation machen. Den Faktor müßte man sich als Konstante definieren oder mit dem Taschenrechner vorher ausrechenen. Also mehr so:

    sumadc = sumadc + getadc(0) -> (z.B. 8 mal als schleife )
    Spg = sumadc * 0.0023456

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Danke für eure Antworten!

    Ich hab jetzt mal in die BASCOM-Hilfe geschaut und bin um einiges reicher an Wissen geworden.

    Herausgekommen ist dabei dieser Code:
    Code:
    Dim Adc_wert as Word
    Dim Spg as Single
    Dim Spg_ausgabe as String * 4
    Const Adc_faktor = 0.01171875
    
    Do
    
    Adc_wert = Getadc(0)
    Spg = Adc_faktor * Adc_wert
    
    Spg_ausgabe = Str(Spg)
    Spg_ausgabe = Fusing(Spg , "##.##")
    
    Locate 1 , 1
    Lcd Spg_ausgabe , "V"
    
    Loop
    
    End
    Würde das so funktionieren? Laut meinen Überlegungen müsste ich am Display dann einen Zahlenwert von z.B. 08.12V stehen haben, oder?

    MfG
    Thomas

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.05.2007
    Beiträge
    109
    obs funktioniert kann ich dir nich sagen aber diese zeile :"Spg_ausgabe = Str(Spg)" ist vollkommen überflüssig.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    dein string ist auf jeden fall zu kurz ... "10.00" -> 5 zeichen und wenn du deinen spannungsteiler oder deinen umrechnungsfaktor nicht änderst, zeigt er dir brav 12 Volt an, wenn 15.4 anliegen, bzw. 9.35V, wenn 12V anliegen.

    vorsichthalber würde ich auch die typenkonvertierung (word->single) in einer extra-zeile machen und nicht mit anderen berechnungen zusammen. ist weniger fehleranfällig, sauberer und besser sichtbar.
    Mein Hexapod im Detail auf www.vreal.de

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Zitat Zitat von MSN
    obs funktioniert kann ich dir nich sagen aber diese zeile :"Spg_ausgabe = Str(Spg)" ist vollkommen überflüssig.
    Okay, dann lass ich sie weg.

    dein string ist auf jeden fall zu kurz ... "10.00" -> 5 zeichen und wenn du deinen spannungsteiler oder deinen umrechnungsfaktor nicht änderst, zeigt er dir brav 12 Volt an, wenn 15.4 anliegen, bzw. 9.35V, wenn 12V anliegen.
    Der Umrechnungsfaktor ist in dem Fall nur ein Zufallswert, da ich die genaue zu messende Spannung (noch) nicht kenne. Der Spannungsteiler wird dann ebenfalls noch angepasst.

    MfG
    Thomas

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress