Die AREF Analogreferenz | Arduino Shop und Tutorials

    • Die Auflösung der ADC-Wandler.
    • Die internen Vergleichsreferenzen in Arduino.
    • Die externe AREF-Referenz.

Material erforderlich.

Spanien Spanien Mexiko
UNO Starter Kit UNO Starter Kit
MEGA Starter Kit
MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit

Die Analog-Digital-Wandlung

In einer früheren Sitzung haben wir bereits gesagt, dass Arduino 6 Analog-Digital-Wandler (ADC) hat, die die Pins A0 bis A5 sind, und wir haben gesagt, dass sie in der Lage sind, Spannungswerte bis zu maximal 5V umzuwandeln, was die Referenzspannung des Arduino ist.

Wir haben auch gesagt, dass eine der wichtigsten Eigenschaften des Konverters die Anzahl der Bits ist, die die Feinheit definiert, mit der wir diese Umwandlung in digitale Daten quantifizieren können. Im Falle des Arduino sind es 10 Bits, die er in den analogen Gattern verarbeitet, was bedeutet, dass seine Auflösung 210 =1.024 mögliche Werte beträgt.

Je höher diese Auflösung ist, desto besser ist die Fähigkeit, sich dem realen Wert anzunähern, dessen Umwandlung wir suchen.

  • Es ist wichtig zu verstehen, dass die Umwandlung eines analogen Signals in ein digitales immer eine Annäherung ist, und selbst in dem unwahrscheinlichen Fall, dass der analoge Wert genau dem entspricht, was der Konverter uns sagt, werden wir immer eine Unsicherheit haben.
  • Bei einem Arduino-Wandler mit 10-Bit-Auflösung beträgt jeder Messschritt 5V/1024 = 0,0048828125 V, also knapp 5mV, was bedeutet, dass er nicht zwischen Spannungswerten unterscheiden kann, deren Differenz kleiner ist als diese.

Ohne zu sehr ins Detail zu gehen, kann man sagen, dass ein ADC-Wandler das Signal, das wir am Eingang quantifizieren wollen, sukzessive mit einer Referenzspannung vergleicht, mit der er Vergleiche anstellt.

Mit anderen Worten: Ein ADC liefert keine absoluten Werte, sondern einen quantifizierten Vergleich relativ zu einem Referenzwert. In der Sitzung mit dem TMP36-Temperatursensor haben wir also die Eingangsspannung an einem der Analogpins als den Messwert multipliziert mit dem Verhältnis zwischen dem Maximalwert des 5V-Eingangs und dem vom 1024-Wandler gemessenen Maximalwert berechnet.

Da die Signale, die wir normalerweise auf dem Arduino verarbeiten, um die 5V herum liegen, ist ein Vergleich mit 5V sinnvoll, da es in der Industrie auch eine ganze Reihe von Sensoren gibt, deren Maximalwert 5V liefert.

Aber die Industrie produziert zunehmend 3,3V-Elektronik, der Arduino DUE selbst ist ein Beispiel dafür, und wenn wir unsere ADCs benutzen, um 3,3V-Spitzensignale zu digitalisieren, verlieren wir an Genauigkeit und Auflösung, weil wir einen Teil der möglichen Vergleiche vergeuden, nämlich ein Drittel.

In der Praxis bedeutet die maximale Eingangsspannung von 3,3V im Vergleich zu 5V, dass wir nie mehr als 1.024 * 3,3 /5 = 675 Messwerte haben werden, und wir werden immer noch 5mV-Eingangsschritte haben.

Wenn der Wandler aber ein Spannungskomparator ist und wir den Spannungswert, mit dem wir vergleichen, auf 3,3 V ändern könnten, wären die Schritte 3,3 V/1024 = 0,00322265625 oder 3,2 mV. Das heißt, wir haben die Auflösung unseres Konverters verbessert, ohne einen Cent auszugeben.

Im Idealfall sollte also die Vergleichsspannung, gegen die wir die Umwandlung von analog zu digital durchführen, der maximal mögliche Wert des Eingangssignals sein. Denn dann haben wir die bestmögliche Auflösung mit dem Konverter.

Die Jungs von Arduino waren sich dieses Problems bewusst und haben deshalb einen externen Pin eingebaut, den wir bis jetzt noch nicht benutzt haben, der es erlaubt, eine externe Referenzspannung anzuschließen, mit der das Signal, das wir an unseren A0- bis A5-Gattern lesen, verglichen wird.

Dieser Pin ist mit AREF (Analog Reference) beschriftet und liegt zwei Pins über dem digitalen Pin 13:

Verwendung der externen analogen Referenz

Die Frage nach der analogen Referenz, mit der wir die Abtastwerte in den Gates A0-A6 vergleichen, ist so wichtig, dass der Arduino mehrere interne Spannungen zum Vergleich bereitstellt, die wir aktivieren können, um die Referenz zu ändern.

Um eine interne Referenz von 1,1V auf einem Arduino UNO zu aktivieren, verwenden Sie die Anweisung

analogReference(INTERNAL);

Wenn Sie einen MEGA verwenden, können Sie ausschließlich verwenden:

analogReference(INTERNAL1V1);
analogReference(INTERNAL2V56);

Damit werden 1,1V bzw. 2,56V Referenzen aktiviert.

Wenn man die DEFAULT-Taste benutzt, ist man bei praktisch allen Arduino-Modellen wieder bei der Standard-5V-Referenz.

analogReference(DEFAULT);
  • Achtung vor der DEFAULT-Referenz, denn beim DUE bedeutet sie 3,3V, weil das seine Referenzspannung ist. Vergewissern Sie sich, bevor Sie ihn verwenden.

Wenn wir eine Referenzspannung an den AREF-Pin anschließen, müssen wir dem Arduino mitteilen, dass wir sie verwenden wollen. Und das tun wir mit der Anweisung

analogReference(EXTERNAL);

Sieh dich vor, wenn du die analoge Referenz änderst, denn wenn du nicht aufpasst, isst du den Arduino zum Abendessen. Es ist relativ einfach, mit bestimmten Aktionen, die unschuldig erscheinen, etwas falsch zu machen:

  • Wenn du eine externe Referenz verwendest, stelle sicher, dass die GNDs des Arduino und der Referenz gleich sind, indem du sie miteinander verbindest. Dies nicht zu tun, hat eine sehr schlechte Prognose bei der ersten Änderung.
  • Verwenden Sie unter keinen Umständen weniger als 0V auf dem AREF-Pin (oder ein Signal, das schwankt und negative Transienten haben kann), weil das Ergebnis unvorhersehbar ist.
  • Wenn Sie eine externe Referenzspannung anschließen, rufen Sie analogRead() nicht auf, bevor Sie die Anweisung analogReference(EXTERNAL) ausführen, da Sie sonst das interne Vergleichssignal mit der externen Spannung an AREF kurzschließen und möglicherweise die Gelegenheit nutzen, den neuen Arduino zu kaufen, den Sie so gerne kaufen möchten.
  • Schließe an AREF nicht weniger als 1V oder mehr als 5V an, du kannst nicht einfach 12 einstellen und erwarten, dass es dir einen Wert gibt.

Testschaltung

Wir werden eine Testschaltung mit einem I2C-Display einrichten, wie wir es in der Sitzung gesehen haben… und ein Potentiometer. Aber dieses Mal werden wir an den Enden des Potentiometers GND und 3,3V anschließen, so dass der zentrale Pin, den wir mit A1 ablesen werden, niemals 3,3V überschreiten kann, um einen Sensor mit diesem Maximalwert zu simulieren.

Wenn wir das Potentiometer drehen, werden wir einen Spannungsabfall zwischen 0V und 3,3V ablesen. und das Ablesen des A1-Pins ergibt Werte zwischen 0 und 670, da wir uns in dem oben definierten Fall befinden.

Das Programm liest einfach den A1-Analog-Pin und sendet seinen Wert an ein I2C-Display mit 16 Zeichen und zwei Zeilen, wie wir es in der Sitzung gesehen haben….

Inhalt nur für Abonnenten verfügbar. Zugriff auf den Inhalt!

Hier ist ein Mini-Video mit den Potentiometerwerten

Wenn wir nun die interne 3,3V-Spannung des Arduinos an den AREF-Pin anschließen, haben wir eine Schaltung wie diese:

Lassen Sie uns jetzt das Programm sehen:

Hier ist ein Video mit dem Unterschied:

Zusammenfassung der Sitzung

In diesem Arduino-Kurs haben wir folgendes gelernt:

    • Wir haben uns mit der Frage der Analog-Digital-Wandlung beschäftigt und wir haben gesehen, dass es im Grunde genommen ein Vergleich mit einem Referenzwert ist.
    • Wir haben gesehen, dass wir einen internen oder externen Spannungswert verwenden können, der von den üblichen 5V abweicht.
    • Wir kennen jetzt die genauen Anweisungen zur Aktivierung dieser externen Referenz und die Vorsichtsmaßnahmen, die bei ihrer Verwendung zu beachten sind.