-         

+ Antworten
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: AD-Wandler beim Mega8 + Ausgabe über LCD

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Ort
    Esslingen am Neckar
    Alter
    28
    Beiträge
    8

    AD-Wandler beim Mega8 + Ausgabe über LCD

    Anzeige

    Hallo zusammen,

    Ich hab folgendes Problem:
    Ich will eine Spannung vom einem 12V-Beiakku (aber nicht im Auto) einlesen und möchte die auf einem LCD mit einer Nachkommastelle wiedergeben.
    Dazu hab ich zuerst einen Spannungsteiler per Spindeltrimmer aufgebaut und auf 4:1 eingestellt (20V entsprechen dann beim 10-Bit-AD-Wandler 1023).
    Leider bekomm ich es einfach nicht gebacken, wie den AD-Wandler "geeicht" bekomme, so dass 12V auch wirklich als 12V interpretiert werden, und dass die "Skala" dann auch linear ist.

    Was muss ich hardware-mäßig anstellen, damit ich eine vernünftige Grundlage habe, und wie muss der Code aussehen dazu?

    Seither hab ich einfach den Wert den der AD-Wandler ausgibt durch 51,2 geteilt, damit ich auf eine Volt-Skala komme. Aber ganz das richtige ist das leider nicht...

    Danke schonmal für eure Hilfe, ich freu mich schon auf die Antworten meines ersten Beitrages

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    27
    Beiträge
    1.461
    HI

    Du musst die VREF deines ADCs (Ich nehme mal an 5,0V) durch 1024 teilen.

    Das ergibt 0.0048828125.

    Jetzt musst du deinen ADC-Wert mit 0.0048828125 malnehmen.
    (Achte darauf, dass deine Vref hochgenau ist, denn sonst bekommst du immer ungenaue Werte...)

    So genau braucht das aber kein Mensch, wenn er nue eine Nachkommastelle braucht.
    Nimm also mit 0.005 mal.

    Ganz liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    47
    Beiträge
    1.246
    Hallo tobimc,
    kleiner Denkfehler? Er will ja 12 Volt messen und nicht 5 Volt...
    @Biebauch:
    Deine Rechnung ist richtig, so wird es i.A. gemacht. Woran liegt es denn jetzt genau?
    Gruß, Michael

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Ort
    Esslingen am Neckar
    Alter
    28
    Beiträge
    8
    Hallo,
    Achte darauf, dass deine Vref hochgenau ist, denn sonst...
    Leider hab ich nur den 7805 anzubieten, genaueres hab ich nicht da und weiß auch net ob das wirklich nötig ist. Der 7805 bringt (mit 20€-Multimeter gemessene) 5,05V.

    Das hab ich mal in die Formel miteinfließen lassen, also anstatt 1024/20V hab ich jetzt 20,12 (weil ich ja 5,05 statt 5,00V referenz habe), dann komm ich auf 50,8946 statt 51,2

    Problem ist jetzt die Liniarität: Bei angelegten 10V hab ich 10,70 aufm Display, und bei angelegten 15V hab ich aber 16,32V aufm LCD :-/

    Soll ich da jetzt ein Korrektufaktor reinbasteln, ähnlich wie wenn man eine Gerade im Koordinatensystem verschiebt?

    Alternativ wäre auch ein SELECT CASE, und die werte zwischen grob 9 und 16V die ein Bleiakku in der Realität haben kann liste ich eben auf. Aber "cooler" wäre eben eine gerechnete Variante. Zumal ich ein Ergebnis mit einer Nachkommastelle brauche...

    thx

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also Korrektur hört sich ganz gut an, die kann ja schon nötig sein, weil der Widerstandsteiler nicht sehr geanu ist. Allerdings scheinen deine Messwerte nicht ganz Linear zu sein. Kannst ja mal ein ADCspannungswert-"REAL"-Spannungs-Diagramm aufstellen um zu sehen ob die Abweichung linear ist.

    MFG Moritz

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.05.2004
    Ort
    Bergstraße
    Beiträge
    245
    Also, korrekt wäre:

    U = ADC * Uref / 1023 * 4/1
    ^ Spannungsteiler
    Wenn das für einen hohen Wert von U kalibriert wird (zB durch Feineinstellung des Spindeltrimmers), sehe ich nicht wo das nicht-linear werden könnte. Die Bit-Auflösung liegt bei 0.02V, das kann es auch nicht sein, +- 0.1V sollte damit auf jeden Fall möglich sein.
    Geht die Spannung direkt vom Akku auf den Trimmer, oder liegen da noch Elemente (zB Diode?) dazwischen?
    ciao .. bernd

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Ort
    Esslingen am Neckar
    Alter
    28
    Beiträge
    8
    Hallo bhm,

    Das war der entscheidende Tipp!
    Ich hab bei 18V den Trimmer kalibriert, so dass ich auch 18V angezeigt bekomme. Wenn ich jetzt runterdrehe (hängt gerade am Netzteil), dann bekomme ich einen realistischen Spannungswert, Abweichungen über den interessanten Spannungsbereich (9...16V) sind max. 3/100!!!

    Jetzt muss ich nur noch hinbekommen, dass der Wert immer genau auf eine Nachkommastelle genau ist, alternativ 4stellig (3 Ziffern + ein Komma, also z.b. 13,2).

    Eine Diode ist bislang nicht dazwischen, ich will aber nach Möglichkeit eine einbauen (soll im Akkubetrieb keinen Standbystrom ziehen, deshalb etwas umständliche Schaltung). Ich müsste dann nur die 0,7V einer Si-Diode auf den Messwert wieder zuaddieren, dann sollte es doch in ordnung sein oder?

    thx
    Peter

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    56
    Beiträge
    159
    hi,
    prinzipiell ja, blöd ist nur dass die durchbruchspannungen bei dioden ganz gruslig von der temperatur abhängig sind. eine diode in einem messkreis ist, wenn der spannungsabfall eine rolle spielt, immer fehlerquelle nr.1
    gruss, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Ort
    Esslingen am Neckar
    Alter
    28
    Beiträge
    8
    Hi,

    Hat jemand noch einen Tipp, wie ich den Wert auf 4 stellen (3 ziffern + Komma) oder alternativ eine Nachkommastelle umformen kann?

    bei einer String-Variablen kann man ja die Anzahl de Zeichen begrenzen, aber geht das auch vernünftig mit Zahlen!?

    Danke schonmal,

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    56
    Beiträge
    159
    hi,
    wenn du eine routine meinst, mit der man zahlen in ein anzeige mit nachkommastellen bringen kann, versuch's mal so:

    ' *** ausgabe des druckes mit einer nachkommastelle ----------------------
    Level = 65

    'Az = Fusing(level , "##.#") + " bar" ' Ausgabe mit 1 Nachkommastelle
    ' verbraucht mehr platz im flash!

    Az = Format(str(level) , "0.0") + " bar" ' Ausgabe mit 1 Nachkommastelle
    ' geht genauso, ist sparsamer und schneller'
    ' *** -------------------------------------------------------------------------------

    gruss, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

+ Antworten
Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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