Listing 1
Testprogramm A/D
import machine,time
vrx = machine.ADC(34)
vry = machine.ADC(35)
vrx.atten(machine.ADC.ATTN_11DB)
vry.atten(machine.ADC.ATTN_11DB)
while True:
print ("x:"+str(vrx.read()))
print ("y:"+str(vry.read()))
time.sleep(0.1)
|
Parameter |
messbare Eingangsspannung |
Dämpfung |
|---|---|---|
|
|
100 bis 950 mV |
0 dB |
|
|
100 bis 1250 mV |
2,5 dB |
|
|
150 bis 1750 mV |
6 dB |
|
|
150 bis 2450 mV |
11 dB |
Wie die Tabelle “Anzahl Bits bei der Wandlung” zeigt, liegt der Eingangsspannungsbereich des ESP32 bei 11 dB Dämpfung zwischen 150 2450 mV. Wir verwendeten in unserem Testaufbau 0 bis 3,3 Volt, was bedeutet, dass wir beim Aufbau der Schaltung einen Fehler gemacht haben. Interessanterweise fällt das beim Bedienen des Joysticks kaum auf. Nur wenn man sehr genau darauf achtet, merkt man, dass die Genauigkeit in eine Richtung geringer ausfällt als in die entgegengesetzte. Wenn wir die analogen Eingänge für echte Messanwendungen verwenden möchten, müssen wir uns mehr Gedanken über den Elektronikteil des Projekts machen.
|
Parameter |
Bits |
Wertebereich |
|---|---|---|
|
|
9 |
0 bis 511 |
|
|
10 |
0 bis 1023 |
|
|
11 |
0 bis 2047 |
|
|
12 |
0 bis 4095 |
Testprogramm D/A
Das Programm zum Testen des analogen Ausgangs (Listing 2) gestaltet sich relativ einfach. Mithilfe der Modulo-Funktion erzeugen Sie eine ansteigende Anzahl von Werten. Sobald der Maximalwert erreicht ist, fangen Sie wieder bei null an. In der Elektronik bezeichnet man diesen Signaltyp als Sägezahn (Abbildung 4).
Listing 2
Testprogramm D/A
import machine,time sawtooth = machine.DAC(machine.Pin(25)) counter = 0 while True: sawtooth.write(counter%255) counter = counter + 1 time.sleep(0.001)

Abbildung 4: Sägezahnkurve: Der Spannungsverlauf auf dem Oszilloskop ähnelt tatsächlich den Zähnen einer Säge.
Wenn Sie das Kommando time.sleep() (letzte Zeile) auskommentieren, kommen Sie auf eine maximale Datenrate des Wandlers von knapp 64 Werten pro Millisekunde. Das ist spannend, weil es sich bereits im Bereich einer Audio-CD bewegt. Fraglich bleibt allerdings, ob sich mit MicroPython auch komplexere Signale schnell genug verarbeiten lassen.
Fazit
Das Verarbeiten analoger Werte ist für viele Projekte eine nützliche Funktion. Die Möglichkeiten von MicroPython zum Verarbeiten solcher Werte genügt für die meisten Hobbyprojekte völlig, A/D- und D/A-Wandlung lassen sich mit der Sprache recht einfach realisieren.
Wenn es allerdings auf eine hohe Messgenauigkeit ankommt, müssen Sie sich ein wenig ausführlicher mit der Thematik beschäftigen. Die Signale mancher analogen Sensoren müssen Sie zuerst aufbereiten, bevor Sie sie an den A/D-Wandler übergeben. Zudem spielt in diesem Kontext das korrekte Berechnen der realen Spannung am Eingang des Wandlers eine wichtige Rolle. (csi)
Der Autor
Martin Mohr hat die komplette Entwicklung der modernen Computertechnik live miterlebt. Nach dem Studium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.
Infos
- Wortherkunft “digital”: https://www.duden.de/sprachwissen/sprachratgeber/Herkunft-digital
- Thonny: https://thonny.org/
- ESP32 NodeMCU Module WLAN WiFi Development Board: https://www.az-delivery.de/products/esp32-developmentboard
- MicroPython herunterladen: https://micropython.org/download/ESP32_GENERIC/
- KY-023 Joystick-Modul für UNO R3: https://www.az-delivery.de/products/joystick-modul





