Arduino ADC

Ammar Ali 16 Februar 2024
Arduino ADC

In diesem Tutorial wird die Verwendung analoger Pins erläutert, um ein analoges Signal zu lesen und es in Arduino in ein digitales umzuwandeln.

Arduino ADC

Der ADC, auch bekannt als Analog-Digital-Wandler, wandelt ein analoges Signal in ein digitales Signal um. Analoge Signale sind kontinuierlich, was bedeutet, dass sie eine unendliche Anzahl von Werten enthalten. Wir können nicht alle Werte lesen, also lesen wir Werte in bestimmten Zeitintervallen aus dem kontinuierlichen Signal, wodurch das Signal digital wird.

Der Vorgang des Entnehmens von Samples aus dem analogen Signal wird als Sampling bezeichnet. Der Prozess der Umwandlung eines analogen in ein digitales Signal ist im folgenden Diagramm dargestellt.

ADC-Bild

Das erste Signal im obigen Diagramm ist ein kontinuierliches Signal mit unendlichen Werten, und das zweite Signal ist ein digitales Signal mit einem endlichen Wert. Der Analog-Digital-Wandler nimmt in regelmäßigen Abständen Werte aus dem analogen Signal, um daraus ein digitales Signal zu machen.

Die Analog-Digital-Umwandlung erfolgt, weil ein Computer ein analoges Signal nicht verarbeiten kann; es kann nur digitale Signale in 0s und 1s verarbeiten. Nach der Verarbeitung des digitalen Signals können wir das Signal auch mit einem DAC oder einem Digital-Analog-Wandler wieder in ein analoges Signal umwandeln.

Zum Beispiel wird das Verbinden der Punkte im zweiten Signal im obigen Diagramm fast identisch mit dem ersten Signal. Die Anzahl der Abtastungen, die wir im ADC aufnehmen, wird als Abtastrate oder Bitrate des ADC bezeichnet.

Einige Arduino-Boards verfügen über 10-Bit-Analog-Digital-Wandler, andere über 12-Bit-Analog-Digital-Wandler. Die Bitrate wird auch als Auflösung bezeichnet und definiert die Anzahl der Samples, die der ADC aus dem analogen Signal nimmt.

Ein 10-Bit-Analog-Digital-Wandler nimmt 1024 Abtastungen aus dem analogen Signal. Angenommen, das Eingangssignal besteht aus Spannungspegeln zwischen 0 und 5 Volt.

In diesem Fall werden die Spannungspegel auf den ganzzahligen Bereich von 0 bis 1024 abgebildet, was bedeutet, dass der Analog-Digital-Wandler alle 5/1024 oder 4,9 Millivolt einen Abtastwert nimmt.

Die Geschwindigkeit des Analog-Digital-Wandlers hängt von der Betriebsfrequenz des Arduino-Boards in ATmega-basierten Arduino-Boards ab; Der Analog-Digital-Wandler benötigt 100 Mikrosekunden, um ein analoges Signal in ein digitales Signal umzuwandeln, was bedeutet, dass die Abtastrate oder Leserate 10 kHz oder 10.000 Mal pro Sekunde beträgt.

Andere Boards wie die Boards der Arduino Zero-, Due- und MKR-Familie verfügen über 12-Bit-Analog-Digital-Wandler, was bedeutet, dass das analoge Eingangssignal von 0 bis 3,3 Volt auf einen ganzzahligen Bereich von 0 bis 4095 abgebildet wird.

Standardmäßig werden die 12-Bit-Analog-Digital-Wandler auf 10 Bit eingestellt, aber wir können die Bitrate oder Auflösung des Analog-Digital-Wandlers mit der Funktion analogReadResolution() ändern, indem wir die Anzahl der Bits innerhalb der Funktion zum Einstellen der Auflösung.

Überprüfen Sie diesen Link für weitere Details über die Funktion analogReadResolution().

Die analogen Pins auf jedem Arduino-Board sind mit A beschriftet, gefolgt von einer Nummer wie A0, A1 usw. Um ein Signal von einem analogen Pin von Arduino zu lesen, können wir die Funktion analogRead() verwenden.

Die grundlegende Syntax der Funktion analogRead() ist unten.

output = analogRead(pin)

Die obige Syntax gibt das analoge Signal vom analogen Pin als digitales Signal zurück. Wenn der analoge Pin mit keinem Signal verbunden ist, gibt die Funktion dennoch einige Floating-Werte zurück.

Verschiedene Arduino-Boards haben unterschiedliche Geschwindigkeiten für den Analog-Digital-Wandler, die geändert werden können, aber auch die Auflösung des Analog-Digital-Wandlers ändern. Daher sollten wir die Standardeinstellungen für den Analog-Digital-Wandler für eine genaue Analog-Digital-Wandlung verwenden.

Wir haben oben besprochen, dass einige Arduino-Boards eine Referenzspannung von 0 bis 5 Volt für die analogen Eingangssignale haben und einige 0 bis 3,3 Volt. Dies sind die Standardwerte, die wir mit der Funktion analogReference() ändern können.

Abhängig von den verschiedenen Arten von Arduino-Boards können wir verschiedene Optionen übergeben.

Im Fall von Arduino Uno und Mega haben wir beispielsweise Optionen wie:

  1. DEFAULT - Stellen Sie die Referenzspannung auf den ganzzahligen Bereich von 0 bis 5 Volt ein.
  2. INTERNAL - Stellen Sie die Referenzspannung auf den ganzzahligen Bereich von 0 bis 1,1 Volt ein.
  3. INTERNAL1V1 - Stellen Sie die Referenzspannung auf den ganzzahligen Bereich von 0 bis 1,1 Volt ein.
  4. INTERNAL2V2.56 - Stellen Sie die Referenzspannung auf den ganzzahligen Bereich von 0 bis 2,56 Volt ein.

Beachten Sie vor dem Einstellen der Referenzspannung, dass wir keinen Spannungswert unter 0 Volt und über 5 Volt einstellen können; der Referenzspannungswert sollte 0 bis 5 Volt betragen.

Angenommen, wir verbinden einen Widerstand mit dem analogen Pin. In diesem Fall werden die Eingangsspannungen reduziert, da im analogen Pin bereits ein Widerstand mit dem Wert 32K vorhanden ist, und in diesem Fall bilden beide Widerstände einen Spannungsteiler, und die Eingangsspannung wird entsprechend reduziert Wert des Widerstands.

Überprüfen Sie diesen Link für eine vollständige Liste der Optionen, die wir innerhalb der Funktion analogReference() verwenden können. Überprüfen Sie diesen Link für weitere Details über die Funktion analogRead().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook