Vorsicht! Niemals weniger als 0V oder mehr als 5V für die externe Referenzspannung am Pin AREF verwenden!
Wenn eine externe Spannungsreferenz am AREF-Pin verwendet wird, immer zuerst
analogReference(EXTERNAL)
aufrufen, bevor
analogRead()
benutzt wird, ansonsten könnte das Board bzw. der Mikrocontroller
beschädigt werden!
AREF auf dem Arduino Uno ist der Pin, der den Referenzwert der Spannung für die analogen Eingänge darstellt. Durch die Veränderung dieses Referenzwertes, also das Anlegen einer anderen Spannung am AREF-Pin, kann man den Messbereich eingrenzen, um dadurch eine höhere Genauigkeit zu erzielen.
Der ADC (=Analog-Digital-Wandler) des Arduino Uno kann zwischen 1024 Spannungen unterschieden. Dazu teilt er die jeweilige Referenzspannung in 1024 Bereiche und überprüft dann, in welchem Bereich die aktuelle Spannung liegt. Durch den AREF-Pin kann man die Referenzspannung der analogen Eingänge verändern. Wenn man also an AREF 2,5V anschließt, werden dann diese in 1024 Teile zerlegt.
Zunächst muss man dem Arduino mitteilen, welche Art von Referenzspannung er verwenden soll. Dies erfolgt
über den Befehl analogReference()
zu Beginn des Sketches. Normalerweise
wird als Argument DEFAULT verwendet, welches die Spannung des Arduino (5V bzw. 3,3V je nach Board) verwendet.
Um eine externe Spannungsquelle zu verwenden, wird als Argument EXTERNAL eingesetzt.
Folgende Argumente können verwendet werden (gilt für Arduino AVR Boards, also Uno, Mega, etc.):
DEFAULT | Standardmäßige Referenzspannung von 5V bzw. 3,3V, je nach Board-Typ |
---|---|
INTERNAL | Eingebaute Referenzspannung von 1,1V bei ATmega168 und ATmega328P bzw. 2,56V beim ATmega8 (nicht verfügbar beim Arduino Mega) |
INTERNAL1V1 | Eingebaute Referenzspannung von 1,1V (nur Arduino Mega) |
INTERNAL2V56 | Eingebaute Referenzspannung von 2,56V (nur Arduino Mega) |
EXTERNAL | Referenzspannung wird durch den AREF-Pin gespeist (0V bis 5V) |
Zu beachten ist, dass nach dem Ändern der Referenzspannung die ersten Lesevorgänge von
analogRead()
noch nicht präzise sein können!
void setup()
{
analogReference(EXTERNAL); // switch to external reference voltage
Serial.begin(9600);
}
void loop
{
Serial.println(analogRead(A0));
delay(1000);
}
zurück