Inhaltsverzeichnis:
- Schritt 1: Überarbeitung
- Schritt 2: Warum gibt AnalogRead() einen Wert zwischen 0 und 1023 zurück?
- Schritt 3: Was ist AREF?
- Schritt 4: Externes AREF
- Schritt 5: Interner AREF
Video: Der Arduino AREF-Pin - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
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
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?
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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
ESP-01 Programmier-Hack - der Einfache :): 6 Schritte
ESP-01 Programmierer Hack - der Einfache :): Hallo ESPer, In diesem anweisbaren zeige ich Ihnen einen einfachen Hack, um einen Programmierer für ESP-01 / ESP8266-01 / ES-01-Modul zu machen. Die meisten von uns haben ein Arduino-Board oder FTDI USB-TTL-Geräte als Programmierer für dieses Modul verwendet. Beide Methoden funktionieren gut. Aber t
Der Sanity Check: 5 Schritte (mit Bildern)
Der Sanity Check: Bei diesem Projekt dreht sich alles um die Gesundheit oder darum, dass er regelmäßig überprüft wird. Der beste Weg, dies zu erreichen, besteht darin, eine Maske zu bauen, deren Augen zufällig rot leuchten. Oft genug, damit es auffällt, aber spärlich genug, um die Leute zweifeln zu lassen
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir