Inhaltsverzeichnis:

Der Arduino AREF-Pin - Gunook
Der Arduino AREF-Pin - Gunook

Video: Der Arduino AREF-Pin - Gunook

Video: Der Arduino AREF-Pin - Gunook
Video: Demonstrating the Arduino's external AREF pin 2024, November
Anonim
Der Arduino AREF-Pin
Der Arduino AREF-Pin

In diesem Tutorial sehen wir uns an, wie Sie kleinere Spannungen mit größerer Genauigkeit messen können, indem Sie die analogen Eingangspins Ihres Arduino oder kompatiblen Boards in Verbindung mit dem AREF-Pin verwenden. Zuerst werden wir jedoch einige Überarbeitungen vornehmen, um Sie auf den neuesten Stand zu bringen. Bitte lesen Sie diesen Beitrag vollständig durch, bevor Sie zum ersten Mal mit AREF arbeiten.

Schritt 1: Überarbeitung

Revision!
Revision!

Sie erinnern sich vielleicht, dass Sie die Arduino-Funktion analogRead() verwenden können, um die Spannung eines elektrischen Stroms von Sensoren usw. mit einem der analogen Eingangspins zu messen. Der von analogRead() zurückgegebene Wert würde zwischen null und 1023 liegen, wobei null null Volt repräsentiert und 1023 die Betriebsspannung des verwendeten Arduino-Boards repräsentiert.

Und wenn wir die Betriebsspannung sagen – dies ist die Spannung, die dem Arduino nach der Stromversorgungsschaltung zur Verfügung steht. Zum Beispiel, wenn Sie ein typisches Arduino Uno-Board haben und es über den USB-Anschluss betreiben – sicher, es stehen 5 V über den USB-Anschluss Ihres Computers oder Hubs für das Board zur Verfügung – aber die Spannung wird leicht reduziert, wenn der Strom um die Schaltung zum Mikrocontroller – oder die USB-Quelle ist einfach nicht auf dem neuesten Stand.

Dies kann leicht demonstriert werden, indem man ein Arduino Uno an USB anschließt und ein Multimeter-Set zum Messen der Spannung an den 5V- und GND-Pins verwendet. Einige Boards geben nur 4,8 V zurück, einige höher, aber immer noch unter 5 V. Wenn Sie also auf Genauigkeit achten möchten, versorgen Sie Ihr Board von einem externen Netzteil über die DC-Buchse oder den Vin-Pin – z. B. 9 V DC. Danach geht es durch den Stromreglerkreis und Sie haben schöne 5V, zum Beispiel das Bild.

Dies ist wichtig, da die Genauigkeit aller analogRead()-Werte beeinträchtigt wird, wenn keine echten 5 V vorhanden sind. Wenn Sie keine Option haben, können Sie in Ihrer Skizze einige Mathematik anwenden, um den Spannungsabfall zu kompensieren. Wenn Ihre Spannung beispielsweise 4,8 V beträgt, bezieht sich der analogRead()-Bereich von 0 bis 1023 auf 0 bis 4,8 V und nicht auf 0 bis 5 V. Das mag trivial klingen, aber wenn Sie einen Sensor verwenden, der einen Wert als Spannung zurückgibt (z. B. der Temperatursensor TMP36), wird der berechnete Wert falsch sein. Verwenden Sie daher aus Gründen der Genauigkeit eine externe Stromversorgung.

Schritt 2: Warum gibt AnalogRead() einen Wert zwischen 0 und 1023 zurück?

Warum gibt AnalogRead() einen Wert zwischen 0 und 1023 zurück?
Warum gibt AnalogRead() einen Wert zwischen 0 und 1023 zurück?

Dies liegt an der Auflösung des ADC. Die Auflösung (für diesen Artikel) ist der Grad, in dem etwas numerisch dargestellt werden kann. Je höher die Auflösung, desto genauer kann etwas dargestellt werden. Wir messen die Auflösung in Form der Anzahl der Auflösungsbits.

Beispielsweise würde eine 1-Bit-Auflösung nur zwei (zwei hoch eins) Werte zulassen – null und eins. Eine 2-Bit-Auflösung würde vier (zwei hoch zwei) Werte ermöglichen – null, eins, zwei und drei. Wenn wir versuchten, einen 5-Volt-Bereich mit einer 2-Bit-Auflösung zu messen und die gemessene Spannung vier Volt betrug, würde unser ADC einen Zahlenwert von 3 zurückgeben – da vier Volt zwischen 3,75 und 5 V liegen. Mit dem Bild kann man sich das leichter vorstellen.

Bei unserem Beispiel-ADC mit 2-Bit-Auflösung kann er also nur die Spannung mit vier möglichen resultierenden Werten darstellen. Wenn die Eingangsspannung zwischen 0 und 1,25 fällt, gibt der ADC eine numerische 0 zurück; fällt die Spannung zwischen 1,25 und 2,5, gibt der ADC den Zahlenwert 1 zurück. Und so weiter. Mit dem ADC-Bereich unseres Arduino von 0~1023 – wir haben 1024 mögliche Werte – oder 2 hoch 10. Unsere Arduinos haben also einen ADC mit einer 10-Bit-Auflösung.

Schritt 3: Was ist AREF?

Um es kurz zu machen: Wenn Ihr Arduino eine analoge Messung durchführt, vergleicht es die am verwendeten analogen Pin gemessene Spannung mit der sogenannten Referenzspannung. Bei normaler Verwendung von analogRead ist die Referenzspannung die Betriebsspannung des Boards.

Für die gängigeren Arduino-Boards wie die Uno-, Mega-, Duemilanove- und Leonardo/Yún-Boards beträgt die Betriebsspannung 5V. Wenn Sie ein Arduino Due-Board haben, beträgt die Betriebsspannung 3,3 V. Wenn Sie etwas anderes haben, überprüfen Sie die Arduino-Produktseite oder fragen Sie Ihren Board-Lieferanten.

Wenn Sie also eine Referenzspannung von 5 V haben, wird jede von analogRead() zurückgegebene Einheit mit 0,00488 V bewertet. (Dies wird berechnet, indem 1024 durch 5 V geteilt wird). Was ist, wenn wir Spannungen zwischen 0 und 2 oder 0 und 4,6 messen möchten? Wie würde der ADC wissen, was 100 % unseres Spannungsbereichs sind?

Und darin liegt der Grund für den AREF-Pin. AREF bedeutet analoge REFerence. Es ermöglicht uns, dem Arduino eine Referenzspannung von einer externen Stromversorgung zuzuführen. Wenn wir zum Beispiel Spannungen mit einem maximalen Bereich von 3,3 V messen möchten, würden wir schöne glatte 3,3 V in den AREF-Pin einspeisen – vielleicht von einem Spannungsregler-IC.

Dann würde jeder Schritt des ADC etwa 3,22 Millivolt darstellen (unterteile 1024 in 3,3). Beachten Sie, dass die niedrigste Referenzspannung, die Sie haben können, 1,1 V beträgt. Es gibt zwei Formen von AREF – intern und extern, also schauen wir sie uns an.

Schritt 4: Externes AREF

Bei einem externen AREF liefern Sie dem Arduino-Board eine externe Referenzspannung. Dies kann von einem geregelten Netzteil kommen, oder wenn Sie 3,3 V benötigen, können Sie es vom 3,3 V-Pin des Arduino beziehen. Wenn Sie ein externes Netzteil verwenden, verbinden Sie den GND unbedingt mit dem GND-Pin des Arduino. Oder wenn Sie die 3,3-V-Quelle des Arduno verwenden, führen Sie einfach einen Jumper vom 3,3-V-Pin zum AREF-Pin.

Um die externe AREF zu aktivieren, verwenden Sie Folgendes in void setup():

analogReferenz (EXTERN); // AREF für Referenzspannung verwenden

Dadurch wird die Referenzspannung auf das eingestellt, was Sie an den AREF-Pin angeschlossen haben – der natürlich eine Spannung zwischen 1,1 V und der Betriebsspannung der Platine hat. Sehr wichtiger Hinweis – wenn Sie eine externe Spannungsreferenz verwenden, müssen Sie die analoge Referenz auf EXTERNAL setzen bevor Sie analogRead() verwenden. Dies verhindert, dass Sie die aktive interne Referenzspannung und den AREF-Pin kurzschließen, was den Mikrocontroller auf der Platine beschädigen kann. Falls es für Ihre Anwendung erforderlich ist, können Sie mit folgendem auf die Betriebsspannung der Karte für AREF (also wieder auf Normal) zurückschalten

analogReferenz(STANDARD);

Nun, um externe AREF bei der Arbeit zu demonstrieren. Unter Verwendung eines 3,3 V AREF misst die folgende Skizze die Spannung von A0 und zeigt den Prozentsatz des gesamten AREF und die berechnete Spannung an:

#include "LiquidCrystal.h"

Flüssigkristall-LCD (8, 9, 4, 5, 6, 7);

int Analogeingang = 0; // unser analoger Pin

int analoger Betrag = 0; // speichert eingehenden Wert Float-Prozentsatz = 0; // verwendet, um unseren Prozentwert zu speichern Float-Spannung = 0; // verwendet, um den Spannungswert zu speichern

Void-Setup ()

{ lcd.begin (16, 2); analogReferenz (EXTERN); // AREF für Referenzspannung verwenden}

Leere Schleife ()

{ lcd.clear(); analogamount=analogRead (analoge Eingabe); Prozentsatz = (Analogbetrag/1024,00) * 100; Spannung = Analogbetrag * 3,222; // in Millivolt lcd.setCursor (0, 0); lcd.print("% von AREF: "); lcd.print (Prozentsatz, 2); lcd.setCursor(0, 1); lcd.print("A0 (mV):"); lcd.println (Spannung, 2); Verzögerung (250); }

Die Ergebnisse der obigen Skizze werden im Video gezeigt.

Schritt 5: Interner AREF

Die Mikrocontroller auf unseren Arduino-Boards können auch eine interne Referenzspannung von 1,1 V erzeugen und wir können diese für AREF-Arbeiten verwenden. Verwenden Sie einfach die Zeile:

analogReferenz (INTERN);

Verwenden Sie für Arduino Mega-Boards:

analogReferenz(INTERNAL1V1);

in void setup() und du bist aus. Wenn Sie einen Arduino Mega haben, steht auch eine 2,56V Referenzspannung zur Verfügung, die aktiviert wird mit:

analogReferenz (INTERNAL2V56);

Schließlich – bevor Sie sich auf die Ergebnisse Ihres AREF-Pins festlegen, kalibrieren Sie die Messwerte immer mit einem bekanntermaßen guten Multimeter.

Abschluss

Die AREF-Funktion gibt Ihnen mehr Flexibilität bei der Messung analoger Signale.

Dieser Beitrag wird Ihnen von pmdway.com bereitgestellt - alles für Macher und Elektronik-Enthusiasten, mit kostenloser Lieferung weltweit.

Empfohlen: