Forum: Mikrocontroller und Digitale Elektronik Umrechnen von analog to digital


von gast (Gast)


Lesenswert?

hallo,

kann jemanden mir helfen.
wie rechnet man eine analoge Wert in digitale um. Was muss man beachten.

Danke

von Pete K. (pete77)


Lesenswert?

Kannst Du die Frage genauer stellen ?

Ansonsten google mal nach A/D Converter. Oder für Dich auch ganz bequem: 
hier der WIKI Eintrag: 
http://de.wikipedia.org/wiki/Analog-Digital-Umsetzer

von Peter G. (grudolf)


Lesenswert?

Analoge Werte in digitale, Troll?

Da gibts nichts zu berechnen, A/D Wandler?

lg

von Hans M. (fuxdancer)


Lesenswert?

entstammst du der rasse der trolle?
analoge in digitale umrechnen? hast du die physik neu erfunden?
das ich nicht lache.

von Peter G. (grudolf)


Lesenswert?

Chris K. schrieb:
> entstammst du der rasse der trolle?
> analoge in digitale umrechnen? hast du die physik neu erfunden?
> das ich nicht lache.

Chris K. ...
so geht man nicht mit Forumsmitglieder um, auch du hast einmal als 
Fulltoudl angefangen...

von Hans M. (fuxdancer)


Lesenswert?

ja ich war auch einmal ein fulltoudl, aber auch ich bin so behandelt 
worden du blöder oger. :b

von Peter G. (grudolf)


Lesenswert?

Chris K. schrieb:
> ja ich war auch einmal ein fulltoudl, aber auch ich bin so behandelt
> worden du oger. :b

Und du solltest dich mal besser beherrschen, du JIT!

von gast (Gast)


Lesenswert?

hallo,

aber im Datenblatt steht: ADC=Vin*1023/Vref

Wenn ich die Formel einsetze, kriege ich nicht das Ergebnis.

von Karl H. (kbuchegg)


Lesenswert?

gast schrieb:
> hallo,
>
> aber im Datenblatt steht: ADC=Vin*1023/Vref
>
> Wenn ich die Formel einsetze, kriege ich nicht das Ergebnis.

Dann zeig mal deinen Code.
(Du musst natürlich die Formel nach Vin umstellen. Du hast den Wert vom 
ADC und willst die Spannung wissen)

von gast (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
anbei der Code.

von Karl H. (kbuchegg)


Lesenswert?

gast schrieb:
> Hallo,
> anbei der Code.

OK.
Und, was ist jetzt das Problem?

Das liest den ADC aus, d.h. du hast irgenwelche ADC Werte im Array 
Voltages.

Ich sehe aber nirgends, wo bzw wie die ADC Werte in Volt umgerechnet 
werden.

von gast (Gast)


Angehängte Dateien:

Lesenswert?

hallo Karl,
sorry ich habe die andere nicht eingefügt. Jetzt der neue Code

von Vlad T. (vlad_tepesch)


Lesenswert?

totalvalue * vref/1023

von Marcus K. (marcusk)


Lesenswert?

ich trau der 1023 nicht, sollte das nicht besser 1024 heisen oder ist 
das ein ganz spezieller AD mit 9.99Bit

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

1023 ist der größte Wert, den eine 10 Bit Zahl aufnehmen kann. 1024 wäre 
bereits das 11. Bit.

von Karl H. (kbuchegg)


Lesenswert?


von Ing-Dom (Firma: OpenKNX) (sirsydom)


Lesenswert?

jo 1024, denn die 0 ist ja auch dabei.

von Andreas K. (derandi)


Lesenswert?

Wenn man bei 1 zu zählen beginnt, wie es der Mensch nun mal tut, dann 
ist 1024 richtig.
Wenn man aber wie der Controller bei 0 zu zählen anfängt ist die höchste 
Zahl die 1023.

Deswegen fallen auch ständig Leute über den Fallstrick ein Array mit [5] 
Feldern zu initialisieren, aber das letzte Feld nicht mit [4] sondern 
mit verbotenen [5] anzusprechen und ins leere zu treten. Ich in der 
Vergangenheit übrigens auch, mehr als oft genug...

von Klaus (Gast)


Lesenswert?

Hat aber nichts damit zu tun, dass durch 1024 geteilt werden muss. Egal 
ob man bei 1 oder bei null zu zählen beginnt, weil es bei 10bit in jedem 
Fall 1024 Zahlen gibt.

von Andreas K. (derandi)


Lesenswert?

Schon klar, der Wert im ADC wird aber nie größer als 1023.

von Karl H. (kbuchegg)


Lesenswert?

Andreas Klepmeir schrieb:
> Schon klar, der Wert im ADC wird aber nie größer als 1023.

Das ist schon richtig.
Aber ein Wert von 1023 sagt ja auch nicht aus, dass am ADC exakt die 
Referenzspannung anliegt. Genausowenig wie ein ADC Wert von 0 exakt 0 
Volt entspricht.

Der ADC liefert 1024 Spannungsbereiche. Jeder ADC Wert steht für einen 
Bereich in dem die tatsächliche Spannung war. Liefert der ADC 1023, dann 
war die gemessene Spannung irgendwo im Bereich (Referenzspannung - 
1/1024 der Referenzspannung) und der Referenzspannung selber.

Mit kleineren Zahlen sieht man das besser.
Angenommen der ADC kann nur 2 Bit auflösen (also 4 verschiedene Werte 
liefern) und die Referenzspannung sei 10V gewesen (damit sichs leichter 
rechnet).

    ADC Wert      Spannung
                      0
       0
                      2.5
       1
                      5
       2
                      7.5
       3
                      10


Ein ADC Wert von 2 bedeutet, dass die gemessene Spannung irgendwo 
zwichen 5 und 7.5V war.
Auch wenn der höchste ADC Wert 3 ist, so liefert der ADC trotzdem die 
Information, in welchem von 4 Spannungsbereichen die Messspannung lag.

von Maik W. (werner01)


Lesenswert?

und dieses 1024/stel ist das nicht der relative Messfehler?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

nö, das ist kein Meßfehler, sondern die Auflösung.


Ein Meßfehler ergibt sich, wenn der A/D Wandler z.B. "348" angibt, 
obwohl die angelegte Spannung eigentlich "352" wäre.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> ich trau der 1023 nicht
Ich auch nicht. Aber die Zahl steht (offenbar) im Datenblatt, und da 
sollte man sich fragen: Warum?

Evtl. nur deshalb, damit auch bei 5,0V Vref und 5,0V am Eingang mit 
ADWert=1023 in der Software auch wieder 5V herauskommen?
Weil die kontrollierten Werte sind (allzu menschlich) idR. 0V und 
Fullscale. Und bei ADC=0 kommt (egal ob mit 1024 oder 1023) der Wert Vin 
= ADC*Vref/1023 = 0V sowieso richtig heraus.
Aber bei Fullscale kommen einmal Vin = ADC*Vref/1023 = 1023*5V/1023 = 
5V, und das andere mal Vin = ADC*Vref/1024 = 1023*5V/1024 = 4,995V 
heraus. Und das könnte so manchen Ingenieur (und/oder Programmierer 
und/oder Datenblattschreiber) verwirren... :-/

Also wird im Datenblatt einfach eine Formel mit 1 Promille Fehler 
angegeben, was eigentlich nicht schlimm ist, weil der ADC sowieso 1/2 
bis 1 Bit nichtlinear ist... ;-)

@  gast (Gast)
Welcher ADC ist das?
Kannst du einen Link zum Datenblatt posten?

von Karl H. (kbuchegg)


Lesenswert?

Lothar Miller schrieb:

> Also wird im Datenblatt einfach eine Formel mit 1 Promille Fehler
> angegeben, was eigentlich nicht schlimm ist, weil der ADC sowieso 1/2
> bis 1 Bit nichtlinear ist... ;-)

Na ja.
Eigentlich ist es ja auch kein Fehler in dem Sinne.
Mit der Division durch 1023 ensteht ja eine Zahl, die im tatsächlichen 
Bereich liegt.

Wieder am Beispiel des 2 Bit ADC von oben.

Der ADC meldet 2. Wir wissen, das damit die Messspannung irgendwo im 
Bereich 5 bis 7.5V war.

    2 * 10 / 3 = 7

7 ist ein gültiges Ergebnis, denn die Aussage war ja: im Bereich 5 bis 
7.5

Wie ist das bei 1

    1 * 10 / 3 = 3

auch das ist im Grunde korrekt, den der Messbereich war ja 2.5 bis 5 und 
3 liegt in diesem Bereich.

Das einzige 'Problematische': kleine ADC Werte liefern Spannungswerte, 
die im unteren Bereich des jeweiligen Spannungsintervalls angesiedelt 
sind, große ADC Werte machen das genaue Gegenteil: sie liefern einen 
Spannungswert, der am oberen Ende angesiedelt ist. Dahingehend ist die 
Division durch 1024 fairer, wenn auch für einen Benutzer 
zugegebenermassen verwirrender, da der Endwert nie erreicht wird.

von Route_66 (Gast)


Lesenswert?

@kbuchegg
1023 ist dennoch richtiger!
Die Nichtlinearität bzw. ungenauigkeit realer Wandler will ich hier 
nicht betrachten.
Um bei Zahlenbeispielen zu bleiben: Um bei einem 10 Bit A/D-Wandler 
nicht umrechnen zu müssen, sollte die Referenzspannung 1,023 Volt 
betragen. Dann ist der ermittelte Wert die Eingangsspannung in 
Millivolt!
Eine Skalierung mit 1024 bringt damit Fehler, denn ein Bit entspricht 
einem 1023stel der Referenzspannung.

von Route_66 (Gast)


Lesenswert?

...oder für die, die nicht in Elektronik denken: Wenn ein Lineal Striche 
von Null bis 29 hat, besitzt es zwar dreßig Striche, aber nur 29 
Abstände (Zwischenräume, Teilungen, Stufen...).

von Karl H. (kbuchegg)


Lesenswert?

Der ADC liefert seinen Maximalwert nicht erst dann, wenn die zu messende 
Spannung exakt mit der Referenzspannung übereinstimmt, sondern schon 
früher. Der Hersteller wird ja wohl wissen, wie sein ADC funktioniert.

von Route_66 (Gast)


Lesenswert?

@kbuchegg
Das hängt nicht nur von der Genauigkeit sondern auch von der 
Funktionsweise des realen A/D-Wandlers ab!

Es ist auch eher eine philosophische Frage und vom Standpunkt des 
Betrachters abhängig.

von Karl H. (kbuchegg)


Lesenswert?

Route_66 schrieb:
> @kbuchegg
> Das hängt nicht nur von der Genauigkeit sondern auch von der
> Funktionsweise des realen A/D-Wandlers ab!

Eben.
Daher traue ich den Atmel Datenblättern mehr :-)
Und die rechnen mit 1024

von Uhu U. (uhu)


Lesenswert?

Karl heinz Buchegger schrieb:
> Daher traue ich den Atmel Datenblättern mehr :-)
> Und die rechnen mit 1024

Die Argumentation ist zwar pragmatisch, aber nicht kausal.

Wie wärs damit:

Ein n-Bit-ADC teilt den Meßbereich in 2^n Schritte auf und numeriert die 
durch von 0 bis 2^n - 1.

Deshalb lautet die Formel

von Route_66 (Gast)


Lesenswert?

Jaaa, bei Atmel! Das war jedoch nicht die ursprüngliche Frage.
Die "Treppenkurve" hat aber immer nur 1023 Stufen. Je nach 
Funktionsweise des Wandlers (und sicher auch je nach Abgleich) schneidet 
diese Treppenkurve sich mit der Geraden an unterschiedlichen Punkten. 
Daher kommt ja auch der prinzipielle Messfehler aller digitalen 
Verfahren von +/- 1 Digit.

von Uhu U. (uhu)


Lesenswert?

Route_66 schrieb:
> Die "Treppenkurve" hat aber immer nur 1023 Stufen.

Du hast die nullte Stufe übersehen.

Für den Fall n = 2 sieht die Stufenleiter so aus:
1
3         +---
2
2      +--+
3
1   +--+
4
0 --+

von Route_66 (Gast)


Lesenswert?

Weil aber Spannung kein absoluter Wert ist sondern die Differenz 
zwischen zwei Potentialen darstellt, musst Du nicht die Standflächen 
zählen, sondern die Höhenunterschiede. Das sind bei Deiner Zeichnung 
drei!

von Route_66 (Gast)


Lesenswert?

Man kann zwar vier Werte 0...3 darstellen, also keinen, einen, zwei oder 
drei "Abstände" zur Null haben, nie aber vier (2 hoch 2).

von Uhu U. (uhu)


Lesenswert?

Route_66 schrieb:
> Weil aber Spannung kein absoluter Wert ist sondern die Differenz
> zwischen zwei Potentialen darstellt, musst Du nicht die Standflächen
> zählen, sondern die Höhenunterschiede. Das sind bei Deiner Zeichnung
> drei!

Du liegst falsch.

Die Potentialdifferenz zwischen zwei Punkten auf gleichem Potential ist 
null. Also zählt die nullte Stufe auch dazu.

Schließlich will man auch die Aussage "Das Potential ist gleich" 
bekommen können.

Nicht die Sprünge, sondern die Stufen zählen. Die Sprünge sind nur die 
Punkte, an denen eine winzige Spannungsänderung den Wechsel auf die 
nächste Stufe auslöst.

von gast (Gast)


Angehängte Dateien:

Lesenswert?

hallo,
anbei das Datenblatt, die Formel steht in der Seite 297

von oioioioioi (Gast)


Lesenswert?

einfach alles mal

von Horst (Gast)


Lesenswert?

Der Einfachheit halber nehme ich an, dass jede Stufe 1V hat:

3         +---  3V
2      +--+     2V
1   +--+        1V
0 --+           0V


3V/4 ergibt dann: ...
3V/3 ergibt dann: ...

Und wann ist das Ganze sinnvoll?
Wenn man gründlich kalibriert und dann den wahrscheinlichsten Wert für 
die 3. Stufe verwendet, dann ist die Division durch 4 sinnvoll.
Wenn man gründlich kalibriert und mit den Spannungs-Werten die obere 
Grenze des mit einer Zahl angezeigten Bereichs beschreibt, dann ist die 
Division durch 4 sinnvoll.

Es ist nicht sinnvoll, wenn ein Unterschied < lsb eine Rolle spielt. 
Dann wird die Messung eh nichts.
Ansonsten: binäre Rechner können meist schneller durch 2er Potenzen 
dividieren.

von Horst (Gast)


Lesenswert?

sollte beim zweiten mal heißen:
dann ist die Division durch 3 sinnvoll.

von Andreas K. (derandi)


Lesenswert?

Der Wert im ADC wird aber nie über 1023 steigen. Wer es nicht glauben 
will darf gerne nachrechnen, 1111111111 in Binär entspricht 1023 in 
dezimal.
Formel: U_eingang = Vref*(ADC/1023).

(ADC/1023) ergibt einen Wert zwischen 0 und maximal 1,0, nicht darunter 
und nicht darüber, Wil: (1023/1023) = 1,0.
Wir befinden uns jetzt also beim 1,0-fachen der Referenzspannung oder 
darüber. (plusminus 0,5 der kleinsten Auflösung, für die Haarspalter)
Bei 10V am Eingang und als Vref wäre der größte Wert, den der ADC 
ausspuckt 10,0 V.

Wenn man jetzt ADC durch 1024 teilt ist die größte, mögliche Zahl: 
1023/1024 = 0,9990234375.
Bei 10V am Eingang und an Vref wäre der größte Wert, den der ADC 
ausspuckt 9,99 V.

von Falk B. (falk)


Lesenswert?

@  Andreas Klepmeir (derandi)

>Bei 10V am Eingang und an Vref wäre der größte Wert, den der ADC
>ausspuckt 9,99 V.

Richtig. Deshalb spuckt ein DMM mit 3 1/2 Stellen immer 1.999 als 
Maximalwert aus, eins mit 3 3/4 immer 3.999

Woran das wohl liegen mag . .  .?

MFG
Falk

P.S. Wer seine Schaltung darauf dimensioniert, dass der allerletzte 
ADC-Messwert noch im normalen Messbereich liegt macht was falsch.

von Andreas K. (derandi)


Lesenswert?

Weil diese 3 1/2-Stellen DMM vorne nur eine eins darstellen können?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

@ Horst
> Der Einfachheit halber nehme ich an, dass jede Stufe 1V hat:
> 3         +---  3V
> 2      +--+     2V
> 1   +--+        1V
> 0 --+           0V

Dann sollte das so dargestellt werden (mit X- und Y-Achse):
3         +---
2      +--+
1   +--+
0 --+
 0V 1V 2V 3V 4V

 @  Andreas Klepmeir (derandi)
>Bei 10V am Eingang und an Vref wäre der größte Wert, den der ADC
>ausspuckt 9,99 V.
Und das bringt die Softies dann jedesmal ins Schleudern... ;-)

Oder:
Gehen wir einen Schritt weiter zu einem bipolaren 11-Bit-Wandler, der 
dann ja  -1024 bis +1023 ausgeben kann...
Wie sieht das jetzt mit einem Faktor von 1023 aus?
Was ist da die negativste Spannung?

BTW:
Mein Faktor ist 1024 für einen 10-Bit-Wandler...

von Stephan H. (stephan-)


Lesenswert?

Jungs,
 ich glaube das bringt nichts.
Der User versteht die von Euch diskutierten Unterschiede und Standpunkte 
nicht. Er ist bei den Grundlagen.
10Bit sind nun mal 1024 mögliche Werte.
Dabei sollte man es belassen.

Wir lesen doch eh keinen Wert sondern einen "Bereich" ab in dem sich der 
angezeigte Wert befindet.
Sicher ist es sinnvoll eine der Auflösung des A/D entsprechende Vref zu 
haben oder zu wählen um dann zB. direkt mV ablesen zu können. Aber eben 
nicht immer möglich.

Beschränkt Euch doch darauf die Grundlagen welche natürlich im Forum zu 
finden sind aufzuzeigen oder auf diese zu verweisen.
10 Bit 1024 Werte, Vref zB. 1,024V
12 Bit 4096 Werte, Vref zB. 4,096V

Damit wird den Usern warscheinlich ehr geholfen und der der Zusammenhang 
zwischen Vref und dem A/D Wert klar als hier für den User sinnlose 
Diskussionen zu betreiben.

Auch wenn ich solche Diskussionen immer wieder aus dem Blickwinkel des 
"Fortgeschrittenen" gern lese.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.