Raspberry Pi Pico: Grundlagen zu ADC

ADC bedeutet Analog-Digital-Converter bzw. Analog-Digital-Wandler. GPIOs, die über einen ADC verfügen, können analoge Signale in digitale Datenwörter (Bitfolgen mit definierter Länge) umzuwandeln.
Viele Sensoren arbeiten analog und geben analoge Spannungen oder Ströme aus. Um diese Größen in einem Computer oder von einem Prozessor verarbeiten zu lassen, muss die analoge Größe in einen digitalen Wert umgewandelt werden. Dazu verwendet man Analog-Digital-Wandler (Analog Digital Converter, ADC).

Manchmal spricht man auch von „digitalen Sensoren“. Gemeint ist damit aber nur, dass sich im Sensor-Baustein oder -Modul eine Schaltung oder Schaltkreis zur Analog-Digital-Wandlung befindet. Oft ist auch ein Mikrocontroller dabei, der sich um die Kommunikation über eine digitale Schnittstelle zu einem anderen System kümmert.

Wie funktionieren ADCs?

Im Prinzip wird eine Spannung am ADC-Eingang gemessen, die zwischen 0 und 3,3 Volt (bei einem Raspberry Pi Pico) liegen darf. Diese Spannung wird vom ADC in eine binäre Form gebracht. Weil ein binäres und damit digitales System nur zwischen den beiden Zuständen „0“ und „1“ unterscheiden kann, was einem Bit entspricht, muss aus dem analogen Wert ein mehrstelliges Datenwort erzeugt werden.

Um die analoge Größe in einen digitalen Wert umzuwandeln, muss geklärt werden, wie genau die analoge Größe im digitalen Universum sein muss. Dazu muss man wissen, dass analoge Größen praktisch unendlich viele Werte oder Stufen umfassen können. In der herkömmlichen Computertechnik gibt es allerdings nicht die Möglichkeit mit unendlich großen Werten umzugehen. Die digitale Welt ist in ihrer Speicherkapazität und Übertragungskapazität immer begrenzt, auch wenn es immer mehr oder schneller wird.
Das heißt in der Praxis, wir müssen bei der Analog-Digital-Wandlung die Anzahl der möglichen digitalen Werte begrenzen. Man spricht dann von einer sogenannten Auflösung die in Bit angegeben wird. Die Anzahl in Bit ist die Länge der Datenwörter.

Die meisten in Mikrocontrollern integrierten ADCs haben eine Auflösung von 8, 10 oder 12 Bit. Bei 12 Bit haben wir einen dezimalen Wertebereich von 0 bis 4.095. Das heißt, eine analoge Größe kann in 4.096 Stufen unterschieden werden.
Höherwertige ADCs gibt es auch mit 16, 24 oder sogar 32 Bit Auflösung.
Für professionelle Anwendungen spielt auch noch die Wandlungszeit eines ADCs eine Rolle. Das ist die Zeit, die ein ADC benötigt, um einen analogen Eingangswert in einen digitalen Ausgangswert umzuwandeln. Je kürzer die Wandlungszeit, desto besser.

Raspberry Pi Pico und seine integrierten ADCs

ADC GPIO
ADC 0 GPIO 26
ADC 1 GPIO 27
ADC 2 GPIO 28
ADC 3 VSYS (Pin 39)
ADC 4 integr. Temperaturfühler

Der Raspberry Pi Pico hat 5 ADC-Kanäle. An den GPIO-Pins GP26, GP27, GP28 und GP29 sind 4 ADC-Kanäle nutzbar und tragen die Nummern 0, 1, 2 und 3. Der fünfte Kanal (ADC4) ist nicht herausgeführt, sondern mit dem internen Temperatursensor verbunden. Der vierte Kanal (ADC3) kann zur Messung der VSYS-Spannung des Boards verwendet werden.

Beim Messen an einem der ADC-Kanäle wird eine Datenwort mit 12 Bit Breite erzeugt, womit ein dezimaler Wertebereich von 0 bis 4.095 dargestellt werden kann (4.096 Werte). Wenn man dieses Datenwort mit MicroPython ausliest, dann wandelt MicroPython das 12 Bit Datenwort in einen Datenwort mit 16 Bit Breite um, was einem Wertebereich von 0 bis 65.535 entspricht (65.536 Werte).

Programmcode für MicroPython

# Bibliotheken laden
from machine import ADC

# Initialisierung des ADC0 (GPIO26)
adc = ADC(0)

# ADC0 als Dezimalzahl lesen
read = adc.read_u16()

# Spannung berechnen
voltage = read * 3.3 / 65536

# Daten ausgeben
print('ADC:', read, '/', voltage, 'V')

Programmcode für CircuitPython

# Bibliotheken laden
import board, analogio

# Initialisierung des ADC0 (GPIO26)
adc = analogio.AnalogIn(board.GP26)

# ADC0 als Dezimalzahl lesen
read = adc.value

# Spannung berechnen
voltage = read * 3.3 / 65536

# Daten ausgeben
print('ADC:', read, '/', voltage, 'V')

Experimente mit einem ADC

Um die Möglichkeiten der ADCs vom Raspberry Pi Pico auszuprobieren, zu testen und festzustellen wie diese verwendet werden können, empfiehlt es sich ein paar einfache Experimente durchzuführen.

Anwendungen mit einem ADC

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren