mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Digitalwert des ADC in Spg-Wert umrechnen


Autor: Cosi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich möchte einen digitalisierten Spannungswert auf einem Diplay 
ausgeben.
Ist folgende Formel zur Umrechnung aus dem binären bzw. dezimalen Wert 
ok?

Ue= Xd *(Uref/2^n-1)

Ue  ...Eingangssp
Xd  ...dezimaler Ausgangswert
Uref...Referenzspg
n   ...Quantisierungsstufen

Grüße, Cosi

Autor: Realplotter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ue = Xd * Uref / 2^n

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cosi wrote:
> ok?
>
> Ue= Xd *(Uref/2^n-1)
>

Yep. Ist ok.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Realplotter wrote:
> Ue = Xd * Uref / 2^n

Ist nicht ok. Bei einem 10 Bit ADC ist der Fehler aber nicht
alllzugross und oft akzeptabel.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl hat recht.

pumpkin

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Cosi wrote:
>> ok?
>>
>> Ue= Xd *(Uref/2^n-1)
>>

>Yep. Ist ok.

;) na was sage ich jetzt ?

ist nicht ok, Realplotter hat Recht.

Der ADC samplet einen Bereich von 0V bis VRef in einzelne "Häppchen", 
davon hat ein 10 Bit ADC 1024 Stück.

Gruß Hagen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein.
Ich hab mich verhaut.
Realplotter hat recht.
Die korrekte Umrechnung lautet tatsächlich
Ue = Xd * Uref / 2^n


Beispiel:
Angenommen der ADC kann nur 5 Stufen und wird mit einer Referenz
von 5V betrieben

  Volt         0   1   2   3   4   5
               +---+---+---+---+---+
Wert vom ADC     0   1   2   3   4

Die Umrechnung lautet in diesem Fall

Ue = Xd * 5 / 5

Für den Maximalwert vom ADC (4) ergibt sich damit ein
Spannungswert von 4 * 5 / 5 = 4
Dieses Ergebnis ist so zu interpretieren, dass bei einem
ADC Wert von 4 die tatsächliche Spannung irgendwo im letzten
rechten Bereich der Zeichnung da oben zu suchen ist. Ein
ADC Wert von 4 sagt also nur aus, dass die Spannung im Bereich
4 bis 5 Volt lag.
Daher ist es nur konsequent, wenn die Umrechnung immer den unteren
Wert der Bereichsgrenze für einen ADC Wert liefert.

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau, mit einer 5V Referenz und 10 Bit ADC ist die höchste meßbare 
Spannung exakt  5/1024*1023 = 4,99... Volt. Dieser Wert ist der unterste 
Spannungwert der noch als exakt 5 Volt interpretiert werden kann.

Gruß hagen

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genaugenommen müsste es doch (Xd + 0.5) * Uref / 2^n sein, um den 
mittleren quadratischen Fehler zu minimieren, oder?

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja könnte man so rechnen, quasi der Durchschnitt.
Was ich meinte sind die Grenzwerte, du rechnest einen Offset rein um 
diese Grenzwerte zu verschieben um am Ende quasi eine "Rundung" in die 
Mitte der Grenzwerte durchzuführen. Aber das sagt eben als Zahl nicht 
mehr aus als das wir nur in 0.00488.. Volt Schritten exakt messen 
können. Deine so gemittelte Zahl ist also nicht genauer nur weil sie auf 
die Mitte gerundet wurde.

Soweit die Mathematik in der Praxis hängt das vom ADC Meßverfahren ab, 
aber das dürfte wohl klar sein.

Ich persönlich mache das für die Anzeige der Daten auch so. Es ist schon 
blöde wenn man exakt 5 Volt mit 5 Volt VRef ausmisst und das steht was 
von 4.995117188 Volt. Richtig wäre es aber, den das ist die kleinste 
Zahl nach dem vorherigen Schritt in der entsprechenden Meßgenauigkeit, 
also 4.990234375.

Normalerweise müsste man den Offset Error der VRef ermitteln und dann 
die nachfolgenden Messungen korregieren.

Gruß Hagen

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann die Umrechnung als eine DA-Wandlung betrachten, da man von dem 
diskreten Bereich den der AD-Wandler liefert wieder auf einen 
kontinuierlichen Bereich (Volt, ° Celsius) abbildet. Um den Fehler bei 
der DA-Wandlung zu minimieren legt man im Normalfall die 
Rekonstruktionswerte in die Mitte der Intervalle.

Mal ein Beispiel: 2 Bit-Wandler, uref = 8 V.

Wenn der Eingang 8 V ist kommt nach deiner Formel (3 * uref / 2^2) = 6 V 
raus, also maximal 2 V daneben. Nach meiner kommt ((3 + 0.5) * uref / 
2^2) = 7 V raus, die Anzeige liegt also maximal 1 V neben dem wahren 
Wert.

  Volt         0   2   4   6   8
               +---+---+---+---+
Wert vom ADC     0   1   2   3
deine Formel   ^   ^   ^   ^
meine Formel     ^   ^   ^   ^

Gruß
Andreas

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Cosi (Gast)

>ich möchte einen digitalisierten Spannungswert auf einem Diplay
>ausgeben.

Festkommaarithmetik

MFG
Falk

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas,

ja ich weis warum du das machst. Was ich aber ausdrücken möchte ist der 
Punkt was uns das Resultat sagt.

In beiden Fällen entsteht die gleiche Meßgenauigkeit, das heist egal wie 
man es rundet (solange man nicht abrundet) es bleibt beim gleichen 
Informationsgehalt. Die Aussagekraft der Resultate ist die gleiche.

Bei dir wird 7V angezeigt, es bedeutet aber 6V bis 8V.
Bei mir wird 6V angezeigt, das heist es ist mindestens 6V kann aber bis 
8V sein.

Rechnet man mit dem ADC Wert weiter so verändert das nichts am späteren 
Resultat, bei beiden Verfahren. Nur die Interpretation der 
Meßabweichungen ist eine andere.

Es hängt jetzt vom verwendeten ADC Verfahren ab ob der ermittelte ADC 
Wert in der Mitte des Bereiches liegt oder die untere oder obere 
Schranke eines Bereiches darstellt. Also je nach ADC Verfahren darf man 
dann nicht noch zusätzlich runden, bzw. den Meßwert mit einem Offset 
versehen um ihn zu verschieben.

Gruß Hagen

Autor: Cosi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hagen Re wrote:
> @Andreas,
>
> ja ich weis warum du das machst. Was ich aber ausdrücken möchte ist der
> Punkt was uns das Resultat sagt.
>
> In beiden Fällen entsteht die gleiche Meßgenauigkeit, das heist egal wie
> man es rundet (solange man nicht abrundet) es bleibt beim gleichen
> Informationsgehalt. Die Aussagekraft der Resultate ist die gleiche.
>
> Bei dir wird 7V angezeigt, es bedeutet aber 6V bis 8V.
> Bei mir wird 6V angezeigt, das heist es ist mindestens 6V kann aber bis
> 8V sein.

Wenn der Benutzer weiß dass "5" 6-8 V bedeutet, dann kannst du auch "5" 
anzeigen. Die Frage ist nur, macht das Sinn? Oder sollte man nicht den 
Wert anzeigen, der der tatsächlich gemessenen Spannung am nächsten 
kommt?

Mehr Probleme bekommst du wenn du z.B. aus deinen Messungen einen 
Mittelwert bildest. Da kannst du dem Benutzer nicht vermitteln dass er 
einen angezeigten Mittelwert von 3.7 als 4.7 interpretieren muss (um bei 
o.g. Beispiel zu bleiben).

> Also je nach ADC Verfahren darf man dann nicht noch zusätzlich runden,
> bzw. den Meßwert mit einem Offset versehen um ihn zu verschieben.

Der ADC kann ja keinen exakten Messwert ausgeben, er kann nur ausgeben 
in welchem Messintervall der anliegende Analogwert liegt. Du zeigst 
willkürlich die untere Grenze dieses Messintervalls an. Genausogut 
könntest du die obere anzeigen. Ich zeige die Mitte an, weil das im 
Durchschnitt am nächsten am wahren Eingangswert liegt.

Dass es in der Praxis bei einer Auflösung von 10 Bit selten eine Rolle 
spielt, das steht wieder auf einem anderen Blatt. Da könnte man sich 
auch die Diskussion 1023 vs. 1024 sparen. Wenn man allerdings einen NTC 
linearisieren möchte o.ä., dann kann ich mir schon vorstellen dass man 
sich recht ordentliche Fehler einfängt wenn man nicht exakt rechnet.

Gruß
Andreas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.