hallo, kann jemanden mir helfen. wie rechnet man eine analoge Wert in digitale um. Was muss man beachten. Danke
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
Analoge Werte in digitale, Troll? Da gibts nichts zu berechnen, A/D Wandler? lg
entstammst du der rasse der trolle? analoge in digitale umrechnen? hast du die physik neu erfunden? das ich nicht lache.
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...
ja ich war auch einmal ein fulltoudl, aber auch ich bin so behandelt worden du blöder oger. :b
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!
hallo, aber im Datenblatt steht: ADC=Vin*1023/Vref Wenn ich die Formel einsetze, kriege ich nicht das Ergebnis.
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)
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.
hallo Karl, sorry ich habe die andere nicht eingefügt. Jetzt der neue Code
ich trau der 1023 nicht, sollte das nicht besser 1024 heisen oder ist das ein ganz spezieller AD mit 9.99Bit
1023 ist der größte Wert, den eine 10 Bit Zahl aufnehmen kann. 1024 wäre bereits das 11. Bit.
1024 ist trotzdem richtig http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC#Ein_paar_ADC-Grundlagen
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...
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.
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.
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.
> 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?
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.
@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.
...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...).
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.
@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.
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
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
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.
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 --+ |
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!
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).
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.
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.
sollte beim zweiten mal heißen: dann ist die Division durch 3 sinnvoll.
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.
@ 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.
Weil diese 3 1/2-Stellen DMM vorne nur eine eins darstellen können?
@ 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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.