Forum: Mikrocontroller und Digitale Elektronik micro:bit A/D nicht 0


von Florian (Gast)


Lesenswert?

Hallo
Ich spiele gerade am micro:bit. Irritiert bin ich, daß der A/D-Wandler 
angeblich 0-1023 liefern soll aber 3 liefert, wenn ich einen der 3 
großen Pins mit GND verbinde (1023 bei 3V). Eine Suche dazu lieferte mir 
keine Erkenntnisse (außer das überall steht 0-1023). Hat das noch nie 
einer bemerkt? Warum ist das so? Meine Kabel sind nicht zu hochohmig. 
Aus dem Schaltplan 
https://github.com/bbcmicrobit/hardware/blob/master/SCH_BBC-Microbit_V1.3B.pdf 
werde ich auch nicht Schlau. Angeblich sollen da ja Pull-Ups sein aber 
dann müßte ein offener Pin 1023 liefern - tut er nicht (~230, also frei 
baumelnd).

von Achim M. (minifloat)


Lesenswert?

Florian schrieb:
> Angeblich sollen da ja Pull-Ups sein
ich habe keine gesehen.

Florian schrieb:
> daß der A/D-Wandler
> angeblich 0-1023 liefern soll aber 3 liefert, wenn ich einen der 3
> großen Pins mit GND verbinde (1023 bei 3V).
Toleranzen der integrierten Peripherie.
Woher kommen deine 0V?

Florian schrieb:
> Hat das noch nie einer bemerkt?
Doch, steht bestimmt auch im Datenblatt des verwendeten 
Mikrocontrollers.

mfg mf

von Florian (Gast)


Lesenswert?

Achim M. schrieb:
>> Angeblich sollen da ja Pull-Ups sein
> ich habe keine gesehen.

Seite 6

Achim M. schrieb:
> Toleranzen der integrierten Peripherie.
> Woher kommen deine 0V?

GND ist GND.

Achim M. schrieb:
>> Hat das noch nie einer bemerkt?
> Doch, steht bestimmt auch im Datenblatt des verwendeten
> Mikrocontrollers.

Und warum finde ich dazu nichts?

von Strategic Head of Lunch Planning (Gast)


Lesenswert?

Das ist halt Inselaffentechnik.
Die haben keine Erfahrung mit Spaltmassen.

von Georg M. (g_m)


Lesenswert?

Florian schrieb:
> aber 3 liefert, wenn ich einen der 3
> großen Pins mit GND verbinde

Aber funktioniert der ADC grundsätzlich mit einem Potentiometer von 0 
bis 3V?

von Theor (Gast)


Lesenswert?

Strategic Head of Lunch Planning schrieb:
> Das ist halt Inselaffentechnik.
> Die haben keine Erfahrung mit Spaltmassen.

Abschätzige Bemerkungen über andere Völker halte ich für nicht 
annehmbar.

von Guest (Gast)


Lesenswert?

Florian schrieb:
> GND ist GND.

Und ich halte das für ein Gerücht.

von Theor (Gast)


Lesenswert?

Florian schrieb:
> Achim M. schrieb:
>>> Angeblich sollen da ja Pull-Ups sein
>> ich habe keine gesehen.
>
> Seite 6
>
> Achim M. schrieb:
>> Toleranzen der integrierten Peripherie.
>> Woher kommen deine 0V?
>
> GND ist GND.
>
> Achim M. schrieb:
>>> Hat das noch nie einer bemerkt?
>> Doch, steht bestimmt auch im Datenblatt des verwendeten
>> Mikrocontrollers.
>
> Und warum finde ich dazu nichts?

Das weiß ich auch nicht.
Aber möglicherweise schaust Du nicht im Datenblatt des Chips nrf... 
sondern in dem von Dir verlinkten Schaltplan. Da steht üblicherweise 
nichts über Toleranzen.
Ich empfehle Dir, das Datenblatt zu suchen und evtl. (dann können wir 
auch mal nachschauen) hier zu verlinken oder als Anhang zu posten.

An sich sind gewisse Ungenauigkeiten von AD-Wandlern normal. 3 Digits 
sind auch nicht ungewöhnlich viel.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Im Anhang findest du einen Ausschnitt aus dem Datenblatt des nRF51822.

Der Offset-Error kann bis zu ±2% betragen, wobei ich keine Information
darüber gefunden habe, worauf sich die Prozente beziehen. Ich vermute,
sie beziehen sich auf den gesamten Messbereich so dass die angegebene
Toleranz ±20 LSB entspricht (was schon recht happig ist). Die von dir
beobachteten -3 LSB liegen also innerhalb der Spezifikation.

Hier hat einer exakt dasselbe Problem:

  https://devzone.nordicsemi.com/f/nordic-q-a/5666/adc-accuracy

Die Antwort enthält auch einen Link auf eine Anleitung, wie der Offset-
und der Gain-Error per Software korrigiert werden können:

  https://devzone.nordicsemi.com/f/nordic-q-a/4517/how-to-calibrate-the-nrf51-adc-to-correct-offset-and-gain-error

Bei neueren Revisionen des Controllers scheinen die beiden Fehler bei
der Herstellung vermessen und in einen nichtflüchtigen Speicher
geschrieben zu werden, so dass du den ADC nicht selber kalibrieren
musst. Die softwaremäßige Korrektur musst du aber trotzdem noch
vornehmen.

Strategic Head of Lunch Planning schrieb:
> Das ist halt Inselaffentechnik.

Seit wann ist Norwegen eine Insel?

> Die haben keine Erfahrung mit Spaltmassen.

Auch ich kann mir unter einer "Spaltmasse" nichts vorstellen. Da ein
Spalt aus nichts (oder maximal aus ein wenig Luft) besteht, müsste seine
Masse sehr klein sein.

Aber hier geht es weder um Inseln noch um Massen, also behalte deine
Kommentare besser für dich.

von Florian (Gast)


Lesenswert?

Also ein ADC sollte doch bei GND auch 0 liefern. Toleranzen hin oder 
her. Geht ja gar nicht. Und die nicht wirkenden Pull-ups erklärt mir das 
auch noch nicht. Warum sind alle nur so begeistert von dem Ding?

von Guest (Gast)


Lesenswert?

Florian schrieb:
> Also ein ADC sollte doch bei GND auch 0 liefern.

Das kommt ganz drauf an wie groß dein Spannungsabfall über den GND Pfad 
ist. Der ADC misst innerhalb seiner Referenz, wenn dein GND den du da 
anlegst leicht verschoben ist dann kommt auch nicht 0 raus. Das kann 
verschiedene Ursachen haben. Ich mein das sind knapp 9mV das halte ich 
jetzt nicht für ungewöhnlich. Was erwartest du von einem 10 Bit ADC.

von Theor (Gast)


Lesenswert?

Florian schrieb:
> Also ein ADC sollte doch bei GND auch 0 liefern. Toleranzen hin oder
> her. Geht ja gar nicht.

Ich fürchte, da unterliegst Du einer falschen Annahme.

Es wäre ratsam, falls Du Dich etwas mit AD-Wandlern und deren 
Funktionsweise beschäftigst. (Elektronik-Grundlagen sind dabei 
vorausgesetzt).

Je nach Funktionsprinzip läuft die Wandlung meist auf einen Vergleich 
von Spannungen oder eine Umsetzung von Strömen in Spannungen hinaus. 
Daran sind reale Bauteile beteiligt, die nunmal eine begrenzte 
Genauigkeit haben.

Etwas kontro-intuitiv scheint das bei 0 V zu sein, aber das ist leider 
eine Täuschung aufgrund der Annahme, dass es wenigstens einen absoluten 
Wert gibt - und das sei die Null. Das ist aber nicht so. Auch die 0 V 
sind Gegenstand eines Vergleiches (oder einer Umwandlung etc. je nach 
Wandler-Prinzip).

> Und die nicht wirkenden Pull-ups erklärt mir das
> auch noch nicht.
Das sollte an sich aus dem Schaltplan und der Beschreibung des 
Controllers hervorgehen. Am Naheliegendsten ist die Vermutung (ich bin 
zu faul und es ist zu warm für mich, das jetzt nachzuprüfen), dass, 
entgegen Deiner Vermutung, die Pull-Up-Widerstände nicht an dem 
fraglichen Eingang des AD-Wandlers liegen.

> Warum sind alle nur so begeistert von dem Ding?
Nun. Es gibt Unterschiede in der Genauigkeit von Wandlern. Und, wie 
schon gesagt, 3 Digits sind nicht soooo viel, dass es sinnvoll ist, den 
Controller resp. seinen AD-Wandler für "Schrott" zu halten.
Du siehst ja, es gibt Methoden den Fehler zu kompensieren. Und in der 
Regel finden Controller in Fällen Anwendung, in denen solch eine 
Abweichung tolerierbar ist.

Ich möchte nochmal darauf hinweisen, dass die Ansicht, die 0 V seien 
etwas Besonderes eine Täuschung ist, die mit den Fakten nichts zu tun 
hat. Ich verstehe schon, dass so eine Täuschung auftreten kann. (Das 
ging mit in anderen Fällen auch so). Aber nichts desto trotz ist es eine 
Fehlannahme.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Florian schrieb:
> Also ein ADC sollte doch bei GND auch 0 liefern. Toleranzen hin oder
> her. Geht ja gar nicht.

Aha. Dann nimm doch "einfach" einen idealen ADC. Und alle anderen 
Entwickler sind wohl einfach nur zu doof, weil sie sich mit den real 
verfügbaren Bauelementen abgeben und entsprechende Schaltungs- und 
Kompensationstechniken einsetzen. In Deiner heilen Welt müssen 
Messgeräte wohl auch niemals kalibriert und justiert werden.

von Florian (Gast)


Lesenswert?

Egal, welchen A/D Wandler ich bisher benutzt habe: GND ist 0. Der ATmega 
schafft das auch. Und 9 mV bei 5 cm Leitungslänge finde ich happig.
Das Teil soll für Anfänger sein. Wie erklärt man denen, daß 0V nicht 0V 
ist?

von Stefan F. (Gast)


Lesenswert?

Florian schrieb:
> Also ein ADC sollte doch bei GND auch 0 liefern. Toleranzen hin oder
> her. Geht ja gar nicht.

Das Verhalten ist völlig normal. Du hast nur noch keine Erfahrung mit 
Technik gemacht. Da ist gar nichts perfekt, der wirst du noch an anderen 
Stellen lernen.

von Theor (Gast)


Lesenswert?

Florian schrieb:
> Egal, welchen A/D Wandler ich bisher benutzt habe: GND ist 0. Der ATmega
> schafft das auch. Und 9 mV bei 5 cm Leitungslänge finde ich happig.
> Das Teil soll für Anfänger sein. Wie erklärt man denen, daß 0V nicht 0V
> ist?

Es ändert nichts an den Tatsachen, wenn Du in einem Ton Behauptungen 
aufstellst und Fragen stellst, der suggeriert, dass die Welt anders ist 
als sie sein sollte und die Abweichung an eine persönliche Beleidigung 
grenzt. Ebenso halte ich unreflektierte Gegenbeispiele für sinnlos. Im 
übrigen haben Deine Formulierungen eine Geruch von Vorwurf und 
Unglauben.

Aber Du musst uns unsere Behauptungen ja nicht unbesehen glauben. Die 
Erklärungen gehen aus einer intensiven Beschäftigung mit den Grundlagen 
hervor. Ich empfehle Dir das noch einmal - und abschliessend (soweit es 
mich betrifft).

Viel Erfolg.

von Stefan F. (Gast)


Lesenswert?

Florian schrieb:
> Warum sind alle nur so begeistert von dem Ding?

Wer sagt das? Nach meinem Kenntnisstand ist das Produkt schon viele 
Jahre bekannt, aber kaum jemand benutzt es zu hause.

Die einzigen, die es großartig loben, sind die Händler und 
Fachzeitschriften, die dafür bezahlt wurden.

Für mich ist das Ding im Vergleich zu seinem Nutzen massiv überteuert.

von Stefan F. (Gast)


Lesenswert?

Florian schrieb:
> aber 3 liefert
...
> Egal, welchen A/D Wandler ich bisher benutzt habe: GND ist 0. Der ATmega
> schafft das auch.

Reduziere deinen ADC mal auf die 10 bit, die ein AVR hat, dann hast du 
auch 0.

Jeder, der mit ADC zu tun hat, kennt das nicht anders. Bei 8 bit kennt 
man solche Überraschungen nicht, bei 10 bit manchmal und ab 12 bit 
immer.

>  Wie erklärt man denen (den Anfängern), daß 0V nicht 0V ist?

Die abweichenden Messwerte versteht man, wenn man die Funktionsweise von 
Leitungen und ADC verstanden hat.

Absolute 0V kann es ohnehin nur an einem einzigen unendlich kleinen 
Punkt geben: Dem Bezugspunkt. An allen anderen Punkten des Universums 
kann es keine 0V geben, das ist schon rein physikalisch unmöglich.

Wenn innerhalb des Chips den ADC Eingang mit dem Referenzpunkt für 0V 
verbinden könntest, dann würdest du auch absolut sicher den Messwert 0 
erhalten. Aber da kommst du nicht heran. Also vergleichst du effektiv 
eine Spannung von (aus deiner Sicht) Null Volt mit einer internen, die 
(warum auch immer) nicht Null Volt beträgt. Daran ist überhaupt nichts 
ungewöhnlich.

von Guest (Gast)


Lesenswert?

Florian schrieb:
> Egal, welchen A/D Wandler ich bisher benutzt habe: GND ist 0. Der ATmega
> schafft das auch.

Sprichst du da auf einen Arduino an? Ich will nicht wissen was die da in 
Software noch so alles kompensieren....

Florian schrieb:
> Und 9 mV bei 5 cm Leitungslänge finde ich happig.

mit 5cm liegst du Schätzungsweise (hab jetzt nicht explizit 
nachgerechnet) bei Lambda/2 bis Lambda/4 von den WLAN Frequenzen da 
wirst du dich mal wundern was man sich da so alles einfangen kann ;)

Florian schrieb:
> Das Teil soll für Anfänger sein. Wie erklärt man denen, daß 0V nicht 0V
> ist?

Ein Anfänger sollte als erstes lernen das in dieser Welt nichts Perfekt 
oder Ideal ist. Was glaubst du wie viele Schaltungen in der Theorie 
funktionieren und in der Praxis nicht. Gutes Beispiel sind Transistoren. 
Klar kannst du mit einer Stromverstärkung von X und Ube 0,7V rechnen. In 
der Realität wirst du feststellen, dass diese Werte nicht stimmen. Nicht 
mal innerhalb einer Serie. Grade die Stromverstärkung streut teilweise 
ungemein.

von Strategic Head of Lunch Planning (Gast)


Lesenswert?

Florian schrieb:
> Also ein ADC sollte doch bei GND auch 0 liefern.

Richtig.
Selbst ein C520 aus der S.B.Z. hat das geschafft.
Oder die AD-Wandler eines uralten 8 bit PIC.

> "massiv überteuert"
Auch richtig.
Da kann man dann ja gleich besser Phywe kaufen.
Da weiss man wenigstens was man bekommt.

> Seit wann ist Norwegen eine Insel?
Die Norweger haben den "micro:bit" ja auch nicht
der Welt aufs Auge gedrückt.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Florian schrieb:
> Egal, welchen A/D Wandler ich bisher benutzt habe: GND ist 0. Der ATmega
> schafft das auch.

Der ATmega48 hat laut Datenblatt einen Offset-Fehler von typisch 2 LSB,
Min- und Max-Werte sind nicht angegeben. Die würden wohl deutlich
darüber liegen. 3 LSB Fehler wie beim TE sind also durchaus auch bei
einem ATmega möglich.

Interessanterweise ist beim ATmega2560 ein negativer Wert, nämlich
-2 LSB angegeben, während die bei den meisten anderen Typen angegebene
vorzeichenlose Zahl wohl als ±-Wert angesehen werden kann.

Dieser negative Wert deutet daraufhin, dass der Hersteller den ADC
absichtlich so abstimmt, dass er tendenziell eher nach unten als nach
oben abweicht. Damit werden Leute wie Florian zufriedengestellt, die
damit bei 0V am Eingang garantiert auch eine digitale 0 als Ergebnis der
ADC-Messung sehen. Dass bei 14mV, wo man bei Aref=5V eigentlich eine
digitale 2 oder 3 erwarten würde, immer noch 0 ausgegeben wird fällt den
meisten nicht auf.

Generell ist ein positiver Offset günstiger als ein negativer, da
letzterer für kleine Eingangsspannungen nicht per Software korrigiert
werden kann.

Ein Beispiel aus der Messtechnik, wo das ebenfalls eine Rolle spielt:

Ich habe zwei Multimeter. Das erste zeigt bei einer Widerstandsmessung
mit zusammengehaltenen Messleitungen 0Ω an, das zweite 2Ω. Welches von
beiden ist das bessere?

Ich bevorzuge das zweite, weil ich den Offset von 2Ω leicht im Kopf
subtrahieren kann und dann immer zu einem vernünftigen Messwert komme.
Das erste hingegen (das übrigens deutlich teurer war), zeigt erst ab
realen 4Ω überhaupt einen Wert >0 an. Widerstände mit weniger als 4Ω
kann ich damit schlichtweg überhaupt nicht messen.


Strategic Head of Lunch Planning schrieb:
>> Seit wann ist Norwegen eine Insel?
> Die Norweger haben den "micro:bit" ja auch nicht
> der Welt aufs Auge gedrückt.

Von denen stammt der Mikrocontroller mit dem von dir kritisierten ADC.

von Strategic Head of Lunch Planning (Gast)


Lesenswert?

> Von denen stammt der Mikrocontroller mit dem von dir kritisierten ADC.

Der etwa die gleiche Relevanz hat, wie ein (10 bit-)ADC auf einem FPGA.

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.