27. Lektion: ADC: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Ein simples Script)
K (Ein simples Script)
Zeile 37: Zeile 37:
 
Am unteren Anschlag wird ein Wert von 320 gemessen.  Das direkte Kurzschließen von GPIO26 und GND brachte keine Veränderung. Demnach ist das Wert, den der ADC bei 0 Volt liefert.
 
Am unteren Anschlag wird ein Wert von 320 gemessen.  Das direkte Kurzschließen von GPIO26 und GND brachte keine Veränderung. Demnach ist das Wert, den der ADC bei 0 Volt liefert.
 
<br>
 
<br>
Umgerechnet entspricht das 0.01611328 Volt. Das ist ein Verhältnis von 208,4, also weniger als die Auflösung bei 8-bit, oder 0,5% vom Endwert.
+
Umgerechnet entspricht das 0.01611328 Volt. Das ist ein Verhältnis von 208,4:1.
  
 
== ADC untersuchen==
 
== ADC untersuchen==

Version vom 17. Dezember 2023, 15:41 Uhr


Der DAC des Pico

Der Pico verfügt über einen ADC der durch einen Multiplexer (MUX) über 4 Eingänge verfügt.

  • ADC0 - GPIO26
  • ADC1 - GPIO27
  • ADC2 - GPIO28
  • ADC3 - Vsys - auf dem Pico-Board
  • ADC4 - interner Temperatur Sensor

Der ADC hat eine Auflösung von 12-bit. Allerdings ist die Kennline des ADC recht unlinear. Im Datenblatt wird eine nutzbare Genauigkeit von 8,7 bit angegeben.
Die maximale Messrate liegt bei 500kHz.

Ein simples Script

Der Klasse ADC kann der gewünschte ADC-Kanal mit der Kanalnummer (0 ...4) oder der GPIO-Nummer (26, 27, 28) mitgeteilt werden.

import machine
import utime
potentiometer = machine.ADC(26)
while True:
    print(potentiometer.read_u16())
    utime.sleep(1)

Ausgabe:

65535     # oberer Anschlag
53501
41050
4193
320       # unterer Anschlag
320
336

Der ADC hat eine Auflösung von 12-bit, der Rückgabewert wird aber als 16-bit Wert ausgegeben. Also um 4-bit nach links verschoben.
Hier ist sehen, das beim Poti am oberen Anschlag auch der maximale Wert auf 16-bit umgerechnet (65535) gemessen wird.
Am unteren Anschlag wird ein Wert von 320 gemessen. Das direkte Kurzschließen von GPIO26 und GND brachte keine Veränderung. Demnach ist das Wert, den der ADC bei 0 Volt liefert.
Umgerechnet entspricht das 0.01611328 Volt. Das ist ein Verhältnis von 208,4:1.

ADC untersuchen

Hierzu habe ich eine eigene Seite gemacht: Pico ADC untersuchen


Chiptemperatur messen

Hier ein Beispiel zur Messung der Chiptemperatur:

from machine import ADC
from time import sleep

vsys = ADC(4)
zu_volt = 3.3 / (65535)

while True:
    messwert = vsys.read_u16()
    spannung = messwert * zu_volt
    temperatur = 27 - (spannung - 0.706) / 0.001721
    print("Temperatur (°C): ", temperatur)
    sleep(2)

Die Informationen hierzu habe von https://www.elektronik-kompendium.de/sites/raspberry-pi/2612121.htm.

Kerntemperatur messen

Der 5. ADC-Kanal misst die Chiptemperatur. Mit dem folgen Script kann man diese ermitteln:

import machine
import utime

core_temp = machine.ADC(4)
core_temp.read_u16()
14099

Ich habe bisher noch nicht heraus bekommen, wie der Wert umgerechnet werden muß.

Probleme beim ADC

  • Rauschen des Schaltreglers
  • schlechte Kontaktgabe beim Breadboard