Was ist richtig: U = (Uref / 1023) * ADC_Wert oder U = (Uref / 1024) * ADC_Wert ? Danke von Tobi
Schüler-AG schrieb: > Was ist richtig: > > U = (Uref / 1023) * ADC_Wert oder > U = (Uref / 1024) * ADC_Wert ? > > Danke von Tobi Das kommt drauf an. Es können leicht auch mal ganz andere Werte (statt 1023, 1024) sein ...
Jester schrieb: > Das kommt drauf an. Es können leicht auch mal ganz andere Werte (statt > 1023, 1024) sein ... Offensichtlich geht es um einen 10-Bit ADC.... Wenn ich raten müsste würde ich Arduino sagen. Schüler-AG schrieb: > Was ist richtig: Was ist denn die größte Zahl die man mit 10-Bit darstellen kann?
:
Bearbeitet durch User
Kevin M. schrieb: > Offensichtlich geht es um einen 8-Bit ADC.... Hier sind mir zu viele Spezialisten - bin dann mal raus ...
Schüler-AG schrieb: > Was ist richtig: > > U = (Uref / 1023) * ADC_Wert oder > U = (Uref / 1024) * ADC_Wert ? > > Danke von Tobi Das ist das typische Zaunpfahlproblem: https://de.wikipedia.org/wiki/Zaunpfahlfehler
Kevin M. schrieb: > Offensichtlich geht es um einen 8-Bit ADC.... nein, es geht um einen 10-bit ADC. Da teilt man durch 1024.
Andreas B. schrieb: > nein, es geht um einen 10-bit ADC. Da teilt man durch 1024. wer lesen kann ist klar im Vorteil und nein tut man nicht...
Kevin M. schrieb: >> nein, es geht um einen 10-bit ADC. Da teilt man durch 1024. > > wer lesen kann ist klar im Vorteil und nein tut man nicht... Bei dem typischen Fehler von Arduino-AD-Wandlern spielt der Unterschied zwischen 1023 und 1024 praktisch keine Rolle. https://www.mikrocontroller.net/articles/Aufl%C3%B6sung_und_Genauigkeit
Kevin M. schrieb: > wer lesen kann ist klar im Vorteil und nein tut man nicht... Natürlich tut man das. Versuchs dir selber herzuleiten, von einem 1-Bit-ADC über 2 Bit, 3 Bit... bis 10 Bit. Tipp dazu: Jeder Digitalwert aus dem ADC entspricht einem Bereich von Analogwerten.
Kevin M. schrieb: > und nein tut man nicht... Tipp: Du musst uns nicht glauben, wenn du schlauer als das Datenblatt bist. AVR Datenblatt! Dort findet sich eine Beispielrechnung.
Kevin M. schrieb: > Offensichtlich geht es um einen 10-Bit ADC.... > Wenn ich raten müsste würde ich Arduino sagen. Dann sage ich mal 11-Bit DAC, weil wegen +/-. Harald W. schrieb: > ei dem typischen Fehler von Arduino-AD-Wandlern spielt der > Unterschied zwischen 1023 und 1024 praktisch keine Rolle. Dann würde ich durch 1024 teilen und einkalkulieren, niemals die 1 zu sehen. ------------------------------------------------------------ So, jetzt mal zum Abschreiben: Ein ADC hat einen maximalen Aussteuerungsbereich und einen Bereich mit einer definierten Linearität. Im Normalfall wird man einen Wandler NIEMALS voll aussteuern, weil man dann die Übersteuerung nicht sehen kann. Das Schlaueste wäre in einem Fall eines Bereiches von 0..1V Eingang, genau mit 1.024 zu kalibieren und durch 1024 zu teilen. Allerdings hat man dann das Problem, dass man die ß nicht sauber messen kann, weil man keine negativen Zahlen bekommt. Es klappt das Entrauschen nicht. Also: zugeführte Spannung mit z.B. 0,1V beaufschlagen und verstärken, dass sich der Bereich von 10% bis 90% erstreckt. Dort ist der Wandler am Linearsten und man kann überabtasten. z.B. Faktor 4 und Werte zwischen typisch 16 und 3600 zusammenbekommen. Dann einfach den Offset weg und umskalieren.
Praxis ist das Kritetrium der Wahrheit -> also frag nicht dumm rum sondern miß einfach nach.
Hi, War eigentlich auch laut Datenblatt immer auf 1024 aus, aber dann kam das: >Versuchs dir selber herzuleiten, von einem 1-Bit-ADC über 2 Bit, 3 Bit mach mal, wir nehmen 3 Bit und 7V Ref /7 wäre 1V LSB /8 wäre 0,875V LSB bei ADC_max = 7 sind wir bei Variante 1 bei 7V Vin Variante 2 zeigt aber 6,125V.. Hmm Datenblatt Mega8 >ADC = VIN ⋅ 1024 > VREF >and 0x3FF represents the selected reference voltage minus one LSB oha, also ADC(7) * LSB(0,875) + 0,875 sollte Uin sein. 6,125 + 0,875 = 7V, Stimmt. 0 * 0,875V + 0,875V = 0,875V, Falsch bin verwirrt oder überhitzt, klärt mich mal jemand auf ? schönen Tag noch, Uwe
> 0 * 0,875V + 0,875V = 0,875V, Falsch > bin verwirrt oder überhitzt Überhitzt? Es steht im ATmega8-Datenblatt '0x000 represents ground, and 0x3FF represents the selected reference voltage minus one LSB'.
Uwe schrieb: > Variante 2 zeigt aber 6,125V.. Hmm > Datenblatt Mega8 >>ADC = VIN ⋅ 1024 >> VREF >>and 0x3FF represents the selected reference voltage minus one LSB ADC(7) * LSB(0,875) = 6,125 = 7 - 0,875 Stimmt. Der Max Wert wird bei Uref - Lsb erreicht. Bei Uref 1,024V zeigt er mV an bis 1,022V (3fe) Bei 3ff ist der Wert höher, kann 1,023 V sein aber 3V sind ja auch "nur" 3ff
:
Bearbeitet durch User
Εrnst B. schrieb im Beitrag #7150 > Versuchs dir selber herzuleiten, von einem 1-Bit-ADC Nehmen wir mal den einfachsten "ADC" mit 1 Bit und einem Eingang von 0..5V: wann soll der 0 und wann 1 liefern? Bei 0V soll er 0 liefern und bei 5V soll er 1 liefern, das war ja einfach. Aber was soll er bei 2V machen und was bei 3V? Wieviele "Stufen" hat eigentlich so ein 1-Bit ADC? Und ein 2-Bit ADC? Wie verteilen sich da die Spannung Bereiche? Von wo bis wo ist 00? Was sind die Grenzen für 01? Welcher Spannungsbereich ergibt 10? Und was ist der Bereich von 11? S. Landolt schrieb: > Es steht im ATmega8-Datenblatt '0x000 represents ground, and 0x3FF > represents the selected reference voltage minus one LSB'. Weil 1 LSB das 1024ste Teil von Vref ist, entspricht 0x3ff also
1 | Vref - (1/1024)*Vref = Vref * 1023/1024. |
Nur wenn ein Anfänger oder ein Spezialist gerne die Vref auf seiner Anzeige sehen möchte, dann kann er dem µC die Rechnung schwer machen, eine um 1024tel falsche Steigung der Wandlung (die berechnete Spannung ist immer um 1/1024tel zu hoch) nehmen und durch 1023 statt der fachlich und sachlich korrekten 1024 teilen. Und der größte Vorteil der 1024er-Division: sie ist schneller als die 1023er Division. Kevin M. schrieb: > Was ist denn die größte Zahl die man mit 10-Bit darstellen kann? Man kann 1024 unterschiedliche Zahlen darstellen. BTW: meistens braucht man aber gar keine Spannung berechnen, weil die Spannung auch nur ein Hilfswert ist. Wenn man z.B. einen Drucksensor angeschlossen hat, der bei 10 bar 5V bringt, dann interessiert mich die Spannung überhaupt nicht. Sondern meine Formel für den anliegenden Druck ist
1 | p = (ADC*10bar) / 1024; |
Da taucht gar keine Spannung auf, wozu auch?
:
Bearbeitet durch Moderator
Schüler-AG schrieb: > Was ist richtig Hier ein nuetzliches allgmeines Analog-Handbuch von Texas Instruments,das auch unter anderem auf ADC eingeht https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjMx_SomLD5AhXlnVwKHVg6AKwQFnoECAQQAQ&url=https%3A%2F%2Fwww.ti.com%2Fseclit%2Feb%2Fslyw038c%2Fslyw038c.pdf&usg=AOvVaw2GndssDHGO2XoW0VLwllus
Toxic schrieb: > https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjMx_SomLD5AhXlnVwKHVg6AKwQFnoECAQQAQ&url=https%3A%2F%2Fwww.ti.com%2Fseclit%2Feb%2Fslyw038c%2Fslyw038c.pdf&usg=AOvVaw2GndssDHGO2XoW0VLwllus komplizierter geht es nicht, oder? https://www.ti.com/seclit/eb/slyw038c/slyw038c.pdf
Schüler-AG schrieb: > U = (Uref / 1023) * ADC_Wert oder > U = (Uref / 1024) * ADC_Wert ? Das Problem hierbei ist nicht der Wert bei 0x3ff, sondern bei 0. Da hilft auch das zitierte Handbuch nicht, weil am Problem vorbei geht: S. Landolt schrieb: > '0x000 represents ground, and 0x3FF represents the selected reference voltage minus one LSB'. Egal wie die Rechnung ist, am Ende steht jedes LSB für einen Spannungs-*Bereich* von grob 0,1% Uref. Eventuell mit Ausnahme von 0 und 0x3ff. Und da wir alle schlecht im Kopfrechnen sind, zur Anschauung: * 0..1V * aufgeteilt auf 10LSB = 0..9 --> erste Frage an das Datenblatt: Wo genau sind die 9 Umschaltschwellen? Vermutlich bei 0,1V, ... 0,9V. Dann ergibt sich: * 0 --> 0,0V .. 0,1V * 1 --> 0,1V .. 0,2V * ... * 9 --> 0,9V .. 1,0V Es geht also nicht um Teiler 9 oder 10, sondern darum, dass ich eigentlich 0,05V addieren müsste. * 0 --> Anzeige 0,05V (0,0V..0,1V) * 1 --> Anzeige 0,15V (0,1V..0,2V) * ... * 9 --> Anzeige 0,95V (0,9V..1,0V) Die genau Rechnung ist also U = 1V * ADC/10 + 1V/20 = Uref * (ADC+1/2)/10. In Deinem Fall: (Uref/1024)*ADC + Uref/2048. Das macht niemand. Jeder möchte 0 und die meisten auch Uref Daher ist Uref/1023 im Mittel besser. In der Mitte (bei 511) ist es nahezu perfekt, an den Rändern (0 und VRef) ist es maximal ein halbes Bit daneben, während Uref/1024 überall ein halbes Bit daneben ist. /1023 wäre sogar perfekt, wenn die Bereiche des ersten und letzten Bits nur halb so groß sind. --> Nimm 1023 wo Du es erlauben kannst, 1024 wo Du auf Rechenleistung oder etwas anderes achten musst.
A. S. schrieb: > --> Nimm 1023 wo Du es erlauben kannst, 1024 wo Du auf Rechenleistung > oder etwas anderes achten musst. Der ganze Beitrag von A. S. ist der beste, den ich hier im Forum gelesen habe. Es bedankt sich meine Schüler-AG Tobi
Hi, es ist jetzt etwas kühler ;) Ich glaube das Problem entsteht bei der Bereitstellung der Ref für die successive approximation im AVR, es kann nur eine Ref von Vref-1LSB (siehe R2R) bereitgestellt werden bei der dann der Bitkomparator schalten soll.Entspricht auch genau der Angabe im DB >0x3FF represents the selected reference voltage minus one LSB' Bei 3FF als Resultat ist die anliegende Spannung also >= 1023 * Vref/1024 Für V Ref = 5V sind 3FF also >= 4,9951V bei 3FE entsprechend >=4,9902V Also /1024 ist richtig. Einen schönen Abend noch, Uwe
Forist schrieb: > komplizierter geht es nicht, oder? Ich hatte gegoogelt und einen Link kopiert.Den Link getestet und festgestellt, dass die pdf gleich downgeloaded wird. Der einzige Unterschied zwischen meinem und deinem Link:er sieht "komplizierter" aus.Fuer den User bedeuten aber beide Links, dass sie die gleiche akrobatische Mausbewegung durchfuehren muessen:Mit der Maus den Link anklicken... Wo ist jetzt also das Problem? Aber danke fuer dein Posting - damit geht mein Posting in der Versenkung unter.So ein Mist aber auch:umsonst gegoogelt🤬
H. H. schrieb: > Zu viel Futter für die Datenkrake. Keine Ahnung inwiefern mein Link das "Alienmonster II" in Ekstase treibt.Dazu muesste ich aber wieder googeln um Infos darueber zu erhalten oder halt doch DuckDuckGo und Konsorten benutzen.... Aber ich geh mal davon aus,dass du recht hast.
Uwe schrieb: > Bei 3FF als Resultat ist die anliegende Spannung also >= 1023 * > Vref/1024 Ja! > Für V Ref = 5V sind 3FF also >= 4,9951V Ja > bei 3FE entsprechend >=4,9902V Ja. 3 * Ja. Und dann sowas: > Also /1024 ist richtig. Du hast doch genau dargelegt, dass 4,9951V für 0x3ff die unterste Grenze darstellt. Und Du somit bei allen Werten ein halbes Bit daneben liegst. Eine Anzeige von 4,995 sollte doch nicht heißen "oder mehr", sondern "+-". Also entweder das halbe Bit addieren (~ 4,9975) oder wenigstens den Fehler so gering wie möglich machen über den Wertebereich (Teilen durch 1023, damit es im Mittel 1/4 Bit besser ist und nirgendwo schlechter. )
Toxic schrieb: > Fuer den User bedeuten aber beide Links, dass sie > die gleiche akrobatische Mausbewegung durchfuehren > muessen:Mit der Maus den Link anklicken... Wobei Dein Link dabei einen entscheidenden Vorteil hat: man trifft ihn um vieles einfacher!
Lothar M. schrieb: > Sondern meine Formel für den anliegenden Druck > ist p = (ADC*10bar) / 1024; > Da taucht gar keine Spannung auf, wozu auch? Das Problem mit 1023 und 1024 bleibt aber haargenau dasselbe.
Schüler-AG schrieb: > A. S. schrieb: >> --> Nimm 1023 wo Du es erlauben kannst, 1024 wo Du auf Rechenleistung >> oder etwas anderes achten musst. > > Der ganze Beitrag von A. S. ist der beste, den ich hier im Forum gelesen > habe. Nimm 1024 wenn du es richtig & schnell machen willst. Nimm 1023, wenn du das Rechenergebnis absichtlich verfälschen willst, um "schönere" Zahlen angezeigt zu bekommen, dir eine Rundung aber zu kompliziert ist. Dann sollte man aber einen deutlichen Kommentar dazu im Quelltext hinterlassen, sonst dient die 1023 im Source nur als "Copy&Paste-vom-Arduino-Forum"-Markierung. A. S. schrieb: > Das Problem mit 1023 und 1024 Das "Problem" existiert nur in den Köpfen derer, die die Funktionsweise des ADC nicht verstanden haben. Alle anderen rechnen korrekt mit 2¹⁰.
:
Bearbeitet durch User
>um "schönere" Zahlen angezeigt zu bekommen, dir eine Rundung aber zu >kompliziert ist. OK. Ich will schönere Zahlen angezeigt bekommen und mir ist eine Rundung nicht zu kompliziert. Was muss ich dann rechnen? >die Funktionsweise des ADC nicht verstanden haben. Bitte setz dieses Verständnis bei mir als vorhanden voraus.
LostInMusic schrieb: > OK. Ich will schönere Zahlen angezeigt bekommen und mir ist eine Rundung > nicht zu kompliziert. Was muss ich dann rechnen? Gar nicht, du braucht nur eine grafikfähige Anzeige und ein Font der dir gefällt. Wenn du allerdings das zappeln der Zahlen verhindern willst, "musst" du mit einer Stelle mehr rechnen, als du anzeigen willst. Dann beim Runden, noch ne kleine "Hysterese" einbauen..... PS: LostInMusic schrieb: >>die Funktionsweise des ADC nicht verstanden haben. > > Bitte setz dieses Verständnis bei mir als vorhanden voraus. Öhmmm, also dein NICHT Verständnis?! ;)
Εrnst B. schrieb: > Das "Problem" existiert nur in den Köpfen derer, die die Funktionsweise > des ADC nicht verstanden haben. Alle anderen rechnen korrekt mit 2¹⁰. Ja, es ist üblich, die Argumente anderer zu ignorieren und statt eigener Argumente lieber deren Verstand in Frage zu stellen. Schön ist es trotzdem nicht. Und konstruktiv auch nicht. Konsens ist, dass 1/1024 den Bereich für ein LSB darstellt. Unbegreiflich ist, warum das ein Argument sein sollte, die Skale um ein halbes Bit zu verschieben. Genauso unbegreiflich ist es, warum die Lösung mit 1023 verworfen oder niedergeredet werden soll. Ja, sie ist mathematisch schlechter als /1024 + 1/2LSB, aber besser als das übliche, unreflektierte /1024 ohne Korrektur (und ohne Argument).
A. S. schrieb: > Unbegreiflich ist, warum das ein Argument sein sollte, die Skale um ein > halbes Bit zu verschieben. Genauso unbegreiflich ist es, warum die > Lösung mit 1023 verworfen oder niedergeredet werden soll. Also sind wir wieder am Ausgangspunkt angekommen und jeder teilt, wie er es für vernünftig hält.
Nur, um weitere Verwirrung zu stiften: Bei einem gleitenden Mittelwert über ein Array von 16 Werten wird doch die Summe auch duch 16 statt durch 15 geteilt. Und von 0 - 1023 sind 1024 Werte.
STK500-Besitzer schrieb: > Nur, um weitere Verwirrung zu stiften: Nein. Das ist Konsens und nicht Thema des Streites. Eine Analogie ergibt sich nur, wenn man das Runden mit üblicher Integer-Arithmetik betrachtet Wenn ich 16 8-Bit-Werte addiere und durch 16 Teile, dann runde ich immer ab. * Beispiel A: 15*2 + 1*1 = 31. 31/16 = 1, nicht 2 * Beispiel B: 15 * 200 + 1^*199 = 3199. 3199 / 16 = 199,nicht 200 Darum addiert man vor der Division 8. Das wäre analog zu * U = Uref * ADC/1024 + Uref/2048 und wäre perfekt. Macht beim ADC aber niemand. Der Workaround beim ADC ist nun, das ganze um 1 LSB zu spreizen, damit es in der Mitte besser, am Rand genauso schlecht bleibt. Das analogon hierzu ist jedoch schwerer zu verstehen und betrifft auch nicht die 16, sondern die 8 Bit: Das Ergebnis (die Summe) mit 256/255 multiplizieren (spreizen). Aus 31/16 wird dann 31*256/(16*255) = 7936 / 4080 = 1. Aus 3199 / 16 wird dann 3199*256/4080 = 200. Ds ist aber alles lange nicht so anschaulich als wenn man sich direkt mit der 0 beim ADC (und deren Darstellung) beschäftigt.
Mmh, vermutlich schalten viele ab, sobald 5V durch 1024 geteilt wird, weil die Werte krumm werden. Ich versuche es daher noch einmal noch einfacher als oben: A. S. schrieb: > * 0..1V aufgeteilt auf 10LSB = 0..9 Daher nun 10LSB und Eingangsspannung 0-10V * {0V..1V} --> ADC: 0 --> 0,5V ± ½V * {1V..2V} --> ADC: 1 --> 1,5V ± ½V * ... * {9..10V} --> ADC: 9 --> 9,5V ± ½V Demnach ist die richtige Formel: * U = 10V*ADC/10 + 0,5V mit maximalem Quantisierungsfehler von ½V und 0V Offset Die einfache Formel: * U = 10V*ADC/10 mit maximalem Quantisierungsfehler von 1V und ½ V Offset Die spreizende Formel: * U = 10V*ADC/9 ebenfalls mit maximalem Quantisierungsfehler 1V und ½ V Offset, aber nur am Ende. In der Mitte ist es so gut wie die richtige Formel.
1 | Anzeigen der Reihe nach: |
2 | |
3 | U LSB Anzeigen der Reihe nach |
4 | 0V 0 0,5 0 0 |
5 | 0,9V 0 0,5 0 0 |
6 | 1,1V 1 1,5 1 1,1 |
7 | 1,9V 1 1,5 1 1,1 |
8 | ... |
9 | 8,1V 8 8,5 8 8,9 |
10 | 8,9V 8 8,5 8 8,9 |
11 | 9,1V 9 9,5 9 10 |
12 | 10V 9 9,5 9 10 |
A. S. schrieb: > * U = Uref * ADC/1024 + Uref/2048 > > und wäre perfekt. Macht beim ADC aber niemand. Das produziert den selben Fehler, nur um ein halbes bit nach oben verschoben. Wenn man schon am LSB rummäkelt, dann sollte man es mit Uref/2048 IMMER werten, egal ob gesetzt oder nicht. Man muss ja nicht gleich den Kladderadatsch, durch den gesamten Wertebereich schleifen. Also, ab in die Tonne mit dem ungeliebten Ding (LSB).
A. S. schrieb: > Darum addiert man vor der Division 8. Das wäre analog zu > > * U = Uref * ADC/1024 + Uref/2048 > > und wäre perfekt. Macht beim ADC aber niemand. Wäre mit Integer aber auch sinnfrei, da ADC/1024 bei einem 10Bit-ADC immer 0 ergibt.
A. S. schrieb: > * U = Uref * ADC/1024 + Uref/2048 > und wäre perfekt. Für wen perfekt? Ich für meinen Teil bevorzuge 0 = 0 bis 0.9 , 1 = 1.0 bis 1.9 nicht 1 = 0.6 bis 1.5
A. H. schrieb: > A. S. schrieb: >> * U = Uref * ADC/1024 + Uref/2048 >> und wäre perfekt. > > Für wen perfekt? > Ich für meinen Teil bevorzuge 0 = 0 bis 0.9 , 1 = 1.0 bis 1.9 > nicht 1 = 0.6 bis 1.5 OK, Du bringst eine vierte Variante rein, die Du für suboptimal hälst. Wir sollten uns m.E. auf übliche oder richtige beschränken. Wenn Du eine Frage hast, frage, wenn Du einen Fehler entdeckst oder vermutest, sage das. So könnte man es für einen Trollbeitrag halten, wie den davor von einem Gast.
A. S. schrieb: > Genauso unbegreiflich ist es, warum die Lösung mit 1023 verworfen oder > niedergeredet werden soll. Wird sie doch nicht. Wer mit der sich daraus ergebenden falschen Steigung der Rechnung mit 1023 kein Problem hat oder sogar Vorteile daraus ziehen kann, der soll die verwenden. Wer mit den ADC-Werten Messtechnik betreibt und dafür die korrekte Gewichtung/Skalierung der Wandlungsdaten braucht, der sollte tunlichst die 1024 nehmen. Und natürlich ist die Diskussion um "+1/2LSB" technisch unsinnig, weil das sowieso im Serienfehler des ADC untergeht.
Lothar M. schrieb: > Wer ... die korrekte Gewichtung/Skalierung braucht, > der sollte tunlichst die 1024 nehmen. > Und natürlich ist die Diskussion um "+1/2LSB" technisch unsinnig, weil > das sowieso im Serienfehler des ADC untergeht. Also wie es grade passt. Wem die Zahlen bisher zu groß waren, hier auf 1 Bit (aka Komparator) reduziert: Messbereich 1V, Umschaltschwelle 0,5V,
1 | 0..0,5V --> 0 --> 0,25V 0 V 0V |
2 | 0,5..1V --> 1 --> 0,75V 0,5V 1V |
A. S. schrieb: > Messbereich 1V, Umschaltschwelle 0,5V, Du hast die Absurdität der "1023er-Metode" dabei noch nicht deutlich genug herausgearbeitet: 1024er-Methode (bei 1-Bit also also [ADC * Uref/2 … (ADC+1) * Uref/2[) ADC=0 besagt: Spannung größer 0V kleiner 0.5V. ADC=1 besagt: Spannung größer 0.5V 1023er-Methode (bei 1-Bit also also [ADC * Uref/(2-1) … (ADC+1) * Uref/(2-1)[) ADC=0 besagt: Spannung größer 0V, kleiner 1V ADC=1 besagt Spannung größer 1V d.H. bei der 1024er-Methode entspricht das Rechenergebnis exakt dem Verhalten des Komparators auf 0.5V, bei der 1023er-Methode Stimmt's vorne und hinten nicht. Dass der Fehler kleiner wird, je mehr Bits der ADC hat, stimmt zwar, der TE ist "Schüler". Der soll erstmal den richtigen Rechenweg lernen. Und wenn er dann irgendwann genug Erfahrung hat um zu Entscheiden, wann man absichtlich falsch rechnet, um irgendwelche geschönten Werte abseits der Realität zu erhalten: Dann kann er das immer noch so machen, und muss dazu dann auch nicht mehr im Forum hier fragen.
Εrnst B. schrieb: > besagt: Spannung größer Das habe ich weder hier, noch in RL gesehen. Ein Wert von 1 oder 4,5 bedeutet genau das. Aber wenn Du ein DB postest, dass es so interpretiert werden soll, akzeptiere ich das gerne.
A. S. schrieb: > Messbereich 1V, Umschaltschwelle 0,5V, Und bei 0,5V haben wir bei dieser Betrachtung dann den Schrödingers-Katze-Effekt: das sich ergebende Bit ist gleichzeitig 0 und 1... Und das ist der Witz an der Sache: es ist eine Grenzwertbetrachtung. Bei einer Referenz von 5V ist die Spannung 5,000punktpunktpunkt000V völlig singulär. Es gibt diese Spannung nur 1 einziges Mal. Aber ein LSB ist eben nicht singulär, denn es gibt unendlich viele Spannungen, die in das letzte LSB passen.
:
Bearbeitet durch Moderator
A. S. schrieb: > Aber wenn Du ein DB postest, dass es so interpretiert werden soll, > akzeptiere ich das gerne. Gerne. https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf Wenn dich interessiert was der technische Hintergrund zu dem "Größer gleich" ist, schau dir an wie ein successive-approximation ADC funktioniert. (so einer steckt im AVR) Gif von Wikipedia https://en.wikipedia.org/wiki/Successive-approximation_ADC Edit: Schade, leider ist die GIF-Animation beim Upload hier verlorengegangen...
:
Bearbeitet durch User
Εrnst B. schrieb: > Gerne Ich meinte schon ein DB von einem Multimeter oder einer Anzeige. Dieser Thread dreht sich um den Wert, der ausgegeben wird. Die Funktionsweise eine ADCs hab ich jetzt Mal vorausgesetzt und mehrfach beschrieben.
A. S. schrieb: > Ich meinte schon ein DB von einem Multimeter oder einer Anzeige. Was soll das bringen? Die zeigen "Overflow", wenn der ADC-Wert am Anschlag ist. Aber wenn's dich glücklich macht, sh. Anhang: Zeigt max 1999, obwohl der Messbereich bis 2000 angegeben ist.
:
Bearbeitet durch User
Eigentlich ist die Grundlage ganz einfach: ein ADC mit einem Wertebereich von 0..3FF hex gibt 1024 mögliche Werte aus, aber die definieren 1023 gleiche Intervalle. Darüber nachzudenken ist schon sehr schwer, so muss sich Einstein mit der allgemeinen Relativitätstheorie abgeplagt haben. Georg
Georg schrieb: > Eigentlich ist die Grundlage ganz einfach: ein ADC mit einem > Wertebereich von 0..3FF hex gibt 1024 mögliche Werte aus, aber die > definieren 1023 gleiche Intervalle. Falsch. > Darüber nachzudenken ist schon sehr > schwer, so muss sich Einstein mit der allgemeinen Relativitätstheorie > abgeplagt haben. Du darfst nicht von dir ausgehen.
Was spricht dagegen mit Division durch 1024 zu arbeiten und dann die Werte mitteln? Dann würden die statistischen Abweichungen durch verschiedene Einflüsse, einschließlich Rauschen, "geschmälert werden und eine bessere Annäherung erzielt werden. Eine Mittlung würde sozusagen mehr Auflösung schaffen. Bei genug Mittlung könnte man dann die Auflösung auf Kosten der Umsetzzeit um ein oder zwei Bits erhöht werden. Dann hat man also nicht mehr die +/- 0.5 Bit Unsicherheit, sondern Zwischenwerte die eine gewisse Wertigkeit der Umwandlung erkennen lassen. Oft kann man sich Mittlung zeitmässig erlauben. Mit bessere Genauigkeit hat das natürlich nichts zu tun. Aber man kann Trends somit besser erkennen.
H. Eggert schrieb: > Was spricht dagegen mit Division durch 1024 zu arbeiten und dann die > Werte mitteln? Weil das hier nicht Thema ist und gaaaanz weit oben, schon abgehakt wurde.
Beitrag #7153163 wurde von einem Moderator gelöscht.
Oha! Das wird hier nicht nach Sachlage, sondern nach Mehrheit der Dummen entschieden. So blöd ist nicht mal die Politik - die stimmt manchmal für's Falsche, aber nur, wenn es gut bezahlt wird...
Beitrag #7153892 wurde von einem Moderator gelöscht.
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.