Forum: Mikrocontroller und Digitale Elektronik AD werte umrechnen


von belluh (Gast)


Lesenswert?

Hallo, messe mit einem ATmega8 eine Spannung von 0- 5 V.
Klappt auch alles aber als Ausgabe erhalte ich 0-1023. Mir ist klar das
5 V dem Wert 1023 entsprechen müssen und 512 demnach 2.5 V.
Möchte in 100 mv Schritten messen aber wie setzte ich jetzt die Daten
um ? Mache das ganze in Bascom. Danke !

von Rufus T. Firefly (Gast)


Lesenswert?

Für so etwas gibt es den Dreisatz.

Anzeigewert = Messwert * (5 / 1024)

von belluh (Gast)


Lesenswert?

Hey danke ! Die 5 beziehen sich auf die Spannung oder ? Dann kann ich da
also da die jeweils zu messende Spg eintragen ?

von Rufus T. Firefly (Gast)


Lesenswert?

Die 5 bezieht sich auf die Spannung, die dem Messwert 1023 entspricht.

Kann mich mal wer zwicken?

von Wolle (Gast)


Lesenswert?

@R.T.F zwickzwackzwick

@belluh

5V = 5000mV werden in 1024 Teile geteilt.
Wenn man das jetzt über 'nen Abakus laufen läßt, kommt für einen Teil
4,8828125mV (ungefähr ca. genau) heraus.

Wieviel Teile mußt du dann auf einen Haufen packen, um 100mV zu
erhalten ?

Na.......kommt Licht ??

von R. T. (Gast)


Lesenswert?

@Wolle

Nein exakterweise werden die 5V in 2^10-1 = 1023 Stufen quantisiert

von Wolle (Gast)


Lesenswert?

Schon klar.
Aber einer mehr oder weniger...........
Er hat das Prinzip halt noch nicht erkannt.

von Sebastian (Gast)


Lesenswert?

@R. T:
Stimmt schon..., aber eigentlich doch
2^10(-1) = 1023 (+1) da wir ja bei null anfangen zu zählen und nicht
bei 1 und darum find ich sind es trotzdem 1024

aber vielleicht irre ich mich ja

von R. T. (Gast)


Lesenswert?

@ Sebastian:
-->ein kleines Beispiel: 2-Bit ADC mit 4V Referenzspannung
   --> Frage: Anzahl der Quantisierungsstufen q = 2^2=4 oder 2^2-1=3 ?

       mit der Formel: U_mess = ADC_wert * Uref/q
       ergeben sich folgende Zusammenhänge

          ADC_wert  U_mess(q=4) U_mess(q=3)
              00     0V           0V
              01     1V           1,33V
              10     2V           2,66V
              11     3V           4V

von Sebastian (Gast)


Lesenswert?

hehe
ups... :-) hast wohl recht

von Kupfer Michi (Gast)


Angehängte Dateien:

Lesenswert?

Wollen wir uns das wirklich nocheinmal antun...

http://www.mikrocontroller.net/forum-extern/read-1-136722.html#136722

Zum Nachlesen im M16 DB auf Seite 214 oder graphisch im Anhang

von Kupfer Michi (Gast)


Lesenswert?

..und etwas allgemeiner:

Evaluating and Using ADCs
http://www.national.com/appinfo/adc/files/Web-pres2001.pdf

von Simon Küppers (Gast)


Lesenswert?

Nur weil der Maximal-Wert des ADCs 1023 ist, heißt es nicht, dass er nur
1023 stufen hat.

Natürlich hat er Exakt 10bit Auflösung und wenn man 5,12V als Referenz
nimmt, macht das durchaus sinn:
5,12V = 5120mV
5120 / 1024 = 5 mV

D.H jeder Schritt 5mV

Der gültige ADC Bereich liegt zwischen 0 und 1023, wobei 0 = 0V
entspricht und 1023 = 5,12V (theoretisch..)

von heiko (Gast)


Lesenswert?

hallo,
der link:

Evaluating and Using ADCs
http://www.national.com/appinfo/adc/files/Web-pres2001.pdf

ist gut wenn es diesen auf deutsch geben würde, wäre es noch besser,
kennt jemand einen link der dies so darstellt nur in d

mfg
heiko

von Jürgen Schuhmacher (Gast)


Lesenswert?

Mal ein kleiner Tipp: Man steuert erstens AD-Wamdler nie auf Vollwert
aus:  Die Linearitätsdefiniton beim Kalibrieren liegt oft bei 2/3
Endwert, d.h. DORT ist die beste Genauigkeit. Zweitens würde ich aus
rechentechnischen und fehlerinterpretationstechischen Gründen zu
Vollwerten raten: 5V sollten exakt 1000 enstsprechen. Es macht wenig
Verlust, statt der 1023 die praktikableren 1000 zu bnutzen, die oberen
Daten können aber prima Steuerinfos transportieren:

Wenn man z.B: eine Messwert verarbeitung hat, so könnete man eine
Übersteuerung pauschal auf 1020 setzen, einen Drahtbruch auf 1010 einen
eventuell möglichen Fehler durch Störungen auf 1005 oder so. Dann kann
die anschließende Messwertlogig mit DISESEM einen Wert operieren , ohne
zusätzliche Signale oder Zustände zu benutzen- wichtig bei
ereignisesteuerten Systmen, mit schmaler Übertragung zwischen 2
Systemen.

Generell ist es aus Gründen der Fehlersuche und Plausibilierung der
Messung sinnvoller, mit gedanklich leicht nachvollziehbaren
Übersetzungsfaktioren (im obigen Beispiel 4.0 / mv) zu arbeiten, wie
oben bereits beschreiben. In "alten" Systemen war das sogar
unumgänglich, da man kein floating point benutzen konnte :D

Ich habe auf diese Weise mal ein Messwertmodul entwickelt, daß die
vorhandene Übertragungsstrecke nutzen könnte, OHNE zusätzlich digitale
Steuerinfos übertragen zu müssen. Eine Wert von >1000 wäre dann z.b.
kein verwertbarer Messwert, sondern deutet auf einen Fehlemssung hin.
Die Auswertemathematik woanders, wiess dann, daß sie den Wert verwerfen
muss und den alten ausgeben soll. Speziell in schnellen Umgebungen kann
man hier einfach den nächsten Messwert nehmen.

Noch ein Punkt: Auf obige Weise wäre auch klar, daß "1000" wirklich
exakt Maximal Analog bedeuten und nicht ein Anschlag / Übersteuerung
vorliegt.

Auf diese Weise habe ich z.B. bei einem 8Bit-System immer 5V=250
eingestellt und wusste so, daß >=251  immer etwas mit Fehlern zu tun
haben musste.

Dies alles nur als Anregung zu nächlicher Stunde ... :D

von heiko (Gast)


Lesenswert?

sehr interessant,
würde gerne mehr davon erfahren wollen, wie du es im enddefekt
realisiert hast, hardware- sowie softwaretechnisch?

möchte mich demnächst auch mit diesem thema auseinandersetzen, da ich
keine erfahrung mit soetwas habe, informiere ich mich hier gelegentlich
und stosse zum 1. mal auf so eine für mich informationsreiche nachricht.
hätte jetzt 1000 fragen aber vielleicht erstmal die ersten schritte???

mfg
heiko

von crazy horse (Gast)


Lesenswert?

SO ähnlich mache ich es auch, Beispiel 4-20mA Stromschleife. Den
A/D-Messbereich lege ich für 0-22mA aus. Ich kenne keine Transmitter,
die nicht auch mehr als 20mA ausgeben bei Überschreitung des
Eingangsmessbereichs oder bei Defekten. Ergibt die Möglichkeit der
Fehlererkennung. Das Einstellen der Referenz dass sich "schöne
glatte" Zahlen ergeben, halte ich nicht für erforderlich, meist wird
der Messwert doch sowieso skaliert.

von Jürgen Schuhmacher (Gast)


Lesenswert?

4-20mA ist exakt mein Thema gewesen damals. Ich habe einen dieser
typischen ->Kopfmessumformer ersetzt, wie er damals von Sensycon/H&B
angebten wurde - das ging dann in ein CAN-Modul für die ABB. Diese
Gerätchen besitzen ja eine interne Linearisierung die sogar wieder
einen Analogwert ausgibt- nur eben einen linearen. Dazischen sitzt ein
AD, ein uC und wieder ein AD. Der uC gibt die Gelegenheit zu
Linearisieren und zugleich Überstrom zu detektieren. Bei der
Gelegenheit kann man sich Fehlerzustände ausdenken, die anderswo
reinterpretiert werden.

Soweit ich weiss, sind die KMU sogar bis 25ma spezifiziert. Dawer
wundert es nicht, daß sowas auftritt. Ist aber schon eine Weile her, so
genau bin ich da nicht mehr drin.

von heiko (Gast)


Lesenswert?

hallo,

@jürgen schuhmacher & crasy horse

könnt ihr vielleicht mehr zur vorgehensweise, realisierung und
benötigten sachen posten?

mfg
heiko

von heiko (Gast)


Lesenswert?

schade das keiner mehr von euch antwortet....

von crazy horse (Gast)


Lesenswert?

was willste denn noch wissen?

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.